Search This Blog

Thursday, September 25, 2014

Run Workflow using javascript CRM 2013

only change GUID of your workflow
function RunWorkflow() {
     var _return = window.confirm('Are you want to execute workflow.');
     if (_return) {
         var url = Xrm.Page.context.getServerUrl();
         var entityId = Xrm.Page.data.entity.getId();
         var workflowId = '87038619-3DA9-47A9-92A8-263E5C0533B4';
         var OrgServicePath = "/XRMServices/2011/Organization.svc/web";
         url = url + OrgServicePath;
         var request;
         request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
                       "<s:Body>" +
                         "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
                           "<request i:type=\"b:ExecuteWorkflowRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">" +
                             "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">" +
                               "<a:KeyValuePairOfstringanyType>" +
                                 "<c:key>EntityId</c:key>" +
                                 "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + entityId + "</c:value>" +
                               "</a:KeyValuePairOfstringanyType>" +
                               "<a:KeyValuePairOfstringanyType>" +
                                 "<c:key>WorkflowId</c:key>" +
                                 "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + workflowId + "</c:value>" +
                               "</a:KeyValuePairOfstringanyType>" +
                             "</a:Parameters>" +
                             "<a:RequestId i:nil=\"true\" />" +
                             "<a:RequestName>ExecuteWorkflow</a:RequestName>" +
                           "</request>" +
                         "</Execute>" +
                       "</s:Body>" +
                     "</s:Envelope>";
         var req = new XMLHttpRequest();
         req.open("POST", url, true)
         // Responses will return XML. It isn't possible to return JSON.
         req.setRequestHeader("Accept", "application/xml, text/xml, */*");
         req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
         req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
         req.onreadystatechange = function () { assignResponse(req); };
         req.send(request);
     }
 }
 function assignResponse(req) {
     if (req.readyState == 4) {
         if (req.status == 200) {
             alert('successfully executed the workflow');
         }
     }
 }