ERP gibi farklı sistemlerle senkronizasyon olarak çalışan CRM lerde , CRM i güncellemek için CRM deki gu id değerini ikincil sistemde saklamamız gerekiyordu . MS CRM 2015 Update 1 ile bu konu daha kolay bir yol aldı. ERP deki unique key imizi crm de bir alanda saklayıp bu alan üzerinden güncelleme işlemlerimizi yapıyoruz.
CRM UI ile Alternate Key Oluşturma
Ayarlar - Özelleştirmeler - Sistem Özelleştirmeleri altından key gireceğimiz entitimizi seçelim. Entitimizi genişlettiğimizde
Anahtarlar alanına tıklayalım ve yandaki tabdan
Yeni diyerek bir key oluşturalım.
Açılan pencereden Alternate Key imizi tanımlayalım.
Alternate Key de aşağıdaki tipleri kullanabiliriz.
String
Integer
Decimal
NOT : Datetime, lookup , optionset alanlar için alternate keyi kullanamayız.
UpsertRequest Çalışma Şekli
UpsertRequest ile Alternate Key Kullanımı
KeyAttributeCollection keys = new KeyAttributeCollection();
keys.Add("accountnumber", "ERP-12345");
Entity accountEntity = new Entity("account",keys);
accountEntity["name"] = "Gökhan MENTEŞE";
accountEntity["fax"] = "1234579856";
UpsertRequest upreq = new UpsertRequest()
{
Target = accountEntity
};
UpsertResponse resp = (UpsertResponse)crmService.Execute(upreq);
if (resp.RecordCreated)
{
// Kayıt olusturuldu
}
else
{
// Kayıt güncellendi.
}
Firma Numarası ERP-12345 adlı kayıt olmadığı için sistemde yeni bir firma kayıtı oluşturuldu.
Yukarıdaki kodumuzu aşağıdaki gibi değiştirdiğimizde , bu sefer sistemde kayıt olacağı için ilgili kayıdı güncelleme işlemi yapacaktır.
KeyAttributeCollection keys = new KeyAttributeCollection();
keys.Add("accountnumber", "ERP-12345");
Entity accountEntity = new Entity("account",keys);
accountEntity["name"] = "Gökhan MENTEŞE";
accountEntity["fax"] = "1234579856";
accountEntity["telephone1"] = "552-8795621";
UpsertRequest upreq = new UpsertRequest()
{
Target = accountEntity
};
UpsertResponse resp = (UpsertResponse)crmService.Execute(upreq);
if (resp.RecordCreated)
{
// Kayıt olusturuldu
}
else
{
// Kayıt güncellendi.
}
Alternate Key ile Farklı Kayıt Üzerinde İşlem Yapma
Aşağıdaki kod da , ilgili kişi kayıdı oluştururken Firma alanını alternate key ile veriyoruz.Sistemde bulduğu değeri bu alana setliyor.
KeyAttributeCollection keys = new KeyAttributeCollection();
keys.Add("accountnumber", "ERP-12345");
Entity contactEntity = new Entity("contact");
contactEntity["firstname"] = "Gökhan";
contactEntity["lastname"] = "MENTEŞE";
contactEntity["fax"] = "1234579856";
contactEntity["telephone1"] = "552-8795621";
contactEntity["parentcustomerid"] = new EntityReference("account",keys);
crmService.Create(contactEntity);
Yukarıdaki koda göre CRM de ERP-12345 adında bir firma bulamasaydı aşağıdaki hatayı verecekti.
A record with the specified key values does not exist in account entity