# Invoke Process

> `UiPath.Core.Activities.InvokeProcess`

`UiPath.Core.Activities.InvokeProcess`

## Description

Executes a UiPath process that is available for the local machine. Can be used to run local packages, as well as [processes in Orchestrator](https://docs.uipath.com/orchestrator/docs/about-processes), if a connection is available.

For more information on how to find the list of available processes on a machine, go [here](https://docs.uipath.com/robot/docs/uipath-assistant#section-the-process-list-widget)

The **Invoke Process** activity runs in Synchronous mode, meaning that the parent process waits for the child process to complete before resuming.

Logs generated by the child processes only contain the outcome of the execution and errors, and are written in the same place as the ones from the parent and can be differentiated by the `ProcessName` field in local logs and `Process` column in Orchestrator.

When using the **Invoke Process** activity, even though the project contains multiple processes, a single job is created for running them as opposed to the [Run Parallel Process](https://docs.uipath.com/activities/other/latest/workflow/begin-process) activity which creates separate jobs for each process in the project.

If there are multiple processes added, the active version on the current folder is the one that will be used.

:::note
Unserializable data types cannot be passed between workflows (e.g. UIBrowser, UIElement, etc).
:::

If a child process is invoked but not found, an error is logged containing the name of the child process, the path where Robot searched for it and additional details such as `WindowsIdentity` and `machineName`.

:::note
When using a version of the **UiPath.System.Activities** that is higher than **v20.4**, **Invoke Process** supports multiple entry points. If a workflow is created with this version and then the **UiPath.System.Activities** pack is downgraded to an older version that only supports a single entry point, the **Invoke Process** activities in the workflow suffer validation errors and must be manually replaced to work.
:::

## Project compatibility

**Windows - Legacy** | **Windows** | **Cross-platform**

## Windows, Cross-platform configuration

* **Orchestrator folder path** - The path of the Orchestrator folder where the specified process is located, if different from the folder where the process is running. This field only supports String values, with `/` as the separator to indicate subfolders. For example "Finance/Accounts Payable".
* **Invoke by** - Specify whether to invoke the process by the **Process name** as configured in Orchestrator, or by the **Package name**. Please note that using the package name is supported, but deprecated.
* **Process name**/ **Package name** - The name of the process or package you want to invoke. The dropdown displays the processes or packages available in the connected Orchestrator folder. This field supports only String or String variables. To manage the list of available processes, select **Manage processes** at the right side of the field.
  :::note
  Switching between **Process name** and **Package name** options does not automatically update the name. If the name of your process differs from the package name, make sure to update it accordingly.
  :::
* **Entry point** - If your process has multiple entry points, specify the path of the workflow file to run once the process starts. This path should be relative to the root package. By default, this field is left empty and uses the entry point configured in the Orchestrator.
* **Arguments** - Default option. Opens the arguments dictionary, where you can see the arguments of the invoked process. You can also define a variable to hold a dictionary of arguments by selecting **Use an expression** at the right side of the field. This converts the **Arguments** field to **Arguments variable**. To retrieve the latest list of process arguments, select **Refresh arguments** at the right side of the field. To open the arguments list and edit their attributes, select the **Arguments** field box.
* **Arguments variable** - Activated by the **Use an expression** option from the **Arguments** field. You can use a predefined variable, or you can create a new one either by using VB expressions or prompting the Autopilot to generate one for you. Use this variable to hold the dictionary of arguments for the invoked workflow. Switch back to the **Arguments** option by selecting **Use Static Names** at the right side of the field.

#### **Additional properties**

#### **Common**

* **Timeout** - Specifies the amount of time to wait for the invoked workflow to run before an error is thrown and the workflow is aborted. This field supports only `TimeSpan` variables. By default, this field is empty.
* **Continue On Error** - Specifies if the automation should continue even when the activity throws an error. This field only supports Boolean values (true, false). The default value is **False**. As a result, if the field is blank and an error is thrown, the execution of the project stops. If the value is set to True, the execution of the project continues regardless of any error.
  :::note
  If this activity is included in **Try Catch** and the value of the **ContinueOnError** property is **True**, no error is caught when the project is executed.
  :::

**Execution**
* **Target Session** - Specifies the session in which the child process is started:
  + **Current**- The child process opens in the same session as the parent one.
  + **Process Default** - The child process uses the Process Settings.
  + **Main** - The child process starts in the main session regardless to where the parent process runs.
  + **Picture in Picture** - The child process starts in the Picture in Picture session regardless to where the parent process runs.

**Log**
* **Log Entry** - Specify the type of information to automatically log when entering the invoked resource.
* **Log Exit** - Specify the type of information to automatically log when exiting the invoked resource.
* **LogLevel** - Specify the logging level applied to the messages generated by **Log Entry** and **Log Exit**.

## Windows - Legacy configuration

#### **Designer panel**

#### You can find the following properties in the body of the activity:

* ##### **Package name** - The name of the package used to create the process you want to invoke. In Windows - Legacy projects, the robot identifies the process to invoke by its package name.
* ##### **Entry point** - If your process has multiple entry points, specify the path of the workflow file to run once the process starts. This path should be relative to the root package. By default, this field is left empty and uses the Main.xaml as entry point.
* ##### **Edit arguments** - Opens the arguments list, where you can see and manage the arguments of the invoked process.

#### **Properties panel**

#### **Common**

* **Continue On Error** - Specifies if the automation should continue even when the activity throws an error. This field only supports Boolean values (True, False). The default value is False. As a result, if the field is blank and an error is thrown, the execution of the project stops. If the value is set to True, the execution of the project continues regardless of any error.
  :::note
  If this activity is included in **Try Catch** and the value of the **ContinueOnError** property is True, no error is caught when the project is executed.
  :::
* **DisplayName** - The display name of the activity.
* **Timeout** - Specifies the amount of time to wait for the invoked workflow to run before an error is thrown and the workflow is aborted. This field supports only `TimeSpan` variables. By default, this field is empty.

#### **Input**

* **Arguments** - A collection of IN arguments that you can pass to the process you want to run from Orchestrator. If an argument has an unknown type, it is converted to JSON.
* **Arguments variable** - The argument variables passed to the invoked process.
* **Process Name** - The name of the process you want to invoke. This field accepts String values.

**Log**
* **Log Entry** - Specify the type of information to automatically log when entering the invoked resource.
* **Log Exit** - Specify the type of information to automatically log when exiting the invoked resource.
* **LogLevel** - Specify the logging level applied to the messages generated by **Log Entry** and **Log Exit**.

#### **Misc**

* ##### **Entry point** - If your process has multiple entry points, specify the path of the workflow file to run once the process starts. This path should be relative to the root package. By default, this field is left empty and uses the Main.xaml as entry point.
* **Folder Path** - The path of the Orchestrator folder where the specified process is located, if different from the folder where the process is running. This field only supports string values, with `/` as the separator to indicate subfolders. For example "Finance/Accounts Payable".
* **Private** - If selected, the values of variables and arguments are no longer logged at Verbose level.
* **Target Session** - Specifies the session in which the child process is started:
  + **Current**- The child process opens in the same session as the parent one.
  + **Process Default** - The child process uses the Process Settings.
  + **Main** - The child process starts in the main session regardless to where the parent process runs.
  + **Picture in Picture** - The child process starts in the Picture in Picture session regardless to where the parent process runs.
* **Use Package** - Indicates whether the process should be identified by its package name (selected) or process name (not selected). By default this option is not selected.
