Using JavaScript to assign a record

A while back, a user on the Microsoft Dynamics forums asked how to assign a record using JavaScript. Here’s the code, remember to update the userid and recordid variables.

var header = GenerateAuthenticationHeader();

var userid = "838975f4-029c-de11-9693-0003ffc4c746";
var recordid = "9721c859-d185-dc11-ac34-000c291d8da3";
var target = "TargetOwnedAccount";

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\">" +
header +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"AssignRequest\">" +
" <Target xsi:type=\""+ target +"\">" +
" <EntityId>"+ recordid +"</EntityId>" +
" </Target>" +
" <Assignee>" +
" <PrincipalId xmlns=\"http://schemas.microsoft.com/crm/2006/CoreTypes\">"+ userid +"</PrincipalId>" +
" <Type xmlns=\"http://schemas.microsoft.com/crm/2006/CoreTypes\">User</Type>" +
" </Assignee>" +
" </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;

(I pasted it here so that I can find it easily in future).

7 thoughts on “Using JavaScript to assign a record

  1. Hi,
    i am trying to assign a case to a user using javascript, i tried your solution but using execute doesn’t work since ‘TargetOwnedIncident’ class doesn’t have Assign message which is used to assign a record. please suggest if there is any other way to do this using javascript? tried Update but that also didn’t work.

    • Hi ninad,

      If you’re trying to assign an Incident record (or any other record that can be put into a Queue), you need to use the Route message (RouteRequest) and set the endpointid to be the GUID of the CRM user.

      Hope that helps.

      -S

  2. Hi Shafraz,
    the earleir solution by you works just fine, i was having wrong reference to webservice url. when it wasn’t working thought must be related to class TargetOwnedIncident message. gr8 post. thanx a lot for quick response.

    ninad

Leave a comment