Detaylı bilgi için tıklayınız.
Visual Studio Code Kurulumu
Build 2015’de duyurulan Visual Studio Code, bu işletim sistemlerinde CoreCLR ve ASP.NET 5 uygulamaları geliştirmek için sunulan bir “text-editor”.
Burada önemli nokta bir “IDE”, yani tam bir geliştirme ortamı olmaması. Yani kısaca Visual Studio Code bir IDE değil, bir text-editor. Electron alt yapısı kullanılarak geliştirilmesi bunun asıl sebebi.
Github’un geliştirdiği Atom Text editörünün de temelinde bulunan Electron(a.k.a Atom Shell) node,js, HTML, CSS, javascript gibi alt yaplar ile cross-platform uygulamalar geliştirmenizi sağlıyor. Visual Studio Code’da bu alt yapı üzerinde geliştirilmiş bir uygulama.
NOT : Text-Editor olduğu için, sadece .NET uygulamalar değil, her türlü text tabanlı kodu yazmak mümkün.
Visual Studio Code Kurulumu
Kurulum dosyasını buradan bilgisayarınıza indiriniz.
Daha sonra Welcome to the Visual Studi Code Setup Wizard ekranında Next butonuna basalım.
License Agreement ekranında I accept the aggrement seçeneğini işaretleyip Next butonuna basalım.
Select Destination Location ekranında Next butonuna basalım. İsteğe bağlı olarak kurulumun yapılacağı klasör değiştirilebilir.
Select Start Menu Folder ekranında Next butonuna basalım.
Select Additional Tasks ekranında Next butonuna basalım.
Ready to Install ekranında yükleme bilgilerini kontrol edelim.Bir sorun görünmüyorsa Install butonuna basarak yüklemeyi başlatalım.
Yükleme tamamlandıktan sonra Finish butonuna basarak yüklemeden çıkalım.
Visual Studio Code Ekran Görünümü
Microsoft .NET Core SDK Yükleme (Install .NET Core SDK)
Kurulum dosyasını buradan bilgisayarınıza indiriniz.
https://www.microsoft.com/net/core#windowscmd
İndirlen dosyayı açalım ve Yükle butonuna basalım.
Yükleme sırasında biraz bekleyeceğiz.
Kurulum bittikten sonra Bitir butonuna basarak kurulumu tamamlayalım.
https://www.microsoft.com/net/core#windowscmd
İndirlen dosyayı açalım ve Yükle butonuna basalım.
Yükleme sırasında biraz bekleyeceğiz.
Kurulum bittikten sonra Bitir butonuna basarak kurulumu tamamlayalım.
Dynamics 365 Tools - Site Haritası Tasarımı (Sitemap Designer)
Site haritaları, Dynamics 365'teki uygulamanızın navigasyonunu tanımlar.
Dynamics 365 teki site haritası tasarımcısını kullanarak uygulamanız için kolayca bir site haritası oluşturabilirsiniz.
Başka bir deyişle, Site Haritası Tasarımcısı, site haritanızı güncellemek için görsel bir yöntemdir.
Tasarımcı, bileşenleri sürükleyip bırakarak tasarımcıya bırakmanızı, çalışmalarınızı önizlemenizi ve site haritasını anında yayınlamanızı sağlar.
Yöneticiler ve gerekli ayrıcalıklara sahip herhangi bir kullanıcı, uygulamalar için hızlı bir şekilde site haritaları oluşturabilir.
Site Haritası Tasarımcısı, alan, alt alan veya grup başlıklarını Microsoft Dynamics 365 tarafından desteklenen dillerde tanımlamanıza da olanak tanır.
Ayarlar-> Özelleştirmeler-> Sistemi Özelleştir -> İstemci Uzantıları-> Site Haritası izlenerek Düzenle butonuna tıklayalım.
Dahili site haritası editörü, 8.2 ve daha sonraki sürümlerde mevcuttur.
8.2'den önceki bir sürümü kullanıyorsanız, bu seçeneği seçmek için önce kuruluşunuzu güncellemeniz gerekir.
Veya yine de XrmToolBox gibi harici araçları kullanabilir veya XML'yi manuel olarak düzenleyebilirsiniz (XML i manuel editlemek risklidir).
Aşağıda, Microsoft Dynamics 365'te bulunan yerleşik site haritası düzenleyicisi bulunmaktadır.
Dynamics 365 teki site haritası tasarımcısını kullanarak uygulamanız için kolayca bir site haritası oluşturabilirsiniz.
Başka bir deyişle, Site Haritası Tasarımcısı, site haritanızı güncellemek için görsel bir yöntemdir.
Tasarımcı, bileşenleri sürükleyip bırakarak tasarımcıya bırakmanızı, çalışmalarınızı önizlemenizi ve site haritasını anında yayınlamanızı sağlar.
Yöneticiler ve gerekli ayrıcalıklara sahip herhangi bir kullanıcı, uygulamalar için hızlı bir şekilde site haritaları oluşturabilir.
Site Haritası Tasarımcısı, alan, alt alan veya grup başlıklarını Microsoft Dynamics 365 tarafından desteklenen dillerde tanımlamanıza da olanak tanır.
Ayarlar-> Özelleştirmeler-> Sistemi Özelleştir -> İstemci Uzantıları-> Site Haritası izlenerek Düzenle butonuna tıklayalım.
Dahili site haritası editörü, 8.2 ve daha sonraki sürümlerde mevcuttur.
8.2'den önceki bir sürümü kullanıyorsanız, bu seçeneği seçmek için önce kuruluşunuzu güncellemeniz gerekir.
Veya yine de XrmToolBox gibi harici araçları kullanabilir veya XML'yi manuel olarak düzenleyebilirsiniz (XML i manuel editlemek risklidir).
Aşağıda, Microsoft Dynamics 365'te bulunan yerleşik site haritası düzenleyicisi bulunmaktadır.
Dynamics 365 Tools - CRM Dev Tools (Google Chrome)
Bu tool ile basit işlemleri kolaylakla yapabilirsiniz.
Örneğin , login olan kullanıcının bilgilerini bir kaç tıklamayla öğrenebilirsiniz.
Buradan Google Chrome a ekleyebilirsiniz.
Google Chrome üzerinde F12 tuşuna basılarak Developer Tool açılır . Yukarıdaki eklentiyi ekledikten sonra Developer Tools da CRM Dev Tools tabı görünecektir.
Bu taba tıklanarak kullanacağımız ekranlar bulabiliriz.
USER
Buradan CRM e login olan kullancı hakkında bilgilere ulaşabiliriz.
FIND
FETCH
PLUGINS
DEBUG
Daha fazla bilgi için tıklayınız.
Dynamics 365 SQL - Global OptionSet Sorgulama
SQL Sorgu
SELECT OS.NAME, L.LABEL, AV.VALUE
FROM AttributePicklistValueAsIfPublishedLogicalView AV
JOIN OptionSetAsIfPublishedLogicalView OS
ON AV.OptionSetId = OS.OptionSetId
JOIN LocalizedLabelAsIfPublishedLogicalView L
ON L.OBJECTID = AV.AttributePicklistValueId
WHERE OS.ISGLOBAL = 1 AND OS.IsCustomOptionSet = 1
AND L.OBJECTCOLUMNNAME = 'DISPLAYNAME'
AND OS.NAME ='<Provide Global OptionSet Schema Name>'
Dynamics 365 - Müşteri Veri Tipi (Customer Data Type)
Firma ve ilgili kişi varlıklarının kombinasyonundan oluşmaktadır . Her iki varlıktan tek bir değer setlenebilir.
Firma ve İlgili Kişi için oluşacak relationlara alan oluşturulmadan değer verebiliriz.
Form üzerinden alana veri girişinde hangi varlık altından veri gireceksek o varlığı seçmemiz gerekir.
Not : Microsoft Dynamics CRM 2016 ve sonraki versiyonlarda kullanılmaktadır.
Microsoft Dynamics CRM 2016 Certifications list
Dynamics 365 - Varlığın Guid Değerini Alma (Form Üzerinden)
Çoğu zaman işlemlerimizi yaparken ilgili kaydımızın guid değerine ihtiyacımız olmaktadır. Bunu öğrenmenin yollarından biri , formdaki AÇILIR PENCERE butonuna basarak açılan formun linkinden öğrenebiliriz.
Açılan formun url ini alalım.
id=%7b ( { ) ile %7d ( } ) arasındaki 32 haneli değer varlığın guid değerini içerir.
http://hostname/orgname/main.aspx?etc=2&extraqs=&histKey=561271371&id=%7b3B6C4759-BCFD-E611-8F1E-00155D005200%7d&newWindow=true&pagetype=entityrecord#696644333
Not : Eğer bir kaydın guid değerini biliyorsak ve crm üzerinde görüntülemek istiyorsak , aynı varlığa ait farklı bir kayıt açılır ve linkteki ilgili değer ile elimizdeki guid değeri değiştirilir ve o kaydın formuna erişilir.
Açılan formun url ini alalım.
id=%7b ( { ) ile %7d ( } ) arasındaki 32 haneli değer varlığın guid değerini içerir.
http://hostname/orgname/main.aspx?etc=2&extraqs=&histKey=561271371&id=%7b3B6C4759-BCFD-E611-8F1E-00155D005200%7d&newWindow=true&pagetype=entityrecord#696644333
Not : Eğer bir kaydın guid değerini biliyorsak ve crm üzerinde görüntülemek istiyorsak , aynı varlığa ait farklı bir kayıt açılır ve linkteki ilgili değer ile elimizdeki guid değeri değiştirilir ve o kaydın formuna erişilir.
Dynamics 365 - Organizasyon Bilgilerini Alma ( RetrieveCurrentOrganizationRequest )
Organizasyon hakkında bilgiler edinmek için kullanılan bir metotdur.Alttaki ekran görüntüsündeki gibi bilgilere ulaşabilirsiniz.
C# Kodu
CrmServiceClient crmServ = CrmManagerStatic.GetCrmServiceClient();
RetrieveCurrentOrganizationRequest req = new RetrieveCurrentOrganizationRequest();
RetrieveCurrentOrganizationResponse res = (RetrieveCurrentOrganizationResponse)crmServ.Execute(req);
Daha fazla bilgi için tıklayınız.
Not : CRM 2015 ve sonraki versiyonlarda kullanılmaktadır.
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)