How to be more proactive about CRM 2016 system issues

Gayan Perera, 25 February 2016

Being proactive about system issues apply to just about anything. For example, your car showing the amount of gas remaining in the tank, engine warning lights, oil warning lights, when the warrant of fitness expires etc. These are all vital information for a smooth operating vehicle.

Having similar information of a Dynamics CRM system available to administrators, support staff and developers can be used to proactively fix issues as they crop up. This ensures that the system is running in an optimal state as well as providing a great experience to the users of the system.

At Magnetism, we’ve been doing this for quite some time, here are few things that we do to ensure we’re proactively monitoring, fixing and reporting issues even before the users notice them.

Information tracing and error logging

First step is to ensure there is sufficient trace information throughout plugins, custom workflow activities, windows services, API’s etc. For example, if you write a custom plugin, ensure that you’re tracing critical information that can be used to replay the actions of a user such as:

  1. Entity the plugin is running on
  2. Was it a create, update, delete message
  3. What was the depth
  4. The primary key of the record
  5. Any attributes/entity images your plugin relies on
  6. Method entries and exists

If your plugin is handing data over to an external system, ensure to log information such as:

  1. The endpoint of the external system
  2. Data that is being handed over
  3. Data that the endpoint returned

Here is an example of a plugin that failed to run, this information was captured by CRM and tracked inside the Plugin-in Trace Logs entity. From the information captured we know exactly which record failed, which method failed, what information was being handed over to the external system. This gives the developer enough information to reproduce, fix and correct the affected record.

image

Being informed about errors

Next step is to be informed of issues as they happen. There are a number of ways to be notified, we primarily use emails and Azure notifications. These get directed to our Helpdesk system. Here is an example of a critical billing service that crashed which got raised and emailed to our system crash inbox which then went into our Helpdesk for a developer to triage.

From the error, we can see that the external payment gateway provider is having issues. We can inform the client of this issue and raise it with the gateway provider so the issue can be resolved as soon as possible.

image

Another example is using Azure Alerts, we can see that there were 4 errors generated that triggered the Azure Alert notification engine (https://azure.microsoft.com/en-us/documentation/articles/insights-receive-alert-notifications/)

image

The Dynamics CRM team at Microsoft are doing more work in this area and it’s about to get better with future releases. For now, you can leverage these existing components to proactively monitor Microsoft CRM systems.

  1. System Jobs – look out for Waiting and Failed jobs
  2. Keep an eye out on the Plug-in Trace Logs records and Plugin Type Statistics records – these will give you good insight into how your business logic extensions are doing
  3. Server-Side Synchronization Performance Dashboard