A product recall at a food distributor is rarely lost over a lack of quality. It is lost because no one can say, within two hours, which batches went out to which customers. This guide gives you a seven-step method to set up batch and expiry traceability in the MULTI ERP — and a checklist to use at your next warehouse meeting.
The argument I am going to make is an uncomfortable one: most Portuguese food distributors think they have traceability because they record the batch on receipt. They do not. Real traceability is the bidirectional link — from the supplier's batch through to the customer's delivery note, and back. That is the link that breaks when the warehouse manager does a picking without noting the batch because "there wasn't time". And it is the first thing the ASAE will ask for. A receipt record without the corresponding dispatch record is a pretty Excel spreadsheet, not traceability.
What you need before you start
Before you touch a single setting, gather the raw material for the project. You need the list of SKUs subject to mandatory batch and expiry control — fresh, frozen, dry goods with a use-by (DLC) or best-before (DLUO) date. You need to decide, unambiguously, who records the batch: goods-in, internal production, or both. And you need barcode and GS1-128 scanning terminals at the inbound and outbound docks, not just at the office check station.
Three pieces are missing that failed projects tend to overlook. The FEFO rule has to be documented — First Expired, First Out, not FIFO. The supplier matrix has to record where each one hides the batch (some on the box label, others only on the pallet label, and some regional producers don't even print it). And recall drills need someone with an actual name responsible — not "the team", which in practice means no one.
Step 1 — Model the item with batch attributes at source
Before touching processes, configure the item record. In the MULTI ERP, every food SKU has to be created with three flags active: batch management, expiry control and the FEFO dispatch rule. Without these three, the rest of the system lets movements through without a batch — and from then on your traceability has invisible holes that you only discover on the worst possible day.
In distribution projects we see the classic error: they define the batch as a free-text field. One operator writes "L2024", another "L-2024", another "24". On recall day, the filter returns nothing because as far as the system is concerned these are three distinct products. Enforce a validated format per supplier, with a mask. It costs an afternoon to set up and saves you a sleepless night.
Step 2 — Capture the batch at goods-in, not later
The batch enters the system the moment the pallet crosses the dock. If it is left for "later this afternoon when there's time", the physical-digital link is lost — the operator no longer knows which of the four pallets of milk was batch X. Configure goods-in to block the check without batch and expiry filled in for flagged items.
An operational detail the manuals don't mention: different suppliers hide the batch in different places. Some on the box label, others only on the pallet's GS1-128 label, and some small regional producers write it in pen on the delivery note. Map this by supplier before going live, or the dock operator will stop every two minutes to hunt for it — and, when the day gets tight, will start making up batches just to get the lorry away.
- Goods-in block without batch on flagged SKUs: active.
- GS1-128 scanning configured at the docks: tested with three different suppliers.
- Expiry date captured and compared against the minimum contracted shelf life.
Step 3 — Enforce FEFO in picking, don't leave it to choice
FIFO dispatches what came in first. FEFO dispatches what expires first. At a food distributor they are not the same thing: a stock replenishment may bring in batches with a shorter shelf life than those already in the warehouse. If the system sends the picker to the "oldest" location, it dispatches the long-dated batch and leaves the short-dated one to rot. It has to send them to the location of the batch that expires first.
The KORA Inventory Suite linked to the MULTI ERP directs picking by FEFO at the terminal and confirms the scanned batch against what the system told the operator to pick. If the operator scans the wrong batch, the terminal refuses. This is where you win or lose the battle over returns for out-of-date product — and the warehouse manager, who reacts to any rollout that takes him off the radar for more than two hours, accepts this quickly because it gets complaints off his back from above.
Traceability is not a report you run at month-end. It is a discipline you enforce the moment the pallet moves — or it doesn't exist.
Step 4 — Link inbound batch to outbound batch
This is the link that separates those who have traceability from those who have a spreadsheet. Every dispatch note line has to carry the dispatched batch, and that batch has to be linked to the corresponding receipt batch. It is what lets you answer the two recall questions:
- Forward: this faulty batch — which customers did it go to and on which notes?
- Backward: this customer is complaining — which batch did they receive and which supplier did it come from?
In the MULTI ERP, batch-by-batch traceability keeps this link automatic as long as the batch is captured at both ends. That is why steps 2 and 3 are not negotiable: if one end fails, the link is left hanging in the air, looking as though it is set up and guaranteed not to work when you need it.
Step 5 — Automate expiry alerts before there is a loss
Margins in wholesale are structurally thin. With margins this fine, a pallet of fresh produce that expires in the warehouse is not an isolated cost — it is the profit from dozens of pallets evaporating at once. Configure staggered alerts: X days before expiry, the system flags for promotion; closer in, for withdrawal. Not as a visual warning no one reads, but as a block that forces a decision.
| Window | Automatic action | Responsible |
|---|---|---|
| 30 days to DLC | Flags for priority sale/promotion | Sales |
| 10 days to DLC | Blocks for new normal orders | Warehouse |
| DLC reached | Automatic quarantine + withdrawal order | Quality |
Step 6 — Run a cold recall test
Don't wait for the ASAE or for a supplier notification. Pick a batch at random, on a Friday afternoon, and time it: how long does it take to list every customer who received it? Regulation (EC) No 178/2002 requires "one step back, one step forward" traceability from every food sector operator. In practice, those who respond in under four hours sleep soundly; those who take a day have a problem to solve before the crisis arrives.
Document the result, with the stopwatch on paper. If the drill took six hours, you have just found the holes in step 4 before they cost you a fine — and a customer. The most common mistake here is to run the test with the "easy" batch, the one from a tidy supplier that prints everything. Do it with the batch from the regional producer who writes it in pen. That's the one that will catch you out.
Step 7 — Cross traceability with the rest of the business
Batch and expiry don't live alone. Linked to finance and sales in the same core, they tell you how much stock is ageing, which supplier systematically delivers with short shelf life, and which customers concentrate the problem batches. A Qlik Sense layer over this data turns the compliance record into an instrument for managing DSO and stock rotation.
It is the difference between complying with the law and using compliance to make money. As we argued in the importance of a centralising ERP for SMEs, the value appears when the data stops living in silos and the same batch that proves compliance also reveals which supplier is eating your margin.
Common mistakes and how to avoid them
- Batch as free text. Generates duplicates the recall filter doesn't catch. Fix: validated field with a per-supplier format.
- Recording only on receipt. Without a batch on dispatch there is no link. Fix: block dispatch without a batch on flagged SKUs.
- FIFO instead of FEFO. Dispatches the old stock but lets the short-dated batch expire. Fix: FEFO rule enforced at the picking terminal.
- Recall drill never run. Discovers the holes on crisis day. Fix: quarterly cold test, timed and documented, run with the difficult batch.
- Expiry alerts only visual on screen. No one looks in time. Fix: automatic quarantine and blocking, not warnings that get ignored.
What to do with this this week
Run the Step 6 drill with whatever batch is to hand — the time it takes tells you exactly where the weakness is. If the stopwatch passes four hours, the problem is not the software: it is that the link between inbound and outbound was never closed. That is where the real work begins, on the dock, not on the slide. To choose wisely, the guide how to assess vertical fit before signing a contract applies line by line to the food sector.
Sources
- INE — Retail and Wholesale Enterprises, 2024 data (turnover and trade margin in wholesale).
- Regulation (EC) No 178/2002 of the European Parliament and of the Council — general principles and requirements of food law, including traceability (art. 18).
- Regulation (EU) No 1169/2011 — provision of food information to consumers (DLC/DLUO dates).
Frequently asked questions
What is real traceability at a food distributor?
Real traceability is the bidirectional link between the supplier's batch and the customer's delivery note, and back. It is not just recording the batch on receipt. You need to capture the batch both at goods-in and at dispatch, linked to each other. A receipt record without a corresponding dispatch is just a spreadsheet, not functional traceability.
Why do recalls fail at food distributors?
They fail because no one can say within two hours which batches went out to which customers. The cause is almost always a picking with no batch note — the operator didn't have time, or the system didn't force it. The ASAE asks for exactly this: the complete bidirectional record. Without it, no recall is possible.
What is the difference between FIFO and FEFO?
FIFO dispatches what came in first. FEFO dispatches what expires first. At a food distributor they are different: a replenishment may bring in batches with a shorter shelf life. If you send the picker to the oldest, it dispatches the long-dated batch and leaves the short-dated one to rot. FEFO is mandatory in food.
How do you configure the batch in the MULTI ERP without creating holes?
Configure each food SKU with three flags active: batch management, expiry control and the FEFO rule. Enforce a validated format per supplier, with a mask — not free text. If one operator writes "L2024" and another "L-2024", the system sees distinct products and the recall fails. An afternoon of configuration saves a sleepless night.
Where should the batch be captured — at goods-in or later?
At goods-in, the moment the pallet crosses the dock. If it is left for later, the physical-digital link is lost: the operator no longer knows which of the four pallets was batch X. Block the check without batch and expiry filled in. A detail: different suppliers hide the batch in different places — map this before going live.
How do you stop picking without a batch becoming standard practice?
Integrate the KORA Inventory Suite into the picking terminal. The system directs by FEFO and the terminal refuses if the operator scans the wrong batch. This enforces discipline the moment the pallet moves. The warehouse manager accepts it because it gets complaints off his back from above — traceability is not a report, it is operational discipline.
Which expiry alerts should be configured?
Configure them staggered: at 30 days, flag for promotion; at 10 days, block new normal orders. Not as a visual warning no one reads, but as a block that forces a decision. With such thin margins, a pallet that expires is the profit from dozens of pallets lost. Automate before there is a loss.
Who should be responsible for recall drills?
Someone with an actual name, not "the team". In practice, the team means no one. Define before you start who triggers the drill, who gathers the data, who validates. The ASAE will ask for this. A drill that takes more than two hours to respond means your real system would take that long too — and that is unacceptable.
