AI & agents
Logic Assurance
Generate test suites for logic blocks and logic flows from your live schema, run them, and read Passed, Failed, Errored and Unverified results.
Applies toDataverse
Logic Assurance generates test suites for the logic blocks and logic flows in a project, and runs them. Each test case has concrete inputs and an expected result, based on your real tables, columns and choices. Lookup and choice inputs are filled with real values from your environment. Run the suites after every change to catch regressions before your users do.
Before you begin
Section titled “Before you begin”Generate test cases
Section titled “Generate test cases”- Sign in to Logic Assurance. On Select, choose the Project.
- Pick the Logic Flows and Logic Blocks to test. Each shows how many test cases it already has, so you can target the gaps.
- Set Test cases per artifact. The Generation Estimate shows the number of artifacts and tests.
- Select Analyze Project. Suites appear on Test Cases as each artifact finishes.
Review and edit test cases
Section titled “Review and edit test cases”On Test Cases, each artifact has its own suite. Expand it to see each case’s Name, Description, Inputs (JSON) and Expected (JSON). Edit a case, add one, or delete one, then select Save to keep the suite. Saved suites are your maintained record of how the logic should behave.
The expected result depends on the kind of logic:
| Logic | What a case expects |
|---|---|
| Validation, Validation Set | true or false |
| Formula, Decision Table, Decision Tree | The output values. For decision tables and trees, an empty result means no row matched. |
| Logic Flow | The output values, the records the flow should save, and the blocks or flows it should call |
Use Download HTML or Download JSON to share or archive the suites.
Run tests
Section titled “Run tests”- On Test Cases, select the cases to run and select Run selected (N), or select Run on a suite to run all its cases.
- If the selection includes flow tests, Run flow tests — writes to Dataverse appears. Read it, select I understand this writes real data to Dataverse., and select Run flow tests. Select Cancel to stop.
- Watch each case’s status update as it runs.
- Open Run Results for the Run summary and per-artifact outcomes.
Suites for flows carry a Writes to Dataverse marker so you can see the risk before you run them.
Results
Section titled “Results”| Result | Meaning |
|---|---|
| Passed | The actual result matches the expected result. |
| Failed | The actual result differs. The case shows what was expected and what came back. |
| Errored | The logic couldn’t run or its result couldn’t be read. The case shows the error. |
| Unverified | There was nothing reliable to compare against, for example a formula without an expected value, or outputs that depend on live records. |
| Baseline captured | The first run recorded the actual output as the expected result. Run the case again to verify it. |
Baselines for data-dependent outputs
Section titled “Baselines for data-dependent outputs”Some outputs can’t be predicted when tests are generated: a lookup to a record that a flow creates, or a choice value that depends on your data. Logic Assurance doesn’t fail these against a guess. Instead, the first clean run captures the real output as the expected result (Step 1 of 2 — baseline captured). Review it under Expected (JSON), then select Run again to verify. From then on, the value is checked on every run. A flow that creates a new record each time will then fail the check, which tells you the output isn’t stable.
How it behaves
Section titled “How it behaves”- Runs as you. Tests read and write with your Dataverse permissions.
- Private runs. Only the person who started a generation or test run can see and steer it.
- Project-scoped suites. Saved suites and settings are available only to members of the project.
Example
Section titled “Example”You change the Volume Discount decision table in the Sales project. In Logic Assurance you select it, generate eight cases, and run them: seven pass, and one fails because a total of exactly 10,000 now returns 5% instead of 7.5%. You confirm the boundary was meant to move, update the case’s expected value, and save the suite.