Move Requests
What this guide covers
Submitting, assigning, and processing stock move requests — the workflow that hands a parcel of stock from one user (the requester) to another (the mover) for collection at a source bin and dropoff at a destination. Covers the full lifecycle: create → assign → collect → dispatch → accept.
For a reference to every status and role, see Roles and permissions field definitions.
Where to find it
Open Operations → Move Requests in the left menu. The page lands on a list of incomplete requests scoped to what you can see (admins see everything, regular users see their own + assigned, movers see their assigned queue).
Who can do what
- Requester (
STOCK_MOVE_REQUESTpermission) — create new DELIVERY or COLLECTION requests; view own requests; cancel before assignment. - Mover (
STOCK_MOVE_USERpermission) — see requests assigned to them in their Movers queue; collect items from source bins; dispatch / dropoff at destination; accept items they're handed. - Move admin (
STOCK_MOVE_ADMIN) — view all requests across users; filter by Type (Delivery / Collection) and assignment state; assign a mover from theSTOCK_MOVE_USERpool; auto-assign in bulk; clear assignments; see the live count of movers currently logged in. - Site admin (
ADMIN) bypasses all three.
A user without any of the three permissions is redirected away from the page on init.
Creating a request
- Click New Delivery (you go to the destination, items come from a source) or New Collection (you go to the source, items end up at a destination).
- The Create Move Request dialog opens. Add product lines via the search box: pick the product, enter the qty, click Add.
- Repeat for as many products as you need on the same trip.
- Click Save to commit the request as
PENDING. It now appears in the list and waits for a mover to be assigned (or, if your role isSTOCK_MOVE_USER, you can pick it up yourself).
Assigning a mover (admin)
- From the list, click the row's Assign action.
- The dialog lists every user with
STOCK_MOVE_USER, with a Currently holds items for: … hint next to anyone who's in the middle of another collection. - Pick a user. The system writes the assignment and notifies the mover.
- Auto-Assign distributes unassigned requests evenly across logged-in movers in one click.
- Clear Assigned resets all assignments — useful at start-of-shift.
Processing as a mover
- Open My Movers Queue (or the row's Process action). The list shows only your assigned requests.
- For a Delivery: walk to the source bin, scan the item, enter the actual qty collected, click Collect. Then walk to the destination, scan, enter qty, click Dropoff.
- For a Collection: same, but you start at the source the requester named.
- Accept is what the destination user (or the next handoff in a multi-leg move) clicks to confirm receipt.
Common errors and fixes
- "User [name] currently holds item for this request!" — fires when you try to assign a request to a mover who already has uncompleted items from the same request. Either pick a different mover, or wait for them to dispatch what they're holding.
- "User currently holds item for another Delivery!" — same idea but cross-request. The mover is mid-flight on something else; assign someone whose queue is empty.
- "Invalid User!" — the user dropdown is stale (the user was deactivated since the page loaded). Refresh the page and try again.
- "Invalid product NULL" / "Product with code [code] not found!" — you tried to add a line without selecting a product (or the code was mistyped). Use the product search and pick from the suggestions.
- "Invalid product BOM is NULL" — the product is configured to require an assembly BOM but doesn't have one. Get the product master fixed first; you cannot move an "assembly" product without a BOM defined.
- "Please select QTY greater than 0" — qty field is empty or zero. Enter a positive number.
- "Item already added to list" — the same product is already on this request. To change the qty, remove and re-add.
- "List is empty" — fires when you try to save a request with no lines. Add at least one product line first.
Tips and gotchas
- Auto-injected requests should not be cancelled manually. Move requests with a non-null
parent_line_idare created by the work-order engine to fulfil a step; cancelling them mid-flight breaks the parent WO. If a WO-injected request is wrong, fix it by cancelling or restarting the parent step instead. - "Awaiting stock" tag — appears on a Delivery row when the source bin doesn't have enough qty to fulfil it. The request stays in the queue but cannot be processed until stock is replenished. Check the source bin via Product Locations.
- Movers see only their own queue by default — the moversReqList.xhtml page is the lean version. moveReqList.xhtml is the full admin/manager view.
- Stock-availability checks are cached per request ID and refreshed when filters change. If a Delivery row says "Awaiting stock" after stock arrived, click Refresh or change the filter and back.