One of the most common architectural questions in D365 CE is deceptively simple:
“How should this process be triggered?”
The usual answers:
-
“Let’s use a plugin—it’s fastest.”
-
“Power Automate is easier for the business.”
-
“Webhooks are more scalable.”
All are true.
All are wrong—when used without intent.
Choosing the wrong trigger is how systems become:
-
Slow
-
Fragile
-
Opaque
-
Hard to evolve
This is not a tooling decision.
It is an Architectural Boundary decision.
Understand the Nature of the Work
Before choosing how, define what the work is:
| Type of Work | Characteristics |
|---|---|
| Validation | Must block bad data |
| Enrichment | Improves the same record |
| Orchestration | Coordinates steps |
| Integration | Talks to other systems |
| Notification | Informs people/systems |
| Long-running | Takes seconds or minutes |
Now map that intent to the right mechanism.
When to Use Each
Plugin
Use when the logic:
-
Must run inside the transaction
-
Protects data integrity
-
Is fast and deterministic
-
Affects the same record
Examples:
-
Enforcing state transitions
-
Auto-populating derived fields
-
Blocking invalid combinations
Plugins are guardrails, not engines.
Power Automate
Use when the logic:
-
Is business-owned
-
Is process-oriented
-
Is non-critical to save
-
Needs visibility and adaptability
Examples:
-
Approvals
-
Notifications
-
Simple record creation
-
Team workflows
Flows are orchestration tools, not core platform logic.
Webhooks / Service Bus
Use when the logic:
-
Crosses system boundaries
-
Must scale independently
-
Needs retry and replay
-
Should not block the user
-
Represents a business event
Examples:
-
ERP integration
-
Identity provisioning
-
Data platform feeds
-
External automation
Webhooks are integration boundaries.
The Anti-Pattern
The most damaging pattern is this:
“We’ll just use what’s quickest.”
That usually means:
-
Plugin calling an external API
-
Flow doing complex transformations
-
CRM orchestrating multi-system workflows
It works in the sprint.
It fails in production.
Not because the tools are bad.
Because the responsibility is misplaced.
A Simple Decision Matrix
Ask three questions:
-
Must this block the save?
-
Does it cross system boundaries?
-
Who owns the logic—IT or business?
| Answer Pattern | Use |
|---|---|
| Yes / No / IT | Plugin |
| No / No / Business | Power Automate |
| No / Yes / IT | Webhook / Service Bus |
This keeps:
-
CRM fast
-
Logic visible
-
Integrations resilient
-
Ownership clear
The Takeaway
Triggers define where responsibility lives.
Choose incorrectly, and CRM becomes:
-
An integration engine
-
A workflow maze
-
A performance bottleneck
Choose intentionally, and CRM becomes:
-
A trusted system of record
-
A publisher of business truth
-
A stable foundation for growth
In enterprise architecture, how something starts often determines how long it survives.
Comments
Post a Comment