Thursday, 9 February 2012

Create,Update,Retrieve, RetrieveMultiple Records in CRM 2011 with Javascript REST endpoint


For who are new with Microsoft CRM 2011, this is a first lession that you should know: How to create, update, retrieve and delete a record of an entity in CRM by using javascript. These basic operations help you a lot in developing your CRM by using the client-side language Javascript.

There are two ways to achieve the results:
1. Using directly the REST Endpoint method like in SDK sample in this link: --> for me, this way is complicated, because you have to bring the whole REST Endpoint function to your code, which makes your code like a mess.

2. Download the REST Endpoint method from SDK  and use it like a library for your javascript code.

Now are steps how to do the second way:

- Step 1: Prepare the following required js:
       + JavascriptRESTDataOperations --> from SDK: SampleCode\JS\RESTEnpoint\JavascriptRESTDataOperations
       + jquery1.7.1.js --> from
       + json2.js --> from

- Step 2: Creating your javascript as following:

//Create record
function Create_CRMObject()
{ var CRMObject = new Object();
  CRMObject.Id = "";
  //createRecord function is in jsoperation.js
  createRecord(CRMObject,"your entity set name", createCRMObjectCompleted,errorCreate) 
  // entity set name, for example: AccountSet, ContactSet, etc
createCRMObjectCompleted = function (data, textStatus, XmlHttpRequest)
{ var newCRMObjectCreated = data["d"];  
errorCreate = function (XMLHttpRequest, textStatus, errorThrown) 
{ alert("Error");

//Update record
function Update_CRMObject()
    new CRMObject = new Object();
 var CRMObject_Id = "put the GUID here";
 var CRMObject."Attribute" = "put any attribute value here"
 //updateRecord function is in jsoperation.js
 updateRecord(CRMObject_Id,CRMObject,"you entity set name", updateCRMObjectCompleted,errorUpdate); // entity set name, for example: AccountSet, ContactSet, etc
updateCRMObjectCompleted = function (data, textStatus, XmlHttpRequest)
{ alert("your update is successful");  
errorUpdate = function (XMLHttpRequest, textStatus, errorThrown) 
{ alert("Error");

//Delete Record
function Delete_CRMObject()
{  var CRMObject_Id =" put the GUID here");
   //deleteRecord function is in jsoperation.js
   deleteRecord(CRMObject_Id,"your entity set name", deleteCRMObjectCompleted, errorDelete);   
deleteCRMObjectCompleted = function (data, textStatus, XmlHttpRequest)
errorDelete = function (XMLHttpRequest, textStatus, errorThrown) 
{ alert("Error");

//Retrieve Record
function retrieve_CRMObject()
{ //retrieveRecord function is in jsoperation.js
   retrieveRecord("put your record GUID here","put your entity set name", retrieveCRMObjectCompleted, errorRetrieve);
// entity set name, for example: AccountSet, ContactSet, etc
retrieveCRMObjectCompleted = function (data, textStatus, XmlHttpRequest)
{ var newCRMObjectRetrieve = data["d"];
  //now you could retrieve any field belongs to your record
errorRetrieve = function (data, textStatus, XmlHttpRequest) 
{ alert("Error"); 

//Retrieve Multiple Records
function retrievemultiple_CRMObject() 
{  retrieveMultiple("your entity set name","", retrievemultipleCRMObjectCompleted, errorRetrieveMultiple);
// entity set name, for example: AccountSet, ContactSet, etc
retrievemultipleCRMObjectCompleted = function (data, textStatus, XmlHttpRequest)
{ var CRMObject = data;
  if (CRMObject.length !==0)
   { for (i=0, i<CRMObject.length, i++)
      { CRMObject[0].id = ... //retrieve any field you want
  { alert("no record");
errorRetrieveMultiple = function (data, textStatus, XmlHttpRequest) 
{ alert("Error"); 

Save all of above code in CRMObject.js

- Step 3: Add all 4 above js files in your entity's form. Put the function name for onload or onsave event. Then you could do anything you want now !

I hope it helps. Please email to if you have any further question to implement it !




  1. how about creating multiple objects?

  2. Hi,

    I have never tried "Create Multiple" objects with Javascript :|. But I did it in plugin and worked well.

    Basically, in CRM SDK there are exactly the same functions in C# (create, retrieve, delete, update...) that you can use for plugin. All need to do is just put the "CreateRecord" function in a loop to execute in multiple times to create multiple objects :).

    I will post a blog about how to use those functions in plugin soon. Thank you for your comment ;)

  3. When I try to update a "built-in" field in a "built-in" entity ("Message" Entity), it works just fine. but when I try to update a custom field (with prefix new_) it doesn't..
    Any ideas..?


  4. Hi,

    These function work well with any kind of entity or field (system/custom) as long as you put the correct name of the fields or entities.

    For example: you are going to update a new entity named "new_sms", with field named "new_smscontent":

    function Update_CRMObject()
    new CRMObject = new Object();
    var CRMObject_Id = "G18973-29823-321398-12387"; //put the ID of the record you wanna update
    var CRMObject."new_smscontent" = "Hello World"
    updateRecord(CRMObject_Id,CRMObject,"new_smsSet", updateCRMObjectCompleted,errorUpdate);

    Remember to put :
    - Correct entity name: which is schema name
    - Correct field name: which is schema name also
    - Correct Entity Set Name: which is normally = entity schema name + "Set"

    Hope you go through it ;)

  5. Kelly,

    Awesome post. Thanks for this.
    FYI - some of the Syntax in your example is incorrect. I also found that I didn't have to include "Set" after my entity name, it was appending it for me.

    Cheers and thanks again.


  6. Hi,

    useful post - thanks!
    Can you tell me how to retrieve a hierarchy of Subjects, so I can display a string like "grandparent_subject : parent_subject : subject", for example:

    Transport : Cars : Hatchbacks or
    Transport : Cars : SUV or
    Transport : Bikes : 500-750cc or
    Transport : Trucks : Articulated

  7. hi,

    i want to retrieve related values on change of the lookup value. how to use the retrieve function. sample code?