Returning a task to the pool
Use this when a task sits with an operator who is not doing it. The operator left, forgot it, or went on leave with the task still open. You take the task away and it goes back to the pool for anyone to pick up at once.
Before you start
- You need the role
ADMIN,MANAGERorSUPERVISOR, or a role where an administrator granted the methodtask_force_release. See Who can do what. - The task must be
AssignedorInProgress. - The task must not be in a live pick assignment. Dissolve the assignment instead. See Dissolving a pick assignment.
Steps
- Open
Task Manager > Task Board. - Find the task. Use the filters, for example
AssigneeorStatus. - Tick the check box of one task.
Return to Poolturns on only forAssignedorInProgress. - Click
Return to Pool. The windowReturn Task to Poolopens. - Type the reason in
Reason. Do not leave it empty. Use 80 characters or fewer. - Click
Return to Poolin the window.
What happens
On success the window closes and the grid is read again. The message is Task {code} returned to the pool.
The task row now shows:
| Column | Value |
|---|---|
Status | Created |
Assignee, Claimed, Started, Lease Expires | Empty |
Return Reason | The text you typed |
How Returned | Seized |
Qty Done | Unchanged. The work done stays done. |
Refusals, Escalated | Unchanged |
Available From | Empty. A supervisor's return starts no cooldown. The task can be taken at once. |
Version | Up by one |
The command writes your user as the one who changed the row. It writes no line in the audit log, and the reason text is erased when the next operator takes the task.
Source: crates/libs/wms-lib-core/src/model/tasks/task.rs:1649-1708 and the comment of TaskError::ReasonRequired in crates/libs/wms-tasks/src/error.rs.
The return does not write a line in Skip History. That list shows only operator refusals and hand backs.
If it is refused
The failure message is Task {code} could not be returned to the pool: {error}.
The window stays open. The grid is not changed.
You see (the {error} part) | Why | What to do |
|---|---|---|
version conflict on task {id} (current version {n}) | The task changed after you read the board. Return code 40. | Close the window, press the grid refresh, tick the task again and retry. |
task {id} is in status {status}, this action does not apply | The task is not Assigned or InProgress any more. Return code 70. | Read the board again. |
task {id} cannot change hands: PICK_ASSIGNMENT_LIVE | The pick is in a live pick assignment. Return code 70. | Dissolve the pick assignment. |
task {id} cannot change hands: SERIAL_EPISODE_OPEN | The operator has a serial scan open and the SKU rule is Block. Return code 70. | Wait until the scan is finished, or change the SKU rule. |
task {id} cannot change hands: SERIAL_EPISODE_ABANDONED | An abandoned serial scan holds the task. Return code 70. | A supervisor must close the scan first. |
skip_reason is too long: {n} chars, max 80 | The reason is over 80 characters. | Shorten it. |
task {id} not found | Another user deleted it. | Read the board again. |
Select exactly one task | Not one row ticked. | Tick one row. |
Say why the task is being returned to the pool | The reason is empty. | Type a reason. |
The task board has moved on — reselect the task and try again | The ticked row is not on the board any more, or its version is not known. | Refresh and tick again. |
Sources: crates/libs/wms-tasks/src/service/release.rs:296-370, crates/libs/wms-tasks/src/error.rs, crates/libs/wms-outbound/src/picking/infrastructure/holder_change.rs:74-83, 062_receipt_and_task_use_rpc_command.sql:100-150.
What it affects
- The old holder's terminal no longer has the task. A later report from the old holder is refused.
- The task is offered again to operators who have the right and the equipment for it.
- For a
Counttask, the count rules never refuse a return to the pool. Only a reassign can be refused by them. Source:crates/libs/wms-inventory/src/domain/inventory_count/task_manager.rs:109-127.
Related pages
- Task Board and its windows
- Task statuses and transitions
- Return codes
- API:
task_force_release(stateful command; sendsexpected_task_versionandreason) - RF terminal: the operator's own way to give a task back is
Reject Pick(PICK11, methodpick_reject).