Use Solution Health Hub to troubleshoot issues in Dynamics 365 Apps (Sales, Marketing, Field Service, Customer Service..)


Using Solution Health Hub we can validate the environment’s configuration, which might get modified over time, to get an idea about the state of that environment and detect and resolve any issues. Solution Health Hub enables rules-based validations, which we can run periodically or manually if we encounter any issues. The rules also get triggered automatically when solutions are installed or updated by Microsoft. The rules check if some of the required processes are disabled or owned by a disabled user, if some of the required web resources are missing, if certain plugin steps are not active etc.

Let us open the Solution Health Hub app and see it in action.

We can see the Rule Sets created specific to different areas (app) like Sales, Marketing, Customer Service, etc.

For an environment where Field Service is configured, we can see the following rule sets.

Let us open the Field Service Rule Set and see the rules defined for it.

We can see around 31 rules defined for Field Service

For Sales, we can see around 6 rules.

Around 22 rules for Customer Service.

And around 5 rules for Marketing

To run the Rules, we need to create a new Analysis Job record and select the corresponding Rule Set.

A summary of rule-set executions will be shown in a few seconds. (runs asynchronously)

We can see one of the rules failed.

Opening the record, we can see the details.

Back in our solution, we can see the steps in the disabled state.

Back in our Analysis Job, let us select the failed rule and click on Resolve.

We can see the message “Resolution is completed.” and the rule passed.

Back inside our solution, we can also see the status as On for those steps.

Now let us run an analysis job for Field Service

On opening the record, we can see the user for which the roles are missing.

For Field Service, we can see an out-of-the-box cloud flow that runs at midnight on Saturdays to trigger the analysis job for the Field Service Rule Set.

And sends the In-app notifications.

Now if a rule fails, we can get the in-app notifications, e.g. we had set the Service Account field as optional on the Work Order form.

That caused the below rule to fail.

This also sent the notification in the app.

More details on it – https://powerusers.microsoft.com/t5/Power-Apps-Community-Blog/In-App-Notifications-on-concerns-related-to-Solution-Health-and/ba-p/1287680

Also, for each of the rules, we can see a corresponding Action that holds the logic.

Hope it helps..

Advertisements

Transitioning from Unmanaged to Managed Solution (Dynamics 365 / Dataverse)


Microsoft has always recommended managed solution(s), apart from the some of benefits that managed solutions offer over unmanaged, Microsoft is also adding features to the managed solution, making it easy for teams to adopt and transition to Managed solutions, like focusing on making the solution import faster and adding ALM-specific features to it.

Let us take a simple example to see it working –

Suppose we have 2 environments, a Test and a Managed environment.

The test environment has 2 unmanaged solutions from different publisher that is already deployed to the target environment as unmanaged.

Source

Target

Ideally, we should be creating 2 copies of production environments, one for creating the new unmanaged solution (s) containing the components to be converted to managed and the other environment where the unmanaged solution (s) will be converted to managed and will be used for testing and validation.

Ref – Dynamics 365 FastTrack Architecture Insights – ALM Transitioning from Unmanaged to Managed Solutions

https://learn.microsoft.com/en-us/shows/dynamics-365-fasttrack-architecture-insights/alm-transitioning-from-unmanaged-to-managed-solutions

Now let us create a new unmanaged solution in the source environment that will combine the components we have in Pub 1 and Pub 2 unmanaged solutions.

Here we can use the wonderful XrmToolBox plugin – Solutions Components Mover.

https://prajapatiamit.medium.com/move-the-components-between-customization-solutions-in-d365-customer-engagement-crm-solution-8f17a1fafb2b

Select source solutions and the target solution (combined) in our case, and click on Copy Components.

Here we have selected all the component types.

Back in our TestEnv, we can see the components of the solution added from Pub 1 and Pub 2 solutions to the combined solution.

Let us export the combined solution as managed.

The other way to create the combined solution would be to “Include all objects” for unmanaged components like custom tables. For managed components, like out-of-the-box tables lead, contact, case, etc, we’d only select the components customized.

Run the below command, to connect to the destination (managedenv) environment.

https://learn.microsoft.com/en-us/power-platform/developer/cli/reference/auth#pac-auth-create

Run the below command, to convert the unmanaged solution to managed.

https://learn.microsoft.com/en-us/power-platform/developer/cli/reference/solution#–convert-to-managed–cm

We can see the managed solution imported successfully to our target environment.

For quick reference –

Unmanaged

Managed

Unmanaged solutions are intended to be used in the development environment.

Managed solutions are intended to be distributed and installed.

Unmanaged solutions can be exported either as managed or unmanaged.

Managed solutions cannot be exported

Components can be directly edited within an unmanaged solution.

Components inside the managed solutions cannot be edited directly. Editing can only be done in the corresponding unmanaged solution or an additional unmanaged solution in dev and then exported and imported as managed in the target environment.

The unmanaged solution can be seen as the source code

A managed solution can be seen as a compiled code.

Deleting an unmanaged solution only deletes the solution container, all unmanaged customizations remain in effect and are applied to the default solution of the environment

Deleting a managed solution removes the customizations from the environment.

   

Benefits

Benefits

Unmanaged solutions allow for real-time customization directly within the environment.

The managed solution secures the solution components in the environment, by restricting the user from making changes or removing components from it.

Developers can make changes on the fly without the need for importing/exporting solutions

Ability to uninstall/roll back. In case of issues or undesired changes, managed solutions make it easier to roll back to a previous version. This can be crucial for maintaining system stability and ensuring minimal disruption to ongoing operations

 

The managed solution supports layering allowing multiple solutions to be installed simultaneously without conflicts.

 

Clearly defined component ownership in the case of multiple publishers/solutions.

 

Improved solution import performance with reduced performance impact on the environment.

Check the below links for more details

https://learn.microsoft.com/en-us/shows/dynamics-365-fasttrack-architecture-insights/alm-transitioning-from-unmanaged-to-managed-solutions

https://learn.microsoft.com/en-us/power-platform/alm/move-from-unmanaged-managed-alm#convert-an-unmanaged-solution-to-managed

Hope it helps..

Advertisements

ERROR REQUESTING Token FROM THE Authentication context – General ADAL Error (Dataverse / Dynamics 365)


We might get the below error while connecting to the Dataverse Web API using the client ID and client secret.

AADSTS700016: Application with identifier ‘6d8ff73a-27ef-443c-b524-d8b69ae87580’ was not found in the directory ‘w72tk’. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You may have sent your authentication request to the wrong tenant.

This could be if we have specified wrong Client or App Id.

Check the correct App Id either from Azure you can also refer to the correponding Application User created for it.

Hope it helps..

Advertisements

Filtering Attributes for Create message – Plugin (Dataverse / Dynamics 365)


While registering a plugin step, found that we can now specify Filtering Attributes for Create message.

Check the below post for more details –

Advertisements

Cleaning up the ActivityPointBase to free up storage– Dataverse / Dynamics 365


In one of our environments, the ActivityPointBase table was occupying nearly 20 GB. It was earlier 40 GB, and we then deleted email records to bring it down to 20 GB.

On downloading the table details, we did not get a clear idea of what activity-type table was occupying that much space.

So we raised the Microsoft Support ticket, and they shared with us the breakdown of records occupied by different activity type tables.

Then we configured our Bulk Deletion Job to delete the corresponding activity type records.

This helped us to bring down the ActivityPointerBase from 20 GB to 15 GB.

https://learn.microsoft.com/en-us/power-platform/admin/capacity-storage

Hope it helps..

Advertisements

Use Sales Copilot to get recent updates (Catchup) on a lead and opportunity (Dynamics 365)


Using Sales Copilot, we catch up on updates to a lead and opportunity record since the last seven days or the last login.

We can use the prompt catchup with lead or catchup with opportunity followed by @ and the name of the record.

Sales Copilot uses Audit History to show the recent updates.

Allow data movement across regions in the Power Platform Admin Center using Enable copilots and generative AI features outside United States and Switzerland – Power Platform | Microsoft Learn

To enable Sales Copilot, navigate to

Sales Hub >> App Settings >> Sales Copilot (preview) >> Set up Sales Copilot

Or if we have already enabled it, we can manage the features provided along with the different apps we want to apply the Sales Copilot using the Manage apps option.

Here we can specify to which apps we want to enable the Compose and Chat feature.

For the Record catch-up feature, the first 10 fields of the view are considered. We can see “Default System View” selected by default.

However, we have the option to select a different view, and then the fields of the selected view will be used for generating the catchup content.

Below if we select the Open Opportunities view, we can see its corresponding fields that will be considered for the catchup.

We can open an existing lead or opportunity record or from the Chat tab of Sales Copilot can use catchup with opportunity prompt as shown below to get the updates.

We can see the catch-up details generated.

Also, we see another prompt – “Catch up since my last
login (16 hours ago)”, along with “catchup with lead or opportunity” prompt


If there are no updates to a record in the last 16 hours, we get the below message.

Get more details here.

Hope it helps..

Advertisements