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.