Logic Composer
Logic steps
Reference for the steps that run other logic from a flow, such as logic blocks, sub-flows, business processes, Dataverse actions, classic workflows and SDK messages.
Logic steps let a flow reuse logic that lives elsewhere: your own logic blocks and flows, business processes, Dataverse actions and classic workflows, or any platform message. Calling reusable pieces keeps each flow short and each rule in one place.
Run Logic Block
Section titled “Run Logic Block”Runs a logic block and makes its outputs available.
| Setting | What it does | Required |
|---|---|---|
| Logic Block Type | The block to run, listed by name and project. Fixed once the step is saved. The + button next to the picker creates a new block in a dialog. | Yes |
| Inputs tab | A value for each of the block’s inputs. | Required inputs must be set |
| Outputs tab | Shows each output’s name and type (read-only). | No |
Outputs: <Step>.Output.<output name> for each output of the block. A formula, validation or validation set has fixed output names (for example result, or isValid for a validation set).
Behavior: the block’s precondition is checked when it runs. If the block fails (for example, a decision table that reaches no decision), the step fails.
Example: run the “Discount Matrix” decision table with GetAccount.customertypecode and GetOrder.totalamount as inputs, then use DiscountMatrix.Output.Discount in the next step.
Run Logic Flow
Section titled “Run Logic Flow”Runs another logic flow as a sub-flow and makes its outputs available.
| Setting | What it does | Required |
|---|---|---|
| Logic Flow | The flow to run. Fixed once the step is saved. The + button creates a new flow. | Yes |
| Inputs tab | A value for each of the flow’s inputs. The editor shows “Required arguments are not set.” while required inputs are missing. | Required inputs must be set |
| Outputs tab | Shows each output’s name and type. | No |
Outputs: <Step>.Output.<output name> for each output of the called flow.
Behavior:
- The called flow’s precondition is checked too.
- If the called flow fails with an unexpected error, this step fails too. Inside a Try / Catch, that error can be caught.
- If the called flow ends with Raise Error, or its precondition fails, the calling flow is not stopped, but it does not receive the error code, the message or any outputs. If the called flow declares outputs, this step fails with a technical error instead. End sub-flows that can refuse their work with Halt after setting a status output, and check that output. See Errors in sub-flows.
Example: for each approved Order, call the “Create Invoice” sub-flow with the order id and use CreateInvoice.Output.InvoiceId.
Run Business Process
Section titled “Run Business Process”Starts a business process on a row. This step is offered only when Logic Process Orchestrator is installed.
| Setting | What it does | Required |
|---|---|---|
| Business Process | The process to start. The list shows active processes as “Name (Project)”. | Yes |
| Entity Id | The row of the process’s table to start it on. | Yes |
Outputs: none.
Behavior: the process needs an active version, or the step fails (“… does not have an active version.”). The process’s own “Who can start” and “Start only when” precondition applies; when it refuses the start, the step fails with the precondition’s code and message (CODE: message), which a Try / Catch can handle within the usual limits. See Starting processes.
Example: start the “Order Fulfilment” process on the new Order.
Run Process Action
Section titled “Run Process Action”Runs a Dataverse action (custom process action) and makes its outputs available.
| Setting | What it does | Required |
|---|---|---|
| Process | The action to run, listed by unique name. | Yes |
| Entity | The table an action is bound to. Shown read-only for bound actions. | No |
| Entity Id | The row to run a bound action on. | For bound actions |
| Inputs tab | A value for each of the action’s inputs. | Required inputs must be set |
| Outputs tab | Each output’s name and type. Choice outputs ask for their choice. | No |
Outputs: <Step>.Output.<output name>.
Dynamics 365 CE on-premisesWordingApplies to the other edition
On-premises, the step description reads “Run an Action and use its results.” and choices are called option sets.
Example: run the custom action new_CalculateCommission on the Order and use CalcCommission.Output.CommissionAmount.
Run Process Workflow
Section titled “Run Process Workflow”Runs a classic workflow on a row.
| Setting | What it does | Required |
|---|---|---|
| Process | The workflow to run. The list shows classic workflows. | Yes |
| Entity | The workflow’s table, shown read-only. | No |
| Entity Id | The row to run the workflow on. | Yes |
Outputs: none.
Behavior: background workflows are queued as system jobs. The step continues as soon as the request is accepted; it does not wait for the workflow to finish.
Example: run the existing “Account Approval” workflow on a new Account while you migrate its logic to Logic Fabric.
Execute SDK Message
Section titled “Execute SDK Message”Calls any platform message by name, for example QualifyLead, WinOpportunity, CloseIncident, or a custom API. Works on Dataverse and on-premises. Use it for operations no other step covers.
| Setting | What it does | Required |
|---|---|---|
| Message Name | The message to call. | Yes |
| Parameters tab | Each request parameter: New Parameter Name and New Parameter Value (an expression of any type). | As the message needs |
| Outputs tab | Each response property you want to use: New Output Name and its type, then Add Output. | No |
Parameter and output names must start with a letter or underscore and contain only letters, digits and underscores. An output that later steps use cannot be removed: “This output is used by other steps and cannot be removed or changed.”
Outputs: <Step>.Output.<output name> for each output you added. A property missing from the response gives the type’s default value.
Limits: the editor does not check parameter types. A value the message cannot accept, such as a list, an object, or a complex SDK-only value (column sets, queries, access masks), makes the step fail when it runs. Use Share / Unshare Record for sharing and Run Process Action for custom actions.
Example: close a Case with CloseIncident, passing a parameter IncidentResolution (a Row of Case Resolution with Subject and Case set) and Status (the Problem Solved status reason).