Show CRM entity form to particular Business unit users only
Views (9)
In MS CRM we can enable security role to custom forms, and only selected role users can view that form. When selecting role, all Roles are shown form ROOT business unit, there is no option to get security role from child business units.
In some cases if you want to show custom entity form only for particular business unit users regardless of their role, then need to write custom JavaScript code.
Add following function for entity form, which want to show based on business unit, if users business unit is not allowing to view form, then user will be redirected to other form.
var accountScript = {
showFormBasedOnBusinessUnit: function () {
var userId = Xrm.Page.context.getUserId();
userId = userId.replace("{", "").replace("}", "");
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/systemusers(" + userId + ")?$select=_businessunitid_value", false);
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 === 200) {
var result = JSON.parse(this.response);
var businessunitid = result["_businessunitid_value"];
var businessunitidname = result["_businessunitid_value@OData.Community.Display.V1.FormattedValue"];
if (businessunitidname != "Finance") {
var forms = Xrm.Page.ui.formSelector.items.get();
for (var i in forms) {
var formname = forms[i].getLabel();
if (formname == "Information") {
forms[i].navigate();
break;
}
}
}
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
}
};
This was originally posted here.

Like
Report
*This post is locked for comments