Hi,
I defined 4 stages of Business Process Flow for an entity and i have a field that has to be enabled in the first stage and disabled in all the other stages.
Can anyone suggest of how could i achieve this.
Thank you.
Hi,
I defined 4 stages of Business Process Flow for an entity and i have a field that has to be enabled in the first stage and disabled in all the other stages.
Can anyone suggest of how could i achieve this.
Thank you.
Hi, Priya
You can add a JavaScript into the form to control it.
For example, I have a field ‘num’ in Contact entity. There are two stages in my BPF. Both of them contains ‘num’.
1. Create a Web Source.
The Script is:
function setNum(){
Xrm.Page.getControl("header_process_new_num").setDisabled(false);
Xrm.Page.getControl("header_process_new_num_1").setDisabled(true);
// The numbers of suffixes are incremented by Stage, the second stage is _1, the third one is _2
}
2. Add the script to the form which executes the BPF. Set as an on-load event.
3. Refresh the page of the form. You’ll see the different availability of ‘num’ in different stages.
Hope this helps.
Best Regards,
Nya
Hi Priya,
The only way to do this as far as I'm concerned to use custom JavaScript on Form Load. First, you have to get GUID of your BPF and check its GUID then you have to check GUIDs of each stage via web API. when you have the id of your at which you want to enable that field you need first disable it likes so:
function onLoad(ctx) {
const formContext = ctx.getFormContext();
const idOfyourStage = '<your stage id here>';
const logicalNameOfYourField = 'header_process_<your field logical name>';
// gets current Active Stage Id
const activeStageId = formContext.data.process.getActiveStage().getId();
// disable your field
formContext.getControl(logicalNameOfYourField).setDisabled(true)
// check if id of a stage is where you should unlock that field
if (activeStageId === idOfyourStage) {
formContext.getControl(logicalNameOfYourField).setDisabled(false)
}
// Here you need to basically duplicate your logic, as the code above works on page refresh. When the user changes BPF stage, the code below will run
formContext.data.process.addOnStageChange((ctx) => {
// duplicate code above to run on each BPF stage update
}
}
Hope this helps.
Regards,
Konrad
André Arnaud de Cal...
294,141
Super User 2025 Season 1
Martin Dráb
232,881
Most Valuable Professional
nmaenpaa
101,158
Moderator