Dynamics 365 Code - App.Config Dosyasından ConnectionString Verisini Okuma (To Read Connection Strings From App.Config)


Projemize System.Configuration referansını eklememiz gerekir.




    private String GetServiceConfiguration()
        {
            // Get available connection strings from app.config.
            int count = ConfigurationManager.ConnectionStrings.Count;
            // Create a filter list of connection strings so that we have a list of valid
            // connection strings for Microsoft Dynamics CRM only.
            List<KeyValuePair<String, String>> filteredConnectionStrings =
            new List<KeyValuePair<String, String>>();
            for (int a = 0; a < count; a++)
            {
                if (isValidConnectionString(ConfigurationManager.ConnectionStrings[a].ConnectionString))
                    filteredConnectionStrings.Add
                    (new KeyValuePair<string, string>
                    (ConfigurationManager.ConnectionStrings[a].Name,
                    ConfigurationManager.ConnectionStrings[a].ConnectionString));
            }
            // If one valid connection string is found, use that.
            if (filteredConnectionStrings.Count == 1)
            {
                return filteredConnectionStrings[0].Value;
            }
            return null;
        }

        private Boolean isValidConnectionString(String connectionString)
        {
            // At a minimum, a connection string must contain one of these arguments.
            if (connectionString.Contains("Url=") ||
            connectionString.Contains("Server=") ||
            connectionString.Contains("ServiceUri="))
                return true;
            return false;
        }

Dynamics 365 - CrmService Kullanımı (Microsoft.Xrm.Tooling.Connector)





CrmServiceClient crmServ = GetCrmServiceClient();


  public CrmServiceClient GetCrmServiceClient()
        {
            CrmServiceClient crmSvc = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(@"AuthType=AD;Url=https://crmdev.gkhnmnts.com/CRMDEV; Domain=gkhn; Username=crmadmin; Password=password");

            return crmSvc;
        }


Dynamic 365 Code - İki Varlık Arasındaki Eşlenmiş Alanları Çekme - GetAttributesMap (Mapping)


Aşağıdaki kod ile lead ve account arasındaki mapping edilen kolonları çekebiliriz.


 EntityCollection attributeMaps = GetAttributesMap(crmService, "lead", "account");

                            Entity account = new Entity("account");

                            foreach (var item in attributeMaps.Entities)
                            {
                                string sourceAttributeName = item.GetAttributeValue<string>("sourceattributename");
                                string targetAttributeName = item.GetAttributeValue<string>("targetattributename");
                                if (lead.Attributes.Contains(sourceAttributeName))
                                {
                                    if (sourceAttributeName.ToLower() == "leadid")
                                        account[targetAttributeName] = new EntityReference("lead", lead.Id);
                                    else
                                        account[targetAttributeName] = lead[sourceAttributeName];
                                }
                            }

                            //account["name"] = companyname;

                            accountid = crmService.Create(account);




 private EntityCollection GetAttributesMap(IOrganizationService serv, string sourceentityname, string targetentityname)
        {
            QueryExpression query = new QueryExpression()
            {
                EntityName = "attributemap",
                ColumnSet = new ColumnSet("sourceattributename", "targetattributename"),
                LinkEntities =
                     {
                         new LinkEntity
                          {
                              LinkFromEntityName="attributemap",
                              LinkFromAttributeName="entitymapid",
                              LinkToEntityName = "entitymap",
                              LinkToAttributeName = "entitymapid",
                              LinkCriteria = new FilterExpression
                                    {
                                        FilterOperator = LogicalOperator.And,
                                        Conditions =
                                        {
                                            new ConditionExpression("sourceentityname",ConditionOperator.Equal,sourceentityname),
                                             new ConditionExpression("targetentityname",ConditionOperator.Equal,targetentityname)
                                        }
                                    }
                          }
                     },
                Criteria = new FilterExpression
                {
                    FilterOperator = LogicalOperator.And,
                    Conditions =
                                        {
                                            new ConditionExpression("parentattributemapid",ConditionOperator.Null),
                                            new ConditionExpression("sourceattributename", ConditionOperator.NotNull),
                                            new ConditionExpression("targetattributename", ConditionOperator.NotNull)
                                        }
                }

            };


            return serv.RetrieveMultiple(query);

        }

Dynamics 365 - SecureString Kullanımı



 public static CrmServiceClient GetCrmServiceClient()
        {
            CrmServiceClient crmSvc = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient("username", ConvertToSecureString("password"), "NorthAmerica", "orgname", isOffice365: true);

            return crmSvc;
        }

        private static SecureString ConvertToSecureString(string password)
        {
            if (password == null)
                throw new ArgumentNullException("missing pwd");

            var securePassword = new SecureString();
            foreach (char c in password)
                securePassword.AppendChar(c);
            securePassword.MakeReadOnly();
            return securePassword;
        }

Not : Dynamics 365 kullanıyorsanız , SDK versiyonunuz 8.2 olmalıdır. CRM 2016 için SDK versiyonu 8.0 veya 8.1 olmalıdır.

Dynamics 365 Code - Fırsat Kazanma - Kaybetme (C#)


Fırsat Kazanma

            IOrganizationService crmService = CrmManagerStatic.GetCrmServiceCredential(CRMOrganization.CRM);

            Entity OpportunityClose1 = new Entity("opportunityclose");
            OpportunityClose1["opportunityid"] = new EntityReference("opportunity", new Guid("Opportunity GuId "));
            OpportunityClose1["subject"] = "Won the Opportunity";
            crmService.Create(OpportunityClose1);

            WinOpportunityRequest winQuoteRequest = new WinOpportunityRequest()
             {
                 OpportunityClose = OpportunityClose1,
                 Status = new OptionSetValue((int)OpportunityState.Won)
             };
            crmService.Execute(winQuoteRequest);


Fırsat Kaybetme

 IOrganizationService crmService = CrmManagerStatic.GetCrmServiceCredential(CRMOrganization.CRM);

            Entity OpportunityClose1 = new Entity("opportunityclose");
            OpportunityClose1["opportunityid"] = new EntityReference("opportunity", new Guid("Opportunity GuId "));
            OpportunityClose1["subject"] = "Lose the Opportunity";
            crmService.Create(OpportunityClose1);
            LoseOpportunityRequest request = new LoseOpportunityRequest()
              {
                  OpportunityClose = OpportunityClose1,
                  Status = new OptionSetValue((int)OpportunityState.Lost)
              };
            crmService.Execute(request);

Dynamics 365 - Virtual Entities



Dynamics 365 Temmuz 2017 Güncellemesi  ile gelen özellik olan  sanal varlıklar, veriyi Dynamics 365'te varlıklar olarak sorunsuz bir şekilde temsil ederek, veri replikasyonu yapmadan ve genellikle özel kodlamasız olarak harici sistemlerde bulunan verilerin entegrasyonunu mümkün kılar.



İlgili makaleye buradan ulaşabilirsiniz.


Dynamics 365 Plugin - Rest Web Service Kullanımı (HOW TO CALL REST WEB SERVICE IN PLUG-IN)


Son zamanlarda SOAP kullanmadan REST web hizmetini nasıl kullanacağımı öğrenmek istedim. CRM'de bir kayıt oluşturulduğunda, her seferinde diğer sistemlere veri gönderen bir web servisi yazmak zorunda kalıyordum.

Bildiğiniz gibi, REST hizmeti bir istemci taban yapısına sahiptir ve bu nedenle SOAP'tan biraz farklıdır. Artık referans hizmeti eklemiyoruz ve bunun yerine RestRequest sınıfını kullanıyoruz. Nasıl yapılacağını aşağıdaki kod anlatıyor.

RestSharp ı buradan indirebilirsiniz veya Package Manager Console  ile projenize yükleyebilirsiniz.






C# Code




    RestClient client = new RestClient("url/api/");
            var request = new RestRequest("ControllerName/MethodName", Method.POST);

            //here I preferred to send data in Json  format
            request.AddJsonBody(
                    new
                    {
                        //parameter is the requiring method variable name
                        //value is your data that you want to post
                        parameter1 = "value1",
                        parameter2 = "value1"
                    });
            request.RequestFormat = DataFormat.Json;
            var result = client.Execute(request);
            if (result.StatusCode == System.Net.HttpStatusCode.OK)
            {
                //success

            }