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.