Logic Composer
Run and test
Run a logic block or logic flow with your own inputs and check its outputs before anyone else depends on it.
The Run Logic Block and Run Logic Flow dialogs let you try your logic with real inputs, right from the designer. You see whether the run succeeded, how long it took and every output it returned, and you can rerun with small changes to check edge cases. Use it every time you change a block or flow.
Before you begin
Section titled “Before you begin”- Save your changes first. The Run Logic Flow dialog runs the last saved version of the flow and ignores unsaved edits without warning. The dialog refuses to run a block or flow that could not be fully read.
- The run happens as you, against the current environment. A logic flow’s steps run for real: rows it creates, updates or deletes are changed. Test flows that change data in a development or test environment. If a run fails or ends with Raise Error, Dataverse normally rolls back the changes it made, but do not rely on that to clean up test data.
Run a block or flow
Section titled “Run a block or flow”- Open the logic block or logic flow, or select it in its list, and select Run.
- Fill in the Input column. Each input shows its description and its type.
- Select Run, or press Ctrl+Enter.
- Read the result in the Result column.
What the dialog shows
Section titled “What the dialog shows”Header. The name of the block or flow, a badge with its kind (Formula, Decision table, Decision tree, Validation, Validation set or Logic flow), and the Description from its Docs tab.
Input (left column). One field per input, labelled with the type names you know from the Type picker, such as Text, Yes/No, Lookup, Currency and Choice. Lists are shown as “List of …”. With no inputs, the column reads “No inputs needed”.
Result (right column). Before the first run it reads “Run the block to see its outputs. It returns:” (or “Run the flow…”) followed by the outputs to expect. Logic without outputs says it returns no outputs, so you run it only to check that it succeeds.
If inputs that must have a value are empty, the dialog says which ones (“Fill in QuoteAmount to run.”) and marks the fields.
Run status
Section titled “Run status”After a run, the Result column shows:
| Part | What you see |
|---|---|
| Status | A Succeeded or Failed banner with the time of the run and its duration in milliseconds. A failed run shows its error codes, for example a precondition’s UNAUTHORIZED_ACCESS. |
| Output | Every output with its value. Yes and No values are coloured, and an output without a value reads (empty). |
| Copy value | A button inside each value box that copies the value, for example to paste a long list or an ID elsewhere. |
A run that throws an error is always reported as Failed with the error, never as a blank result.
Recent runs
Section titled “Recent runs”Recent runs lists up to five runs from your current session, each marked Succeeded or Failed, so you can compare results while you change inputs. A run without inputs is listed as “No inputs”.
Use last inputs refills the plain values from your last run. It is remembered in this browser only.
How it behaves
Section titled “How it behaves”- Preconditions apply. The dialog runs as the signed-in user, so the block’s or flow’s precondition is checked for you. If you are an administrator, your result may differ from what an end user gets.
- Same logic everywhere. Recipes, flows, business processes, Dataverse actions and MCP tools run the same block or flow you test here.
Test checklist
Section titled “Test checklist”For each block or flow, run at least:
- A typical case, such as a mid-size quote for a regular customer.
- Each boundary, such as an amount exactly on a threshold (
10000when the rule is “10,000 or more”). - Each optional input left empty. Remember that an empty number counts as 0.
- A case that matches no specific row or branch, to prove a decision table or tree has a catch-all.
- A user without the required role, if the logic has a precondition.
To keep repeatable test cases with expected results and rerun them after every change, use the Logic Assurance agent.
Example
Section titled “Example”You test the Quote Discount decision table:
CustomerSegment |
QuoteAmount |
IsFirstOrder |
Expected DiscountPercent |
|---|---|---|---|
| Gold | 12000 | No | 20 |
| Gold | 10000 | No | 20 (boundary) |
| Silver | 7500 | (empty) | 10 |
| Standard | 500 | No | 0 (catch-all row) |
Run each line, compare the Output, and use Recent runs to check you covered them all.