Organic Certification Compliance for Odoo Online — SaaS version with no Python code: maintains the traceability required by Regulation (EU) 2018/848: certificates and their validity, plots and production units, inputs and derogations, lots, and a mass balance that refuses to validate an outflow greater than the inflows. Now checks the certificate against the Agence Bio (French organic agency) public directory of operators: a dated verdict with its source, and clean fallback when the register does not respond.
Overview
Organic Certification — DYONYSOS
App for producers, processors and distributors engaged in organic farming, on Odoo 19 Community.
Also searched as: organic certification software, organic farming traceability, organic mass balance, organic inputs register, annual certification body inspection, Regulation (EU) 2018/848.
This module certifies nothing and replaces no organization. It does not issue, suspend or withdraw any certificate: only the approved certification body does that. It keeps no list of products authorized in organic farming. What it does is refuse what does not hold up while it can still be fixed — and, as of this version, record what the Agence Bio public directory publishes about your operator.
It checks the certificate against the Agence Bio public directory (French organic agency)
Until now, the module had users enter a certificate that no one reviewed. It now queries the Agence Bio public directory of certified operators — an open API, with no access key, https://opendata.agencebio.org/api/gouv/operateurs/ — and returns a dated verdict citing its source: is the operator known, with which inspection body is it registered, since when, and was the registration terminated or suspended on a date published in the directory.
What the directory does not publish, the module does not claim. The directory does not publish certificate numbers: the code it returns — FR-BIO-01, FR-BIO-09, FR-BIO-10, FR-BIO-16 — is that of the certification body, not that of the certificate. The module will therefore never say “this certificate number does not exist”: it cannot know that.
The module records findings; it does not draw conclusions. “Not found in the directory” means the directory publishes nothing under that reference on that date — not that the company is at fault. A public register may lag behind a recent notification.
Graceful degradation is the serious part. Directory unreachable, quota exceeded, unexpected format: the module says so, keeps the last known response with its date, and never blocks data entry. Lookups can be switched off with a single checkbox, and they never run on screen: the button queues the request, a scheduled action makes the call.
A chain of sources, and never a dead feature. The directory does not publish certificate numbers, and it does not always respond. Sources are therefore ordered: the directory first — verdict verified at source —, then the paper certificate entered on the record — verdict declared. Users fill in what they have, and the module does the rest. A verified verdict is never overwritten by a declared one.
And provenance is visible everywhere. On the record, in the list, in the filters, in grouping and in exports. The declared verdict itself begins with “Declared verdict” and ends with a reminder that it has not been verified. A manually entered value is never presented as verified: that is what makes the fallback acceptable.
Both coexist, and that is the normal case. When the directory responds, the verdict itself states what remains self-declared: the operator's commitment is verified; the certificate number and its dates never will be.
An outdated response becomes a gap again. Beyond the age you accept — a company setting, since no duration is imposed by Regulation (EU) 2018/848 —, the response no longer proves anything and the lookup starts again on its own.
The mass balance, or why a register is not enough
The simplest and most formidable check in organic certification fits in one sentence: what goes out under an organic label cannot exceed what came in under an organic label. An unexplained discrepancy is the most frequent non-conformity, and it is the one that looks most like fraud even when it is not.
The module calculates this reconciliation over the requested period — opening stock calculated over the entire history, inflows, outflows, closing stock — and refuses to validate a balance with a negative figure, naming the product, the label and the figure. An organic lot can be downgraded and sold as in-conversion or conventional: the module therefore counts, for each label, the label itself and those above it. Otherwise every downgrade — that is, every time the operator does the right thing — would trigger a false alert.
What the module refuses
Certifying a lot is refused, with the complete list of what is missing, if the originating unit is not organic, if no valid certificate covers the lot's production date — not today's date —, or if a non-organic input went into it without a referenced derogation.
Selling with an organic claim is refused if the lot does not carry that claim, or has not yet had it validated by certification. An organic lot still in draft has passed no check: it cannot be sold as organic.
Exceeding the quantity received into a lot is refused, with the exact remaining balance. Reducing, after the fact, the received quantity of a lot that has already been partly shipped out is refused too: the material balance holds in both directions.
Closing an inspection that found a deviation is refused until the follow-up actions have been written down — which is exactly what the next inspection will check.
What is recorded
Certificates with their scope and validity; production units — plots with their area, livestock, processing and storage units — with their organic, in-conversion or conventional status; inputs with their status, the supplier's certificate and, where applicable, the derogation and its reference; lots with their inputs and outputs; certification body inspections with their findings, non-conformities and follow-up actions.
What the module does not do
It issues, suspends and withdraws no certificate. It keeps no list of authorized products or inputs, and never says whether a given commercial fertilizer may be used: that list changes and is the responsibility of your certification body. It does not calculate a plot's conversion period — the certification body notifies it. It transmits nothing to anyone: scheduled tasks post in the chatter of the relevant record; they write to no body and send no email on their own initiative. It does not handle invoicing, inventory in the logistics sense, or the CAP (PAC) declaration.
Two roles
Operator: enters day-to-day data — units, inputs, lots, outputs. Quality manager: maintains the certificates, certifies and downgrades lots, validates the mass balances and tracks the certification body's inspections.
Regulatory basis
Regulation (EU) 2018/848 of the European Parliament and of the Council on organic production and labelling of organic products, which replaced Regulation (EC) 834/2007. The module's labels refer to this regulation without citing any specific article: the wording of the articles and the inspection arrangements change, and a module that cited incorrectly would be worse than one that does not cite at all.
Specifications
| Price | €149 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Online (SaaS) and Odoo.sh |
| Technical name | dyo_certification_bio_online |
| Domain | Industries and services |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.