Announcements
I'm using Async OnSave on the Email form. When Email Send (saveMode === 7) is triggered, I want to display a dialog and wait for user input.
saveMode === 7
The handler follows Microsoft's documented async OnSave pattern:
eventArgs.disableAsyncTimeout(); const result = await Xrm.Navigation.openConfirmDialog({ title: "Test Dialog", text: "Test" }); if (!result.confirmed) { eventArgs.preventDefault(); }
The async behavior works and Dynamics waits for the dialog. However, the native Processing... overlay appears above the dialog, making the dialog impossible to interact with.
We originally used a custom page with:
await Xrm.Navigation.navigateTo(...);
and saw the same behavior. We then tested Xrm.Navigation.openConfirmDialog() to rule out a custom-page issue, but the Processing overlay still appears above it.
Xrm.Navigation.openConfirmDialog()
Async OnSave is enabled, the registered OnSave handler returns the Promise, and disableAsyncTimeout() is called before the first await.
disableAsyncTimeout()
await
Is there a supported way to either hide the native Processing overlay while awaiting the dialog, or ensure the dialog is rendered above it?
Good troubleshooting on your part — ruling out the custom page by falling back to openConfirmDialog() was the right move, and it tells us this isn't a rendering issue with your dialog. The native Processing... overlay sits in its own stacking context above the form, and in the Timeline's "Send Email" flow specifically (saveMode === 7), that overlay appears to get a higher z-index than dialogs opened via Xrm.Navigation while the async OnSave promise is still pending. This is a known layering gap in the Unified Interface — the overlay was really designed to just show "please wait" while nothing is waiting on the user, and Email Send from the Timeline doesn't seem to have been tested with a blocking dialog in the mix. I haven't seen a supported client-side way to change the overlay's z-index or suppress it, since it's platform-owned chrome, not a customizable web resource.
openConfirmDialog()
Processing...
Xrm.Navigation
A few things worth trying:
eventArgs.preventDefault()
formContext.data.save()
Action
JavaScriptFunction
If you get a chance to test #1, post back — knowing whether it's Send-specific or affects all async-OnSave dialogs will help anyone else hitting this.
async function emailOnLoad(executionContext) { try { const formContext = executionContext.getFormContext(); const statusAttribute = formContext.getAttribute("statuscode"); if (!statusAttribute) { return; } const statusCode = statusAttribute.getValue(); // Email Status Reason: Sent // Verify the option value in your environment. const SENT_STATUS = 3; if (statusCode === SENT_STATUS) { const result = await Xrm.Navigation.openConfirmDialog({ title: "Email Sent", text: "This email has already been sent. Do you want to continue?" }); if (result.confirmed) { // Perform your required action here console.log("User confirmed"); } else { console.log("User cancelled"); } } } catch (error) { var alertStrings = { confirmButtonLabel: "ok", text: error.message, title: "Exception" }; var alertOptions = { height: 120, width: 260 }; Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then( function (success) { console.log("Alert dialog closed"); }, function (error) { console.log(error.message); } ); } }
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.
Congratulations to our community stars!
Expanding mentorship, skilling, and AI innovation
These are the community rock stars!
Stay up to date on forum activity by subscribing.
11manish 383 Super User 2026 Season 2
Mohsin Ali 356
WarrenBelz 232 Most Valuable Professional