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  ");
                               

//CRM Actvate deactivate
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