Introduction
Plug-ins are commonly used in Dynamics 365 Customer Engagement (CE) and Microsoft Dataverse implementations to execute business logic when standard configuration is not enough.
Traditionally, developing a plug-in required .NET and C# knowledge. Developers would create a class, implement the required plug-in interface, register the assembly, and configure the appropriate execution pipeline.
Dataverse also provides a low-code approach for implementing certain business rules using Power Fx. This allows makers and developers to create simpler server-side business logic without writing a traditional .NET plug-in.
In this article, we will explore what low-code plug-ins are, how they can be used for business validation, where they are created, and how they are stored and moved between environments.

What Is a Low-Code Plug-in?
A low-code plug-in is a Dataverse plug-in that uses Power Fx expressions to implement business logic instead of requiring a traditional C# plug-in assembly.
The approach is useful when the required logic is relatively simple and can be expressed through Power Fx.
For example, consider a requirement where an organization does not want users to create a duplicate record.
Dynamics 365/Dataverse provides duplicate detection capabilities that can identify potential duplicates and warn users. However, depending on the business requirement and configuration, an organization may need server-side validation that prevents an operation from completing when a business rule is violated.
A low-code plug-in can be used for this type of validation when the requirement can be expressed using Power Fx.

Low-Code Plug-in vs Traditional .NET Plug-in
The main difference is how the business logic is implemented.
Area | Traditional .NET Plug-in | Low-Code Plug-in |
|---|---|---|
Language | C# | Power Fx |
Development | Visual Studio or similar tools | Dataverse maker experience |
.NET knowledge | Required | Not required for basic scenarios |
Complex logic | Well suited | More limited |
Dataverse pipeline | Supported | Event-based scenarios supported |
Deployment | Solution/assembly deployment | Solution-based deployment |
Low-code plug-ins do not replace traditional plug-ins in every scenario. They provide another option for implementing business logic when Power Fx is sufficient.
Real-World Example: Preventing Duplicate Records
Consider a Dataverse table called Customer.
The business requirement is:
A customer record should not be created when another customer with the same email address already exists.
A traditional implementation could use a C# plug-in registered on the Create message.
With a low-code plug-in, the validation can instead be implemented using Power Fx.
The high-level process is:
User creates Customer
↓
Dataverse Create Event
↓
Low-Code Plug-in
↓
Check existing records
↓
Duplicate found?
/ \
Yes No
↓ ↓
Stop Save ContinueThis allows the validation to occur as part of the Dataverse operation rather than relying only on client-side validation.
Creating a Low-Code Plug-in
Low-code plug-ins can be created through the Dataverse Accelerator experience available in supported Dataverse environments.
The exact navigation and available capabilities can change as Microsoft evolves the feature, so the options shown in the maker environment should be used as the source of truth for the current environment.
Step 1: Open the Dataverse Accelerator
Open the Power Apps environment containing the Dataverse solution and launch the Dataverse Accelerator experience.
The accelerator provides tools for creating and managing Dataverse development components, including low-code plug-ins where the capability is available.
Step 2: Choose the Plug-in Type
Depending on the scenario, a low-code plug-in can be created as an instant or event-based plug-in.
An instant plug-in is intended to be invoked explicitly.
An event-based plug-in runs in response to a Dataverse event such as a table operation.
Conceptually:
Instant Plug-in
↓
Explicit invocation
↓
Business Logicand:
Event-Based Plug-in
↓
Create / Update / Delete
↓
Power Fx LogicEvent-Based Low-Code Plug-ins
Event-based plug-ins are useful when business logic needs to execute automatically as part of a Dataverse operation.
For example:
Create Customer
↓
Pre-Operation Logic
↓
Validation
↓
Create Record
↓
Post-Operation LogicDepending on the supported configuration, the logic can be associated with operations such as:
Create
Update
Delete
The execution stage is important because it determines when the logic runs relative to the Dataverse operation.
Pre-Operation vs Post-Operation
The Dataverse event pipeline provides different stages for processing an operation.
Pre-Operation
Pre-operation logic runs before the main database operation is completed.
This is useful for scenarios such as:
Validating incoming data
Modifying values before they are saved
Preventing an operation when a business rule is violated
For example:
Create Request
↓
Pre-Operation
↓
Validate Data
↓
Continue or Reject
↓
Database OperationPost-Operation
Post-operation logic runs after the main operation has been completed.
It can be useful when additional processing needs to happen after the record has been created, updated, or deleted.
For example:
Create Request
↓
Database Operation
↓
Post-Operation
↓
Additional Business LogicChoosing the correct stage is important because the same business rule can behave differently depending on when it executes.

Join the conversation! Your thoughts help the community grow.