-
Notifications
You must be signed in to change notification settings - Fork 116
Core Concepts
This page explains the building blocks of OdooPLM in user terms. For the technical architecture — the revision.plm.mixin, the underlying Odoo models and their roles — see the Architecture Overview in the README, which is the authoritative source. This page won't duplicate it.
OdooPLM extends the standard Odoo product with engineering data. The controlled identity of an engineering item is the pair engineering_code + engineering_revision, which is enforced as unique at the database level. Items carrying an engineering code participate in the revision and release lifecycle; items without one behave like normal Odoo products.
This separation is what powers features such as “only the latest revision is selectable in sale / purchase / manufacturing.”
A PLM document is a CAD file (part, assembly, drawing) or a non-CAD attachment stored in Odoo as an ir.attachment with PLM metadata. Documents:
- carry their own revision and engineering state;
- can be checked out (locked for editing) and checked in by the CAD client;
- maintain parent/child relationships (the 3D assembly tree) between assemblies, sub-parts and drawings.
A revision is a controlled version of a product or document. Instead of overwriting an engineering item, you create a new revision, preserving full history. Each revision runs its own lifecycle, and downstream modules can be configured to reference only the latest released revision. Revisions can be created from the CAD client or from the Odoo web interface (plm_web_revision).
OdooPLM distinguishes:
-
Engineering BOM — the “as designed” structure derived from the CAD assembly (
plm_engineering). - Manufacturing (MRP) BOM — the “as built” structure used by Odoo Manufacturing.
It keeps them aligned: plm_automate_normal_bom can generate a standard MRP BOM from a released engineering structure, and plm_compare_bom diffs two BOMs to show what changed between revisions.
Every versioned PLM object shares a single state machine (engineering_state), defined once on revision.plm.mixin:
| State | Meaning |
|---|---|
| Draft | Work in progress. Freely editable. |
| Confirmed | Submitted for review/approval. |
| Released | Approved and frozen for use in production, sale and purchase. |
| Under modify | A released item reopened to create a new revision. |
| Obsoleted | Superseded / withdrawn (plm_suspended). |
Draft ──confirm──▶ Confirmed ──release──▶ Released ◀──▶ Under modify
│ │
▼ ▼
Obsoleted Released (next rev)
A key property: objects are write-protected once they leave Draft (in confirmed, released, undermodify and obsoleted). To change a released item you must revise it — you can't silently edit it. Transitions can trigger custom workflow actions via plm_workflow_custom_action (built on Odoo base_automation).
OdooPLM is built on top of native Odoo apps, not beside them — PLM products are Odoo products, engineering BOMs feed MRP, the "only latest" modules guard Sale/Purchase/MO, plm_project links engineering to Project, and review steps use Odoo activities (activity_validation). PLM data is first-class ERP data, so it flows through the whole business without duplication.
- ➡️ User Guide — do these things step by step.
- ➡️ Modules Reference — install/licensing notes.
- 📖 README Architecture Overview — model-level detail.
OdooPLM — Open Source PLM/PDM for Odoo · maintained by OmniaSolutions · core plm LGPL-3, add-on modules AGPL-3 · Support: info@omniasolutions.eu
Getting started
Using OdooPLM
Help