Skip to main content

PluginStepAttribute

  • Namespace: PPDS.Plugins
  • Assembly: PPDS.Plugins
  • Kind: Class
  • Base: Attribute

Summary​

Defines plugin step registration configuration. Apply to plugin classes to specify how the plugin should be registered in Dataverse. Multiple attributes can be applied for plugins that handle multiple messages/entities.

Members​

Constructors​

PluginStepAttribute()​

PluginStepAttribute()

Initializes a new instance of the PluginStepAttribute class.

PluginStepAttribute(string message, string entityLogicalName, PluginStage stage)​

PluginStepAttribute(string message, string entityLogicalName, PluginStage stage)

Initializes a new instance of the PluginStepAttribute class with required parameters.

  • Param message: The SDK message name (Create, Update, Delete, etc.)

  • Param entityLogicalName: The entity logical name

  • Param stage: The pipeline stage

Properties​

AsyncAutoDelete​

bool AsyncAutoDelete { get; set; }

Gets or sets whether to automatically delete the async job on successful completion. Only applies when Mode is Asynchronous. Default is false (keep async job records). Set to true to clean up async job records after successful execution.

CanBeBypassed​

bool CanBeBypassed { get; set; }

Gets or sets whether this step can be bypassed via BypassBusinessLogicExecution. Default: true (matches Dataverse default).

CanUseReadOnlyConnection​

bool CanUseReadOnlyConnection { get; set; }

Gets or sets whether this step can use a read-only database connection. Set to true for steps that only read data, for improved performance. Default: false.

Deployment​

PluginDeployment Deployment { get; set; }

Gets or sets the deployment target. Default: ServerOnly.

Description​

string Description { get; set; }

Gets or sets a description of what this plugin step does. This is stored as metadata in Dataverse and helps document the step's purpose.

EntityLogicalName​

string EntityLogicalName { get; set; }

Gets or sets the logical name of the primary entity this step applies to. Use "none" for messages that don't require an entity (e.g., WhoAmI). Required.

ExecutionOrder​

int ExecutionOrder { get; set; }

Gets or sets the execution order when multiple plugins are registered for the same event. Lower numbers execute first. Must be between 1 and 999999. Default: 1.

FilteringAttributes​

string FilteringAttributes { get; set; }

Gets or sets the comma-separated list of attributes that trigger this plugin. Only applicable for Update message. If empty, triggers on any attribute change.

InvocationSource​

PluginInvocationSource InvocationSource { get; set; }

Gets or sets the pipeline invocation source. Parent executes in the parent pipeline, Child in child pipelines only. Default: Parent.

Message​

string Message { get; set; }

Gets or sets the SDK message name (e.g., Create, Update, Delete, Retrieve, RetrieveMultiple). Required.

Mode​

PluginMode Mode { get; set; }

Gets or sets the execution mode (synchronous or asynchronous). Default: Synchronous.

Name​

string Name { get; set; }

Gets or sets the display name for the step. If not specified, auto-generated as "{PluginTypeName}: {Message} of {Entity}".

RunAsUser​

string RunAsUser { get; set; }

Gets or sets the impersonation user for step execution. Values: null (calling user), "CallingUser", "System", a GUID, email, or domain name.

SecondaryEntityLogicalName​

string SecondaryEntityLogicalName { get; set; }

Gets or sets the logical name of the secondary entity for relationship-based messages. Used with Associate, Disassociate, and SetRelated messages where two entity types are involved.

Stage​

PluginStage Stage { get; set; }

Gets or sets the pipeline stage when this plugin executes. Required.

StepId​

string StepId { get; set; }

Gets or sets a unique identifier for this step when a plugin has multiple steps. Used to associate PluginImageAttribute with a specific step.

UnsecureConfiguration​

string UnsecureConfiguration { get; set; }

Gets or sets the unsecure configuration string passed to the plugin constructor. This configuration is stored in plain text and is visible to users with appropriate read access to the plugin step entity, as determined by their security roles and privileges in Dataverse.