public void LogWorkflowTrace(string sequenceId, string eventId, string eventName, string eventMessage)
        {
            StackTrace stackTrace = new StackTrace();

            trackedProperties trackedProperties = new trackedProperties();

            trackedProperties.application_id     = this.LocalWorkflowContext.WorkFlowContext.OrganizationName;
            trackedProperties.application_name   = "Dynamics 365 CRM";
            trackedProperties.correlation_id     = this.LocalWorkflowContext.WorkFlowContext.CorrelationId.ToString();
            trackedProperties.correlation_name   = "";
            trackedProperties.error_code         = "";
            trackedProperties.error_message      = "";
            trackedProperties.error_stack        = "";
            trackedProperties.event_category     = "Workflow";
            trackedProperties.event_id           = eventId;
            trackedProperties.event_message      = eventMessage;
            trackedProperties.event_name         = eventName;
            trackedProperties.fault_id           = "";
            trackedProperties.receiver_id        = "";
            trackedProperties.receiver_name      = "";
            trackedProperties.sender_id          = "";
            trackedProperties.sender_name        = "";
            trackedProperties.sequence_id        = sequenceId;
            trackedProperties.service_request_id = "";
            trackedProperties.severity           = "";
            trackedProperties.success_code       = "1";
            trackedProperties.success_message    = "Success";
            trackedProperties.timestamp          = DateTime.UtcNow.ToString();
            trackedProperties.warnings           = "";
            trackedProperties.work_order         = "";
            trackedProperties.workflow_id        = this.LocalWorkflowContext.WorkFlowContext.RequestId.ToString();
            trackedProperties.workflow_name      = this.LocalWorkflowContext.WorkFlowContext.PrimaryEntityName;

            LogMessage logMessage = new LogMessage();

            logMessage.trackedProperties = trackedProperties;
            string json   = Serialization.Serialize(logMessage);
            Entity entity = this.BuildEntity("", json, "Exception");

            LocalWorkflowContext.OrganizationService.Create(entity);
        }
        public void LogPluginException(Entity contextEntity, Exception exception, string sequenceId, string eventId, string eventName, string eventMessage)
        {
            StackTrace stackTrace = new StackTrace();

            trackedProperties trackedProperties = new trackedProperties();

            trackedProperties.application_id   = this.LocalPluginContext.PluginExecutionContext.OrganizationName;
            trackedProperties.application_name = "Dynamics 365 CRM";
            if (contextEntity.Attributes.Contains("smp_correlationid"))
            {
                trackedProperties.correlation_id = contextEntity["smp_correlationid"].ToString();
            }
            else
            {
                trackedProperties.correlation_id = this.LocalPluginContext.PluginExecutionContext.CorrelationId.ToString();
            }
            trackedProperties.correlation_name = "";
            trackedProperties.error_code       = "";
            trackedProperties.error_message    = exception.Message;
            trackedProperties.error_stack      = exception.StackTrace;
            trackedProperties.event_category   = "Plugin";
            trackedProperties.event_id         = eventId;
            trackedProperties.event_message    = eventMessage;
            trackedProperties.event_name       = eventName;
            if (contextEntity.Attributes.Contains("msdyn_iotalert") && contextEntity.GetAttributeValue <EntityReference>("msdyn_iotalert") != null)
            {
                trackedProperties.fault_id = contextEntity.GetAttributeValue <EntityReference>("msdyn_iotalert").Name;
            }
            else
            {
                trackedProperties.fault_id = "";
            }
            trackedProperties.receiver_id        = "";
            trackedProperties.receiver_name      = "";
            trackedProperties.sender_id          = "";
            trackedProperties.sender_name        = "";
            trackedProperties.sequence_id        = sequenceId;
            trackedProperties.service_request_id = "";
            trackedProperties.severity           = "5";
            trackedProperties.success_code       = "2";
            trackedProperties.success_message    = "Failed";
            trackedProperties.timestamp          = DateTime.UtcNow.ToString();
            trackedProperties.warnings           = "";
            if (this.LocalPluginContext.PluginExecutionContext.PrimaryEntityName == "msdyn_workorder")
            {
                if (contextEntity.Attributes.Contains("msdyn_name") && contextEntity["msdyn_name"] != null)
                {
                    trackedProperties.work_order = contextEntity["msdyn_name"].ToString();
                }
                else
                {
                    trackedProperties.work_order = contextEntity.Id.ToString();
                }
            }
            else
            {
                trackedProperties.work_order = "";
            }
            trackedProperties.workflow_id   = this.LocalPluginContext.PluginExecutionContext.RequestId.ToString();
            trackedProperties.workflow_name = this.LocalPluginContext.PluginExecutionContext.PrimaryEntityName;

            LogMessage logMessage = new LogMessage();

            logMessage.trackedProperties = trackedProperties;
            string json   = Serialization.Serialize(logMessage);
            Entity entity = this.BuildEntity("", json, "Exception");

            LocalPluginContext.OrganizationService.Create(entity);
        }