Skip to content

Microsoft

Dynamics 365 business rules limitations (and what to do instead)

Dynamics 365 business rules are great for simple form logic. Here is where they run out of road, and what to use when your decisions outgrow them.

The Condexa team · · 6 min read

If you run Dynamics 365 or a model-driven Power App, business rules are usually the first tool you reach for. They are quick, they need no code, and they sit right next to the form. For "make this field required when the status is Closed" they are perfect.

The trouble starts when the rule stops being about a form and starts being about a decision. Who must approve this order? Can this customer have more credit? Is this supplier ready to trade? That is where most teams hit the limits.

What Dynamics 365 business rules do well

Business rules let you set conditions and actions on a single table without writing JavaScript or a plug-in. Typical uses:

  • Make a field required, or optional, based on another value
  • Show or hide a field, or lock it
  • Set a default value
  • Show an error message when a value is out of range
  • Recommend a value to the user

For small, form-level behaviour, that is exactly the right tool. Keep using it.

The Dynamics 365 business rules limitations that bite

They only see one table

A business rule works on the fields of the record in front of it. It cannot easily look across to related records, count the open orders on an account, or check a value against a reference list someone else maintains. Real decisions nearly always need that wider view.

Reference data ends up hard-coded

Approval limits, discount bands, restricted countries, risk scores. In a business rule, these values live inside the conditions themselves. When finance changes the limit for a cost centre, someone has to open the rule, find the right branch and edit it. Multiply that by every cost centre and every region and the rule becomes a maze.

Branching gets hard to read quickly

Business rules handle a few conditions well. Once you need tiers, exceptions and "unless" clauses, the designer becomes a long chain of if/else blocks. Nobody outside the team that built it can read it with confidence, and that includes the auditor.

Much of the behaviour is form-bound

Several actions, such as show and hide, only apply when a person is using the form. Data arriving through an import, an integration or another system does not get the same experience. If the decision must hold everywhere, the form is the wrong place for it.

No explanation after the fact

When a user asks "why was this blocked?" or audit asks "why was this approved?", a business rule cannot tell you. There is no record of which condition fired, with which values, on which day.

Nothing else can call it

Your ERP, your pricing tool and your customer portal cannot ask a Dynamics 365 business rule for an answer. So the same logic gets rebuilt in each system, and slowly drifts apart.

Signs you have outgrown business rules

  • You have more than one business rule doing a similar job on different tables
  • Limits and thresholds are typed into conditions rather than held in a table
  • Changes wait for "whoever built the rule" to be free
  • Another system needs the same answer and has its own copy of the logic
  • Someone has asked why a decision was made, and nobody could say

What to do instead

You have three common options, and each suits a different job. We compare them in detail in Dataverse business rules vs plug-ins vs Power Automate.

  1. Plug-ins for logic that must run inside the Dataverse transaction. Powerful, but every change is a developer ticket and a release.
  2. Power Automate for moving work between people and systems. Great at orchestration, awkward as the home of complex decision logic.
  3. A decision service that holds the rules outside Dynamics 365, owned by the business, and answers any system that asks.

The third option is where Condexa fits. You build the decision as a visual workflow, keep limits and bands in lookup tables the business owns, and let Dynamics 365 call it over a REST API. Lookup tables can even read live from Dataverse, so you are not copying data around.

Every call is recorded with its inputs, outputs and a step-by-step trace. When someone asks why a purchase order went to the finance director, you can show them.

A practical way to split the work

  • Keep business rules for form behaviour: required fields, visibility, simple defaults.
  • Keep plug-ins for tight transactional work that must never be skipped.
  • Move the decision itself (limits, tiers, eligibility, routing) somewhere the policy owner can read and change it.

That split keeps Dynamics 365 tidy and stops your policy living in six different places.

Next steps

If your decisions have outgrown the form, see how Condexa works with Dynamics 365 and Dataverse, or read why hard-coded business rules cost more than they seem. When you are ready, see your own decision running in 30 minutes.

Pick one decision. See it running in 30 minutes.

Bring a decision your team makes every week. We will build it with you, live, test it against your own examples and show your systems calling it.

No slides. Your decision, built live. No obligation.