Skip to main content

Flow Design Canvas

The flow design canvas defines the executable logic of an integration flow: it arranges nodes, connects processing paths, and configures data sources, field mappings, branch rules, target execution, and notifications, then saves or publishes the configuration as a flow version.

Enter Integration Flow Config from the selected OpenLink entry, select a flow, and click Open flow design canvas.

The canvas has four parts:

PartLocationResponsibility
Top actionsCanvas top barBack, copy, save, publish, save and publish, request example
Node paletteLeftAdds nodes to the canvas and shows how many of each node type exist
CanvasCenterArranges nodes, creates connections, and selects nodes or connections
InspectorRightEdits node names, node behavior, field mappings, branch conditions, messages, and connection names

1. Top Actions​

ActionDescription
BackReturns to the flow list
CopyValidates the current canvas and creates an independent draft flow from it
SaveSaves the current canvas as a new flow version
PublishPublishes the saved version when the current version is not published yet
Save and publishSaves the current canvas and publishes the new version immediately
Request exampleShows a call example for the current webhook flow, including the authentication placeholders

The top bar also shows the flow type, current status, and current version. Copy, save, and publish run the validation described in section 4 first.

2. Node Palette And Connections​

Node Types​

NodePurpose
StartDefines the flow entry; a canvas keeps one start node
SourceDescribes where input data comes from, such as a webhook body, poll script input, or local form data
TransformConfigures main and child table field mappings, and is usually the main data processing node
BranchSplits paths by condition and routes matched and unmatched data separately
TargetDefines the execution result, such as writing to a local form or calling a Studio script
MessageSends a notification inside the flow
Agent executionAnalyzes integration data with a published agent and runs the system commands that agent is allowed to use
QueryReads local form records and the selected local child tables for query flows
EndMarks the end of the flow; a canvas keeps one end node

The palette shows the current count next to each node type. Start and end nodes cannot be added again once they exist.

Node Count Limits​

Flow typeLimits
AllOne start node and one end node
Inbound, outboundOne source node and at least one target node
Query dataOne query node, no source node, and no target node
Message pushOnly Start, Message, Agent execution, and End, with at least one Message

Connections​

Drag from the output anchor of one node to the input anchor of another to create a connection. Select a connection to rename or delete it in the inspector. The canvas validates connections while editing, and invalid connections are not created.

NodeConnection requirements
StartNo incoming connection and exactly one outgoing connection
EndAt least one incoming connection and no outgoing connection
Source, transform, target, agent execution, queryOne incoming and one outgoing connection, with the outgoing anchor on a different side from the incoming anchor
BranchOne incoming connection plus the matched and unmatched outgoing connections
MessageOne incoming connection; it may continue to later nodes or end the current path without an outgoing connection

Beyond the per-node rules, the canvas requires every node to be reachable from the start node, every path to reach the end node or finish at a Message, and the source node (the query node in query flows) to come before all branches.

When a flow has no saved canvas yet, Soln shows a starter canvas so design can begin from the default structure.

3. Node Configuration​

Selecting a node opens the inspector on the right, which shows the current canvas state and the configurable options of the selection. Every node can be renamed, and connections can be renamed to express business meaning, such as “valid data”, “validation failed”, or “notify”.

Start Node​

The start node describes how the flow is entered and shows the current form pairing and webhook information.

SettingDescription
Node nameDisplay name of the start node on the canvas
Trigger actionsFor push flows, which local record events start the flow: create, update, or delete
Batch sizePoll flows always use paged batches; one submission is limited to 1–500 records and defaults to 100
Local formThe Soln form paired with the flow
External formThe external form paired with the flow
Webhook URLAddress that receives the external POST JSON request for webhook flows
Child table pairsShows the configured local and external child table pairs and provides Edit pairs

The start node does not replace the trigger mode chosen when the flow was created; it only adds entry details for that trigger mode.

Reconfigure Child Table Pairs​

  1. Select the start node and open the inspector
  2. Under Child table pairs, click Edit pairs
  3. Add, replace, or remove local and external child table pairs
  4. Click Save pairs

Every pair needs one local child table and one external child table, and the same local or external child table cannot be used in more than one pair. External candidates include direct child objects of the external main form and objects that reference it through an enabled foreign key field.

When a removed or replaced pair is already used in Transform, the canvas asks for confirmation. Continuing deletes the child table mappings of that pair because the source and target relationship no longer exists, and keeps the mappings of unchanged pairs. The canvas is then marked as modified, and the change is stored only after saving or publishing.

Source Node​

The source node describes the input side of the flow.

Flow contextSource behavior
Inbound webhookUses the webhook request body as source data
Inbound pollUses a Studio script to fetch or assemble source data
OutboundUses local form data as the source input

Inbound poll flows need a Studio script asset and script file, and the inspector shows a script input example. Paged polling passes a persistent checkpoint through input.cursor and a batch limit through input.pageSize; the script must request one page of external data and return { items, nextCursor } instead of iterating through every page internally.

For paged polling, Soln commits the page records and advances the schedule checkpoint in the same tenant database transaction. When a page fails, the page writes roll back, the cursor does not move, and the next execution continues from the last successful commit. Delivery is still at least once, so target nodes should use a local identifier field with create or update instead of relying on a non-idempotent create.

export default async function main(
payload: StudioScriptRuntimeContextPayload,
context: StudioScriptContext
) {
const response = await context.http.requestJson({
method: 'POST',
url: 'https://api.example.com/integration/users/query',
json: {
cursor: payload.input.cursor,
limit: payload.input.pageSize,
},
timeoutMs: 20_000,
});

return {
items: response.data.items,
nextCursor: response.data.nextCursor ?? null,
};
}

Studio scripts run with a 30 second limit by default, and OpenLink integration scripts use a bounded 60 second setting. Single HTTP requests inside a script should still use a shorter timeout that matches the external API.

Transform​

Transform maps source fields to target fields and supports main table and child table mappings.

AreaDescription
Main table field mappingsMaps fields between the local main form and the external main form
Child table field mappingsMaps fields between local and external child tables
Source fieldUses a source-side field as the mapping value
Fixed valueWrites a fixed value without selecting a source field
Target fieldSelects the field that receives the mapped value
Match fieldLets search fields define how incoming values match existing records
Option mappingMaps option values between single select, multi select, and boolean fields
Auto mappingGenerates mappings from field names, API names, option labels, or option values
Mapping previewShows the data structure passed to later target execution

When a target node depends on transformed data, finish the transform mappings first and configure the target node afterwards.

Branch​

Branch routes data by condition and has two outgoing paths: matched and unmatched. Every branch needs at least one condition, and the single source node (the query node in query flows) must come before all branches.

Available condition fields follow the flow direction: inbound flows can evaluate external fields and, where applicable, OpenLink subject mapping; outbound flows can evaluate local Soln fields.

SettingDescription
Branch nameDisplay name of the branch path
ConditionRule that decides whether data enters the matched path
Matched pathConnection used when the condition is satisfied
Unmatched pathConnection used when the condition is not satisfied

Branches suit validation, exception handling, selective notifications, and routing records to different targets.

Target Node​

The target node defines what happens after mapping and routing.

In inbound flows the target node usually writes into a local Soln form:

Inbound settingDescription
Write actionCreate, update, create or update, delete, or a workflow callback where supported; the workflow callback is only available in inbound webhook flows
Trigger approvalsFor create and create or update, controls whether the local form submission triggers approvals
Match fieldField used to match existing local records for update, create or update, and delete

In outbound flows the target node usually calls a Studio script:

Script settingDescription
Studio scriptScript asset and script file to execute
Script input exampleShows the payload passed to the script, including flow info, trigger info, form binding, mapping result, raw input, and runtime context

Message​

Message sends a notification; it may continue to later nodes or end the current path.

SettingDescription
ChannelIn-app, push, or email; the template list follows the selected channel
Message templateTemplate to use; the template defines which input variables must be mapped
Recipient sourceRecipients come from the flow context, fixed recipients, or local form fields
Context recipientsSends to the trigger actor, the form submitter, or the recipients of a previous step
Fixed recipientsMembers, roles, platform operators, organizations, or departments
Field recipientsMember, organization, or department fields from the local form
PriorityLow, normal, high, or urgent
Click actionNone, open a resource, or open an external link; the resource type can be a flow execution, a form record, or a custom resource
Action templateResource ID template, URL template, and optional JSON action arguments
Input mappingMaps context paths or fixed values to the input variables declared by the template

Available context paths include flow input, upstream execution results, agent analysis results, source flow and execution information, form information, and the runtime language and time zone.

Query Node​

The query node reads local form records and the selected local child tables for query flows.

  1. Add a Query node
  2. Select the local root form
  3. Select the returned fields, or use select all and clear
  4. Configure related data when child tables should be returned
RuleDescription
Local root formRequired; the query reads records of this local form
Returned fieldsAt least one field must be selected
Node countA query flow keeps one query node and no source node

Agent Execution Node​

The agent execution node analyzes integration data with a published agent and runs the system commands that agent is allowed to use.

  1. Add an Agent execution node
  2. Select a published agent
  3. Enter the task instruction
  4. Choose the execution timing: on success, on failure, or always

Both the agent and the task instruction are required, and the node connects like a source node: one incoming and one outgoing connection on different sides.

4. Validation, Versions, And Publishing​

Validation Checklist​

Before copying, saving, or publishing, the canvas must pass topology and node configuration validation:

  • Exactly one start node and one end node
  • Inbound and outbound flows have exactly one source node and at least one target node
  • Query flows have exactly one query node and no source node
  • Message push flows use only Start, Message, Agent execution, and End, with at least one Message
  • Every branch has complete matched and unmatched paths and at least one condition
  • Transform mappings are complete
  • Every agent execution node has an agent and a task instruction
  • Every node is reachable from the start node, and every path reaches the end node or finishes at a Message

When validation fails, the canvas points at the node that needs attention, and the operation can be retried after fixing it.

Save And Publish​

ActionDescription
SaveCreates a new version from the current canvas
Save and publishCreates a new version and publishes it immediately
PublishPublishes the saved version when there are no unsaved changes

A flow has a runnable version only after publishing. Enabling and disabling the flow stays in Integration Flow Config.

Copy The Current Canvas​

  1. Click Copy in the top bar
  2. Enter the new flow name and an optional description
  3. Click Copy to confirm

Soln runs the same validation as saving before copying, so the copy can include unsaved canvas changes that already passed validation. The flow code is generated automatically.

The result is a draft flow with its own version and audit information. Its graph, field mappings, child table pairs, scripts, node settings, and push overlap policy are copied. Runtime state is not: the new flow is not enabled or published automatically and does not inherit execution logs or an active poll schedule, so review and publish it separately.

  1. Confirm the flow type, trigger mode, main pair, and child table pairs in Integration Flow Config
  2. Open the flow design canvas
  3. Review the starter canvas and keep one start node and one end node
  4. Configure the start node entry details
  5. Configure the source node, selecting a Studio script when the source needs one
  6. Configure the main and child table transform mappings
  7. Add a Branch when conditional routing is needed
  8. Add and configure the query node for query flows
  9. Add agent execution nodes when model analysis is needed
  10. Configure target execution
  11. Add a Message when notifications are needed
  12. Verify that every node connects from the start node to an end path
  13. Save and publish the canvas
  14. Go back to Integration Flow Config, enable the flow, then test the trigger and review the execution logs