# Run Data Flow

The Run Data Flow Data Operation starts a Data Flow from within the current Data Flow. It can be used to easily reuse Data Flows across the Connections Builder. It can also be used to run a Data Flow multiple times.

![organizing info](https://4185914948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSItjRhbHaLQ4ar3DUljt%2Fuploads%2Fgit-blob-1c417a1e1ac40fd29220304a5ca9b8263df4e2c1%2Fthe-run-data-flow-data-operation-v181-0.gif?alt=media)

## Use Cases

* If you find yourself repeating the same set of Actions throughout different Data Flows, combine them into one Data Flow and run them with the Run Data Flow Operation
* Given a list of names, use **Run Multiple Data Flows** to make new Salesforce Leads for each of the names

## Data Operation Properties

### Data Flow

Lists all the Data Flows in the App. The currently selected Data Flow will run when this Operation is executed.

### Asynchronous

If checked, this Operation will kick off its Data Flows in the background and immediately continue to the next Operation in your Data Flow. Note that the **Run Results** will not contain the end results of a Data Flow run asynchronously.

### Skip Data Flow

Expects type `boolean`.

The Airscript expression in this field is checked at the start of the Operation. If it is **TRUE**, the entire Operation will be skipped and no Data Flows will be run.

### Run Multiple Data Flows?

If checked, the selected Data Flow will run multiple times using input from the **Data** list. There are several fields that appear when Run Multiple is checked:

* **Data**: A list of inputs. For every input in the list, the selected Data Flow will be run once with that input.
* **Item Name**: An implicit Variable will be created that contains the current input from the **Data** list. That Variable will have the name specified here.
* **Index Name**: An implicit Variable will be created that contains the current index of the input in the **Data** list. That Variable will have the name specified here.
  * For example, with the default value of **index**, the first time the Data Flow is run, **index** will be 0. The second time **index** will be 1, and so on.
* **Collection Name**: An implicit Variable will be created that contains the entire **Data** list.

Below is an example of how to use Run Multiple Data Flows. The selected Data Flow is "Combine Text", which combines 2 Text values together. The value in **Data** is a List containing the inputs for the Data Flow.

The first time the Data Flow is run, it sets **item** to the first value in the list of data: `{ first_input: "hello", second_input: "there" }`. In the **Inputs** entry, that `item` value is used to get the `first_input` and `second_input` to the correct inputs for Combine Text.

![organizing info](https://4185914948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSItjRhbHaLQ4ar3DUljt%2Fuploads%2Fgit-blob-df4bbdc93b8737f628d7a3e9d45011627ec24033%2Fthe-run-data-flow-data-operation-v181-1.png?alt=media)

The "Combine Text" Data Flow is run 2 times, and the 2 results are placed in a List in the **Run Results**.

#### Run Results

An automatically created Variable to hold the result of the Data Flow(s). If multiple Data Flows were run, the results of each of the Flows will be in a list in the order they were run. If **Asynchronous** is checked, the Run Results will not contain any results. Instead they will contain **{sent: true}** to denote that the Data Flows have been started in the background.

If **Skip Data Flow** was **TRUE**, this will contain `{skipped: true}`.
