When you collect stock for a shipment — or draw components for a build — myWork24 does more than check that stock is sitting on a shelf somewhere. It checks that there is stock genuinely free to give this job. If the product is already promised to other shipments and orders, myWork blocks the collect so you can't accidentally oversell it. This is a safety check, not a bug.
The rule in one line
Free to move = everything in the available pool − everything already promised.
If Free to move is less than what you asked for, the collect is blocked.
What counts as "in the pool"
myWork keeps a running mark on every stack of stock that says "this is stock Stores can still give away". Three things carry that mark:
Sellable stock on a Stores shelf — put away in the Stores area and not marked for anything else.
Stock a Stores person is carrying — sitting in the personal inventory of someone who has access to the Stores area. They are mid-task and will put it back on a shelf, so it still counts.
Stock already collected for a Placed shipment — it still counts in the pool, and the same shipment's promise is subtracted below, so the two cancel out. That is why collecting a shipment doesn't make its own product look scarcer to everyone else.
What does not count
The mark is dropped the moment stock genuinely leaves the Stores pool, so these add nothing to Free to move:
Stock in other areas — R&D, Fixed Assets, Repairs, assembly bays, container manufacturing.
Stock handed to someone who has no Stores access — for example a site technician holding spares off-site. It is still recorded as theirs, it just isn't Stores' to sell any more.
Stock collected on a move order for another area or another person.
Stock already dispatched, or sent out to a subcontractor on an External Service order.
Consignment and repair-order stock — these sit in their own pools and ship through their own flows.
Non-stock / service items.
A product can have plenty of units around the building yet still show 0 free for a new shipment — because those units are either out of the pool or already spoken for.
Place it first, then ship it
You can only take stock off the shelf onto a Placed shipment. On a Parked shipment the collect is refused with:
"Shipment SS-000xxxx can't be collected: it is still Parked — place it first, then collect."
This applies to both Sales Shipments and Local Shipments. Placing the shipment is what registers its claim on the stock and clears it for the store clerk to ship; taking the goods before that would hide the claim from everyone else. Place it, then collect.
On the floor you will not even see a Parked shipment. The Sales Shipments floor list (Shipping & Receiving → Sales Shipments) carries only the Placed queue and the Dispatched one. Being able to list a Parked shipment is what leads to stock being pulled against a claim that was never registered — the units get promised twice and availability stops matching the shelf. If a shipment somebody asked you to pick is in neither queue, it has not been placed. Tell them so and leave it with them — getting it placed is theirs to do, not a message you carry across for them. The full status filter stays on the desktop management page (Sales → Sales Shipments), with the people who park and place.
Clearing the block is yours to do
If you are placing the shipment and it is refused, the stock is already promised to other Placed shipments and orders. That is arithmetic, and nobody on the floor can change it. What you can change is which promises stand. Open the Available Stock Check report, read the Allocated column to see which shipments are holding the product, and park or cancel one of your own that is less urgent. Its claim is released the moment it leaves Placed, and you can then place the one the customer is waiting for.
Do not walk to Stores and ask them to send it anyway. They cannot. A shipment that is not Placed is not on their list, and the collect is refused for them exactly as the placement was refused for you — same rule, same reason. Asking only puts a person in the middle of a decision they have no authority over, and the customer waits longer for it.
If you are on the floor and somebody asks you to pick something you cannot see, say that it is not placed, and hand it back. Getting it placed belongs to whoever needs the goods.
myWork already carries the message. Placing a shipment puts it on the floor's queue; requesting packing puts it on the To Pack list; every record has its own chat channel and a subscribe star that notify the people involved as things happen. A request walked across the building does none of that and leaves no record of who is waiting on what — which is exactly why these rules live in the software instead of in somebody's head.
Why it can block every shipment for a product at once
If two shipments each need the same product, and together they need more than you have, myWork will not quietly take stock from one to feed the other. It blocks until a person decides. To release stock, complete or cancel one of the competing shipments — that frees its claim, and the others can then collect.
Builds are checked too
Drawing components for an assembly goes through the same check. If a component is sellable Stores stock that is already promised to shipments, the build is blocked with the same message. Free the promised stock (or build from a different location) and retry.
Reading the error message
"Not enough free stock in Stores to collect this. Requested 3, but only −3 is free to move right now — 9 is reserved for pending shipments or orders. Complete or cancel those to free it up."
Requested — what this job is trying to collect.
Free to move — what's actually available after honouring everyone else. It can be negative, meaning the product is already over-promised.
Reserved — how much is already committed to other Placed shipments and orders.
See the numbers yourself — the Available Stock Check report
Open Warehouse → Stock → Available Stock Check (if you don't see it, ask an administrator for the Stock Availability report permission, StockAvailabilityReport). For every product with a commitment it shows:
On hand — the part of the pool sitting on Stores shelves. A smaller "+N held" underneath is the part people are carrying — the two together are the pool.
Allocated — total promised to open shipments and orders, broken down underneath (SS = Sales, LS = Local, ESO = External Service).
Available — free to move now — red / negative = over-committed.
Projected — what Available becomes once parked orders are placed.
The report opens with a "Sellable stock only" filter on by default — that's the view Sales needs. Consignment, repair and non-stock service lines are left out so the list stays clean.
To clear a block: find the product in the report, look at what's under Allocated, and complete or cancel one of those competing shipments or orders to free the stock. Then retry the collect.
What changed in August 2026
Availability used to be worked out from where stock was standing: sellable stock in the Stores area, plus anything anyone was carrying. That last part was too generous — a technician holding spares off-site made the product look available when Stores could not actually give it. Availability is now the marked pool described above, so:
stock held by someone without Stores access no longer inflates the number, and
stock a Stores person is carrying mid-task no longer makes the number dip.
If a product suddenly reads lower than you remember, that is usually this correction showing a real over-commitment that was previously masked — not stock going missing. Check the Allocated column on the Available Stock Check report.
In short
The block protects you from promising the same stock twice.
"Stock on the floor" is not the same as "free to move" — the pool, and existing promises, both matter.
Place a shipment before you collect for it.
The Available Stock Check report shows exactly what's promised and to whom, so you know which shipment to complete or cancel.