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
}
Kaydol:
Kayıtlar (Atom)










