dynamics crm 365 plugin delay between execution pipeline stages

时间:2018-03-23 00:43:55

标签: dynamics-crm microsoft-dynamics

Our plugin is running slow on the "Retrieve" message, so I placed a few timestamps in the code to determine where the bottle neck is. I realized there is a 7 second delay which happens intermittently between the end of the pre-operation stage and the start of the post operation stage.

END PRE - 3/22/2018 11:57:55 AM POST STAGE START - 3/22/2018 11:58:02 AM

protected virtual void RetrievePreOperation()
{
    var message = $"END PRE - {DateTime.Now}";
    PluginExecutionContext.SharedVariables.Add("message", message);
}

protected virtual void RetrievePostOperation()
{
     // Stop recursive calls
     if (PluginExecutionContext.Depth > 1) return;

     if (PluginExecutionContext.MessageName.ToLower() != Retrieve ||
         !PluginExecutionContext.InputParameters.Contains("Target") ||
         PluginExecutionContext.Stage != (int)PipelineStages.PostOperation)
         return;


    var entity = (Entity)PluginExecutionContext.OutputParameters["BusinessEntity"];

    string message = PluginExecutionContext.SharedVariables["message"].ToString();
    message += $"POST STAGE START - {DateTime.Now}";             
}

Any ideas on how to minimize this delay would be appreciated. Thanks

1 个答案:

答案 0 :(得分:0)

如果您的插件步骤是在异步执行模式下注册的,则此延迟完全取决于异步服务负载&等待电话/工作的管道。您可以将其切换为Synchronous。

如果它在同步模式下注册但仍有间歇性延迟,那么它取决于很多东西,例如哪个实体,查询和放大器。复杂的逻辑,如果有的话。