Calling Actions through java script

Action is a new and very powerful feature of Microsoft Dynamics CRM. Action can be called through Soap Call which goes like following some steps which goes like this.

            1) You are require create soap envelop.

            2) calling soap service.

Complete Js to call your Action

function CallActionFromJavaScript() {

   debugger;

    var entityId = Xrm.Page.data.entity.getId();;

    var entityName = Entity name;

    var requestName = Action Name;

    ExecuteActionCreateProject(entityId, entityName, requestName);

}

function ExecuteActionCreateProject(EntityId,entityId, entityName, requestName) {

    // Creating the request XML for calling the Action

    var requestXML = “”

    requestXML += “<s:Envelope xmlns:s=\”http://schemas.xmlsoap.org/soap/envelope/\”>”;

    requestXML += ”  <s:Body>”;

    requestXML += ”    <Execute xmlns=\”http://schemas.microsoft.com/xrm/2011/Contracts/Services\” xmlns:i=\”http://www.w3.org/2001/XMLSchema-instance\”>”;

    requestXML += ”      <request xmlns:a=\”http://schemas.microsoft.com/xrm/2011/Contracts\”>”;

    requestXML += ”        <a:Parameters xmlns:b=\”http://schemas.datacontract.org/2004/07/System.Collections.Generic\”>”;

    requestXML += ”          <a:KeyValuePairOfstringanyType>”;

    requestXML += ”            <b:key>Target</b:key>”;

    requestXML += ”            <b:value i:type=\”a:EntityReference\”>”;

    requestXML += ”              <a:Id>”+entityId+”</a:Id>”;

    requestXML += ”              <a:LogicalName>”+entityName+”</a:LogicalName>”;

    requestXML += ”              <a:Name i:nil=\”true\”>”;

    requestXML += ”            </a:Name></b:value>”;

    requestXML += ”          </a:KeyValuePairOfstringanyType>”;

    requestXML += ”          <a:KeyValuePairOfstringanyType>”;

    requestXML += ”            <b:key>EntityId</b:key>”;

    requestXML += ”            <b:value i:type=\”c:string\” xmlns:c=\”http://www.w3.org/2001/XMLSchema\”>”+EntityId+”</b:value>”;

    requestXML += ”          </a:KeyValuePairOfstringanyType>”;

    requestXML += ”        </a:Parameters>”;

    requestXML += ”        <a:RequestId i:nil=\”true\”>”;

    requestXML += ”         </a:RequestId>”;

    requestXML += ”        <a:RequestName>”+requestName+”</a:RequestName>”;

    requestXML += ”      </request>”;

    requestXML += ”    </Execute>”;

    requestXML += ”  </s:Body>”;

    requestXML += “</s:Envelope>”;

    var req = new XMLHttpRequest();

    req.open(“POST”, GetClientUrl(), false)

    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&#8221;);

    req.send(requestXML);

    //Get the Response from the CRM Execute method

    //var response = req.responseXML.xml;

    req.onerror = function (e) {

        alert(req.statusText);

    };

    if (req.status === 200) {

        alert(req.responseText);

    }

}

function GetClientUrl() {

    if (typeof Xrm.Page.context == “object”) {

        clientUrl = Xrm.Page.context.getClientUrl();

    }

    var ServicePath = “/XRMServices/2011/Organization.svc/web”;

    return clientUrl + ServicePath;

}

Thanks.

Leave a comment