Discover powerful Dolibarr extensions designed to automate your business processes

Cheese Factory Manager turns Dolibarr ERP & CRM into a complete, specialised solution for running an industrial cheese factory. It covers the entire value chain — milk collection, reception and quality control, cheese making, ripening, packaging, storage, shipping, costing and reporting — so that a dairy no longer needs a separate agri-food ERP alongside Dolibarr.
· Artisan cheese dairies
· Industrial cheese factories
· Dairy cooperatives
· PDO/AOP cheese producers
· Milk processing units
· Fresh cheese manufacturers
· Ripened cheese manufacturers
Milk producers → Milk reception → Quality control → Cheese transformation → Production → Ripening → Packaging → Storage → Distribution → Customers
|
Domain |
Covered features |
|
Milk supply |
Producers, supply contracts, collection rounds, plant reception, acceptance decision |
|
Quality laboratory |
Milk analyses (fat, protein, acidity, pH, density, germ count), cheese analyses (humidity, salt, texture, aspect, microbiology), non-conformities |
|
Ingredients |
Cultures and ferments, rennet, salt, additives, flavourings, supplier lots, use-by dates, stock |
|
Recipes |
Versioned recipe library, ingredient dosages, process parameters, yields, validation |
|
Production (MES) |
Production orders, vats, the ten process steps, real yield, losses, cost |
|
Ripening |
Ripening caves, shelf positions, entry/exit dates, turnings, ripening loss, quality grade |
|
Cold chain |
Cold rooms, target vs current temperature and humidity, capacity and occupancy |
|
Packaging |
Packaging lines, formats (portion, wheel, tray, carton), yield and losses, use-by date |
|
Traceability |
Lots with upstream, internal and downstream traceability, instant lot search |
|
Stock & shipping |
Finished-goods stock by lot and cold room, valuation, customer shipments |
|
Maintenance (CMMS) |
Equipment register, preventive and corrective interventions, downtime, cost |
|
Food safety HSE |
Audits, incidents, hygiene checks, HACCP critical points, action plans |
|
Industrial costing |
Milk, ingredient, energy, labour, maintenance, packaging and overhead costs; cost per kg; margin |
|
IoT |
Temperature and humidity sensors, measure history, thresholds and alerts |
|
Artificial intelligence |
Production forecast, recipe optimisation, anomaly detection, quality assistant |
|
Reporting |
Eight reports exportable to PDF, Excel, Word and CSV |
The module is organised into seven cooperating engines, all built on Dolibarr's native CommonObject framework and sharing one generic list/card engine, one object registry and one multilingual dictionary.
|
Engine |
Responsibility |
Main objects |
|
Milk Supply Engine |
Producers, collection, contracts, milk quality |
cfmproducer, cfmcontract, cfmcollection, cfmreception |
|
Cheese Production Engine |
Recipes, manufacturing, cheese process |
cfmrecipe, cfmrecipeline, cfmvat, cfmproduction, cfmprocessstep |
|
Ripening Management Engine |
Ripening, caves, maturation times |
cfmcave, cfmripening, cfmcoldroom |
|
Quality Management Engine |
Analyses, controls, non-conformities |
cfmanalysis, cfmnonconformity |
|
Traceability Engine |
Lots and full traceability |
cfmlot, cfmpackaging, cfmstock, cfmshipment |
|
Cost Management Engine |
Manufacturing costs and margins |
cfmcost |
|
Reporting Intelligence Engine |
KPIs, analyses, reports, AI |
reporting.php, ai.php, dashboard.php |
· Module number 519400, rights class 'cheesefactorymanager', 25 business objects, 35 granular permissions.
· Tables are prefixed llx_cfm_*; every object is multi-entity managed and carries entity, status, creation/modification stamps and an import_key used by the demonstration dataset.
· A schema self-heal runs on activation: Dolibarr only CREATEs tables, never ALTERs them, so missing columns are added automatically on upgrade.
· Every user-visible language key is prefixed (Cfm...), which removes any possibility of a cross-module translation collision in Dolibarr's merged translation table.
· Presentation follows the DoliResources house style: in-page tab bar, KPI cards, modern dashboard hero, and a charter of milk white, cold blue, cheese beige, quality green and production orange.
|
Native module |
Integration |
|
Third parties |
Milk producers are linked to supplier records; customers to shipments |
|
Products |
Ingredients and finished goods link to native product records |
|
Stock |
Cold rooms link to native warehouses |
|
Purchase / Sales |
Producers and customers reuse the native purchase and sales cycles |
|
Projects / Agenda |
Available on every object through the standard Dolibarr mechanisms |
|
API |
Routes are exposed through the native REST API module |
The module implements a Manufacturing Execution System dedicated to cheese making. A production order carries a recipe, a vat and a cheese lot, and moves through ten process stages.
|
# |
Stage |
Recorded data |
|
1 |
Milk preparation |
Volume, temperature, standardisation |
|
2 |
Seeding |
Culture strain and dosage |
|
3 |
Curdling |
Rennet dosage, curdling temperature and time |
|
4 |
Curd cutting |
Duration, curd grain size |
|
5 |
Draining |
Duration, pH |
|
6 |
Moulding |
Number of moulds, unit weight |
|
7 |
Pressing |
Pressing time and pressure |
|
8 |
Brining |
Brining time, salt concentration |
|
9 |
Ripening |
Cave, temperature, humidity, turnings |
|
10 |
Packaging |
Format, net weight, use-by date |
Every step records its date, duration, temperature, pH, operator and an observation, which constitutes the internal traceability of the process.
The real yield is computed as weight produced ÷ milk used, and compared with the recipe's target yield. The gap is expressed in yield points and is the primary lever of the recipe optimisation engine.
The laboratory handles two analysis families:
|
Milk analysis |
Cheese analysis |
|
Fat content (g/L) |
Humidity (percent) |
|
Protein (g/L) |
Salt (percent) |
|
Acidity (°D) |
Texture |
|
pH |
Aspect |
|
Density |
Microbiology |
|
Total germ count (CFU/mL) |
pH |
Each analysis carries a sample, a lot, a result (conform, derogation, non-conform, pending), a technician and a laboratory validation flag.
· Type, severity, affected lot, detection date and declarant.
· Root cause and corrective action are documented, with a closing date.
· The financial impact is quantified and feeds the cost-of-non-quality analysis.
· HSE events cover audits, incidents, hygiene checks, controls and training.
· Each event references the relevant HACCP critical control point.
· Severity, zone, action plan and closing date ensure follow-up to resolution.
· Temperature and humidity sensors are attached to ripening caves and cold rooms.
· Supported protocol references include MQTT, LoRaWAN and Modbus.
· A reading outside the configured thresholds switches the sensor to alert and surfaces on the dashboard and in the AI assistant.
Full food traceability is reconstructed on a single page from any lot, milk lot or producer reference. This answers a withdrawal or recall request in seconds.
|
Direction |
Identifies |
|
Upstream |
Milk producers, milk lots, ingredient lots (with supplier lots) |
|
Internal |
Production order, vat, recipe, process steps, ripening cave, laboratory analyses |
|
Downstream |
Packaging, finished-goods stock, shipments, customers, quantities sold |
The traceability page accepts a cheese lot, a milk lot or a producer reference and rebuilds the whole chain, with clickable links to every related record. The same chain is available as JSON through the REST API.
The module exposes an industrial REST API so laboratory instruments, IoT gateways and shop-floor equipment can push data into the factory, and so external systems can read the traceability chain.
The API uses Dolibarr's native REST authentication. Every request must carry a DOLAPIKEY header holding the API key of a Dolibarr user. Permissions are enforced per right group; an invalid key returns HTTP 401.
|
Method |
Route |
Purpose |
|
GET |
/api/index.php/cheesefactorymanager/kpi |
Live factory KPIs (milk collected, cheese produced, yield, conformity, stock, alerts) |
|
GET |
/api/index.php/cheesefactorymanager/traceability/{ref} |
Full traceability chain of a cheese lot as JSON |
|
GET |
/api/index.php/cheesefactorymanager/objects/{key} |
Generic list of any business object (paged, sortable) |
|
GET |
/api/index.php/cheesefactorymanager/objects/{key}/{id} |
Read one record |
|
POST |
/api/index.php/cheesefactorymanager/objects/{key} |
Create one record |
|
POST |
/api/index.php/cheesefactorymanager/analyses |
Push a laboratory analysis result (LIMS / instrument) |
|
POST |
/api/index.php/cheesefactorymanager/measures |
Push an IoT measure; refreshes the sensor value and alert state |
curl -H "DOLAPIKEY: <key>" -H "Content-Type: application/json" \
-d '{"fk_sensor": 13, "value_num": 12.4}' \
https://<host>/api/index.php/cheesefactorymanager/measures
→ {"id": 218, "sensor_state": "ok", "last_value": 12.4}
The endpoint compares the value with the sensor thresholds, flags the measure as in-range or not, and updates the sensor's last value, last-seen timestamp and alert state so dashboards and the AI assistant reflect the reading immediately.
· Sort fields are whitelisted against the table's real columns, so no user input reaches SQL unquoted.
· Every route enforces the right group of the object it touches (read / write / delete).
· The authenticated caller is the API user, never an implicit administrator.
The module declares 35 permissions across 11 functional groups, plus reporting and administration. Read and write are granted by default so the module is usable immediately after activation; delete and administration are not.
|
Group |
Scope |
|
milk |
Producers, contracts, collection, reception |
|
quality |
Laboratory analyses, non-conformities |
|
recipe |
Recipes and ingredients |
|
production |
Production orders and vats |
|
ripening |
Ripening, caves, cold rooms, IoT sensors |
|
packaging |
Packaging operations |
|
traceability |
Lots and food traceability |
|
stock |
Finished-goods stock and shipments |
|
maintenance |
Equipment and maintenance |
|
hse |
Food safety HSE |
|
cost |
Industrial costs |
|
reporting |
Reports and AI assistant (read only) |
|
admin |
Module administration |
· Every list, card and bespoke page checks the right group of the object before rendering.
· Create, modify and delete actions are gated independently of read access.
· Multi-entity: every query is filtered by entity, so data is isolated between companies.
· Every record stores its creation date, author, last modification timestamp and modifying user.
· Status transitions (draft, active, closed, cancelled) are explicit and user-driven.
· Laboratory analyses carry a technician and a validation flag, which documents responsibility for a result.
· Non-conformities and HSE events record the declarant, the root cause, the action plan and the closing date.
· Module activity is written to the Dolibarr system log through dol_syslog.
· All inputs pass through Dolibarr's GETPOST filters, typed per field.
· SQL values are escaped through the database abstraction layer; sort fields are whitelisted.
· Forms carry a CSRF token validated by Dolibarr's main include.
|
Parameter |
Default |
Purpose |
|
CFM_MILK_PRICE_LITER |
0.42 |
Reference milk price per litre used in costing |
|
CFM_DLC_ALERT_DAYS |
21 |
Days before use-by date that triggers the stock rotation alert |
|
CFM_TARGET_YIELD |
10 |
Plant target yield (percent) |
|
CFM_CONFORMITY_TARGET |
95 |
Quality conformity objective (percent) |
The configuration page provides two buttons, as required:
· Load demonstration data — creates producers, milk lots, recipes, productions, ripenings, analyses and stock, as a fully FK-coherent dataset so dashboards, charts, traceability and reports are immediately meaningful.
· Delete demonstration data — removes only the demonstration data. Records are tagged with an import key, and the purge also cascades to records a user created under a demonstration parent, so no orphan is left behind.
The dataset is versioned: raising the dataset version re-seeds an improved demonstration set on upgrade, which a simple boolean guard could never do.
The module ships complete translations in French, English, Spanish, Italian and German (408 keys each).
|
Object |
Table |
Purpose |
|
cfmproducer |
llx_cfm_producer |
Milk producer (farm, breeder, cooperative) |
|
cfmcontract |
llx_cfm_contract |
Milk supply contract |
|
cfmcollection |
llx_cfm_collection |
Milk collection round |
|
cfmreception |
llx_cfm_reception |
Milk reception at the plant |
|
cfmanalysis |
llx_cfm_analysis |
Laboratory analysis (milk or cheese) |
|
cfmnonconformity |
llx_cfm_nonconformity |
Non-conformity |
|
cfmingredient |
llx_cfm_ingredient |
Ingredient, culture, rennet, salt, additive |
|
cfmrecipe |
llx_cfm_recipe |
Cheese recipe |
|
cfmrecipeline |
llx_cfm_recipe_line |
Recipe ingredient line |
|
cfmvat |
llx_cfm_vat |
Production vat / milk tank |
|
cfmproduction |
llx_cfm_production |
Cheese production order |
|
cfmprocessstep |
llx_cfm_process_step |
Process step of a production |
|
cfmcave |
llx_cfm_cave |
Ripening cave |
|
cfmripening |
llx_cfm_ripening |
Ripening batch in a cave |
|
cfmcoldroom |
llx_cfm_coldroom |
Cold room |
|
cfmpackaging |
llx_cfm_packaging |
Packaging operation |
|
cfmlot |
llx_cfm_lot |
Traceability lot |
|
cfmstock |
llx_cfm_stock |
Finished-goods stock |
|
cfmshipment |
llx_cfm_shipment |
Customer shipment |
|
cfmequipment |
llx_cfm_equipment |
Industrial equipment |
|
cfmmaintenance |
llx_cfm_maintenance |
Maintenance intervention |
|
cfmhse |
llx_cfm_hse |
Food safety HSE event |
|
cfmcost |
llx_cfm_cost |
Industrial cost record |
|
cfmsensor |
llx_cfm_sensor |
IoT sensor |
|
cfmmeasure |
llx_cfm_measure |
IoT measure |
© 2026 DoliResources — www.doliresources.com