Hi all,
I was trying to call action from javascript using the below code:
function Approve() { debugger; var reason = "aaaaaaaaaaaaaaaaaa"; var entityId = Xrm.Page.data.entity.getId(); var entityName = "serviceappointment"; var requestName = "new_SetRejectionReason"; ExecuteActionCreateProject(reason, entityId, entityName, requestName); } function ExecuteActionCreateProject(reason, 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>Reason</b:key>"; requestXML += " <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">"+reason+"</b:value>"; requestXML += " </a:KeyValuePairOfstringanyType>"; 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 += " </b:value>"; requestXML += " </a:KeyValuePairOfstringanyType>"; requestXML += " </a:Parameters>"; requestXML += " <a:RequestId i:nil=\"true\" />"; 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/IOrganizationServic/Execute"); req.send(requestXML); //Get the Resonse from the CRM Execute method var response = req.responseXML.xml; } function GetClientUrl() { if (typeof Xrm.Page.context == "object") { clientUrl = Xrm.Page.context.getClientUrl(); } var ServicePath = "/XRMServices/2011/Organization.svc/web"; return clientUrl + ServicePath; }
And this the response that I get:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">a:ActionNotSupported</faultcode><faultstring xml:lang="en-US">The message with Action 'http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationServic/Execute' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).</faultstring></s:Fault></s:Body></s:Envelope>
Kindly advise