Discover powerful Dolibarr extensions designed to automate your business processes

Dairy Factory Manager turns Dolibarr into a genuine Dairy Industry ERP Suite. The module covers the whole activity of a company that collects, processes and sells dairy products, so a specialised industrial ERP is no longer required alongside Dolibarr.
· Industrial dairies and milk processing units
· Cheese factories
· Yogurt manufacturers
· Butter and cream producers
· Fresh dairy product industries
· UHT plants
Milk producers -> Collection -> Laboratory reception -> Processing -> Production -> Packaging -> Cold storage -> Distribution -> Customers
|
Engine |
Scope |
|
Dairy Collection Engine |
Producers, contracts, collection, tanker trucks, routes, producer payments |
|
Milk Quality Engine |
Physical, chemical and microbiological analyses, criteria and conformity |
|
Dairy Production Engine |
Versioned recipes, manufacturing orders, lines, thermal treatments, fermentation, packaging |
|
Cold Chain Engine |
Tanks, cold rooms, IoT sensors, temperatures, use-by and best-before dates |
|
Traceability Engine |
Lots, upstream / internal / downstream traceability, one-click search |
|
Cost Management Engine |
Material, processing, energy, labour and maintenance costs, unit cost price and margin |
|
Reporting Intelligence Engine |
KPIs, analytics, reports, industrial AI assistant |
Dashboard - Producers & collectors - Producer contracts - Producer payments - Milk collection - Tanker trucks - Collection routes - Raw milk reception - Quality laboratory - Storage tanks - Production lines - Recipes & formulations - Recipe ingredients - Dairy production - Thermal treatments - Fermentations - Packaging - Lot traceability - Traceability search - Cold storage - IoT sensors - Distribution - Equipment - Maintenance - HSE & food safety - Industrial costs - AI assistant - Industrial reporting - Setup
The module is a standard Dolibarr external module installed under htdocs/custom/dairyfactorymanager. It never alters a native table: all its data lives in its own llx_dfm_* tables.
|
Object |
Table |
Role |
|
Producer |
llx_dfm_producer |
Breeder, cooperative or partner farm supplying milk |
|
Contract |
llx_dfm_contract |
Collection contract: price per liter, quality bonus, committed volume |
|
Producer payment |
llx_dfm_payment |
Monthly settlement: volume, price, bonus, penalty |
|
Collection |
llx_dfm_collection |
One milk pickup: volume, temperature, density, acidity |
|
Tanker truck |
llx_dfm_truck |
Tanker fleet, capacity, tank cleaning, mileage |
|
Route |
llx_dfm_route |
Collection round: zone, truck, distance, frequency |
|
Reception |
llx_dfm_reception |
Raw milk intake, tank assignment, lot code |
|
Analysis |
llx_dfm_analysis |
Laboratory analysis (physical / chemical / microbiological) |
|
Tank |
llx_dfm_tank |
Raw milk, maturation, fermentation or storage tank |
|
Production line |
llx_dfm_line |
Pasteurization, UHT, yogurt, cheese, butter, packaging line |
|
Recipe |
llx_dfm_recipe |
Versioned formulation with target yield and process |
|
Recipe line |
llx_dfm_recipe_line |
Recipe ingredient with quantity and unit cost |
|
Production |
llx_dfm_production |
Manufacturing order |
|
Thermal treatment |
llx_dfm_thermal |
Pasteurization, UHT, sterilization, thermization |
|
Fermentation |
llx_dfm_fermentation |
Ferment, duration, temperature, pH |
|
Packaging |
llx_dfm_packaging |
Filling/packing run, scrap, yield, use-by date |
|
Lot |
llx_dfm_lot |
Traceability lot (milk / intermediate / finished) |
|
Cold room |
llx_dfm_coldroom |
Chilled room, refrigerator or freezer |
|
Sensor |
llx_dfm_sensor |
IoT sensor with thresholds and alert state |
|
Shipment |
llx_dfm_shipment |
Temperature-controlled delivery to a customer |
|
Equipment |
llx_dfm_equipment |
Industrial asset (CMMS) |
|
Maintenance |
llx_dfm_maintenance |
Preventive / corrective / predictive intervention |
|
HSE record |
llx_dfm_hse |
Risk, incident, audit, food safety, training |
|
Cost sheet |
llx_dfm_cost |
Industrial cost breakdown and margin |
· Third parties: producers are linked to supplier records, customers to customer records
· Products: recipes and lots can reference a native product
· Stock, purchase and sales modules remain usable on the linked native records
· Projects and Agenda: standard Dolibarr linkage
· Home widget with the key dairy indicators
· Every table carries entity, status, date_creation, tms, fk_user_creat, fk_user_modif and import_key
· Schema self-healing at activation: missing columns are added on upgrade (Dolibarr only ever runs CREATE TABLE)
· Every translation key is Dfm-prefixed, so no key can collide with another installed module
· Five languages: French, English, Spanish, Italian, German
A collection records the producer, date, volume, temperature, density and acidity of the milk, together with the driver, the tanker truck and the zone. Its lifecycle is: planned -> collected -> in transport -> received, or rejected when the acceptance thresholds are not met.
The reception note materialises the milk entering the plant. It links the collection, the producer and the destination tank, and carries the lot code that becomes the key of the whole upstream traceability. The process is: reception -> control -> validation -> tank storage.
Tanks are typed raw milk, maturation, fermentation or storage, with capacity, current level, temperature, stored product, location, last cleaning date and availability status.
Pasteurization, UHT, sterilization and thermization are tracked with the target scale, the temperature actually reached, the duration, the treated volume, the equipment, the operator and the conformity verdict. A gap between target and reached temperature raises a process deviation.
For fermented products (yogurt, fresh cheese, cream): ferment type, tank, duration, temperature, initial and final pH, final acidity.
Bottles, pots, bags, cartons and bricks. Packaged quantity, scrap and line yield are recorded and the use-by date is applied to the lot.
The integrated laboratory covers the three analysis families required by dairy quality control.
|
Family |
Criteria |
|
Physical |
Temperature, appearance, density |
|
Chemical |
Fat content, protein, acidity, pH |
|
Microbiological |
Total germs, coliforms, somatic cells, antibiotic residues |
Each analysis carries a sample code, a date, a technician and a verdict: conform, non-conform or in progress. A non-conform analysis pushed through the API automatically places its lot in quarantine.
The setup page defines the thresholds that drive the alerts across the dashboard and the AI assistant:
· Maximum milk acceptance temperature (default 6 degrees Celsius)
· Maximum acceptance acidity (default 18 Dornic)
· Maximum total germs (default 100 000 per ml)
· Use-by alert window in days (default 7) and automatic blocking of expired lots
The HSE register covers industrial risks, incidents, audits, food safety and training, each with a severity, a zone, an owner, a description, an action plan and a closure date.
Food traceability is the core value of the module. Enter a lot code, a sample code or a product name and the whole chain is rebuilt in one click.
The exact raw milk lots consumed, the farmers behind them, the precise collection and reception that fed the lot, and the corresponding laboratory analyses. The chain is resolved through the real keys (reception.lot_code = milk lot reference), never through an approximation such as 'recent collections of the same farmer' - which is what makes it usable during a product recall.
The manufacturing order, the recipe and its version, the production line, the milk consumed, the achieved yield, the thermal treatment, the fermentation and the packaging run.
The cold room, the shipments, the carriers, the delivered customers and any derived lots.
Available -> in quarantine -> blocked -> released -> recalled -> consumed. Use-by and best-before dates are carried by every lot and drive the expiry alerts.
The recipe library covers milk, yogurt, cheese, butter, cream and dairy desserts. Each recipe is versioned and carries a theoretical yield, a batch size, a process temperature scale, a duration and a target pH. A recipe is only usable in production once validated, with the validator and validation date recorded.
Recipe lines list the ingredients: milk, lactic ferments, sugar, fruit preparation, rennet, additives and packaging, each with quantity, unit and unit cost - which feeds the cost engine.
A manufacturing order links a recipe, a production line and a finished lot. It carries the planned quantity, the produced quantity, the milk consumed, the achieved yield and the scrap.
Lifecycle: planned -> in preparation -> in processing -> in quality control -> in packaging -> completed, or cancelled.
The cost sheet breaks down the milk material cost, ingredients, packaging, energy, labour and maintenance. Total cost, produced quantity, unit cost price, sale price and margin are computed per period and per product.
Every insight is computed from the plant's own data - no external service is called, so the figures are reproducible and auditable.
· Collection forecast: 30-day projection by linear regression on the collection history, corrected by the seasonal index of the target month, with a confidence index derived from the dispersion
· Production optimisation: idle lines while orders are queueing, lines below the average OEE, recipes whose actual yield drifts from the theoretical yield, scrap rate
· Anomaly detection: producer quality drop beyond one standard deviation below the plant mean, milk over-consumption, cold chain excursion, low equipment availability
· Quality assistant: conformity rate, antibiotic-positive analyses, germ threshold breaches, blocked lots and the worst-performing analysis family
The industrial REST API lets shop-floor equipment and IoT gateways push data, and lets external systems pull the plant's data. It requires the Dolibarr API module to be enabled and an api_key on the calling user.
Base URL: <dolibarr>/api/index.php/dairyfactorymanager/
Authentication: DOLAPIKEY HTTP header. An invalid key returns 401. Every route is gated by the module's own right groups.
|
Method / route |
Right |
Purpose |
|
GET producers |
producer/read |
List milk producers (filter by zone) |
|
GET collections |
collect/read |
List milk collections (filter by producer) |
|
POST collections |
collect/write |
Record a collection from a tanker terminal; a collection above the acceptance temperature is flagged rejected |
|
GET sensors |
coldchain/read |
List IoT sensors with thresholds and state |
|
POST sensors/{id}/readings |
coldchain/write |
Push a reading; updates the sensor, re-evaluates its alert state, and propagates to its cold room |
|
GET lots |
traceability/read |
List traceability lots (filter by type) |
|
GET lots/{id}/traceability |
traceability/read |
Full upstream / internal / downstream chain of a lot |
|
GET productions |
production/read |
List manufacturing orders (filter by status) |
|
PUT productions/{id}/progress |
production/write |
Report shop-floor progress; recomputes the yield |
|
GET analyses |
quality/read |
List laboratory analyses (filter by result) |
|
POST analyses |
quality/write |
Push an analysis result; a non-conform result quarantines the lot |
|
GET kpi |
reporting/read |
Plant KPI snapshot |
curl -H "DOLAPIKEY: <key>" \
https://<dolibarr>/api/index.php/dairyfactorymanager/kpi
curl -X POST -H "DOLAPIKEY: <key>" -H "Content-Type: application/json" \
-d '{"value": 4.2}' \
https://<dolibarr>/api/index.php/dairyfactorymanager/sensors/12/readings
curl -H "DOLAPIKEY: <key>" \
https://<dolibarr>/api/index.php/dairyfactorymanager/lots/42/traceability
The module ships 35 granular permissions spread over 11 object right groups plus reporting and administration. Read and write are granted by default so the module is usable straight after activation; delete and administration are not.
|
Right group |
Covers |
read |
write |
delete |
|
producer |
Producers, contracts, producer payments |
default |
default |
no |
|
collect |
Collections, tanker trucks, routes |
default |
default |
no |
|
reception |
Raw milk receptions |
default |
default |
no |
|
quality |
Laboratory analyses |
default |
default |
no |
|
production |
Tanks, lines, recipes, orders, thermal, fermentation, packaging |
default |
default |
no |
|
coldchain |
Cold rooms, IoT sensors |
default |
default |
no |
|
traceability |
Lots and traceability search |
default |
default |
no |
|
distribution |
Shipments |
default |
default |
no |
|
maintenance |
Equipment, interventions |
default |
default |
no |
|
hse |
HSE and food safety records |
default |
default |
no |
|
cost |
Industrial cost sheets |
default |
default |
no |
|
reporting |
Industrial reporting, AI assistant, KPI API |
default |
- |
- |
|
admin |
Module administration and demo data |
- |
- |
- |
· Every page and every API route is gated by its right group; admins are checked explicitly, never implicitly bypassed
· Multi-entity aware: every query filters on the Dolibarr entity
· All form posts carry a CSRF token validated by Dolibarr's own main.inc.php
· SQL inputs are escaped; API sort fields are whitelisted against the table's real columns
· Dolibarr's native audit trail records user actions; every record stores its author and last modifier
The setup page offers two buttons. 'Install demonstration data' generates a realistic, FK-coherent dataset across the whole object graph. 'Remove demonstration data' deletes only the demonstration data - including records a user created under a demonstration parent, which would otherwise be left orphaned on a dead foreign key. The dataset is versioned, so an improved demo is re-seeded on module upgrade.