Components perform all the necessary actions in Control Flow - managing the flow itself, interacting with the data sources, modifying variables, etc. You can see the list of available components on the left of the Control Flow designer.

Depending on their purpose, components are divided into two categories:

  • Core components. These are control blocks - they manage the flow itself - split it into parallel branches, redirect it depending on conditions, stop it, etc.
  • Task components perform the actual interaction with data sources and modify control flow variables.


This component is the beginning of the control flow. There always is one such component on a control flow diagram, and you cannot delete it or add another one. It also does not have any settings except the name.


This component allows you to specify a condition in your control flow and perform different actions depending on whether this condition is true or not. For example, a data flow, which is executed in the current control flow may assign a number of processed rows to some variable, and you may need to perform certain actions depending on if any rows were successfully processed or not.

If component

You need to specify the Condition in the component settings. For this, you may click the button and use a convenient Expression editor. The condition should be specified using our expression syntax and should evaluate to a boolean value - True or False. You can use the control flow variables in the condition.

The If component has two branches - True and False. It executes one of them depending on the result of the specified condition.


This component allows you to perform different actions in parallel in your control flow. For example, you may run several integration packages, data flows, or other actions in parallel.

Parallel component

The Parallel component splits control flow execution into multiple parallel branches. By default, the component splits the current branch into two branches, but you can add more branches in its settings. Alternatively, you can add branches by dragging more components directly to a place directly under the parallel component, from where its branches fork.

Dragging a component to add to a new branch in Parallel component

Try Catch

This component allows performing error processing in the control flow if a component fails or an exception is thrown. It has two branches: Try and Catch. The component tries to execute its Try branch. If an error happens or an exception is raised in its Try branch, the execution of this branch stops, and instead the Catch branch is executed.

Parallel component

In the settings of this component, you can specify a Variable, to which the error message is written if an error occurs in the Try branch. You can use this variable in your error processing logics, that you can set up in the Catch branch.


This component allows you to trigger an error in your Control Flow. If this component is triggered outside of the Try branch of a Try Catch component, an exception stops control flow execution, and the control flow run is considered failed with the specified error message. If used in a Try Catch component, it switches execution to the Catch branch.

Exception component

In the settings of this component, you can specify the Error Message.


This component stops control flow execution. There is one Stop component in the end of Control Flow added automatically, but you may add more Stop components to different branches.

When this component is triggered, control flow execution stops. However, if this component is triggered inside a branch of a parallel component, other parallel branches are executed till the end.

This component does not have any settings except the name.


This component allows performing an arbitrary action against the specified connection.

Action component

To configure this component, you need to select a Connection to perform an action against, then select Action, configure it, and map its parameters if the action has them.

Data Flow

This component executes a data flow.

Data Flow component

To configure it, click its Open Data Flow link and design the data flow. After you finish configuring the data flow, click the Return to parent button in the title bar to return back to the control flow.

This component creates a data flow that you can only edit and run from within the current control flow. If you want to use a data flow that can be run separately or from other control flows, create a separate data flow package and then use the Execute Integration component to run it from the control flow.

Settings, like parameters and variables, connections, and result setting are shared between the control flow and all its data flows, created via its Data Flow components. You can configure these settings while editing the control flow diagram or any of its data flows.

Set Variables

This component is used to assign values to control flow variables.

Set Variables component

To configure this component, click the plus sign near Variables to add a variable. Then select a Variable to assign a value to. In the box below, specify the expression that calculates the value to assign. You can use constant values or other variables and parameters there. You may click the button and use the Expression editor to specify the expression.

You may add and set as many variables as you need in this component.

Execute Integration

This component executes any other integration package in the workspace, including data flows and other control flows.

To configure this component, you need to select the Package to execute and optionally map its parameters. Unmapped parameters will retain their values, stored in this package.

You can open the selected package for editing by clicking the button. It will open in a new tab.

This component is considered failed only in case of package-level errors, like, for example, a connection cannot open. In this case, if used in the Try branch of a Try Catch component, it switches execution to the Catch branch, or fails the control flow, if used not in Try Catch component. If there are only record-level errors (some records have failed), this does not happen.