What a step is
A step (also called a line) is one executable unit of work inside a work order. Each step has a type (LineType), a priority slot, an assignee, a status, and step-specific data. Steps at the same priority run in parallel; the WO advances to the next priority once all steps in the current group are COMPLETED or CANCELLED.
This page lists every step type the engine knows about, grouped by what they do. The display name is what shows in the Type column on the routing-steps table.
Inbound and routing
| Display name |
Type |
Auto-completes? |
Purpose |
| Local Receipt |
LOCAL_RECEIPT |
No |
Creates a Local Receipt document for items being received into the WO (typically a customer return for repair). |
| Repair Router |
REPAIR_ROUTER |
Yes |
Reads the items received by a preceding Local Receipt and spawns one Repair Task per unique product, routing each to its repair area. |
| Sales Receipt Router |
SALES_RECEIPT_ROUTER |
Yes |
Reads the items planned by a preceding zero-cost SO step and spawns a Local Receipt pre-populated with the same line items. Used in customer-return flows. |
Hands-on tasks
| Display name |
Type |
Auto-completes? |
Purpose |
| Repair Task |
REPAIR_TASK |
No |
The technician's bench step. Captures repair notes, consumes/replaces parts, can pause for stock or assessment. Eligible to anyone with REPAIRER permission for the line's area. |
| Repair Assessment |
REPAIR_ASSESSMENT |
No |
Optional pre-repair inspection. Technician documents required parts and work; spawns an Approval child for the manager. |
| Assembly Task |
ASSEMBLY_TASK |
No |
Incremental assembly of one product from its BOM, one unit at a time. Spawns delivery requests for shortages and sub-assembly tasks for assemblable components. |
| Instruction |
INSTRUCTION |
No |
Plain-text task assigned to a person. They enter completion notes and click Complete. |
Approvals and gates
| Display name |
Type |
Auto-completes? |
Purpose |
| Approval |
APPROVAL |
No |
Generic approval gate. Standalone (its own WO): denial cancels the WO. Spawned by another step: result is passed back via onApprovalResult(). Used for leave, custom-schedule, and assessment approvals. |
| Select Stand-In Manager |
LEAVE_STANDIN_SELECT |
No |
Only added when the leave applicant is a manager. They pick a cover manager before the request can move on. |
Warehouse logistics
| Display name |
Type |
Auto-completes? |
Purpose |
| Delivery Request |
DELIVERY_REQUEST |
No |
Asks a warehouse picker to deliver items to a target location (e.g. a repair bench). Multiple shortfalls to the same destination should be batched into one request. |
| Collection Request |
COLLECTION_REQUEST |
No |
Asks a warehouse picker to collect items from a workbench and return them to stores. |
| Material Used |
MATERIAL |
N/A |
Bookkeeping line — no handler. Records BOM consumption or replacement parts. Created by repair / assembly tasks as side-effects, not added by hand. |
Outbound and dispatch
| Display name |
Type |
Auto-completes? |
Purpose |
| Courier Booking |
COURIER_BOOKING |
Conditional |
Books an Aramex courier waybill + collection. Must come before Local Shipment. |
| Local Shipment |
LOCAL_SHIPMENT |
No |
Creates an outbound Local Shipment document — the customer-facing parcel. |
| Send Tracking Email |
SEND_TRACKING_EMAIL |
Yes |
Sends the customer an email with an AES-encrypted link to the public tracking page. |
Sales-shipment integration
| Display name |
Type |
Auto-completes? |
Purpose |
| BMSEX Zero-cost Sales Order |
BMSEX_SO_CREATE_ZERO_COST |
Yes |
Creates a zero-cost Unleashed Sales Order for a BMSEX replacement and promotes it to Placed. |
| Zero-cost Sales Order |
SALE_SO_CREATE_ZERO_COST |
Yes |
Creates a zero-cost Unleashed Sales Order for user-configured planned items. |
| Sales Shipment (Create) |
SALES_SHIPMENT_CREATE |
Conditional |
Creates one Parked Sales Shipment per preceding SO step, checks stock, and promotes to Placed. Enters AUTO_RETRY (retries every 5 min) if stock is short. |
| Sales Shipment (Dispatch) |
SALES_SHIPMENT_DISPATCH |
Conditional |
Waits for every linked Sales Shipment to be Dispatched in Unleashed. Auto-completes via dispatch callback. |
Leave / overtime workflow
Generated by the leave module — you don't usually add these by hand.
| Display name |
Type |
Auto-completes? |
Purpose |
| Leave Finalise |
LEAVE_COMPLETE |
Yes |
Deducts the leave balance and marks attendance once the request is approved. |
| Leave Edit |
LEAVE_EDIT |
No |
Manager approves/rejects an edit to an already-approved leave request. |
| Leave Cancellation |
LEAVE_CANCELLATION |
No |
Manager approves/rejects a cancellation of an already-approved leave request. |
| Custom Schedule Finalise |
CUSTOM_SCHEDULE_COMPLETE |
Yes |
Applies an approved overtime / custom-schedule entry to the daily attendance record. |
| Custom Schedule Cancellation |
CUSTOM_SCHEDULE_CANCELLATION |
No |
Manager approves/rejects a cancellation of an already-approved custom-schedule entry. |
Deprecated leave step types
You'll see these only on legacy WOs created before the generic Approval step took over the same role. Don't add them to new WOs.
| Display name |
Type |
Replacement |
| Leave Approval |
LEAVE_APPROVAL |
Approval with customActionUrl pointing to /login/myAdmin/myAdmin.xhtml?leaveId= |
| Custom Schedule Approval |
CUSTOM_SCHEDULE_APPROVAL |
Approval with customActionUrl pointing to /login/myAdmin/myAdmin.xhtml?otRequestId= |
Dev-only
| Display name |
Type |
Purpose |
| Test Exception (Dev) |
TEST_EXCEPTION |
Throws a configurable exception in onStart or onComplete. Used to verify rollback behaviour. Never put it on a production WO. |
Tips
- Auto-completes? in the tables means the system completes the step immediately after
onStart() succeeds — no operator click needed. Useful for steps whose entire job is to call an external system (email, SO create) and then get out of the way.
- A Conditional auto-complete means the step decides at run time: typically yes if stock arrived, no if we have to wait.
- Material lines carry no handler — they're bookkeeping records that get spawned by Repair Task and Assembly Task as parts are consumed. You shouldn't see them in the routing-builder dropdown for a manual add.
- For most new approval needs, use the generic Approval step (not the deprecated leave/custom-schedule variants). It supports a
customActionUrl so the assignee lands on the right page when they click through.