# Assign Tasks

> `UiPath.Persistence.Activities.Tasks.AssignTasks`

`UiPath.Persistence.Activities.Tasks.AssignTasks`

## Description

Assigns one or more tasks in the current workflow to a user in Orchestrator by using an email address or a username registered in Orchestrator.

## Project compatibility

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

## Prerequisites

* Group assignments work only when the group or all members of the group have at least **Actions: View** and **Edit** permissions assigned to the corresponding folder in Orchestrator. You can assign actions to users in a group only if the group meets the following conditions:
  * For **All Users in group**: The group can either be a local group or an Azure Active Directory (AD) group. Nested members in AD groups would also be assigned the task.
  * For **Workload-based or Round-Robin based assignment:** Only local groups are supported.
:::note
Workload-based and Round-Robin-based assignments would only consider the top 1000 members of given local group for assignment.
:::

:::note
In Studio Web debug mode, only self-assignments will work for users as the solution uses the debug workspace folder during design time.
:::

## Windows-Legacy, Windows configuration

#### Designer panel

* **Assignment criteria** - Enables you to assign the action to:
  + A **Single User**: Assign the task to a specific user.
  + **All users in a group**: Assigns the same task to every user in the group. When a user completes the task, it is automatically removed from the **Pending** tab for all other users and moves to the **Completed** tab.
  + **Workload based**: Assigns the task to the group member with the fewest pending tasks, excluding tasks assigned to **All users in a group**.
  + **Round-Robin**: Assign tasks to each group member in a rotating (round-robin) order. Only tasks assigned using this method are considered in the round-robin cycle.For more details, refer to [Group assigning Actions](https://docs.uipath.com/action-center/automation-cloud/latest/user-guide/managing-actions#group-assigning-actions).

* Single task assignment
  + **Task Id** - The ID of the task.
  + **User Name or Email** - The username or email address of the user that you want to assign this task to.
  + **User Id** - The ID of the user you want to assign the task to. To retrieve a user ID, …
  + **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
  + **TaskUserAssignments** - A list of task identifiers and corresponding user information to which an action is to be assigned/reassigned, stored in a `List<TaskUserAssignment>` object. This field supports `List<TaskUserAssignment>` objects only. The object must contain a task identifier and its corresponding user information, such as an email address or a username that is registered in Orchestrator.
  + **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

* Multiple task assignment 
  
  Select **Enable Multiple Assignments**. The following properties are available in the designer panel:

  + **TaskUserAssignments (Input)** - A list of task identifiers and corresponding user information to which an action is to be assigned/reassigned, stored in a `List<TaskUserAssignment>` object. This field supports `List<TaskUserAssignment>` objects only. The object must contain a task identifier and its corresponding user information, such as an email address or a username that is registered in Orchestrator.
  + **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
  + **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

* **Enable Multiple Assignments** - Enables the option to assign multiple tasks.
* **Task Id** - The ID of the task.
* **User Name or Email** - The username or email address of the user that you want to assign this task to.
* **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
* **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

#### Properties panel

**Input**
* **Orchestrator Folder Path** - The path to the Orchestrator folder you want to use with this activity. If left empty, the current Orchestrator folder is used. This field supports only strings and `String` variables.

**Misc**
* **ContinueOnError** - 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. 
  
  If you include the AssignTasks activity in a Try Catch activity and the value of the **ContinueOnError** property is True, no error is caught when the project is executed.
* **TimeoutMS** - Specifies the amount of time (in milliseconds) to wait for the activity to run before an error is thrown. The default value is `30000` milliseconds (30 seconds).

## Cross-platform configuration

#### Designer panel

* **Assignment criteria** - Enables you to assign the action to:
  + A **Single User**: Assign the task to a specific user.
  + **All users in a group**: Assigns the same task to every user in the group. When a user completes the task, it is automatically removed from the **Pending** tab for all other users and moves to the **Completed** tab.
  + **Workload based**: Assigns the task to the group member with the fewest pending tasks, excluding tasks assigned to **All users in a group**.
  + **Round-Robin based**: Assign tasks to each group member in a rotating (round-robin) order. Only tasks assigned using this method are considered in the round-robin cycle.For more details, refer to [Group assigning Actions](https://docs.uipath.com/action-center/automation-cloud/latest/user-guide/managing-actions#group-assigning-actions).

* Single task assignment
  + **Task Id** - The ID of the task.
  + **User Name or Email** - The username or email address of the user that you want to assign this task to.
  + **User Id** - The ID of the user you want to assign the task to. To retrieve a user ID, use the `GET /odata/Users` Orchestrator API.
  + **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
  + **TaskUserAssignments** - A list of task identifiers and corresponding user information to which an action is to be assigned/reassigned, stored in a `List<TaskUserAssignment>` object. This field supports `List<TaskUserAssignment>` objects only. The object must contain a task identifier and its corresponding user information, such as an email address or a username that is registered in Orchestrator.
  + **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

* Multiple task assignment 
  
  Select **Enable Multiple Assignments**. The following properties are available in the designer panel:

  + **TaskUserAssignments (Input)** - A list of task identifiers and corresponding user information to which an action is to be assigned/reassigned, stored in a `List<TaskUserAssignment>` object. This field supports `List<TaskUserAssignment>` objects only. The object must contain a task identifier and its corresponding user information, such as an email address or a username that is registered in Orchestrator.
  + **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
  + **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

* **Enable Multiple Assignments** - Enables the option to assign multiple tasks.
* **Task Id** - The ID of the task.
* **User Name or Email** - The username or email address of the user that you want to assign this task to.
* **Task Assignment Type** - The type of the assignment operation to be performed. By default, the **Assign** operation is set, and it can be changed to **Reassign** if you want to assign the same action to a different user.
* **FailedTaskAssignments** - If any of the user assignment requests fail, a list is created, containing the task identifier, error message, and error code, as well as the email address or username that is registered in Orchestrator, in a `List<TaskAssignmentResponse>` object in this property field. This field supports `List<TaskAssignmentResponse>` objects only.

#### Properties panel

**Input**
* **Orchestrator Folder Path** - The path to the Orchestrator folder you want to use with this activity. If left empty, the current Orchestrator folder is used. This field supports only strings and `String` variables.

**Misc**
* **ContinueOnError** - 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. 
  
  If you include the AssignTasks activity in a Try Catch activity and the value of the **ContinueOnError** property is True, no error is caught when the project is executed.
* **TimeoutMS** - Specifies the amount of time (in milliseconds) to wait for the activity to run before an error is thrown. The default value is `30000` milliseconds (30 seconds).
