Setting Lookups and Option Sets when Creating Records in Web API

Leave a comment

In this post, we will look at how to set lookup and option set values when creating records in the Web API.

Let’s create an Account record. Account have fields such as the following:

  • Parent account – lookup
  • Industry code – Option Set
  • Do not email – boolean
  • Credit hold – boolean
  • Shipping method code – option set
  • Currency Id – lookup

Let’s create some JavaScript to create a new record that populates these fields.

First, we will use the Xrm.WebApi. We can see when populating lookups, we are using the pattern:

entity[“fieldnameid@data.bind] = “/pluralentityname(guid)”

Note the plural entity name. If your code is not working, confirm the plural name by looking at the Web API in a browser.

For option sets we provide the option set value, e.g. 5. For boolean fields we can provide true or false.

The code:

var entity = {};
entity.name = "Test Record using XrmWebAPI";
entity["parentaccountid@odata.bind"] = "/accounts(e46bf6d0-86b6-ea11-a812-000d3a300fca)";
entity.industrycode = 1;
entity.donotemail = true;
entity.creditonhold = true;
entity.shippingmethodcode = 1;
entity["transactioncurrencyid@odata.bind"] = "/transactioncurrencies(babdc8de-15b2-ea11-a812-000d3a31ae07)";

Xrm.WebApi.online.createRecord("account", entity).then(
    function success(result) {
        var newEntityId = result.id;
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);

And using XMLHttpRequest:

var entity = {};
entity.name = "Test Record using XMLHttpRequest";
entity["parentaccountid@odata.bind"] = "/accounts(e46bf6d0-86b6-ea11-a812-000d3a300fca)";
entity.industrycode = 1;
entity.donotemail = true;
entity.creditonhold = true;
entity.shippingmethodcode = 1;
entity["transactioncurrencyid@odata.bind"] = "/transactioncurrencies(babdc8de-15b2-ea11-a812-000d3a31ae07)";

var req = new XMLHttpRequest();
req.open("POST", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/accounts", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 204) {
            var url = this.getResponseHeader("OData-EntityId");
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send(JSON.stringify(entity));

Created record:

The url field in the output provides the id of the record created.

 

THANKS FOR READING. BEFORE YOU LEAVE, I NEED YOUR HELP.
 

I AM SPENDING MORE TIME THESE DAYS CREATING YOUTUBE VIDEOS TO HELP PEOPLE LEARN THE MICROSOFT POWER PLATFORM.

IF YOU WOULD LIKE TO SEE HOW I BUILD APPS, OR FIND SOMETHING USEFUL READING MY BLOG, I WOULD REALLY APPRECIATE YOU SUBSCRIBING TO MY YOUTUBE CHANNEL.

THANK YOU, AND LET'S KEEP LEARNING TOGETHER.

CARL

https://www.youtube.com/carldesouza

 

ABOUT CARL DE SOUZA

Carl de Souza is a developer and architect focusing on Microsoft Dynamics 365, Power BI, Azure, and AI.

carldesouza.comLinkedIn Twitter | YouTube

 

Leave a Reply

Your email address will not be published. Required fields are marked *