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?