Dynamics CRM'de varolan bir duyuruyu başka bir varlığın altına kopyalama

Yazar: Volkan KORKMAZ
Kategori: Microsoft Dynamics CRM
Eklenme Tarihi: 8.6.2010 18:25:38



Merhaba Arkadaşlar, Bu makalemizde sizlere daha önceden oluşturulmuş bir notun eğer ekli dökümanları varsa onlarla birlikte kopyalanmasını anlatacağım. Bir senaryo üzerinden gidersek daha iyi olacak. Şimdi senaryomuz şöyle olsun : Müşteri adayı olarak tanımladığımız bir kaydımız olsun. Bunun içerisine notlar kısmında ilgili döküman ve resimleri kaydettik. Artık Müşteri Adayımızı, Abone Şahıs’a dönüştüreceğiz. Ancak CRM’in kendi içerisinde şuan için notlar kısmınıda yeni kayda taşıma kısmı yok. O zaman yazacağımız bir plugin içerisine aşağıdaki kodları yerleştirmemiz gerekmektedir.

 

Merhaba Arkadaşlar,

Bu makalemizde sizlere daha önceden oluşturulmuş bir notun eğer ekli dökümanları varsa onlarla birlikte kopyalanmasını anlatacağım.

Bir senaryo üzerinden gidersek daha iyi olacak. Şimdi senaryomuz şöyle olsun : Müşteri adayı olarak tanımladığımız bir kaydımız olsun. Bunun içerisine notlar kısmında ilgili döküman ve resimleri kaydettik. Artık Müşteri Adayımızı, Abone Şahıs’a dönüştüreceğiz. Ancak CRM’in kendi içerisinde şuan için notlar kısmınıda yeni kayda taşıma kısmı yok. O zaman yazacağımız bir plugin içerisine aşağıdaki kodları yerleştirmemiz gerekmektedir.

//Öncelikle bir duyuru nesnesi oluşturup kopyalanacak notlar kısmının değerlerini bu nesneye atıyoruz
annotation newAnnotation = new annotation
();
newAnnotation
.langid = sourceAnnotation.
langid;
newAnnotation
.notetext = sourceAnnotation.
notetext;
newAnnotation
.subject = sourceAnnotation.
subject;
newAnnotation
.objecttypecode = new EntityNameReference
();
newAnnotation
.objecttypecode.Value = destinationEntityName;

//Kopyalanacak nesnenin unique değerinide yeni oluşturduğumuz nesneye atıyoruz
newAnnotation
.objectid = new Lookup();
newAnnotation
.objectid.type =
destinationEntityName;
newAnnotation
.objectid.Value = destinationEntityId;

//Artık Not’umuzu oluşturabiliriz. Bunun için CRM ile gelen Servislerin Create methodunu kullanıyoruz
Guid newAnnotationId = _crmService.Create(newAnnotation);

//Eğer varsa ekli dökümanları almak için kontrol yapıyoruz
if (sourceAnnotation.isdocument.Value)
{

//Ekli olan dosyaları çeken method
byte[] data = GetAnnotationAttachment(sourceAnnotation.annotationid.Value);

string base64data = System.Convert.ToBase64String(data);
//Notumuza dosyaları ekleyen method

AddAttachment(newAnnotationId, base64data, sourceAnnotation.mimetype, sourceAnnotation.filename);
}

 

//Gönderilen Not değerine göre ekli dosya olup olmadığını kontrol eden method. Geriye byte dizisi döndürüyoruz

private byte[] GetAnnotationAttachment(Guid annotationId)
{
Guid attachid =
annotationId;
int objecttypecode = 5;

string url = _serverUrl + "Activities/Attachment/download.aspx?AttachmentType=" + objecttypecode.ToString() + "&AttachmentId=" + attachid.ToString();
System
.Net.WebClient myWebClient = new System.Net.WebClient
();
myWebClient
.Credentials = System.Net.CredentialCache.
DefaultNetworkCredentials;
return myWebClient.
DownloadData(url);
}

 

//Geri dönen byte dizisini Not’umuza ekliyoruz.

private void AddAttachment(Guid parentAnntotationId, string attachmentBase64Data, string mimeType, string attachmentFileName)
{
UploadFromBase64DataAnnotationRequest upload = new UploadFromBase64DataAnnotationRequest
();
upload
.AnnotationId =
parentAnntotationId;
upload
.FileName =
attachmentFileName;
upload
.MimeType =
mimeType;
upload
.Base64Data =
attachmentBase64Data;

_crmService
.
Execute(upload);
}

 

// CRM’de dosyalar eklenirken dosya uzantısına göre eklenir. Bu method ile de CRM’e dosyamızın uzantısını söylüyoruz

public string GetMimeType(byte[] fileBytes)
{
try
{
ContentInfo info = new ContentInfo
(fileBytes);
return info.ContentType.
Value;
}
catch
{
return "application/octet-stream"
;
}
}

 

Thanks Dujen.

 

Bir makalenin daha sonuna geldik. Makale ile ilgili aklınıza takılan kısımları bana aşağıdaki mail adresimden sorabilirsiniz.

 

Sağlıcakla kalın.

 

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist

volkankorkmaz@gmail.com
http://www.volkankorkmaz.net


Volkan KORKMAZ

Bilgisayar mühendisliği mezunu olan, Volkan KORKMAZ 2004'den beri sektörde birçok projede yazılımcı ve danışman olarak görev almıştır. Özellikle Microsoft Dynamics ,MOSS ve Web projeleri alanlarında yapılan entegrasyonlar üzerine uzmanlaşmıştır.

Diğer uzmanlık alanları içinde HP ServiceDesk ve ERP(logo, netsis) programları bulunmaktadır. MCSD.NET ve Microsoft Certified Business Management Solutions Specialist sertifikalarına sahiptir.

Şu an sektöründe lider bir yazılım firmasında yazılım geliştirme müdürü olarak çalışmaktadır. Ayrıca kurumsal ve bireysel olarak eğitim vermektedir.
Bu makaleye ilk yorum yapan siz olun.

Yorumunuz