# Plugins and Extensions Plugins and Extensions defines optional behavior registered with Workflow Runtime. A Plugin can add Actions, Conditions, Rules, custom Activities, providers, Designer integration, or support for an external format, while a separate Product Family such as Form Engine remains distinct from the Plugin that connects it to Workflow Engine NEO. ## Plugin system terms The Plugin System is Workflow Engine's extension mechanism. The following names identify the mechanism, shipped Plugins, and product capabilities implemented through one or more Plugins. **Plugin**: A reusable extension registered with Workflow Runtime. This extension mechanism is called the Plugin System, and [IWorkflowPlugin][api-workflow-plugin] is the exact interface implemented by Workflow Engine Plugins and custom Plugins. A Plugin can live in the core assembly or in a separate NuGet package. The [plugin system](https://workflowengine.io/features/plugin-system/) page on [workflowengine.io](https://workflowengine.io/) shows which license carries which Plugin. **Basic Plugin**: A Plugin that provides common Actions, Conditions, Rules, HTTP requests, email operations, and process-control helpers. The exact class name is [BasicPlugin][api-basic-plugin]. **Parallel Approval**: A Basic Plugin workflow pattern in which several identities can submit decisions before one Process Instance continues. Actions such as [FillApproversUsers][api-fill-approvers] create the approver set, the [Approver][api-approver-rule] Rule limits Commands to pending participants, and [IsApproveComplete][api-approve-complete] checks whether the required number of approvals has been collected. Parallel Approval does not require Parallel Processes, and it is not another name for Approval Plugin. **Approval Plugin**: A Plugin for approval history and inbox or outbox tracking. Approval history is a Plugin-specific record of predicted stages, completed executions, and participants, not the general Transition History. Inbox describes pending work available to an Identity; outbox summarizes recorded work already performed by an Identity. The exact class name is [ApprovalPlugin][api-approval-plugin]. **Loops Plugin**: A Plugin for loop and iteration patterns. Loops Plugin is the display name; [LoopPlugin][api-loop-plugin] is the exact singular class name. **File Plugin**: A Plugin for file, directory, archive, and supported transfer operations. The exact class name is [FilePlugin][api-file-plugin]. **Real-Time Tracking Plugin**: A Plugin that sends live process updates used by Interactive Designer. The exact class name is [RealTimeTrackingPlugin][api-realtime-tracking-plugin]. Real Time Tracking Plugin is an unhyphenated spelling of the same Plugin. **Custom Activity Type**: A reusable, domain-specific Activity registered with Workflow Runtime and exposed in Workflow Designer with its own visual representation, configuration form, and execution behavior. Custom Activity is an accepted short form when the meaning is clear. Implementations derive from [ActivityBase][api-activity-base]; a Scheme Activity selects one through [CustomType][api-activity-custom-type]. A Custom Activity Type is not the same as an Activity Implementation, which is a list of Actions attached to an ordinary Activity. **Workflow Form**: A form that Workflow Engine NEO associates with a workflow Activity and its Commands and Parameters. Forms Plugin uses both Products in the separate Form Engine Product Family: Form Engine Designer creates and edits the form, while Form Engine Core renders and validates it. Both Form Engine Products can also be used without Workflow Engine NEO. **Forms Plugin**: A Workflow Engine Plugin through which Workflow Engine NEO integrates both Form Engine Products with workflow Activities, Commands, and Parameters. It uses Form Engine Designer to create and edit forms and Form Engine Core to render and validate them. [FormsPlugin][api-forms-plugin] is the exact class name; Form Plugin is an accepted shortened spelling, while Forms Plugin is the canonical name. The Plugin adds the `Show Form` custom Activity and the `FormsPlugin.ShowForm` Action, while [FormsRuntimeApi][api-forms-runtime] is its direct .NET API. In storage, a form is represented by [WorkflowForm][api-workflow-form], and [Definition][api-workflow-form-definition] contains its form definition; this content is not a Workflow Engine Scheme. ![Workflow Engine NEO Product integration: Workflow Designer uses Workflow Runtime, Form Engine Designer uses Form Engine Core, and Forms Plugin connects the Workflow Engine NEO Product to the separate Form Engine Product Family](https://docs.workflowengine.io/images/glossary/plugins-and-extensions/neo-form-engine-integration.svg) **Active Directory Plugin**: A Plugin that connects Workflow Engine to a directory of users and groups. Its built-in connections use LDAP-compatible endpoints. In environments commonly described as Microsoft Entra ID, formerly Azure Active Directory, this means connecting through an LDAP-compatible service such as Microsoft Entra Domain Services, not calling Microsoft Entra ID APIs directly. The same Plugin can connect to traditional Active Directory Domain Services. It provides Actions for managing users and groups and the [ActiveDirectoryGroup][api-active-directory-group-rule] Rule for using group membership in workflow permissions. The exact class name is [ActiveDirectoryPlugin][api-active-directory-plugin]. Overview: [LDAP and Active Directory workflow authorization](https://workflowengine.io/features/pluggable-security/). **BPMN Support**: The Workflow Engine capability for converting supported Business Process Model and Notation (BPMN) 2.0 elements into native Schemes and providing custom Activities for selected BPMN behavior. Workflow Runtime executes the resulting Scheme rather than BPMN XML directly. BPMN Plugin is the implementation component, [BpmnPlugin][api-bpmn-plugin] is its exact class name, and [ConvertBpmnDocument][api-bpmn-convert] is its public conversion API. BPMN 2.0 Import describes this import capability rather than a separate feature. The current `BpmnPlugin` implementation exposes BPMN import but does not expose a BPMN export API. ## See also These pages explain how the extension terms work in Workflow Engine. - [Plugin System](https://docs.workflowengine.io/evaluate/workflow-engine-features/plugin-system/) explains Plugin registration and capabilities. - [Workflow Forms](https://docs.workflowengine.io/evaluate/workflow-engine-features/workflow-forms/) explains Form Engine integration. - [BPMN Support](https://docs.workflowengine.io/evaluate/workflow-engine-features/bpmn-support/) explains BPMN import and native Scheme execution. - [Glossary overview](https://docs.workflowengine.io/glossary/) links to the other terminology subjects. ## Frequently asked questions **Is Form Engine a Workflow Engine Plugin?** No. Form Engine is a separate Product Family containing Form Engine Core and Form Engine Designer. Forms Plugin is the Workflow Engine NEO integration component that uses both Products for workflow forms. **Does BPMN Support make BPMN the native Workflow Engine model?** No. BPMN Support imports supported BPMN 2.0 elements into native Workflow Engine Schemes and provides custom Activities for selected BPMN behavior. Workflow Runtime executes the native Scheme model. **What is the difference between a Plugin and the Plugin System?** A Plugin is one reusable extension registered with Workflow Runtime. The Plugin System is the extension mechanism through which Workflow Engine loads and uses Plugins. [api-workflow-plugin]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/IWorkflowPlugin/ [api-basic-plugin]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/BasicPlugin/ [api-fill-approvers]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.BasicsPlugin/ActionsAsyncBasicPlugin/#field-fillapproversusers [api-approver-rule]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.BasicsPlugin/RulesAsyncBasicPlugin/#field-approver [api-approve-complete]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.BasicsPlugin/ConditionsAsyncBasicPlugin/#field-isapprovecomplete [api-approval-plugin]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/ApprovalPlugin/ [api-loop-plugin]: https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins/LoopPlugin/ [api-file-plugin]: https://api.workflowengine.io/files-plugin/OptimaJet.Workflow.Plugins/FilePlugin/ [api-realtime-tracking-plugin]: https://api.workflowengine.io/realtime-tracking-plugin/OptimaJet.Workflow.RealTimeTrackingPlugin/RealTimeTrackingPlugin/ [api-activity-base]: https://api.workflowengine.io/core/OptimaJet.Workflow.Core/ActivityBase/ [api-activity-custom-type]: https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Model/ActivityDefinition/#property-customtype [api-forms-plugin]: https://api.workflowengine.io/forms-plugin/OptimaJet.Workflow.Plugins.FormsPlugin/FormsPlugin/ [api-forms-runtime]: https://api.workflowengine.io/forms-plugin/OptimaJet.Workflow.Plugins.FormsPlugin/FormsRuntimeApi/ [api-workflow-form]: https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/WorkflowForm/ [api-workflow-form-definition]: https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/WorkflowForm/#property-definition [api-active-directory-group-rule]: https://api.workflowengine.io/active-directory-plugin/OptimaJet.Workflow.Plugins.ActiveDirectoryPlugin.Providers/ActiveDirectoryRuleProvider/#field-activedirectorygrouprulename [api-active-directory-plugin]: https://api.workflowengine.io/active-directory-plugin/OptimaJet.Workflow.Plugins.ActiveDirectoryPlugin/ActiveDirectoryPlugin/ [api-bpmn-plugin]: https://api.workflowengine.io/bpmn-plugin/OptimaJet.Workflow.BpmnPlugin/BpmnPlugin/ [api-bpmn-convert]: https://api.workflowengine.io/bpmn-plugin/OptimaJet.Workflow.BpmnPlugin.Import/BpmnConverter/#method-convertbpmndocument-textreader-string