In Dynamics 365, there are instances when we need to dynamically change the labels of option set fields based on specific conditions. For example, we might want to update the label of the “Priority” field option from High to Critical when a case is marked as escalated (Is Escalated = True).
Below is the sample code we can use for it. The code will be registered on the OnLoad for Form and OnChange of Is Escalated field.
function SetLabel(executionContext)
{
var formContext = executionContext.getFormContext();
var isEscalated = formContext.getAttribute("isescalated");
var optionSetControl = formContext.getControl("prioritycode"); // field is in header and not in form
var optionHigh = 1; // high
var newLabel = "Critical";
if(optionSetControl && isEscalated.getValue() == true)
{
var options = optionSetControl.getOptions();
for (var i = 0; i < options.length; i++) {
if (options[i].value === optionHigh) {
optionSetControl.removeOption(optionHigh);
optionSetControl.addOption({
text: newLabel,
value: optionHigh
});
break;
}
}
}
}
On opening the form, we can see the Priority’s value High changed to Critical in case Is Escalated = Yes.

var formContext = executionContext.getFormContext(); = This retrieves the form context from the execution context, which is essential to interact with the form’s attributes and controls.
var isEscalated = formContext.getAttribute(“isescalated”) = The isescalated attribute is used to determine whether the case is escalated.
var optionSetControl = formContext.getControl(“prioritycode”);
- The current options are retrieved using getOptions().
- The option with the value 1 (High priority) is removed.
- A new option with the updated label “Critical” and the same value is added.
However, one interesting thing to note is the Header still shows the old value High, it seems there is no supported way to change the label in case if the field is used in the Header.
Hope it helps..
Discover more from Nishant Rana's Weblog
Subscribe to get the latest posts sent to your email.
