CRM C# codes
//CRM connection
CrmConnection connection = CrmConnection.Parse(connectionString);
OrganizationService _service1 = new OrganizationService(connection);
CRM Plughin
//Pluginstart
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
EntityReferenceCollection relatedEntities = new EntityReferenceCollection();
tracer.Trace
("Plugins started");
Entity Quotedetail = new Entity();
Entity Product = new Entity();
if (context.Depth ==1)
{
try
{
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
}}
}
//DeActivate entity
SetStateRequest setState = new SetStateRequest();setState.EntityMoniker = new EntityReference();
setState.EntityMoniker.Id = changeContract.Id;
//setState.EntityMoniker.Name = “new_customentity”;
setState.EntityMoniker.LogicalName = "salesorder";
setState.State = new OptionSetValue();
setState.State.Value = 1;
setState.Status = new OptionSetValue();
setState.Status.Value = -1;
http://mostlymscrm.blogspot.in/2012/06/entity-statecodes-and-statuscodes.html
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8f059eb4-b485-4ab9-a78a-e06b300590e0/close-opportunity-won-or-lost-using-crm-2015-sdk?forum=crmdevelopment
//CRM Money
get money value
Prodprice = (Money)Quotedetail.Attributes["baseamount"];
Assign value
decimal finalgv = Convert.ToDecimal(gvpercent1);
Money tax2 = new Money(finalgv);
Quotedetail[""] = tax2;
//CRM Entity reference
Guid RegProdGuid = new Guid(complaint.wf_registeredproduct);
EntityReference RegProd = new EntityReference(logicalName: "wf_accountproductgrid", id: RegProdGuid);
//CRM Optionset
OptionSetValue myOptionSet = new OptionSetValue();
myOptionSet.Value = value;
//CRM get optionset value by text
public int GetOptionsSetValueByText(OrganizationService xrmService, string entityName, string attributeName, string optionSetTextValue)
{
RetrieveAttributeRequest retrieveAttributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = entityName,
LogicalName = attributeName,
RetrieveAsIfPublished = true
};
RetrieveAttributeResponse retrieveAttributeResponse = (RetrieveAttributeResponse)xrmService.Execute(retrieveAttributeRequest);
if (retrieveAttributeResponse != null)
{
PicklistAttributeMetadata optionsetAttributeMetadata = retrieveAttributeResponse.AttributeMetadata as PicklistAttributeMetadata;
if (optionsetAttributeMetadata != null)
{
OptionMetadata[] optionsetList = optionsetAttributeMetadata.OptionSet.Options.ToArray();
foreach (OptionMetadata optionsetMetaData in optionsetList)
{
if (optionsetMetaData.Label.UserLocalizedLabel.Label == optionSetTextValue)
{
return optionsetMetaData.Value.Value;
}
}
}
}
return -1;
}
//CRM two option set values
entity.GetAttributeValue<bool>("my_field") == false
//CRM send pligin error
throw new InvalidPluginExecutionException("The Member has not NBS signed ");
https://msdynamicscrmblog.wordpress.com/2013/05/02/activatedeactivate-a-record-using-c-in-dynamics-crm-2011/
//CRM Relationship
// Add the Account Contact relationship schema name opportunity_products
Relationship relationship = new Relationship("sj_product_opportunity");
// Associate the contact record to Account
service.Associate(ld.LogicalName, ld.Id, relationship, relatedEntities);
//Get all related entities
QueryExpression quer = new QueryExpression();
quer.EntityName = "product";
quer.ColumnSet = new ColumnSet("name", "price", "sj_dealtype");
Relationship relationship1 = new Relationship();
quer.Criteria = new FilterExpression();
//quer.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, "Active"));
relationship1.SchemaName = "sj_product_opportunity";
RelationshipQueryCollection relatedEntity1 = new RelationshipQueryCollection();
relatedEntity1.Add(relationship1, quer);
RetrieveRequest request1 = new RetrieveRequest();
request1.RelatedEntitiesQuery = relatedEntity1;
request1.ColumnSet = new ColumnSet(true);
request1.Target = new EntityReference { Id = ld.Id, LogicalName = "opportunity" };
RetrieveResponse response1 = (RetrieveResponse)service.Execute(request1);
var RE = response1.Entity.RelatedEntities.Values;
var db = RE.First();
existngEntities = db;
for (int i = 0; i < existngEntities.Entities.Count(); i++) {
EntityReference DR = new EntityReference(existngEntities.Entities[i].LogicalName, existngEntities.Entities[i].Id);
desoEntities.Add(DR);
}
Relationship relationshipdeso = new Relationship("sj_product_opportunity");
service.Disassociate(ld.LogicalName, ld.Id, relationshipdeso, desoEntities);
//Get entities using fetchxml
var fetchXml1 = @"<fetch distinct='false'>"
+ "<entity name ='product'>"
+ "<attribute name ='name'/>"
+ "<attribute name ='productnumber'/>"
+ "<attribute name ='sj_status'/>"
+ "<attribute name ='price'/>"
+ "<attribute name ='sj_dealtype'/>"
+ "<attribute name ='statecode'/>"
+ "<filter type ='and'>"
+ "<condition attribute='statecode' operator='eq' value='0' />"
+ "<condition attribute = 'sj_city' operator= 'eq' value ='" + city + "'/>"
+ "<condition attribute = 'sj_dealtype' operator= 'eq' value ='" + dealtypevalue + "'/>"
+ "<condition attribute = 'sj_status' operator= 'eq' value ='212150000'/>"
+ "<condition attribute = 'productstructure' operator= 'eq' value ='1'/>"
+ "</filter>"
+ "</entity>"
+ "</fetch>";
// Build fetch request and obtain results. sj_status
var efr = new RetrieveMultipleRequest()
{
Query = new FetchExpression(fetchXml1)
};
var entityResults = ((RetrieveMultipleResponse)service.Execute(efr)).EntityCollection;
//create price list items
private void CreatePriceListItem(Entity product, IOrganizationService service)
{
Money listPrice = new Money(0); //get the list price, or set to 0 if not set
if (product.Attributes.Contains("price"))
{
listPrice = (Money)product.Attributes["price"];
}
EntityReference defaultUnit = (EntityReference)product.Attributes["defaultuomid"];
QueryExpression query = new QueryExpression { EntityName = "pricelevel" };
query.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0);
query.ColumnSet = new ColumnSet("pricelevelid");
query.Orders.Add(new OrderExpression("createdon", OrderType.Descending));
EntityCollection priceLists = service.RetrieveMultiple(query);
if (priceLists.Entities.Count > 0)
{
Entity firstPriceList = priceLists.Entities[0]; //get the first pricelist
Entity priceListItem = new Entity("productpricelevel");
priceListItem["amount"] = listPrice;
priceListItem["uomid"] = defaultUnit;
priceListItem["productid"] = new EntityReference("product", product.Id);
priceListItem["pricelevelid"] = new EntityReference("pricelevel", firstPriceList.Id);
service.Create(priceListItem); //create the price list item
}
Get
collection of entites
var fetchingQueryGS = @"<fetch
version='1.0' output-format='xml-platform' mapping='logical'
distinct='false'>" +
"<entity
name='opportunity'>" +
"<attribute name='ownerid'
/>" +
"<attribute
name='name' />" +
"<attribute
name='vtv_datetime' />" +
"<attribute
name='vtv_guestshow' />" +
"<filter type='and'>" +
"<condition
attribute='originatingleadid' operator='eq' uitype='lead' value='" + originatingLead.Id + "' />" +
"<condition
attribute='vtv_datetime' operator='on-or-before' value='" + date + "' />" +
"<condition
attribute='vtv_datetime' operator='on-or-after' value='" + nxtxdaysGS + "' />" +
"<condition
attribute='vtv_guestshow' operator='eq' value='1' />" +
//"<condition
attribute='vtv_status' operator='eq' value='100000001' />" +
"<condition
attribute='vtv_brandid' operator='eq' uitype='vtv_brand' value='" + brand.Id + "' />" +
"<condition
attribute='statecode' operator='eq' value='0'
/>" +
"</filter>" +
"</entity>" +
"</fetch>";
var MemberAppointmentReqGS = new RetrieveMultipleRequest()
{
Query = new FetchExpression(fetchingQueryGS)
};
//Get all
EntityCollection GSAppointments = ((RetrieveMultipleResponse)organizationService.Execute(MemberAppointmentReqGS)).EntityCollection;
Associate entity
Guid contracguid = new Guid(c);
AssociateRequest Associaterequest = new AssociateRequest();
EntityReference mon1 = new EntityReference("vtv_noncomplianceapprove", currententity.Id);
EntityReference mon2 = new EntityReference("salesorder", contracguid);
Associaterequest.Target = mon1;
Associaterequest.RelatedEntities = new EntityReferenceCollection { mon2 };
Associaterequest.Relationship = new Relationship("vtv_vtv_noncomplianceapprove_salesorder");
organizationService.Execute(Associaterequest);
Share Record with other users
EntityReference department = (EntityReference)currententity.Attributes["vtv_department"];
EntityCollection SystemUserData = new EntityCollection();
var logicalName = "vtv_emailnotification";
QueryExpression qesalesorder2 = new QueryExpression();
qesalesorder2.EntityName = "systemuser";
qesalesorder2.ColumnSet = new ColumnSet(true);
Relationship relationship = new Relationship();
qesalesorder2.Criteria = new FilterExpression();
relationship.SchemaName = "vtv_emailnotification_systemuser";
RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection();
relatedEntity.Add(relationship, qesalesorder2);
RetrieveRequest request = new RetrieveRequest();
request.RelatedEntitiesQuery = relatedEntity;
ColumnSet salesorderColumns1 = new ColumnSet(true);
request.ColumnSet =
salesorderColumns1;
request.Target = new EntityReference { Id = department.Id,
LogicalName = logicalName };
RetrieveResponse response = (RetrieveResponse)organizationService.Execute(request);
ICollection<EntityCollection> rst =
response.Entity.RelatedEntities.Values;
List<EntityCollection> temp = new List<EntityCollection>(rst);
SystemUserData =
temp[0];
foreach (var UserData in SystemUserData.Entities)
{
var systemuserId =
(UserData.Attributes["systemuserid"]);
GrantAccessRequest grant = new GrantAccessRequest();
grant.Target = new EntityReference("salesorder", contracguid);
PrincipalAccess principal = new PrincipalAccess();
principal.Principal = new EntityReference("systemuser", new Guid(systemuserId.ToString()));
principal.AccessMask = AccessRights.ReadAccess | AccessRights.AppendAccess | AccessRights.WriteAccess | AccessRights.AppendToAccess | AccessRights.ShareAccess | AccessRights.AssignAccess;
grant.PrincipalAccess = principal;
try
{
GrantAccessResponse grant_response = (GrantAccessResponse)organizationService.Execute(grant);
//localContext.Trace("............171");
}
catch (Exception ex)
{
//
localContext.Trace("............175");
throw ex;
}
}
Creadentials
Initializing for console
ClientCredentials credentials = new ClientCredentials();
credentials.UserName.UserName =
@"un";
credentials.UserName.Password =
"pwd";
Uri serviceUri = new Uri("url");
OrganizationServiceProxy proxy = new OrganizationServiceProxy(serviceUri, null, credentials, null);
proxy.EnableProxyTypes();
IOrganizationService organizationService
= (IOrganizationService)proxy;
throw new InvalidPluginExecutionException("");
Deactivate opportunity
LoseOpportunityRequest req = new LoseOpportunityRequest();
Entity opportunityClose = new Entity("opportunityclose");
opportunityClose.Attributes.Add("opportunityid", new EntityReference("opportunity", e.Id));
opportunityClose.Attributes.Add("subject", "Lost the
Opportunity!");
req.OpportunityClose = opportunityClose;
OptionSetValue o = new OptionSetValue();
o.Value = 4;
req.Status = o;
LoseOpportunityResponse resp = (LoseOpportunityResponse)organizationService.Execute(req);
Set state
SetStateRequest setState = new SetStateRequest();
setState.EntityMoniker = new EntityReference();
setState.EntityMoniker.Id = changeContract.Id;
//setState.EntityMoniker.Name
= “new_customentity”;
setState.EntityMoniker.LogicalName = "salesorder";
setState.State
= new OptionSetValue();
setState.State.Value = 1;
setState.Status = new OptionSetValue();
setState.Status.Value = -1;
SetStateResponse setStateResponse =
(SetStateResponse)organizationService.Execute(setState);
Associate
records
try
{
//dessociate entities
string primaryEntity2 = "salesorder";
string secondryEntity2 = "vtv_benifit";
QueryExpression qesalesorder22 = new QueryExpression();
//Query on reated entity records
qesalesorder22.EntityName = secondryEntity2;
//Retrieve the all attributes
of the related record
qesalesorder22.ColumnSet = new ColumnSet(false);
//create the relationship
object
Relationship relationship2 = new Relationship();
//add the condition where you
can retrieve only the users related to Sales Order
qesalesorder22.Criteria
= new FilterExpression();
// name of relationship
between user & Sales Order
relationship2.SchemaName = "vtv_salesorder_vtv_benifit";
//create
relationshipQueryCollection Object
RelationshipQueryCollection relatedEntity2 = new RelationshipQueryCollection();
//Add the your relation and
query to the RelationshipQueryCollection
relatedEntity2.Add(relationship2, qesalesorder22);
//create the retrieve request
object
RetrieveRequest request2 = new RetrieveRequest();
//add the relatedentities
query
request2.RelatedEntitiesQuery = relatedEntity2;
//set column to and the
condition for the SalesOrder
ColumnSet salesorderColumns12 = new ColumnSet(false);
request2.ColumnSet =
salesorderColumns12;
request2.Target = new EntityReference { Id = saleOrder.Id,
LogicalName = primaryEntity2 };
//execute the request
RetrieveResponse response2 = (RetrieveResponse)organizationService.Execute(request2);
ICollection<EntityCollection> rst2 =
response2.Entity.RelatedEntities.Values;
List<EntityCollection> temp2 = new List<EntityCollection>(rst2);
//get systemusers from N to N
relationship
EntityCollection SystemUserData2 = temp2[0];
EntityReferenceCollection ERlist2 = new EntityReferenceCollection();
for (int i = 0; i <
SystemUserData2.Entities.Count; i++)
{
EntityReference er2 = new EntityReference(SystemUserData2.Entities[i].LogicalName,
SystemUserData2.Entities[i].Id);
ERlist2.Add(er2);
}
Relationship relationshipdeso = new Relationship("vtv_salesorder_vtv_benifit");
organizationService.Disassociate(saleOrder.LogicalName, saleOrder.Id,
relationshipdeso, ERlist2);
string primaryEntity = "vtv_pricelists";
string secondryEntity = "vtv_benifit";
QueryExpression qesalesorder2 = new QueryExpression();
//Query on reated entity
records
qesalesorder2.EntityName = secondryEntity;
//Retrieve the all attributes
of the related record
qesalesorder2.ColumnSet
= new ColumnSet(false);
//create the relationship
object
Relationship relationship = new Relationship();
//add the condition where you
can retrieve only the users related to Sales Order
qesalesorder2.Criteria
= new FilterExpression();
// name of relationship
between user & Sales Order
relationship.SchemaName
= "vtv_pricelists_vtv_benifit";
//create
relationshipQueryCollection Object
RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection();
//Add the your relation and
query to the RelationshipQueryCollection
relatedEntity.Add(relationship, qesalesorder2);
//create the retrieve request
object
RetrieveRequest request = new RetrieveRequest();
//add the relatedentities
query
request.RelatedEntitiesQuery = relatedEntity;
//set column to and the
condition for the SalesOrder
ColumnSet salesorderColumns1 = new ColumnSet(false);
request.ColumnSet =
salesorderColumns1;
request.Target = new EntityReference { Id = pricelevel.Id,
LogicalName = primaryEntity };
//execute the request
RetrieveResponse response = (RetrieveResponse)organizationService.Execute(request);
ICollection<EntityCollection> rst =
response.Entity.RelatedEntities.Values;
List<EntityCollection> temp = new List<EntityCollection>(rst);
//get systemusers from N to N
relationship
EntityCollection SystemUserData = temp[0];
EntityReferenceCollection ERlist = new EntityReferenceCollection();
for (int i = 0; i <
SystemUserData.Entities.Count; i++)
{
EntityReference er = new EntityReference(SystemUserData.Entities[i].LogicalName,
SystemUserData.Entities[i].Id);
ERlist.Add(er);
}
Relationship Relation = new Relationship("vtv_salesorder_vtv_benifit");
// Associate the contact
record to Account
organizationService.Associate("salesorder", saleOrder.Id, Relation,
ERlist);
}
catch (Exception er)
{
localContext.Trace("." + er.Message);
}
/
Comments
Post a Comment