A food warehouse is the toughest terrain for a WMS. In electronics the goods sit and wait. In apparel the season changes. In food, every day is one day closer to expiry, every pallet has its lot number, and a sanitary inspection can drop in unannounced. A BRC auditor wants to see that you can reconstruct the path of 200 kg of cheese from a specific lot from delivery to end customer - in 4 hours, without "hold on, I'll find it in my emails." Below, a dozen things that separate a food WMS from a generic one, written from the perspective of 17 years of implementations at food distributors, dairies and frozen-food producers.
7 HACCP principles and what they mean for WMS
HACCP is seven principles laid out in 1997 by the Codex Alimentarius. From a warehouse perspective four are critical. Hazard identification (principle 1) - requires the system to differentiate risk categories: allergens, raw materials with different shelf life, cold-chain goods from the rest. Critical control points CCP (principle 2) - in the warehouse this is typically the unloading area for refrigerated trucks and the dispatch area. Critical limits (principle 3) - cold storage cannot exceed +8°C, freezer -18°C, unloading from a refrigerated truck cannot last longer than 30 minutes.
The most important one for WMS is principle 7 - record keeping. That means every operation on the goods (receipt, transfer, picking, dispatch, disposal) must have a full trail: who, when, which batch, at what temperature, from which location. A BRC auditor doesn't ask about yesterday's data, but data from two years back. Without an IT system with proper archiving this is simply unattainable.
Batch identification - lot, production date, expiry date
Three dates have to be distinguished and every food WMS must understand them separately. Production date - when the goods were manufactured. Use-by date - after which consumption is forbidden, applies to perishable products: milk, fresh meat, salads. Best-before date - after which the producer doesn't guarantee full properties, but the product can still be sold or donated to a food bank (dry pasta, canned goods, jar of honey).
The distinction matters operationally. The food bank in most EU countries accepts products past best-before date, but not past use-by date. WMS has to know which date it manages for a given SKU and respond accordingly. The batch number is the master key to everything - it should be assigned at receipt (from the supplier document or generated internally), printed on the GS1-128 label with AI (10) and repeated on all warehouse documents. Without that, recall is impossible.
FEFO and blocking near-expiry stock
FEFO (First Expired First Out) is the iron rule in food. We release first what will expire first, regardless of receipt date. Sounds simple, in practice there are several traps. First - what if the system shows 10 pallets with different dates, but the operator picks the one closest to him? FEFO must be enforced, not suggested. Weaver WMS during picking blocks the choice of a pallet with a longer date if there is a pallet with a shorter date of the same reference in stock.
Second trap - retail chains require minimum remaining shelf life at the moment of delivery. Lidl typically demands 2/3 of the total period, Tesco 1/2. So a yogurt with 30-day shelf life must have at minimum 20 days at delivery to Lidl, 15 days for Tesco. Shorter - complaint and return. Food WMS has to calculate this at picking - per customer, per contract - and reject pallets that don't meet the contractual requirement.
Third trap - internal blocking. Goods 30 days before end of shelf life typically go to discount or to a promotional campaign. WMS has to flag this with a yellow flag, and 14 days before - red with a release block without manager's approval. You cannot do this manually with 5000 SKUs.
Recall and four-way traceability
Traceability in food is not a single function. It's the system's ability to answer four questions in four directions - one-step-up and one-step-down. One-step-up: where did batch X come from? From the receipt document we extract the supplier, shipment number, receipt date. One-step-down: where did batch X go? From outbound documents - list of customers, shipment dates, quantities. Left: which raw materials from the warehouse went into a given product lot (when the warehouse supports production)? Right: in which finished products did this lot end up?
The European Commission in regulation 178/2002 requires every food business operator to be able to do this in four hours. Four hours from the phone call. In Excel? Impossible. In Weaver WMS the filter "show all movements of batch X" produces a report in 30 seconds. That's the difference between keeping your sanitary permit and having it suspended.
Temperature zones - chilled, frozen, dry
A food warehouse typically has four to six zones. Dry (15-25°C, pasta, canned goods, coffee). Chilled +2/+8°C (dairy, deli, salads). Chilled +4/+10°C (vegetables, some fruit). Freezer -18/-25°C (frozen food, fish, ice cream). Sometimes a controlled atmosphere (CA) zone for fruit. Each zone has its own rack layout, its own equipment and its own temperature sensors.
From the WMS perspective the most important thing is one: the location must have a "zone" metadata. The system must not allow proposing a chilled location for goods requiring freezer storage. Weaver WMS at receipt checks the SKU's product group and only suggests temperature-matching locations. Small detail - the operator doesn't have to remember that "black cheese" goes to chiller 3 and "dip cottage cheese" goes to chiller 1. The system knows.
The second element is temperature logging. Sensors in the chambers (typically Testo, Comark or dedicated IFM systems) log temperature every 5-15 minutes 24/7. WMS in an ideal world integrates with the temperature recording system and at any operation on the goods retrieves the current chamber temperature. If it was exceeded - flag it and manager's decision. That's the documentation BRC and IFS require.
Equipment for cold and freezer storage
A standard Honeywell or Zebra terminal in a -25°C freezer lasts 15 minutes, then the screen starts showing artifacts, the battery drops to half in an hour and the cell ages 3 times faster. For freezers you need "freezer ready" models - with heated screens (a bottom radiator melting the frost), batteries designed for low temperatures (with regular ones capacity drops 60-70% in the freezer) and usually a glove holder instead of a fingertip stylus.
Recommended models include Honeywell CK65 freezer (from approx. 1900 EUR), Zebra MC9300-K (from approx. 2200 EUR), Datalogic Skorpio X5 freezer. Label printers in the freezer are a separate category - Zebra ZD500 freezer, special low-temperature paper. Sticking a normal thermal-transfer label on a frozen pallet ends with it falling off in half an hour. Plus gloves with open fingers or special capacitive tips, because regular touchscreens cannot be operated through full gloves.
Detail people forget about - air loops. When a forklift drives into the freezer from the chiller, sensor temperature drops 5-8°C. That's why we plan operations like "full picking" in hourly blocks, instead of jumping pallet by pallet between zones. Otherwise the chiller's heating system can't keep up and chamber temperature drops below critical. The penalty during a BRC audit can be certificate suspension.
Returns from retail - decision in three minutes
Retail chains return goods for various reasons: end of shelf life, packaging damage, wrong delivery, seasonal return campaigns. Each reason means a different operational decision. A food WMS has to have a return-reason dictionary (typically 8-15 items) and a workflow assigned to each: disposal (with a document for accounting and the sanitary inspection), markdown and resale, downgrade to food bank, return to producer.
The operator at the returns gate scans the return pallet's SSCC, the system shows what's on the pallet, suggests a reason (if the chain sent it earlier in EDI 4 or the return document) and asks for a decision. The whole operation on a pallet should take 3-5 minutes, not 20. Without WMS the operator opens Excel, looks for SKU, checks the expiry date, calls the manager, waits. In practice 80% of returns sit at the gate for 24 hours and degrade further.
What auditors want to see
Sanitary inspections most often check three things: temperature recording (sensor logs), batch documentation (ability to reconstruct the path) and HACCP procedures (paper with CCP points, plus actual records that they're being monitored). In case of a reported intervention - additionally disposal documents and the recall procedure.
BRC (British Retail Consortium) and IFS (International Featured Standards) are more formal. BRC v9 requires among other things: complete allergen list per SKU, separation of production zones from warehouse, pest management system, traceability in 4 hours, deviations log, supplier control. WMS is only part of this, but a big part - 60-70% of the audit points depend on the data quality in WMS.
Practical advice - a BRC audit typically takes 3 days and costs 6-10 thousand EUR. The first time is the worst, because the auditor checks everything from scratch. Repeats are lighter, but only if the system documentation is consistent. I've seen companies that lost their certificate after 5 years of holding it, because migration from a previous WMS broke batch continuity. Batch migration to a new system has to be planned a month in advance.
Integration with equipment
Labelling scales (Bizerba, Mettler-Toledo, Marel) - print a label with automatically weighed weight and expiry date calculated from a shelf-life rule defined for the SKU. WMS receives from the scale the SSCC, GTIN, weight, production date and batch - in one shot. For pre-processing of meat or cheese this is a huge productivity gain compared to manual weighing.
Thermal-transfer printers (Zebra ZT411, Zebra ZD620, Honeywell PM45) - print GS1 labels with batch, expiry date, SSCC. Weaver WMS sends them a ZPL command via TCP/IP, the printer generates the label. A central print server allows having 10 printers in the warehouse and each gets "its" labels - the operator scans the pallet and the label comes out from the printer closest to the workplace.
Temperature sensors (IFM, Testo Saveris, Comark RF500) - send temperature over RS485 or Wi-Fi. WMS records the values and at any operation on the goods checks whether during storage there was an excursion. Ideally there's also an SMS alert for the manager when temperature goes out of range.
Sample implementation - 5000 SKU distributor
A medium-sized food distributor near Poznań, Poland. 5000 SKUs, 8 temperature zones (dry, two dairy chillers, one fruit-and-vegetable chiller, main freezer, fish freezer, ice room, tempering area), 6500 sqm. 18 operators, 4 forklifts (2 of them freezer-ready), 12 Honeywell CK65 terminals, 3 Bizerba labelling scales, 8 Zebra ZT411 printers.
The numbers they live with: 280 deliveries per week, 1200 orders per week, on average 18 lines per order. Time of full picking of a 25-tier mixed pallet - 35 minutes with FEFO and near-expiry block. Before WMS implementation (still on Subiekt + Excel with VBA) - 90 minutes, because the operator had to manually check dates. The delivery error rate dropped from 4.2% to 0.3%, and that translates directly into chain complaints. ROI - 14 months, despite the Weaver WMS license for 18 users plus integration with Comarch ERP plus training costing approx. 95 thousand EUR.
The detail that gave the most savings - automatic transfers from the main chiller to the picking zone at night, when the morning shift hasn't arrived yet. WMS based on planned deliveries and orders plans pre-picking during 6 hours of the night, the picker finds a picking pallet already in the zone in the morning and just tops up. This shortens the operational day by 90 minutes per shift.
Why a generic WMS is not enough
Every WMS on the market handles batches and expiry dates at a basic level - it's a checkbox in the spec. The difference starts in the details. Does the system allow enforcing FEFO per customer contract? Can it calculate "minimum days to expiry" separately for Lidl, separately for Tesco, separately for the internal store? Does it have native one-step-up/one-step-down traceability reports? Does it integrate with temperature sensors? Does it support zones with different temperatures and block wrong locations?
We've been developing Weaver WMS with food distributors and dairies since 2009. Batch functionality, FEFO, date controls and traceability reports were not "added on request" - they're part of the core. Implementation in the food industry typically takes 4-6 months (vs 2-3 for the average distributor) and costs more, because safety tests, BRC compliance verification and consultations with a food technologist are non-negotiable.
But the alternative - a cheaper, "generic" WMS - means that in a year or two the company faces a choice: develop the missing features (sometimes more expensive than a brand new implementation) or migrate again. The food industry is no place for half-measures. A BRC auditor doesn't forgive that.