How to retrieve entity metadata using Xrm.Utility.getEntityMetadata()

Sending
User Review
0 (0 votes)

Introduction

Currently, we need to create http requests to retrieve the metadata of the entity or attributes of any entity. But now, Dynamics 365 introduced a Web API method i.e Xrm.Utility.getEntityMetadata() which helps you retrieve any entity metadata easily without creating any http requests. Please find below two examples to understand this method in detail:

1. Retrieve whole entity metadata

Let’s take one example, we want to check if the current entity is activity entity or not. For this query, you can simply use Xrm.Utility.getEntityMetadata, you need to just pass the entity logical name of the entity which you want to retrieve the metadata for, as shown below:

Xrm.Utility.getEntityMetadata(“account”, []).then(

function(entityMetadata){

//check for entity metadata

If(entityMetadata!=undefined){

//declare one flag which indicate current entity is activity entity

var isActivityEntity = false;

//check for IsActivity attribute

if (entityMetadata.IsActivity != undefined) {

//check current entity is activity entity using IsActivity attribute

if (entityMetadata.IsActivity == true) {

//set flag to true as current entity is Activity entity

isActivityEntity = true;

} else {

//set flag to false as current entity is not Activity entity

isActivityEntity = true;

}

}

}

}, function(e){

//error

alert(e.error.message);

});

Note: We pass the second parameter is empty [] to getEntityMetadata method because in the above example we need to retrieve all metadata of the Account entity.

After running the below code, we will get all the metadata of that entity such as logical name, entity set name, as shown in the below screenshot.

2. Retrieve metadata of selected attribute of any entity

Now, we want to retrieve any attribute metadata of any entity that you want in Dynamics 365. Let’s take one example; we want to retrieve metadata of the industry field of Account entity using the getEntityMetadata method. In this scenario, you need to pass those entity names and attributes list for which you want to retrieve metadata, as shown below.

Xrm.Utility.getEntityMetadata(“account”, [“industrycode”]).then(

function (entityMetadata) {

//check for attribute entity metadata

if (entityMetadata != undefined && entityMetadata.Attributes != undefined && entityMetadata.Attributes._collection != undefined) {

//check for industry type option set

if (entityMetadata.Attributes._collection[“industrycode”]) {

//get option set data

var industryCodeOptionSetData = entityMetadata.Attributes._collection[“industrycode”].OptionSet;

}

}

}, function(e){

//error call back

alert(e.error.message);

});

After running the above code you will get all options data in the industry field Option Set, as shown in the below screenshot:

How to retrieve entity metadata using Xrm.Utility.getEntityMetadata

Conclusion

With help of Xrm.Utility.getEntityMetadata() method you can retrieve metadata of any entity or metadata of any attributes of that entity, you no longer need to create an http request to achieve this.