The faster you put the right seller on a new lead or opportunity, the higher your connect and conversion rates. Dynamics 365 gives you three solid paths: out-of-the-box Assignment Rules in Sales (via Work Assignment), a custom rules engine with Dataverse plug-ins, or a Power Automate flow that evaluates logic and assigns owners. Work Assignment (segments → sequences → assignment rules) natively supports round-robin and load-balancing, and can also factor seller availability and capacity.
Option 1 — Dynamics 365 Assignment Rules
What it is. Define conditions (segment + rule logic) and choose how to distribute: round-robin or load-balancing. You can assign to sellers, teams, or queues, and optionally respect seller availability windows and capacity. Records are processed in order of rules and there may be a short delay because the engine runs on a pooling interval. (Microsoft Learn)
- Create rules for Leads, and Opportunities, then activate; rules run top-down, first match wins.
- Round-robin vs load-balancing behavior, plus how availability buckets influence routing.
- Match by seller attributes you define (e.g., language, territory modeled as an attribute) and/or fields on user records. Set the capacity per seller or team.
- Practical limits: up to 10 record conditions; up to 5 seller/team/queue attribute conditions.
Licensing note. This feature requires Sales Enterprise or Sales Premium.
Option 2 — Custom Rules Engine with Dataverse Plug-ins
Why teams choose this. You want instant, in-transaction decisions with full control over logic, data joins, and fallbacks—no platform limits on condition counts. Register a plug-in on Lead/Opportunity Create or Update; run synchronously (pre/post operation) to decide ownership immediately, or asynchronously if the logic is heavy.
What you can model easily
- Territory, product line, partner channel, language, or any custom attribute on User/Team.
- Skills as a lookup/attribute (e.g., certifications) and apply seniority or weighting.
- Workload checks (count of active records) similar to capacity, but fully customizable.
Option 3 — Custom Rules with Power Automate
Why teams choose this. You prefer low-code, cross-system logic, or want to call external services without writing C#. Use the Dataverse “When a row is added/modified” trigger, branch with conditions, look up User/Team, then Assign. Great for integration-driven routing (e.g., territory from ERP, reseller map from a SharePoint list).
Side-by-Side Comparison
| Feature | Assignment Rules (Work Assignment) | Custom Plug-in Engine | Power Automate Flow |
| Best for | Fast, admin-managed routing with fairness (round-robin / load balancing), availability, capacity. | Maximum control, transactional decisions, complex logic, near-zero routing latency. | Low-code, cross-app logic, calling external systems and services without C#. |
| Supported records | Leads, Opportunities | Any table | Any table with Dataverse trigger. |
| Distribution modes | Round-robin and Load-balancing; can consider availability buckets and capacity. | Whatever you code (round-robin, weighted, ML score thresholds, SLAs). | Build your own (round-robin lists, counters, or capacity from Dataverse). |
| Territory/skills | Use seller attributes or user fields; model “skills/territory” as attributes. | Full freedom (custom lookups, weightings, decay). | Full freedom (tables + connectors). |
| Availability windows | “Assign if seller is available within N hours.” | Implement calendars/working hours checks in code. | Check calendars/shift tables or Outlook/Graph via connectors. |
| Rule limits | Up to 10 record conditions; up to 5 seller/team/queue conditions; first-match rule wins. | No platform limits (your code/runtime only). | No hard rule limits; flow complexity grows with branches. |
| Latency | Engine runs on a pooling interval; slight delay possible. | Synchronous plug-ins execute in-transaction (fast); async via queue. | Near-real-time; depends on trigger and service load. |
| Logging | System behavior visible; fewer low-level logs. | PluginTraceLog / ITracingService, App Insights options. | Built-in run history, retries, error handling. |
| Licensing | Under Sales Enterprise / Sales Premium license | Included with Dataverse; developer effort required. | Power Automate Premium for Dataverse & many connectors. |
| Admin effort | Low/medium (configure in Sales Hub). | High upfront (C#), lowest runtime cost. | Medium (low-code), ongoing flow governance. |
Quick take
- If you want fast, fair, admin-friendly routing, and cost is not an issue, start with Assignment Rules.
- If you need real-time, instant, complex logic (and developer resources), use a plug-in.
- If you need cross-system logic with minimal code, use Power Automate.





