# InvokeProcess

> 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.

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** coded automation API 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/user-guide/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`.

## Definition

**Namespace:** UiPath.Activities.System.API

**Assembly:** UiPath.System.Activities.Api (in UiPath.System.Activities.Api.dll)

## Overloads

|  |  |
| --- | --- |
| `InvokeProcess(String)` | Executes a UiPath process that is available for the local machine. |
| `InvokeProcess(String, String)` | Executes a UiPath process that is available for the local machine, from a specified folder path. |
| `InvokeProcess(String, String, InvokeProcessTargetSession, LogEntryType, LogExitType, LogLevel, Boolean, TimeSpan)` | Executes a UiPath process that is available for the local machine, along with other configurations. |

## `InvokeProcess(String)`

Executes a UiPath process that is available for the local machine.

```
void InvokeProcess(
    string processName
)
```

`processName` [String](https://learn.microsoft.com/dotnet/api/system.string) : The name of the process that you want to run. Process Name should contain the name of the Package, as that is being used by the Robot.

## `InvokeProcess(String, String)`

Executes a UiPath process that is available for the local machine, from a specified folder path.

```
void InvokeProcess(
    string processName,
    string folderPath
)
```

`processName` [String](https://learn.microsoft.com/dotnet/api/system.string) : The name of the process that you want to run. Process Name should contain the name of the Package, as that is being used by the Robot.

`folderPath` [String](https://learn.microsoft.com/dotnet/api/system.string) : Indicates the Orchestrator folder in which the process resides.

## `InvokeProcess(String, String, InvokeProcessTargetSession, LogEntryType, LogExitType, LogLevel, Boolean, TimeSpan)`

Executes a UiPath process that is available for the local machine, along with other configurations.

```
void InvokeProcess(
    string processName,
    string folderPath,
    string entryPointPath,
    InvokeProcessTargetSession targetSession,
    LogEntryType logEntry,
    LogExitType logExit,
    LogLevel level,
    bool usePackage,
    TimeSpan timeout
)
```

`processName` [String](https://learn.microsoft.com/dotnet/api/system.string) : The name of the process that you want to run. Process Name should contain the name of the Package, as that is being used by the Robot.

`folderPath` [String](https://learn.microsoft.com/dotnet/api/system.string) : Indicates the Orchestrator folder in which the process resides.

`entryPointPath` [String](https://learn.microsoft.com/dotnet/api/system.string) : The path of the workflow file that is run at the start of the process, relative to the package root. If left empty, the default entry point is `Main.xaml`.

`targetSession` InvokeProcessTargetSession : 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.

`logEntry` `LogEntryType` : Specifies the type of information to automatically log when entering the invoked resource.

`logExit` `LogExitType` : Specifies the type of information to automatically log when exiting the invoked resource.

`level` `LogLevel` : Specifies the logging level applied to the messages generated by the `LogEntry` and `LogExit` options.

`usePackage` [Boolean](https://learn.microsoft.com/dotnet/api/system.boolean) : Indicates whether the process should be identified by its package name (selected) or process name (not selected).

`timeout` [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan) : Specifies the amount of time (in milliseconds) to wait for the activity to run before an error is thrown. Leaving this property empty waits for an infinite amount of time before throwing an exception. By default, this property field is empty.
