In Microsoft Dataverse, calculated columns are a powerful way to derive values dynamically without the need for manual updates. However, one challenge is that plugins do not trigger directly on calculated column changes since these values are computed at runtime and not stored in the database.
Since calculated columns use/depend on other fields, we can register a plugin on the change of those dependent fields. If a calculated column Total Amount is based on Quantity and Unit Price, then we can trigger the plugin on the Update event of Quantity and Unit Price.
Let us see it in action, we have the below plugin registered in the update event.
On specifying the Formula / Calculated column as a Filtering attribute, our plugin doesn’t get triggered.
Here we updated the Unit Price, which changed the Total Amount, but we do not see any trace log generated.
Now we have updated the filtering attribute to be Quantity and Unit Price the field used by the Calculated column.
We updated both the Quantity and Unit Price and see the log generated i.e. plugin triggered.
The trace log –
While plugins can’t directly trigger on the calculated column changes, this workaround ensures we still get the desired automation.
While testing one scenario we observed one of the plugins (asynchronous) was not updating the record as expected.
Checking the System Jobs, we saw the below error.
The async operation was skipped because the org is in “Disable Background Processing” mode.
Well, this was because we had recently created this environment by copying our UAT environment and had forgotten to disable the Admin mode / enable Background operations.
We all know how frustrating it can be to dig through records just to find key details. With AI-generated record summaries, users can instantly access important information—saving time, reducing effort, and boosting productivity.
We can now create AI-powered record summaries for any table in Power Apps using a simple, guided prompt builder. We get to choose the fields and details that matter most, ensuring users see the right information briefly. There’s even an online testing option to fine-tune the summary before rolling it out. Once set up, the record summary will be readily available in forms, making information access effortless.
To enable it inside the Power Platform Admin Center, select an environment and navigate to
Environment >> Settings >> Features >> AI insights cards
Inside Maker Portal, select the table, and from the Customizations section select the Row summary option.
In the Prompt box, we can specify the columns we want to include as part of the summary.
We can click on +Add data to do so can type the name of the field after “/”
After specifying the fields, we can click on the Test prompt to see the response. And can fine tune it further.
Clicking on Apply to main forms applies to all the main forms for the table.
We can see the icon added next to the main forms.
The Row summary toolbar allows us to show, hide, and edit the summary.
Publish the changes.
Below we can see the summary generated for the Contact’s main forms.
While importing a patch (unmanaged) solution we got the below error –
“Solution ‘abc_Configuration’ failed to import: Solution manifest import: FAILURE: Solution patch with version 1.6.1.1 already exists. Updating patch is not supported.”
This is because Dataverse does not allow updating an existing patch solution with the same version number. Dataverse treats patches as immutable once imported. So if a patch already exists in the target environment, we cannot re-import a patch with the same version. Unlike full solutions, patches cannot be updated or overwritten—they must be uniquely versioned.
To fix this we can increase the Patch Version in our source environment. Here we incremented the patch version (from 1.6.1.1 → 1.6.1.2). Exported the patch again and imported it into the target environment.
Dataverse considers each patch version as unique, so increasing the version allows re-import.
Below we can see the new version of the patch imported replacing the old one.
Business Process Flows (BPF) in Dynamics 365 offer a structured way to guide users through a defined process. However, there are scenarios where progression to the next stage must be validated against specific business rules. In this blog, we see how to implement custom validations on stage progression using JavaScript.
Let us take a simple scenario where a Lead can only progress to the next stage of a BPF if
Lead Quality = Hot and Lead Source = Web
If these conditions are not met, users will receive a notification, and the stage change will be prevented.
Below is the sample code
function OnLoad(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.data.process.addOnPreStageChange(validateStageProgression);
}
function validateStageProgression(executionContext)
{
var bpfSampleStage = "6e2b5d9e-da30-4a47-8ca9-d75c24fd51f4";
var formContext = executionContext.getFormContext();
var rating = formContext.getControl('header_process_leadqualitycode').getAttribute().getValue();
var leadSource = formContext.getControl('header_process_leadsourcecode').getAttribute().getValue();
var stageObj = formContext.data.process.getActiveStage();
var stageId = stageObj.getId();
var requiredFieldErrorId = "contractValidationNotificationId";
formContext.ui.clearFormNotification(requiredFieldErrorId);
if(stageId)
{
if (stageId.toLowerCase() === bpfSampleStage)
{
if (executionContext.getEventArgs().getDirection() === "Next")
{
executionContext.getEventArgs().preventDefault();
if(rating == 1 && leadSource == 8) // rating = Hot and Source = Web
{
formContext.data.process.removeOnPreStageChange(validateStageProgression);
formContext.data.process.moveNext();
}
else
{
notificationMessage = "Cannot move to the next stage until conditions are met !";
formContext.ui.setFormNotification(notificationMessage, "ERROR", requiredFieldErrorId)
}
}
}
}
}
The addOnPreStageChange method registers the validation function on the form’s load event to monitor stage changes.
The preventDefault() method stops the stage transition if the conditions are not met, ensuring data integrity.
If the validation fails, an error notification is displayed using the setFormNotification() method, guiding users to correct the data.
Upon satisfying the conditions, moveNext() is invoked programmatically to move the process to the next stage.
As shown below, clicking on Next as rating and lead source values do not satisfy the condition, we can see the notification on the form and the user is not able to move to the next stage.