The evolution of automation in Dynamics 365
Classic Workflows have been a cornerstone of Dynamics 365 automation for over a decade. However, Microsoft is shifting focus to Power Automate cloud flows as the future of process automation. Understanding when and how to migrate is essential for maintaining supported, modern solutions. replacing workflows with flows.
Important notice
Classic Workflows are considered legacy. While still functional, Microsoft recommends using Power Automate cloud flows for new automation. Plan your migration strategy proactively.
Classic workflows overview
What are classic workflows?
Classic Workflows are process definitions stored in Dataverse that execute on record create, update, delete, or on-demand. They run within the Dynamics 365 platform's execution pipeline.
Classic workflow capabilities
- Run synchronously in transaction
- Native Dataverse integration
- No licensing costs beyond D365
- Simple to create in platform
- Part of solution packaging
- No external connectors
- Limited conditional logic
- No HTTP requests
- Limited parallel processing
- No approval workflows
Power Automate cloud flows
Why Power Automate?
Power Automate cloud flows offer a modern, extensible approach to automation with more than 1,000 connectors, advanced logic capabilities, and integration with the broader Microsoft ecosystem.
Power Automate capabilities
- 1,000+ connectors available
- Advanced expressions and conditions
- Parallel branches and loops
- Built-in approval workflows
- HTTP requests and webhooks
- AI Builder integration
- Retry and error handling
- Additional licensing required
- Always asynchronous execution
- External service dependency
- Latency for triggered flows
- API request limits apply
Feature comparison
| Feature | Classic workflow | Power Automate |
|---|---|---|
| Execution mode | Sync or async | Async only |
| Transaction support | Yes (synchronous) | No |
| External connectors | No | 1,000+ |
| HTTP requests | No | Yes |
| Approvals | Limited | Full support |
| Parallel processing | No | Yes |
| Error handling | Basic | Advanced |
| Licensing | Included in D365 | Separate license |
| Solution aware | Yes | Yes |
Migration strategy
Step 1: Inventory your workflows
Document all existing classic workflows, their triggers, conditions, and actions:
- List all workflows by entity
- Identify synchronous vs asynchronous workflows
- Note dependencies between workflows
- Document business requirements each workflow fulfills
Step 2: Categorize for migration
Group workflows into categories based on migration approach:
Easy migration - direct conversion
- Simple asynchronous workflows
- Field update workflows
- Email notification workflows
- Create child record workflows
Moderate effort - requires redesign
- Workflows with complex conditions
- Multi-step workflows with waits
- Workflows calling custom workflow activities
Consider alternatives
- Synchronous workflows requiring transaction support → consider plugins
- High-volume workflows → consider Azure Functions
- Real-time calculated fields → consider calculated/rollup fields
Step 3: Convert common patterns
Pattern: Field update on record create
Classic workflow:
- Trigger: Record created
- Condition: Check status = active
- Action: Set field value
Power Automate equivalent:
Trigger: When a row is added (Dataverse) - Table: accounts - Scope: Organization Condition: Status equals Active - @equals(triggerOutputs()?['body/statecode'], 0) Action: Update a row - Table: accounts - Row ID: @triggerOutputs()?['body/accountid'] - Fields to update: Your field = Your value
Pattern: Send email notification
Classic workflow:
- Trigger: Record updated
- Condition: Status changed to approved
- Action: Send email
Power Automate equivalent:
Trigger: When a row is modified (Dataverse)
- Table: opportunities
- Scope: Organization
- Filter columns: statuscode
Condition: Status changed to Won
- @equals(triggerOutputs()?['body/statuscode'], 3)
Action: Send an email (Outlook)
- To: @triggerOutputs()?['body/_ownerid_value@OData.Community.Display.V1.FormattedValue']
- Subject: Opportunity Won: @{triggerOutputs()?['body/name']}
- Body: Congratulations! Your opportunity has been marked as won.Step 4: Handle synchronous scenarios
For workflows that must run synchronously within the transaction, consider these alternatives:
- Business rules: For simple field logic (set value, show/hide, required)
- Calculated fields: For derived values based on other fields
- Plugins: For complex synchronous logic requiring transaction support
- Low-code plugins: Microsoft's newer low-code option for simple scenarios
Best practices for migration
- Test in sandbox: Always migrate and test in non-production environments first
- Run in parallel: Keep classic workflows active during testing period
- Monitor performance: Compare execution times and success rates
- Document changes: Update technical documentation with new flow designs
- Train users: Ensure admins know how to manage flows in Power Automate portal
- Plan licensing: Ensure adequate Power Automate licenses for your organization
When to keep classic workflows
In some cases, keeping classic workflows may be appropriate:
- Simple internal workflows with no external integration needs
- Workflows that must participate in database transactions
- Organizations without Power Automate licensing
- Workflows where latency is critical (though consider plugins instead)
Conclusion
Migrating from classic workflows to Power Automate is essential for organizations using Dynamics 365. While it requires careful planning and execution, the benefits of modern automation capabilities, extensive connectors, and continued platform support make the investment worthwhile.
Start your migration planning now to ensure a smooth transition before classic workflows reach end-of-support.