Skip to content
flowon.com

Logic Composer

Inputs and outputs

Define the values a logic block or logic flow takes in and gives back, including required inputs and list outputs.

Inputs and outputs are the contract of a logic block or logic flow. Inputs are the values the caller passes in when it runs; outputs are the values it gives back when it finishes. Recipes, event handlers, business processes, other flows, the Run dialog, Dataverse actions and AI agents all use the same contract, so define it with care.

  1. Open the block or flow and select the Input tab (“Values passed in when it runs”).
  2. Add an input.
  3. Enter a Name, for example QuoteAmount. Each name must be unique in the block or flow.
  4. Choose its Type. See Types.
  5. To accept several values, turn on List of values.
  6. Turn on Must have a value if the logic cannot run without it.
  7. Save the input, then save the form.
Setting What it does Notes
Name Names the input in expressions and in every caller. Must be unique. Choose it before others start using the block: callers bind inputs by name.
Type The kind of value the input accepts. Uses the shared Type picker. Unique Identifier is not offered; use Lookup or Row.
List of values Accepts a list instead of one value. Not available when the block or flow is exposed as a Dataverse action.
Must have a value Makes the input required. Inputs without it are marked Optional in the grid.
  • A caller must bind every input that has Must have a value. The expression editor marks a call to a block with an unbound required input as a problem, and the Run dialog will not run until you fill it in.
  • An optional input that the caller leaves out is empty when the logic runs; there is no default-value setting. Design for that: check it with Null / Not Null or give it a fallback with First Non-Empty. Remember that an empty number counts as 0 in arithmetic and number comparisons. See Empty values.

How a block or flow defines its outputs depends on what it is.

Logic Outputs Where you define them
Formula One value named result, of the type you choose above the formula. Can be a list. The Formula tab.
Validation One Yes/No value named result: Yes when the data is valid. Fixed.
Validation set isValid, plus failedValidation or failedValidations. Fixed; depends on Return First Validation Error. See Validation set.
Decision table, Decision tree Any number of named, typed outputs. Each can be a list. The Output tab.
Logic flow Any number of named, typed outputs (“Values it gives back when it finishes”). Each can be a list. The Output tab. The flow’s steps set their values. See Logic flows.

Formulas, decision tables, decision trees and logic flows can return lists, for example the list of approvers for a quote or the products a customer is eligible for. Editing an output keeps its list setting.

List outputs and list inputs are not allowed on a block or flow that is exposed as a Dataverse action. They are fine for MCP tools, which return lists as typed lists. See AI and API exposure.

On a decision table or tree, deleting an output also removes it from every row or outcome node that set it. The editor asks you to confirm first.

  • In an expression, use Run Logic Block: bind the block’s inputs by name and pick one output. To use several outputs, add one call per output, or call the block from a flow step. See Calling logic blocks.
  • In a flow, call a block or another flow with a step and use its outputs in later steps. See Logic steps.
  • In a recipe, validation blocks can stop the save. See Logic recipes.

A Quote Discount decision table for quotes:

Input Type Must have a value
CustomerSegment Choice (Account, Relationship Type) Yes
QuoteAmount Currency Yes
IsFirstOrder Yes/No No
Output Type
DiscountPercent Decimal Number
DiscountReason Text

Because IsFirstOrder is optional, the table treats an empty value as No when it compares it with is Yes.