Supply Chain — Item Stage

Every open sales order line carries a short message telling the customer where their item is up to. Once a day this automation rewrites that message, by asking two questions in order: what is happening on the order line itself, and — only when stock has been earmarked against a shipment that has not landed yet — how far along that shipment is. It also stamps which purchase order the stock was matched to, and it writes nothing at all when none of the three values has changed.

Rules & IDs

Rule ID Rule Reading
LI-BL-CMS-001 What the order line says on its own Business logic
LI-BL-CMS-002 Finding the shipment behind the stock Business logic
LI-BL-CMS-003 What the shipment's progress says Business logic
LI-BL-CMS-004 When we bother writing it back Business logic

Project owner
Kim Hoang Nguyen
Developer
Kim Hoang Nguyen
For department
Customer Service
Status
draft
Documented
created 2026-08-31 · updated 2026-09-28this registry entry
Script created / updated
created 2026-08-31 · updated 2026-08-31from Celigo — flow 6a94df5d, scripts 6a94e0c8 and 6a94e131
Verified against production
2026-08-31no version control — verified by re-reading the flow
Systems touched
celigonetsuite
Rules
Terms

Three readings of the same rules. Nothing is duplicated between them. Printing gives you the business reading followed by the diagrams.

What it does. It decides the one-line message a customer sees against each item on their order — Ready to be shipped, On its way to our warehouse, Delayed - Item is in production, and a dozen others — and writes that message onto the order line. Alongside it, it records which purchase order the item's incoming stock was matched to, and the expected ship date for drop-ship items. It never changes quantities, dates on the order, or anything the customer is charged.

Why it exists. It is the answer to "where is my order", produced for every open line every day without anyone having to look. The same message is also read by the automation that sends delay emails, so it is not just wording — it decides who gets contacted. When it is wrong the cost lands in two places at once: a customer is told their item is on its way when it has not been made yet, and Customer Service spends the call rebuilding the true picture from the purchase order by hand. The most expensive failure is the quiet one, where a line sits on a stale message for weeks because nothing about it changed enough to be noticed.

Who it affects. Customer Service notices first, because the message is what customers quote back on the phone. Customers see it directly. Supply chain relies on the recorded purchase order to trace which shipment an item is on, and fulfilment relies on the drop-ship date. The delay email automation consumes the message downstream.

When it runs. Once a day, on a schedule, overnight Sydney time. It looks at open sales order lines supplied by a saved search — the exact conditions that search applies have not been read, and are recorded as an open question below. Nothing about it is real-time: a change made at 11am does not show on the order line until the following morning. A stale-looking message in the middle of the working day is almost always waiting for tonight's run rather than broken.

How it decides.

  • It reads the order line first, and asks seven questions in a fixed order — is it cancelled, has it all shipped, is it all sitting committed in our warehouse, is it partly shipped with nothing behind the rest, is there nothing reserved at all. The first question that fits decides the message and it stops there. Most lines never get past this point.
  • Only one answer sends it further: stock has been reserved against a shipment that has not landed yet. That line is held back and the automation goes looking for the purchase order that stock is coming in on.
  • It finds candidate purchase orders by the item's exact name, then accepts the first one whose expected landing date matches the line's ship date and which has enough allocated to cover what the line is waiting on. Candidates that fail either test are skipped.
  • Once a purchase order is accepted, the message describes the shipment, not the order — sorted into "still in production", "in transit", or "only just ordered", with three stages handled on their own.
  • The words "Delayed" and "Partially Shipped" are layered on top of that: Partially Shipped when some of the line has already gone out, and Delayed only when a delay email or delay call has already been recorded against the line. Nothing about how late the item actually is enters into it.
  • If no purchase order can be accepted, it gives up and writes the catch-all, Please contact us for more details. If a purchase order is accepted but its stage is one nobody has mapped, it leaves the existing message alone rather than blanking it.

Outcomes.

Outcome What the customer sees
Settled by the order line alone One of seven messages, from Cancelled through to Item is on order with Life Interiors
Settled by the matched shipment One of eleven messages describing where the shipment is up to
No purchase order could be accepted Please contact us for more details
A purchase order was accepted but its stage is unmapped No change — the line keeps whatever it already said
Nothing changed No change, and nothing is written to NetSuite at all
The line is not in the saved search Never looked at; the message stays as it is indefinitely

Every message, and what it means

Start here if you have an order line in front of you. The rules below this are ordered the way the automation decides; this table is ordered the way a customer's question arrives. {brand} is replaced by the brand on the item — Mustard Made, Globe West, Life Interiors, and so on.

Nothing more is coming.

Message What it means When it appears Rule
Cancelled The line has been closed on the order. Nobody is picking, making or shipping it. The line was closed in NetSuite. This beats every other check — a closed line reads Cancelled even with stock sitting committed against it. LI-BL-CMS-001
Item shipped The full quantity on this line has left our warehouse. Everything ordered has been fulfilled. LI-BL-CMS-001

It is here, waiting to go out.

Message What it means When it appears Rule
Ready to be shipped The stock is available to this order and only a delivery booking is missing. Either the whole quantity is committed in our warehouse, or the purchase order behind it is ready for local collection at the supplier. LI-BL-CMS-001, LI-BL-CMS-003

Watch out. This does not mean a delivery has been booked, and it does not always mean the stock is in our building. Booking is a separate process. If the line carries an Allocated PO#, the stock is at a supplier waiting to be collected, not on our floor.

It is on its way to us.

Message What it means When it appears Rule
On its way to our warehouse The shipment the stock is coming in on is moving — in a container, on a truck, or booked with the freight forwarder. Stock is reserved, the shipment is in the transit bucket, and no delay has been recorded on the line. LI-BL-CMS-003
On its way to our partner's warehouse The supplier is still waiting on the stock arriving at their warehouse. It has one more leg to travel after that. The purchase order sits at Local: Awaiting Stock Arrival. LI-BL-CMS-003
Item shipped by {brand} The supplier has dispatched it — to us, or straight to the customer. The purchase order is marked Local: Order Shipped. This is checked before every other shipment check. LI-BL-CMS-003
Partially Shipped - Remaining item is in transit to warehouse Part of the line has already gone out. What is left is on a shipment that is moving. Some quantity fulfilled, some outstanding, and the shipment behind the remainder is in transit. LI-BL-CMS-003

Watch out. An item can be badly overdue and still read On its way to our warehouse. The word Delayed is not produced by dates — see the late group below.

It is still being made, or only just ordered.

Message What it means When it appears Rule
Item is on order with Life Interiors It is one of our own lines and we are waiting on it. Either nothing is reserved for the line at all, or stock is reserved and the shipment is still in production with no delay recorded. LI-BL-CMS-001, LI-BL-CMS-003
Item is on order with {brand}/ our partner Nothing has been reserved yet, and it is an item a partner ships or holds for us. No stock reserved, and the item is drop ship or is not one we import ourselves. LI-BL-CMS-001
Item is on order with {brand} A real purchase order exists with that supplier, placed or booked, but nothing has been made or moved. The purchase order sits at Order Placed (Local), Local: Order Ready To Be Placed or Fully Booked by FT (Local). LI-BL-CMS-003
Remaining items incoming from our {brand} partner Part of the line has shipped, and the rest has nothing reserved against it at all. Partly fulfilled, and no stock reserved for the balance. LI-BL-CMS-001
Partially Shipped - Remaining item is in production Part of the line has gone out. The rest is still being made. Some quantity fulfilled, some outstanding, and the shipment behind the remainder is in production. LI-BL-CMS-003

Watch out. The / our partner on the end is the tell. With it means nothing is reserved yet and no purchase order was involved. Without it means a real purchase order was found and read.

It has been flagged as late.

Message What it means When it appears Rule
Delayed - Item is in transit to warehouse We have already told the customer about a delay, and the shipment is now moving. A delay email was sent or a delay call scheduled on the line, and the shipment is in transit. LI-BL-CMS-003
Delayed - Item is in production We have already told the customer about a delay, and the item is still being made. A delay email was sent or a delay call scheduled on the line, and the shipment is in production. LI-BL-CMS-003

Watch out — this is the one that catches everybody. Delayed is not calculated from dates. It appears only because someone recorded a delay email or a delay call against that line. An item three months overdue with nothing recorded reads On its way to our warehouse; an item recorded as delayed keeps saying Delayed until its shipment moves into a different bucket, even if it has since caught up. To make a line read Delayed, record the communication.

We could not work it out.

Message What it means When it appears Rule
Please contact us for more details Stock is reserved for this line, but the automation could not tie it to a purchase order it trusted — so it deliberately says nothing definite. It does not mean the item is stuck. Almost always one of three things: no purchase order came back for that item; the purchase order's expected receipt date does not equal the line's ship date; or the purchase order does not have enough allocated to cover what the line is waiting on. LI-BL-CMS-002

What to do. Open the line and compare its ship date against the expected receipt date on the purchase order the stock is really coming in on. One day out is enough to produce this message. If the dates match, check that the purchase order has enough allocated to cover the quantity the line is waiting on.

What the order line says on its own LI-BL-CMS-001

Seven checks, in this order. The first one that fits wins and nothing below it is considered. Where {brand} appears, the brand on the item is dropped into the message.

# If… Then the message is… Because
1 The line is closed Cancelled A closed line is finished regardless of what stock sits against it. This deliberately beats everything below.
2 Everything ordered has been fulfilled Item shipped Nothing is outstanding, so there is nothing to describe.
3 Everything ordered is committed in our warehouse Ready to be shipped The stock is ours to give; only a delivery booking is missing.
4 Partly shipped, and nothing reserved for the rest Remaining items incoming from our {brand} partner Part has gone; the balance has no supply behind it yet.
5 Nothing reserved, and the item is drop ship or not one we import Item is on order with {brand}/ our partner It will come from the partner, not from our own stock.
6 Nothing reserved, and the item is one of ours Item is on order with Life Interiors It is our own line and we are waiting on it.
7 Some stock is reserved against an incoming shipment (no message yet) The order line cannot answer it. Hand over to LI-BL-CMS-002.
8 None of the above Please contact us for more details Deliberate refusal to guess.

Finding the shipment behind the stock LI-BL-CMS-002

Only lines that reached check 7 above get this far.

# If… Then… Because
1 Candidate purchase orders are searched for By the item's exact name It is the only handle the search is given. An item renamed since the order was placed matches nothing.
2 A candidate's expected landing date does not equal the line's ship date Skip it, try the next The two dates are compared as text, so they must be identical.
3 A candidate has nothing on order, or not enough allocated to cover what the line is waiting on Skip it, try the next A purchase order too small to cover the line is not the one the stock is coming on.
4 A candidate passes both Accept it, stop looking The first acceptable candidate wins. There is no notion of a better one further down the list.
5 No candidate passes The message becomes Please contact us for more details Better to say nothing definite than to describe the wrong shipment.
6 A candidate is accepted Its number is recorded against the line So supply chain can trace which shipment the customer's item is on.

What the shipment's progress says LI-BL-CMS-003

Once a purchase order is accepted, its stage is sorted into a bucket and the bucket picks the wording. The checks run in this order and the first that fits wins.

# If… Then the message is… Because
1 The supplier has shipped it Item shipped by {brand} It has physically left the supplier; nothing else matters.
2 The order has only just been placed or booked Item is on order with {brand} Nothing has been made or moved yet.
3 Partly shipped, and the rest is in transit Partially Shipped - Remaining item is in transit to warehouse Both facts matter to the customer, so both are said.
4 Partly shipped, and the rest is in production Partially Shipped - Remaining item is in production As above.
5 A delay has been communicated, and it is in transit Delayed - Item is in transit to warehouse We have already told them it is late, so the wording stays consistent with what they were told.
6 A delay has been communicated, and it is in production Delayed - Item is in production As above.
7 No delay communicated, and it is in transit On its way to our warehouse Neutral, accurate, and does not introduce the word "delay" to a customer who has not heard it.
8 No delay communicated, and it is in production Item is on order with Life Interiors Still being made.
9 Ready for collection locally Ready to be shipped Physically available; only collection is outstanding.
10 The supplier is waiting on stock arriving at their own warehouse On its way to our partner's warehouse It has one more leg to travel before it is even at the partner.
11 The stage is one nobody has mapped No change — the line keeps its existing message An unknown stage must never blank a customer-facing message.

Which stages sit in which bucket. The bucket, not the stage name, decides the wording.

Bucket Purchase order stages Wording it produces
In production (Overseas) Currently in Production · (Overseas) Scheduled Booked · (Overseas) VMI ready to ship · (Overseas) Ready to Ship rows 4, 6 and 8 above
In transit In Transit (Local) · (Overseas) Delivery to warehouse · (Overseas) in transit · Partially Booked by FT (Local) · (Overseas) Production Complete · (Overseas) Ready to book with freight forwarder rows 3, 5 and 7 above
Only just ordered Order Placed (Local) · Local: Order Ready To Be Placed · Fully Booked by FT (Local) row 2 above
Handled on their own Local: Order Shipped · Ready For Collection (Local) · Local: Awaiting Stock Arrival rows 1, 9 and 10 above

Two messages, two different stories. These are the ones the team gets caught by, because the same words are produced by two unrelated situations. The tell is whether the line carries a matched purchase order.

Message Settled by the order line Settled by the shipment How to tell
Ready to be shipped The whole quantity is committed in our warehouse The purchase order is ready for local collection at the supplier The order-line version has quantity committed; the shipment version has an Allocated PO# and nothing committed
Item is on order with Life Interiors Nothing is reserved for the line at all Stock is reserved, the shipment is in production, no delay communicated The shipment version has an Allocated PO#; the order-line version has none

When we bother writing it back LI-BL-CMS-004

# If… Then… Because
1 The worked-out message differs from the one on the line Write it This is the point of the run.
2 A new drop-ship date is supplied and differs from the one on the line Write it Fulfilment schedules from it.
3 A purchase order was matched and it is not the one already recorded Write it Supply chain traces shipments from it.
4 None of the three has changed Write nothing Every needless write is noise in the order's history and a wasted call to NetSuite.
5 The two drop-ship dates look different but mean the same day Write nothing - None -, blank and missing all mean "no date", and 8/12/2025 and 08/12/2025 are the same day.
6 No new drop-ship date is supplied Leave the existing one alone This automation never clears a date it did not set.
7 A purchase order was not matched Leave the recorded one alone Same reasoning — it never blanks a value it could not replace.

Field registry

Every field this automation reads or writes, by the name it carries in the system — what it means, and what changes when it changes. Field ids are in the developer reading.

Inputs — what it reads

Values the automation looks at to make its decision. Change one of these and the decision changes.

FieldWhat it meansWhat it changesStatus
Internal IDSales Order Which sales order the line belongs to. Identifies the order the message is written back to. confirmed
Document NumberSales Order The order number the customer and the team quote, e.g. S297046. Identification and traceability only. Nothing is decided from it. confirmed
Line IDSales Order line Which line of the order this is. The message is per line, not per order — every item on an order can carry a different message. This is also the key the write-back matches on, so the wrong line ID would stamp the wrong item. confirmed
needs confirmingSales Order line The full item name, parent and variant, exactly as it reads in NetSuite. This is the only thing the purchase order search is given to find the incoming shipment. An item renamed after the order was placed finds nothing, and the line falls to the catch-all message. needs confirming
Item StageSales Order line The message the line is currently showing the customer. Read to decide whether anything has actually changed, and overwritten when it has. If it already matches the worked-out message, nothing is written at all. confirmed
QuantitySales Order line How many the customer ordered on this line. Compared against fulfilled and committed to decide whether the line is finished, ready, or partly out the door. confirmed
Quantity FulfilledSales Order line How many have already left the warehouse on this line. Equal to ordered means the line is done. Between zero and ordered means the line is partly shipped, which changes the wording to "Partially Shipped…". confirmed
Quantity CommittedSales Order line How many are physically in our warehouse and set aside for this order. Committed equal to ordered short-circuits everything else and produces "Ready to be shipped". Also subtracted from allocated supply when testing whether a purchase order is big enough. confirmed
needs confirmingSales Order line How many are earmarked for this line against stock that has not arrived yet. The single most consequential input. Zero sends the line down the "nothing reserved" branches; greater than zero is what makes the automation go and look up a purchase order at all. needs confirming
Delay CommsSales Order line Whether a delay email has been sent or a delay call scheduled for this line. Blank means neither. The only thing that turns a message into a "Delayed…" message. Nothing about dates is consulted. A genuinely late item with nothing recorded here reads as if it is on track. confirmed
needs confirmingSales Order line The date this line is expected to ship. Compared character-for-character against the purchase order's expected receipt date. They must be identical for a purchase order to be accepted, so one day out sends the line to the catch-all message. needs confirming
ClosedSales Order line Whether the line has been closed off on the order. Beats every other check. A closed line always reads "Cancelled", even with stock committed against it. confirmed
needs confirmingSales Order line Whether the item ships to the customer from the supplier rather than through our warehouse. With nothing reserved, this is what decides between "on order with our partner" and "on order with Life Interiors". needs confirming
needs confirmingSales Order line Whether the item is one we import ourselves. Read alongside drop ship to choose between the partner wording and the Life Interiors wording. needs confirming
needs confirmingSales Order line The brand the item belongs to. Dropped straight into the customer-facing message. When it is empty the message renders the literal text "- None -" to the customer — see the known defects. needs confirming
Drop Ship Expected Ship DateSales Order line The drop-ship date the line is currently carrying. Compared against the new date to decide whether a write is needed. "- None -", blank and missing are all treated as no date. confirmed
needs confirmingSales Order line The drop-ship date the saved search believes the line should now carry. When it is present and different from the current one, the line is written back. When it is empty, the existing date is left alone — this automation never clears a drop-ship date. needs confirming
Allocated PO#Sales Order line The purchase order this line's incoming stock is currently recorded against. Compared against the purchase order the automation matched. A difference is on its own enough to trigger a write, even when the message itself has not changed. confirmed
needs confirmingItem The item name the purchase orders are being found for. The lookup is keyed on an exact match of this against the order line's item name. needs confirming
Document NumberPurchase Order The purchase order number the incoming stock is on. Written to the order line as the allocated purchase order when the match succeeds. confirmed
Purchase Order StagePurchase Order How far along the incoming shipment is, in supply chain's own words. Carried for readability. The decision is made on its internal id, not this text. needs confirming
needs confirmingPurchase Order The internal number behind the purchase order stage. Sorted into one of three buckets — in production, in transit, on order — and that bucket picks the customer's wording. Three stages are handled individually instead. A stage in no bucket leaves the line's existing message untouched. needs confirming
QuantityPurchase Order How many are on the purchase order. Must be greater than zero for the purchase order to be considered at all. confirmed
needs confirmingPurchase Order How much of the purchase order is already spoken for by orders. The line's outstanding reserved quantity must fit inside this figure, or the purchase order is rejected and the next one is tried. needs confirming
needs confirmingPurchase Order When the purchase order is expected to land. Must equal the line's ship date exactly, as text, for the purchase order to be accepted. needs confirming

Outputs — what it writes

Values the automation puts back. Everything downstream of this rule reads them, so a wrong value here travels.

FieldWhat it meansWhat it changesStatus
Item StageSales Order line The message the line is currently showing the customer. Read to decide whether anything has actually changed, and overwritten when it has. If it already matches the worked-out message, nothing is written at all. confirmed
Drop Ship Expected Ship DateSales Order line The drop-ship date the line is currently carrying. Compared against the new date to decide whether a write is needed. "- None -", blank and missing are all treated as no date. confirmed
Allocated PO#Sales Order line The purchase order this line's incoming stock is currently recorded against. Compared against the purchase order the automation matched. A difference is on its own enough to trigger a write, even when the message itself has not changed. confirmed
Item StageSales Order line The message shown to the customer about where their item is up to. The customer-facing answer to "where is my order". Also read by the delay email automation, so a wrong value here can send the wrong email. confirmed
Allocated PO#Sales Order line The purchase order this line's incoming stock has been matched to. How supply chain traces which shipment a customer's item is on. Written only when a purchase order was matched — never blanked. confirmed
Drop Ship Expected Ship DateSales Order line When a drop-ship item is expected to leave the supplier. Used by fulfilment for drop-ship scheduling. Written only when a new date is supplied — never blanked. confirmed