cub-e.net

just coding...

CRM workflow date update includes saturdays/sundays

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);

}

 

Use JavaScript execute/call/launch Dynamics CRM 4.0 Workflow

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);

 

Ascentium CrmService JavaScript Library

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

Microsoft Dynamics CRM 4.0 Software Development Kit - Yazılım Geliştirme Aracı

Rapor oluşturucular, yazılım ve içerik geliştiriciler için olan Microsoft Dynamics CRM 4.0 Software Development Kit (SDK) güncellenmiştir.
Plug-in oluşturmanın yeni yöntemleri, workflow aktiviteleri ile çalıştırma, yeni web servislerini kullanma, veri yönetimi ve daha birçok konuda yeni yazılar ve örnekler içermektedir.

Adres : http://www.microsoft.com/downloads/details.aspx?FamilyID=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&displaylang=en

----

The Microsoft Dynamics CRM 4.0 Software Development Kit (SDK) is for developers, system customizers, and report writers.
It contains all new information about creating plug-ins, working with custom workflow activities, using the new Web services, using new data management features, and much more.

This SDK contains information for developers writing server side code, custom business logic, integration modules, workflow assemblies, and more. It provides an architectural overview of Microsoft Dynamics CRM, the entity model, security model, and Web services. Sample code and walkthroughs guide you through the new features.

The SDK also contains information for developers customizing the Web client or Microsoft Dynamics CRM for Microsoft Office Outlook, including scripting, integration of custom Web pages, sample code, and a detailed user interface style guide.

Look for regular updates to this SDK. Future releases will include the ISV Guide and Report Writers Guide.

link: http://www.microsoft.com/downloads/details.aspx?FamilyID=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&displaylang=en