Dynamics CRM Firmalar, İlgili Kişiler ve Outlook Client

27. January 2010

Saat 21:00'da başlayacak olan "Dynamics CRM Firmalar, İlgili Kişiler ve Outlook Client" isimli etkinliğe bu adresten giriş yapabilirsiniz.

adres değişti bu adresten girebilirsiniz: https://www.livemeeting.com/cc/mvp/join?id=MVP4025099&role=attend&pw=dFS-%24%5B%3Cd3

 

Dynamics CRM , , , , , , , , , , , , , , , , ,

Microsoft Dynamics CRM içerisinde İstemci Taraflı Kod Geliştirme

12. June 2009

Microsoft Dynamics CRM içerisinde İstemci Taraflı Kod Geliştirme

Web uygulamalarının istemci (client) tarafında birtakım işlemleri gerçekleştirmesi sunucunun (server) daha rahat çalışmasını sağlayacaktır. Dynamics CRM'de bir web tabanlı bir mimariye sahip olduğu için bu durum onda da geçerli. DOM nesne modelinde her HTML elemanı bir nesne olduğu için DHTML programlama teknikleri ile CRM'in formlarına ve nesnelerine erişip işlemler gerçekleştirebilirsiniz.

CRM'in SDK'sı içerisinde "Client Extensions and Scripting" bölümü altında detaylı bilgilerini bulabileceğiniz metot, olay ve nesneleri bir arada bulabileceğiniz bir yazı hazırladım size.

1 Genel Değişkenler
  Değişken Açıklama
SERVER_URL CRM Web Server'ın URL'sini döndürür
USER_LANGUAGE_CODE Kullanıcının dil kodunu döndürür
ORG_LANGUAGE_CODE Organizasyonun dil kodunu döndürür
ORG_UNIQUE_NAME Organizasyonun adını döndürür
2 Genel Metotlar
  Metot Açıklama
IsOnline Eğer kullanıcı online olarak sistemi kullanıyorsa true döndürür (Outlook client ile ofline kullanma özelliği mevcuttur)
IsOutlookClient Kullanıcı Microsoft Dynamics CRM for Outlook ile sisteme ulaşıyorsa true döndürür
IsOutlookLaptopClient Kullanıcı Microsoft Dynamics CRM for Outlook with Offline Access ile sisteme ulaşıyorsa true döndürür
3 Genel Olaylar
  Olay Açıklama
OnLoad Form Browser'a yüklendiğinde icra edilir. Bu olayı kullanrak form üzerinde kullanıcının karşısına gelmeden istediğiniz değişikliği yapabilrsiniz
OnSave Kullanıcı Save, Save and Close ya da  Save and New düğmelerine tıkladığında çalışan olaydır. Bu olay form servera gönderilmeden çalışır ve eğer istemediğiniz bir değer varsa form üzerinde, servera gidişi iptal edebilirsiniz. Eğer kaydetme işlemini iptal etmek istiyorsanız event.returnValue = false; kodunu çalıştırmalısınız.

Genel değişkenler ve metotları gördükten sonra şimdi nesnelerimizi içinde barındıran crmForm isimli formumuza ait neler varmış bir bakalım.

1 crmForm Özellikler
  Özellik Açıklama
All Form nesneleri kolleksiyonu
IsDirty Formda değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar. Değer atanabilir.
FormType Formun açılış biçimi. Alabileceği değerler:
0 = Tanımlanmamış Form Tipi
1 = Yeni Kayıt
2 = Kayıt Güncelleme
3 = Sadece Okunabilir Form
4 = DevreDışı Bırakılmış Form
5 = Hızlı Yeni Kayıt
6 = Toplu Güncelleme
ObjectId Açılmış olan kaydın GUID cinsinden ID'sini döndürür. Yeni Kayıt olarak açılmış formda null döner.
ObjectTypeName Görüntülenen nesnenin adı döner
2 crmForm Metotlar
  Metot Açıklama
Save() Formu kaydeder
SaveAndClose() Formu kaydeder ve kapatır
SetFieldReqLevel(sField, bRequired) Bir alanı gerekli ya da gereksiz olarak işaretler

Aşağıdaki tabloda crmForm.all.<alanadi> ile erişilebilir alanların ortak özellik ve metotlarını bulabilirsiniz.Burada unutulmamsı gereken nokta lookup ve picklist alanların aslında birer dizi olduklarıdır. İçlerinden birden fazla veri tutabildikleri gibi kullanıcının gördüğü ile veritabanına yazılanların farklı olmasıdır. (lookup için GUID, picklist için ise seçilenin integer değeri yazılır).

1 crmForm.all Özellikler
  Özellik Açıklama
Precision currency veri float veri tiplerinde virgülden sonraki digit sayıını verir.
DataValue Veri okunan ve yazılan özellik. picklist ve lookup için ek parametreler almaktadır.
Disabled Kullanıcı girişini açmanızı veya kapamanızı sağlar.
ForceSubmit Bu özellik disabled edilmiş olan alanların veritabanına kaydedilmesini sağlar. Standartta disabled alanları CRM kaydetmez.
IsDirty Alan üzerinde değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar.
Min currency, float ve integer değer türlerinde erişilebilir en küçük değeri verir.
Max currency, float ve integer değer türlerinde erişilebilir en büyük değeri verir.
MaxLength string ya da memo alanlarının en büyük değerini verir.
RequiredLevel Gereksinim seviyesini verir
0 = Gereksinim düzeyi yok
1 = Business Recommended (Önerilen)
2 = Business Required (Gereken)
2 crmForm.all Metotlar
  Metot Açıklama
SetFocus() Mouse işaretçisini formda o alana gönderir.
FireOnChange() Alanın OnChange() olayını çalıştırır.
3 crmForm.all Olaylar
  Olay Açıklama
OnChange Kullanıcı bir alan içerisindeki değeri değiştirdiğinde çalışan olaydır.

Ek olarak bilinmesi gereken PartyList ve email aktivitesi To alanı birden fazla değer almaktadır. Diğer Lookupların yapıları da bir dizi olmasına karşın tek değer alırlar.Yani sadece 0. indis doludur.

Lookup alanları daha derinlemesine inceleyelim. Lookup alanların yukarıdaki özelliklere ek olarak aşağıdaki üç özelliği bulunmaktadır.

crmForm.all.<lookupfiled> Özellikler
Özellik Açıklama
Id GUID değeri taşır. Okunabilir ve yazılabilir.
TypeName Referans edilmiş entity'nin adı. Okunabilir ve yazılabilir.
Name GUID'in değerinin Form'da gösterilecek olan ismi. Okunabilir ve yazılabilir.

Örneklerle konuyu pekiştirelim. Lookup veri alanından değer okumak ile ilgili örnek;
Bu örnekte bir primarycontactid isimli alandaki değeri öğreniyoruz.

var lookupItem = new Array;
//primarycontactid alanndaki veriyi okuyoruz.
lookupItem = crmForm.all.primarycontactid.DataValue;
//eğer veri var ise gösteriyoruz.
if (lookupItem[0] != null) {     
// metin
    
alert(lookupItem[0].name);
// GUID     
alert(lookupItem[0].id);
    
// entity ad.
   
alert(lookupItem[0].typename);
}

Lookup veri alanına veri yazmakla ilgili örnek;
Bu örnekte parentaccountid isimli alana değer atıyoruz.

//bir Array oluturuyoruz.
var lookupData = new Array();
//Object nesnesi ekliyoruz.
var
lookupItem = new Object();
//Object nesnemizde id, typename ve name zelliklerini dolduruyoruz.

lookupItem.id =
'{1AAC1363-01A1-DB11-8432-0003FF9CE217}';
lookupItem.typename =
'account';
lookupItem.name =
'A Bike Store';
// Object nesnemizi Array'a veriyoruz.

lookupData[0] = lookupItem;

// Array' parentaccountid alanna veriyoruz.

crmForm.all.parentaccountid.DataValue = lookupData;

1 crmForm.all.<picklistfiled> Özellikler
  Özellik Açıklama
DataValue Seçilmiş olan alanın integer değeri. Okunabilir ve yazılabilir.
SelectedText Seçilmiş olan alanın text değeri.
GetSelectedOption Seçilmiş olan değerin option cinsinden değeri.
Options Picklist içerisindeki öğelerin Array cinsinden değerini verir, ayrıca array içerisinde yeni bir değer var ise bu da gösterilmiş olacaktır. Okunabilir ve yazılabilir.
2 crmForm.all.<picklistfiled> Metotlar
  Metot Açıklama
AddOption(Name, DataValue) Picklist Array'ına yeni öğeler ekler. Name ve DataValue geçerli değişkenler olmalıdır.
DeleteOption(value) Integer değeri verileren öğeyi picklistten kaldırır

Picklist alanlar ile örneğimize geçelim;
Bu örnekte categorytype isimli alan içerisindeki değerlerle oynuyoruz.

var oField = crmForm.all.categorytype;

// 4. öğeyi alyoruz.
var
oOption = oField.Options[4];

// kaç tane öğe olduğunu öğreniyoruz.
alert(
"Original length :" + oField.Options.length);

// birinci öğeye değer atıyoruz.
oField.DataValue = 1;

// birinci öğenin adını alıyoruz.
alert(oField.SelectedText);

// 4. öğeyi siliyoruz.
oField.DeleteOption(4);

// kaç tane öğe olduğunu öğreniyoruz.
alert(
"New length :" + oField.Options.length);

// 4. öğeyi yeniden ekliyoruz.
oField.AddOption(oOption.Text, oOption.DataValue);

// kaç tane öğe olduğunu öğreniyoruz.
alert(
"Restored length :" + oField.Options.length);

Form üzerinde JavaScript kodu ile yukarıdaki anlattıklarımı birleştirerek her şeyi yazmanız mümkün.
Daha önceki JavaScript ile ilgili makalelerimden başka örnekler de bulabilirsiniz:
http://www.cub-e.net/post/CRM-icerisinden-Java-Script-kullanarak-web-sayfasc4b1-cagc4b1rmak.aspx
http://www.cub-e.net/post/Microsoft-CRM-30-Navigation-Bar-Ogelerini-Form-Icinde-IFrame-Ile-Gostermek.aspx
http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM-javascipt.aspx
http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM---Part-II.aspx
http://www.cub-e.net/post/Ascentium-CrmService-JavaScript-Library.aspx
http://www.cub-e.net/post/Use-JavaScript-executecalllaunch-Dynamics-CRM-40-Workflow.aspx
http://www.cub-e.net/post/CRM-workflow-date-update-includes-saturdays-sundays.aspx
http://www.cub-e.net/post/Microsoft-Dynamics-CRM-JScript-Export-Tool-JavaScript.aspx

Bir makalemizin daha sonuna geldik. Umarım anlattıklarım faydalı olmuştur. Hepinize iyi çalışmalar.

Barış KANLICA | Dynamics CRM MVP
Microsoft Certified Business Management Solution Specialist

brsk@e-kolay.net | www.cub-e.net | forum.cub-e.net

Dynamics CRM , , , , , , , , , , , ,

Hiding custom buttons in CRM 4.0 Toolbar - Düğmeleri Gizlemek

21. August 2008

CRM 3.0 içerisinde sadece document.getElementById("").style.display = "none" kodu yardımıyla toolbardan bir düğmeyi silmemiz mümkündü.

Bu CRM 4.0 ile çalışmayacaktır. CRM Form'u yüklendiğinde düğme ID'lerinin çalışma anında oluştuğu görülüyor. Bazen bir düğmenin adı ISV_New_1_MyButtonID iken başka bir zaman ISV_New_39_MyButtonID olabiliyor.

Formun OnLoad() event'ine aşağıdaki kodu ekleyerek düğme gizleme işlemini gerçekleştirebilirsiniz.

----

In CRM 3 it was possible to hide a button on a toolbar just by calling the document.getElementById("").style.display = "none" method.

This will NOT work in CRM 4.0. The ID of the button seems to be generated when the CRM Form is loaded. One time it might be ISV_New_1_MyButtonID the other time it might be ISV_New_39_MyButtonID.

To do so use the following javascript in the forms OnLoad event:

HideButton = function()
{
 
  var ULListItems = document.getElementById("mnuBar1").rows[0].cells[0].getElementsByTagName("UL")[0].getElementsByTagName("LI");
  for(var i=0; i-1)
  { 
    if (ULListItems[i].id.indexOf("MyButtonID") > -1)
    {
      ULListItems[i].style.display =
"none";
    } 
  }
}

// Form yüklendiğinde kodu çalıştır.
// Execute the function when loading the form.

HideButton();


// Form yeniden yüklendiğinde kodu çalıştır.
// Execute the function when the form is resized.

window.onresize = HideButton;

Dynamics CRM , , , , , , , , , , ,

Microsoft Dynamics CRM JScript Export Tool

12. August 2008

Geçenlerde Joris Kalz'ın (http://blogs.msdn.com/joris_kalz/) bloğunda çok faydalı bir araç gördüm hemen sizlerle paylaşmak istedim.
I saw a little tool in blog of Joris Kalz (http://blogs.msdn.com/joris_kalz/) and I want share with you.

VS 2008 projesini aşağıdaki linkten indirebilirsiniz :
You can download the VS 2008 project below link :
Microsoft Dynamics CRM Jscript Export Tool




Başlamadan önce app.config dosyası içerisinde CRM Kurulumunuza uygun ayarları yapmanız gerekmekte :
Before you start this tool, you have to change the app.config according to your CRM installation :



Programı çalıştırdıktan sonra yazdığınız JavaScript kodları belirttiğiniz klasöre çıkartılacak :
After running the tool, all client side JavaScript will be stored at the declared output folder :




Formlar üzerindeki bütün alanların içerisindeki kodlar çıkacaktır :
The result will be a list of all entities containing JavaScript separated by event type and further by form and field events :


 

Dynamics CRM , , , , , , , , , , ,

CRM workflow date update includes saturdays/sundays

8. August 2008

Boş zamanlarımda genellikle forumlarda soru cevaplamaya çalışıyorum. Geçenlerde Dynamics Community Forum'da bir sorunla karşılaştım ve çözüm tekniği olarak Mayank Pujara bir kod yazdı ve forumda yayınladı. Kodu ve sorunu sitemde yayınlıyorum.

" Merhaba, öncelik sırasına göre şikayet takip gününü güncelleyecek bir workflow oluşturmak istiyorum. Eğer öncelik yüksek ise şikayet gününden 24 saat sonra takip tarihi atansın. Eğer öncelik normal ise şikayet gününden 72 saat sonra takip tarihi atansın. Problem ise, CRM haftasonunu (Cumartesi,Pazar)'ı da sayarak hesaplama yapıyor. Benim istediğim ise işgünü olmayan günlerin sayılmasını engellemek."

Bu problem workflow ile çözülemeyince aşağıdaki JavaScipt kodu ile istenen işlenim gerçekleşmesi sağlandı.

---

When I have time, I'm answering the technical question in forums. A couple days ago I see a problem in the  Dynamics Community Forum. Mayank Pujara developed a code for this problem. I want share this problem and JavaScript code.

" Hi, I want to create CRM workflow which updates the case follow up date based on priority. If priority is high --> follow up date would be 24 hrs (1 day) after the case create date. If priority is normal --> follow up date would be 72 hrs (1 day) after the case create date. Now the problem is that CRM includes (or counts) the weekends (Saturday/Sundays) while calculating the days after 3 days. I want to exclude these non business days to be counted in workflow. Is there any ways we can avoid saturdays/sundays while dynamically setting date values in CRM 4.0 workflow? Any idea?? "

JavaScript code is solved problem when workflow didn't work.

The code:

 if(crmForm.FormType == 1)
{
   
crmForm.all.followupby.DataValue = new Date();
    //alert(crmForm.all.followupby.DataValue);

    //high
   
if(crmForm.all.prioritycode.DataValue ==1)
   
{
       
crmForm.all.followupby.DataValue = crmForm.all.followupby.DataValue.setDate(crmForm.all.followupby.DataValue.getDate() + 1);
   
}
   
else if (crmForm.all.prioritycode.DataValue ==2)
   
{
       
crmForm.all.followupby.DataValue = crmForm.all.followupby.DataValue.setDate(crmForm.all.followupby.DataValue.getDate() + 3);
   
}
   
else if (crmForm.all.prioritycode.DataValue ==3)
   
{
       
crmForm.all.followupby.DataValue = crmForm.all.followupby.DataValue.setDate(crmForm.all.followupby.DataValue.getDate() + 5);
   
}

    //alert(crmForm.all.followupby.DataValue);

    if(String (crmForm.all.followupby.DataValue).substr(0,3) == "Sat")
    {
       
crmForm.all.followupby.DataValue = crmForm.all.followupby.DataValue.setDate(crmForm.all.followupby.DataValue.getDate() + 2)
   
}
   
else if (String (crmForm.all.followupby.DataValue).substr(0,3) == "Sun")
   
{
       
crmForm.all.followupby.DataValue = crmForm.all.followupby.DataValue.setDate(crmForm.all.followupby.DataValue.getDate() + 1)
   
}
   
//alert(crmForm.all.followupby.DataValue);

}

 

Dynamics CRM , , , , , , , , , , , , , , ,

Use JavaScript execute/call/launch Dynamics CRM 4.0 Workflow

7. August 2008

CRM 3.0 içinde Mitch Milam JavaScript ile nasıl workflow çalıştırabileceğimizi bize göstermişti. Fakat ExecuteWFProcessRequest sınıfı CRM 4.0'dan kaldırılmış, bu yüzden bu kod CRM 4.0'da çalışmıyor. Ama bu bizim için bir sorun değil bunu kullanabileceğimiz bir sürü yöntem var işte bunlardan birisi:

----

In CRM 3.0, Mitch Milam has described how to Launching a Workflow Rule from JavaScript, it works great. However, in CRM 4.0, the class: ExecuteWFProcessRequest has been deprecated, so it won’t work in CRM 4.0. Although there are many ways to launch a workflow, if you want to run it through JavaScript, here’s the trick:

/* the function */
ExecuteWorkflow = function(entityId, workflowId)
{
    
var xml = "" + 
    
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
    
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + 
    
GenerateAuthenticationHeader() +
    
"  <soap:Body>" + 
    
"    <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" + 
    
"      <Request xsi:type=\"ExecuteWorkflowRequest\">" + 
    
"        <EntityId>" + entityId + "</EntityId>" + 
    
"        <WorkflowId>" + workflowId + "</WorkflowId>" + 
    
"      </Request>" + 
    
"    </Execute>" + 
    
"  </soap:Body>" + 
    
"</soap:Envelope>" + 
    
"";  

     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
    
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    
xmlHttpRequest.send(xml);
    
var resultXml = xmlHttpRequest.responseXML;
    
return(resultXml.xml);
} 

/* call */ 

var theWorkflowId = "3FD2DD58-4708-43D7-A21B-F0F90A0AA9F2";
//change to your workflow Id 

ExecuteWorkflow(crmForm.ObjectId, theWorkflowId);

 

Dynamics CRM , , , , , , , , , , , , , , ,

Ascentium CrmService JavaScript Library

6. August 2008

Ascentim Dynamics CRM Service JavaScipt library'sini yayınladı. Gerçekten çok hoş ve yazılım geliştiricilere CRM platformu üzerinde JavaScript kullanırken çok zaman kazandıracak.
Aşağıdaki adresten inceleyebilirsiniz;

---

Ascentium released their CrmService JavaScript library.  It looks very interesting and should save us CRM developers tons of time extending the CRM platform using JavaScript.
You can look ate below address;

http://www.ascentium.com/blog/crm/Post129.aspx

Dynamics CRM , , , , , , , , , , , , , , ,

OnSave() Events on Dynamics CRM - Part II

5. August 2008

Bir önceki yazıya ek yapmak istiyorum.
I want continue my latest article with this article.

Eğer aynı sayfada OnSave() olayı icra edilirken istemediğiniz bir durum oluşursa (örnek olarak bir alana veri girilmemesi); 'event.returnValue' propertysine 'false' değerini vererek, OnSave() olayını icra edilmeden önce durdurup uyarı mesajı gösterebilirsiniz.
Aşağıadaki örnek kod bunu nasıl yapacağımızı bize anlatıyor.

----

On that page you will see that you can stop the onsave event by setting the 'event.returnValue = false'. Don't forget to follow that line with a 'return false'. This will cause the save procedure to stop right at that point. Otherwise statements after that will still be executed.
Below code tell to us how is execute this procedure.

 

// Example From SDK//

var CRM_FORM_SAVE_MODE_SAVE = 1;
var
CRM_FORM_SAVE_MODE_SAVEANDCLOSE = 2;

// Validate only if the user clicked "Save".

switch (event.Mode)
{
     
case CRM_FORM_SAVE_MODE_SAVE:

      // If the user provided a first and last name, they must provide
     
// a job title as well.

      if (crmForm.all.jobtitle.DataValue == "" &&
     
crmForm.all.firstname.DataValue != "" &&
     
crmForm.all.lastname.DataValue != "" &&)
     
{
           
// Tell the user what is wrong.
           
alert("Please provide a Job Title for this person.");

            // Give the control focus.
           
crmForm.all.jobtitle.SetFocus();

            // Cancel the save operation.
           
event.returnValue = false;
           
return false;
     
}
     
break;

      case CRM_FORM_SAVE_MODE_SAVEANDCLOSE:
     
// If the user forgot to provide a job title, set a default title.
     
if (crmForm.all.jobtitle.DataValue == "")
     
{
           
// Set a default Job Title.
           
crmForm.all.jobtitle.DataValue = "N/A";

            // Because this is a "Save and Close",
           
// just save the form.

            return true;
     
}

      break;
}

Dynamics CRM , , , , , , , , , , , ,

OnSave() Events on Dynamics CRM - Part I

4. August 2008

Bu sefer güzel bir ipucum var :)

Dynamics CRM içerisinde javascript kodu ile kaydetme işlemlerini crmForm.Save() veya crmForm.SaveAndClose() komutlarından biriyle yapabilirsiniz.Eğer "event.Mode"'a bakarsaniz en son hangi olay fonksiyon çağrılmış bunu bulabilirsiniz. Eğer kod 1 geri dönüyorsa crmForm.Save() eğer 2 dönüyorsa crmForm.SaveAndClose() çalışmış demektir.Tabii ki geri dönen sadece bunlar değil aşağıdaki listede hangi fonksiyon çalışınca hangi kodun geri döneceğine bakabilirsiniz.

-----

I have a good tip :)

To call the save event from your javascript code you can use the javascript functions crmForm.Save(); and crmForm.SaveAndClose(). By looking at the 'event.Mode' you can determine which event was executed before. If the code is 1, then it is a crmForm.Save(); or it is 2 for a crmForm.SaveAndClose(). There's only one small issue. There can be other save events as well. Below is a list of save events with the corresponding javascript functions to call.

Save
Code: 1
Function: crmForm.Save();

SaveAndClose
Code: 2
Function: crmForm.SaveAndClose();

Send
Code: 7
Function: send();

SaveAsCompleted
Code: 58
Function: SaveAsCompleted();

SaveAndNew
Code: 59
Function: crmForm.SubmitCrmForm(59, true, true, false);

Dynamics CRM , , , , , , , , , ,

Show navigation bar item in IFrame in Microsoft CRM

27. January 2008

Show navigation bar item in IFrame in Microsoft CRM

We don't make anything without Navigation Bar in CRM. In default, CRM haven't a setting about showing their pages in a IFrame. But we can change this event and we can more effective a usage area in CRM Form. Specially sales persons don't want to click to lot of things and they want see the result of an action. So in this article we will learn how to show associated activities in centre of Contact card. We have a way that have two step. In first step, we will place a IFrame in Contact Card. In second step we will place a little JavaScript code for IFrame that we had placed. Let start;

a) IFrame :

"Settings" -> "Customizations" -> "Customize Entities" after this steps in CRM, we find the Contact card and we open this card. We select the "Forms and Views" in navigation bar at left and we clicked the Form.
Where you want place the your activities screen you select the interested tab and click the "Add IFrame" button. A window will be opened;

  1. set the Name "HistoryFrame",
  2. set the URL "about:blank",
  3. we select the "Pass record object-type code and unique identifier as parameters",
  4. we unselect the "Restrict cross-frame scripting"

The first step will be completed when we press the ok. Let the show second step;

b) JavaScript :

We click the "Form Properties" in same screen. We click the "OnLoad" on opened window. We replace the code that below. We click the buttons "ok" and "Save Form and Close".

function GetFrameSource(tabSet)
{
   
if (crmForm.ObjectId != null)
    {
       
var oId = crmForm.ObjectId;
       
var oType = crmForm.ObjectTypeCode;
       
var security = crmFormSubmit.crmFormSubmitSecurity.value;
       
return "areas.aspx?oId=" + oId + "&oType=" + oType + "&security=" + security + "&tabSet=" + tabSet;
    }
   
else
    {
       
return "about:blank";
    }
}

crmForm.all.IFRAME_HistoryFrame.src = GetFrameSource(
"areaActivityHistory");

We click to "Publish" that in the "actions" menu. We will see the activity history of contact when we open a contact card.

I hope it will done. Regards.

Barış KANLICA
Software Specialist
brsk@e-kolay.net
www.cub-e.net



 

Dynamics CRM , , , , , , , , , , ,