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