Unassign Task
Built-in Tasks is a concept feature. It's still being developed and can change before it's released. It's available only when the site's license includes the Concept feature Tasks.
Audience:
Low-code EngineersSkill Prerequisites:
Actions,Tokens,Workflows
The assignee gives a task back to its candidate roles, so another member can assign it to themselves. People see this as Unassign in My Tasks. In BPMN terms, it's a release.
Typical Use Cases
- Let a buyer put an order task back in the pool when they can't do it
- Put a task that nobody worked on back in the pool, in an escalation step's workflow
- Add an Unassign button to your own list of tasks
Don't use it to
- Hand the task to one other person. Use Delegate Task instead.
- Give a task to other roles, or take it from someone as a Task administrator. Use Reassign Task instead.
- Stop a task. Use Cancel Task instead.
Related Actions
| Action Name | Description |
|---|---|
| Assign Task to Current User | A member of the candidate roles takes the task. |
| Delegate Task | The assignee hands the task to another user. |
| Reassign Task | A Task administrator sets a new assignee, new candidate roles, or both. |
Input Parameter Reference
| Parameter | Description | Supports Tokens | Default | Required |
|---|---|---|---|---|
| Task Id | The id of the task, usually a token such as [Task] in an escalation or event workflow, or [Id] in a grid row. | Yes | empty | Yes |
| Comment | Why the task is given back. The event workflows get it as [Comment]. It isn't saved on the task. | Yes | empty | No |
| Output Token Name | The name of a token, without brackets, that receives the task after the change, for example Task. See Task fields in tokens. | No | empty | No |
| On Error | Actions to run when the task can't be unassigned. [ExceptionMessage] holds the reason. See Errors and refusals. | No | empty | No |
Output
| Token | Description |
|---|---|
[<Output Token Name>] | The id of the task. |
[<Output Token Name>:Assignee], [<Output Token Name>:Status] and the other fields | The task after the change. [<Output Token Name>:Assignee] is empty. See Task fields in tokens. |
Considerations
- Only the assignee. A Task administrator who isn't the assignee uses Reassign Task with Candidate Roles instead. An escalation step's workflow acts as the system, which may unassign any task that has candidate roles.
- The task needs candidate roles. A task created for one user only has nobody to go back to.
- The assignee must be a candidate. A user who got the task by delegation and isn't in a candidate role can't unassign it. They can delegate it back instead.
- What changes. The task has no assignee, and an In progress task goes back to Open. If the task was delegated, it no longer shows who delegated it. The candidate roles stay as they are.
- The Unassigned event. The workflow the type binds to Unassigned runs with the previous assignee and the comment.
The action can fail with these messages, besides the ones in Errors and refusals:
| Message | Why |
|---|---|
Only the assignee can unassign this task. | The user running the action isn't the assignee. |
This task has no candidate roles to return to. Ask a Task administrator to reassign it. | The task has no candidate roles. |
Only a member of the task's candidate roles can unassign it. Delegate it back instead. | The assignee isn't in a candidate role. |
Examples
To understand how to use the below examples, please see Running Examples.
1. An Unassign button
Add this action to a row button of a grid that lists the user's tasks. [Id] holds the task's id. If the user can't unassign the task, they see why.
{
"Title": "Unassign Task",
"ActionType": "PlantAnApp.Tasks.ReleaseTask",
"Description": "Give the task back to its roles",
"Condition": null,
"Parameters": {
"TaskId": "[Id]",
"Comment": "",
"OutputToken": "Task",
"OnError": [
{
"Title": "Display Error Message",
"ActionType": "ShowError",
"Parameters": {
"Message": "<p>[ExceptionMessage]</p>"
}
}
]
}
}
2. Put a task nobody started back in the pool
Add this action to a workflow that implements the Task Escalation contract and use it as an escalation step. [Task] holds the task's id, and [Task:Status] its status. The condition skips tasks that are In progress, unassigned already, or without candidate roles.
{
"Title": "Unassign Task",
"ActionType": "PlantAnApp.Tasks.ReleaseTask",
"Description": "Return the task to its roles",
"Condition": "[Task:Status] == \"open\" && [Task:Assignee] != \"\" && [Task:CandidateRoles] != \"\"",
"Parameters": {
"TaskId": "[Task]",
"Comment": "Nobody started this task in time, so it's back in the pool.",
"OnError": []
}
}
Revised 11/12/2026