cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
PowerUser06
Helper I
Helper I

Auto Refresh After Flow Run & Field Value Change

 

Hi,

 

I have created a flow in Power Automate which will set the value of a field based on changed value of a Lookup field. Now the problem is since flows are asynchronous, I can see the change in my field value only after I save and refresh the page. So if I change my Lookup value, I dont see a corresponding change in my other field unless I refresh the page. But I want the change in the other field to show as soon as my Lookup value changes. So I tried using the data.refresh JS code that is supposed to refresh without loading the page, on OnLoad & OnChange event of my Lookup field, but somehow my function is not working. Here is my code...

 

function onLookUpChange(executionContext) {

 

var formContext = executionContext.getFormContext();

 

formContext.data.refresh(save).then(successCallback, errorCallback);

 

}

 

Can someone please tell me what is wrong with my code? Or if you know any other way of loading the field value as soon as the Look Up value changes, please let me know.

 

Thanks!

 

1 ACCEPTED SOLUTION

Accepted Solutions
v-xiaochen-msft
Community Support
Community Support

Hi @PowerUser06 ,

 

Xrm framework provides an easy method to get a record from a different entity.

https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/xrm-web...

vxiaochenmsft_0-1664417045810.png

So my advice is to use scripts instead of flow and scripts together because it is difficult for mda form to get the time of flow run successfully.

After getting the value from the other entity by using retrieveRecord function, you could use setValue() function to 

fill out the 'Designation' field.

It should be noted that at this time the two fields are just populated with values, but they are not saved in database, please remember to save the form finally.

Hope it makes sense.

 

Best Regards,

Wearsky

View solution in original post

10 REPLIES 10
v-xiaochen-msft
Community Support
Community Support

Hi @PowerUser06 ,

 

What's the trigger of your flow?

 

Best Regards,

Wearsky

SudeepGhatakNZ
Resident Rockstar
Resident Rockstar

I think what you are saying is that you have webpart on a page with a lookup field.

When you change the lookup field and submit, it triggers the flow.

The flow updates another field in the background and the changed value does not reflect in the UI. Correct?

 

Why don't you just update the field in the OnSuccess method of your Javascript?

 

If my suggestion helped you, please give it a Thumbs up and mark it as a Solution so that it can benefit others in the community.

@v-xiaochen-msft 

 

In my scenario, I have a lookup named 'Personnel Name' in which you can choose a person from the Contact entity. My requirement is - I have another field named 'Designation' after the Personnel Name lookup field, so based on the person selected in the lookup field, I want the designation of that person to automatically be populated in the 'Designation' field from the designation field in the Contact entity. So my flow trigger is when my row is added or modified, i.e., when my Lookup field is updated.

 

Hi @SudeepGhatakNZ,

 

Thank you for you suggestion. Yes you are right, I have a lookup named 'Personnel Name' in which you can choose a person from the Contact entity. I have another field named 'Designation' and based on the person selected in the lookup field, I want the designation of that person to automatically be populated in the 'Designation' field from the designation field in the Contact entity. The flow triggers only after the page is refreshed.

 

I'm ok with using a JS code instead, but I am able to write only upto the point of getting the Lookup field values. So can you please help me finish this code to populate the 'Designation' field from Contact entity...

 

function setDesignation(executionContext) {

    var formContext = executionContext.getFormContext();

     // get Lookup details

    var lookupPersonnel = formContext.getAttribute("new_personnelname").getValue();

    var lookupId = lookupPersonnel[0].id;

    var lookupName = lookupPersonnel[0].name;

    var lookupEntityName = lookupPersonnel[0].entityType;

     // get the Designation field

    var designation = formContext.getAttribute("new_designation");

}

 

Thank you!

SudeepGhatakNZ
Resident Rockstar
Resident Rockstar

Is your field a span/label/div?

If you are using react, you can just update the state variable.

Else, find the control Id (using Inspect element on your browser) and set the value of the control 

If my suggestion helped you, please give it a Thumbs up and mark it as a Solution so that it can benefit others in the community.

 

@SudeepGhatakNZ,

 

I just know the basics of Javascript and coding, am mainly into the admin side of Dynamics. I dont know if my field is a span/label/div, but its in the same section as the Lookup field on the form. Can you please elaborate on how to find the control id using Inspect element? I have never used it so I'm not sure how to figure it out. The Designation field name is 'new_designation' in both the entities. Since we need to get the field value from a related entity and set it in this entity, that is what is confusing me. If it was from the same entity, things would have been simpler. 

 

Thanks!

 

SudeepGhatakNZ
Resident Rockstar
Resident Rockstar

Sorry @PowerUser06 ,

 

I am not a dynamics guy so do not know the API well.

Did you look at this?

updateRecord (JavaScript API Reference) for Dynamics 365 Channel Integration Framework 1.0 | Microso...

If my suggestion helped you, please give it a Thumbs up and mark it as a Solution so that it can benefit others in the community.
v-xiaochen-msft
Community Support
Community Support

Hi @PowerUser06 ,

 

Xrm framework provides an easy method to get a record from a different entity.

https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/xrm-web...

vxiaochenmsft_0-1664417045810.png

So my advice is to use scripts instead of flow and scripts together because it is difficult for mda form to get the time of flow run successfully.

After getting the value from the other entity by using retrieveRecord function, you could use setValue() function to 

fill out the 'Designation' field.

It should be noted that at this time the two fields are just populated with values, but they are not saved in database, please remember to save the form finally.

Hope it makes sense.

 

Best Regards,

Wearsky

Hi @v-xiaochen-msft ,

 

Thanks a lot for your help! You are right, using JS instead of flow seems to be the perfect solution! I have been working on the JS code using the retrieveRecord function to get field values from my related entity and set it to my current entity using setValue() function. After a few hiccups and multiple trials, my code is finally working. Thank you @v-xiaochen-msft !

No problem, @SudeepGhatakNZ. I used the retrieveRecord function to retrieve the field value from a related entity (Contacts, in my case) and set it to my current entity and now my code is working. Thank you for your suggestions. 

Helpful resources

Announcements
Power Automate News & Announcements

Power Automate News & Announcements

Keep up to date with current events and community announcements in the Power Automate community.

Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Power Automate Community Blog

Power Automate Community Blog

Check out the latest Community Blog from the community!

Users online (5,401)