Share via

IExecutionContext.Depth Property


Gets the current depth of execution in the call stack.

 property int Depth { int get(); };
public int Depth { get; }
member this.Depth : int
Public ReadOnly Property Depth As Integer

Property Value

T the current depth of execution in the call stack.


Used by the platform for infinite loop prevention. In most cases, this property can be ignored.

Do not take any dependency on the IExecutionContext.Depth property in your code. Depth is used solely to manage potential infinite loops that could occur in plug-in or custom workflow activities. Any business logic that depends on a specific Depth value will break when the operation is performed in a different code path that may occur at any time because of configuration changes outside of your control.

Every time a running plug-in or Workflow issues a message request to the Web services that triggers another plug-in or Workflow to execute, the Depth property of the execution context is increased. If the depth property increments to its maximum value within the configured time limit, the platform considers this behavior an infinite loop and further plug-in or Workflow execution is aborted.

The maximum depth (8) and time limit (one hour) are configurable by the Microsoft Dynamics 365 administrator using the PowerShell command Set-CrmSetting. The setting is WorkflowSettings.MaxDepth. For more information, see, “Administer the deployment using Windows PowerShell” in the Deploying and administering Microsoft Dynamics CRM.

Applies to

See also