Error Logging Using D365 CE Plugin

Requirement

Error logging using D365 CE Plugin.

Details

Let’s see what options we can use for the error logging.

ITracing Service

First option that we have for the error logging in D365 CE plugins is using ITracing service. To use this option first we need to make sure we enable below setting in D365 CE environment.

ITracing Service

Once this option is enabled D365 CE store plugin tracing which we can refer from

ITracing Service

While writing plugin code we can use tracing service like below for logging

ITracing Service

To review error details we can also use Plugin Trace Viewer from XrmToolBox.

Using Custom Entity

Other option that we can use is to store error log in the custom entity. We can create a custom entity and add required field and store information from the plugin. When we want to capture data in the custom entities, it depends on how we want to register our plugin, synchronous or asynchronous and this is very important. Let’s see how:

Synchronous Plugin

When we write a synchronous plugin it runs under transaction, to understand this simply let’s take an example, let’s say we want to create record of two entity A and B based on some logic in our plugin, so we wrote plugin and while executing it created entity record A and while creating entity record B , we got some error so it will rollback all the changes done by this plugin execution which means it will remove the entity record A which was created under this plugin execution.

Which simply means if we got some error we can’t store error details in the custom entity because that will be rolled back, correct? Actually it depends if you want to throw error to the user or not. let’s see this with example.

I have this below sample code where I am updating some field on the account create and I have used a wrong field name which means it will throw error and under the catch block, I am writing error details to my custom entity and after that throwing error to user.

try
{
    if (pluginContext.InputParameters.Contains("Target") && pluginContext.InputParameters["Target"] is Entity)
    {
        Entity accountEntity = (Entity)pluginContext.InputParameters["Target"];
        //wrong field name
        Entity _accountupdate = new Entity("account");
        _accountupdate.Id = accountEntity.Id;
        _accountupdate["him_wrongattribute"] = "This is test2";
        orgService.Update(_accountupdate);
    }

    }

catch (Exception ex)
{
    tracingService.Trace("Writing error message from Exception");
    Entity _error = new Entity("him_errorlog");
    _error["him_name"] = "Demo 2";
    _error["him_description"] = ex.Message;
    orgService.Create(_error);
    tracingService.Trace("Writing error writing completed from Exception");
    throw new InvalidPluginExecutionException("Error Occurred while Creating Account");
}

And I have registered this plugin as synchronous and when I try to create account entity record I can see the trace generated like below:

Error logging using D365 CE Plugin

But there is no record in my custom entity as they are rollbacked by the plugin when we throw error, now in the same code if I comment the last line like below where I was throwing error and update my plugin assembly.

//throw new InvalidPluginExecutionException("Error Occurred while Creating Account");

Even though this is synchronous plugin it won’t rollback changes as I am capturing error but not throwing it, so my custom entity will store standard message like “‘account’ entity doesn’t contain attribute with Name = ‘him_wrongattribute’ and NameMapping = ‘Logical'”

Asynchronous Plugin

Asynchronous plugin don’t run under transaction so it won’t rollback your changes so you can store your data in your custom entity.

More reference: https://docs.microsoft.com/en-us/powerapps/developer/data-platform/logging-tracing

Summary

We discussed how we can do error logging in the plugin and how it matters if you are writing synchronous plugin or asynchronous plugin.

Hope it will help someone !!

Keep learning and Keep Sharing !!


Similar Articles
HIMBAP
We are expert in Microsoft Power Platform.