Most food distribution businesses arrive at Odoo Manufacturing sideways. You never set out to be a manufacturer. You started by moving cartons, then began portioning bulk into retail packs or blending a seasoning base. One day your stock valuation stops reconciling, a customer asks which supplier batch went into a delivery, and your distribution-only setup cannot answer either question.
That is when MRP has to come in. Across the food and beverage side of my Odoo implementation work, the gap is almost never the software. It is that the default manufacturing workflow assumes a discrete manufacturer building predictable units from predictable components, while your business runs on variable weight, short shelf life, and batches traceable in both directions. Here are the configuration decisions I make on those projects, in the order I make them.
Why Default MRP Settings Rarely Fit Food Distribution
Out of the box, a manufacturing order consumes a fixed quantity of components and produces a fixed quantity of finished goods. That holds for furniture or electronics, but it breaks the first time a 20 kg carcass yields 17.4 kg of portioned product plus trim.
The second mismatch is time. A distributor plans around delivery dates. A food producer plans around expiry dates, and those calendars pull in opposite directions. If your reordering rules and your production schedule do not both understand shelf life, you will build stock you cannot sell.
The third is evidence. Distribution needs a picking record; food production needs an audit trail on every component and output.
Before changing a setting, split your activities into two lists: what genuinely transforms a product, and what is really repacking. Only the first belongs in Manufacturing. Pushing simple repacks through manufacturing orders creates paperwork nobody completes.
Building Bills of Materials That Behave Like Recipes
Your bill of materials is the heart of the configuration, and in food it needs to read like a recipe rather than a parts list.
Set the BoM type deliberately. Use a manufacturing BoM where a real transformation happens and you need a traceable output lot and a cost roll-up. Use a kit where components are simply delivered together and never held as a distinct finished good.
Build the recipe at the unit of measure your floor actually uses. If the team weighs in grams but you purchase in kilograms, define the conversion once on the product. Recipe management falls apart when staff convert quantities at the bench.
Decide early whether components are consumed flexibly. Food recipes rarely consume the exact planned quantity, so flexible consumption lets operators record what they truly used instead of the theoretical number. That single setting separates a costing report you trust from one you quietly ignore.
By-Products, Yield Variance and Variable Weight Products
By-products are where most food configurations either succeed or quietly fail. When a primary input breaks down into a secondary saleable output, whether offcuts or second-grade product, record it as a by-product on the BoM so it carries a share of the cost and enters stock properly. Treating it as scrap discards margin you are actually banking.
Yield variance matters too. Run the first eight to twelve weeks with planned quantities from historical averages, then review actual against planned. You will usually find two or three recipes carrying a systematic five to ten percent gap.
For variable weight products, use a catch-weight style setup: a nominal unit for ordering and a weight-based unit for valuation and invoicing, with actual weight captured at production.
Lot Tracking, Expiry Dates and FEFO That Hold Up Under Audit
Turn on lot tracking for every raw material, intermediate, and finished good that carries food risk. Serial numbers are rarely warranted in food, but lots are non-negotiable. Assign a lot naming convention a human can read on a pallet label, typically production date plus line plus sequence, rather than letting Odoo auto-number silently.
Enable expiration dates and populate all four fields, not just the best before. The removal date drives when stock leaves the sellable pool, the alert date warns your team, and use-by and best-before serve different regulatory purposes. Then switch the relevant product categories to a FEFO removal strategy so Odoo reserves the nearest-expiry lot automatically instead of the oldest received one.
The payoff is the traceability report. With component and output lots recorded, you get forward traceability from a suspect supplier batch to every delivery containing it, and backward traceability from a complaint to the exact inputs. A mock recall becomes a five minute exercise.
Work Centers, Capacity and Scheduling Around Short Shelf Life
Quality Control Points and HACCP Evidence Inside Odoo
Map your critical control points to quality control points in Odoo, one for one. A temperature check after chilling, a metal detection pass before packing, a goods-receipt inspection: each becomes a control point tied to an operation or transfer type.
Use measure-type checks with tolerance ranges wherever a number is involved, because a pass or fail tick tells an auditor nothing about drift. When a check fails, the alert should route to a named team and the failing lot should be blocked from reservation, not merely flagged. Set that up once and your HACCP evidence stops living in a lever arch folder.
Replenishment, MPS and Costing for Perishable Stock
For perishables, reordering rules with static minimum and maximum quantities are usually the wrong tool. A master production schedule that looks across your order book and seasonal pattern serves you better, planning in weekly buckets against forecast demand rather than reacting to a stock level that was already too low.
On costing, pick one method per product category and hold the line. Average cost suits most food distributors because purchase prices move constantly. Make sure scrap and unbuild orders hit the right accounts. If you use co-packers, configure subcontracting properly rather than faking it with transfers, so the subcontracted component and the finished lot stay traceable.
I suggest a staged rollout: lot tracking and expiry first, then recipe BoMs, then quality control points, then scheduling and MPS. Each stage delivers value on its own. If you want that sequence mapped against your actual product range, Book a Consultation and we can work through your recipes, your traceability obligations, and the shortest route to a setup your team will use.
Conclusion
Tailoring Odoo MRP for food distribution is less about custom development than about making well-informed configuration choices in the right order. Get the bill of materials to behave like a recipe, make lot tracking and FEFO non-negotiable, encode your critical control points as quality checks, and plan around shelf life rather than stock levels. Do those four things and standard Odoo manufacturing will carry a complex food operation without custom code. Rush them, and no customisation later will fix the foundation.
Frequently Asked Questions
Do I need Odoo Manufacturing if I only repack bulk products?
Not necessarily. If you split a bulk carton into smaller units without transforming the product, a kit-type bill of materials is lighter and faster. You need manufacturing orders when there is a genuine transformation, a new output lot, or a cost roll-up to capture.
How do I handle variable weight products in Odoo MRP?
Use a nominal ordering unit alongside a weight-based unit of measure, capture actual weight at production, and drive valuation and invoicing from the weight. Define the conversion on the product so the floor team never converts manually.
Can Odoo produce the traceability report a food safety auditor will accept?
Yes, provided lot tracking is enabled on components and finished goods and operators record lots consistently. The report then gives forward and backward tracing across manufacturing orders and deliveries, covering the one-up, one-back expectation most schemes apply.
What is the best way to record production losses?
Distinguish three things. Usable secondary output is a by-product on the bill of materials. Recoverable material goes back through an unbuild order. Genuine waste is scrap, posted to a dedicated scrap location and account. Mixing them distorts both yield variance and margin.
Should I use FEFO or FIFO for perishable stock?
FEFO for anything with an expiry date, because it reserves the nearest-expiry lot first and reduces write-offs. FIFO remains fine for shelf-stable packaging. Removal strategies apply per product category, so one rule need not cover the whole warehouse.