web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics 365 | Integration, Dataverse...
Suggested Answer

Triggering a plugin from a JS onSave

(0) ShareShare
ReportReport
Posted on by 8

I have two fields on the Contact entity, let's call them new_b_main and new_b_sub, both of type Boolean.

My JS is simple - when new_b_main changes from false to true , new_b_sub should also switch to true (even if new_b_main switched back to false, new_b_sub should remain true)

My JS code:

function onSave(ExecutionContext)
{
  if(Xrm.Page.getAttribute("new_b_main").getValue() && Xrm.Page.getAttribute("new_b_main").getIsDirty())
    Xrm.Page.getAttribute("new_b_sub").setValue(true);
}

I also have a plugin step that runs of an Update of Contact (Pre-Operation) with a filtering attributes of new_b_sub.

The plugin should check if new_b_sub is true and if so, get the governmentid of the Contact (via Pre-Image), encode it to Base64 and store it in some other field.

The code for the Plugin is as follows:

// Runs of Pre-Operation

private void EncodeToBase64(Entity target, string governmentId)
{
  if(target.Contains("new_b_sub") && target["new_b_sub"] != null && (bool)target["new_b_sub"])
  {
    string base64 = string.Empty; // encode governmentid to Base64 here ....
    
    target["new_stored_base64_field"] = base64;
  }
}

Now, when I change new_b_main for the first time, new_b_sub is changed to true , as expected. I save the record , but the Base64 field remains empty. However, if I then change new_b_sub to false, save the record, and then change it to true again and save the record, I do see the Base64 field being populated.

What could be the cause for the Base64 field being populated only from second update?

I have the same question (0)
  • Suggested answer
    a33ik Profile Picture
    84,331 Most Valuable Professional on at

    Hello,

    Try to use the following addition to your code:

    function onSave(ExecutionContext)

    {

     if(Xrm.Page.getAttribute("new_b_main").getValue() && Xrm.Page.getAttribute("new_b_main").getIsDirty())

       Xrm.Page.getAttribute("new_b_sub").setValue(true);

       Xrm.Page.getAttribute("new_b_sub").setSubmitMode("always");

    }

  • Kuku17 Profile Picture
    8 on at

    Apparently the issue was that on Create of Contact record, new_b_sub was changed to true. Which is why new_b_main had no effect the first time it changed to true. 

    The getIsDirty has been evaluated to true on Create.

    I wonder why Dynamics would think new_b_main had been changed even though it hadn't.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Stars!

Congratulations to our 2025 Community Spotlights

Thanks to all of our 2025 Community Spotlight stars!

Leaderboard > Microsoft Dynamics 365 | Integration, Dataverse, and general topics

#1
Pallavi Phade Profile Picture

Pallavi Phade 102 Super User 2026 Season 1

#2
Abhilash Warrier Profile Picture

Abhilash Warrier 55 Super User 2026 Season 1

#3
ManoVerse Profile Picture

ManoVerse 53 Super User 2026 Season 1

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans