📄 Download PDF
📄 Download PDF
IDEN
Product Lifecycle Management on XERPIUM 18

XERPIUMPLM

Engineering Change Orders, BOM Versioning, Approval Workflow — Built for Manufacturers

3 Integrated Modules
7 Model PLM
4 ECO Stages
6 Dashboard KPI

Product Lifecycle Management Enterprise-Grade

XERPIUM PLM is a product lifecycle management module ecosystem built on XERPIUM 18 — covering Engineering Change Orders (ECO), BOM Revision Control, Approval Workflow, Document Management, and KPI Dashboard.

⚙
ECO
Engineering Change Order
☰
BOM
Version Control
✅
APR
Approval Workflow
📄
DOC
Document Management
📊
BI
KPI Dashboard
🏭
MRP
Manufacturing Sync
🔗
DYN
Dynamic Stage Engine
📦
MULTI
Company / Branch

ECO — Core of Product Lifecycle Management

xerpium.plm.eco is the main model that manages the entire engineering change lifecycle — from draft, review, approval, to apply.

ECO Stage Pipeline

Stage 1
Draft
state: confirmed
→
Stage 2
In Review
state: progress
→
Stage 3
Approved
state: progress
→
Stage 4
Applied
state: done
⚙

ECO Core Features

  • Auto-Sequence — ECO/##### reference auto-generated via ir.sequence
  • Description & Priority — Normal / High priority with tracking
  • Change Type — Apply on Bill of Materials or Product Only
  • Effectivity — As soon as possible or At Date (effective date)
  • Tags & Color — ECO categorization with colored tags
  • Kanban State — Normal / Approved / Blocked for visual tracking
☰

ECO Type & Mail Alias

  • ECO Types — Change category (e.g. "BOM Change", "Product Update")
  • Stage Mapping — Each type can have its own set of stages
  • Mail Alias — Email to alias automatically creates an ECO with that type
  • Smart Counters — nb_ecos, nb_approvals, nb_approvals_my, nb_validation
  • Company-Scoped — Multi-company support per ECO type
🔄

BOM Revision & Apply

  • Start Revision — Copy BOM ke working copy, version +1, active=False
  • Previous BOM Link — Chain previous_bom_id for audit trail
  • Apply Changes — Activate new BOM, deactivate old, sync operation documents
  • Version Toggle — will_update_version flag — apply without bumping the version
  • Product Versioning — Auto-increment product.template.version on apply
⚡

Change Impact Analysis

  • Component Changes — Auto-diff add/remove/update with quantity & UoM delta
  • By-Product Changes — By-product change tracking on BOM
  • Operation Changes — Routing/workcenter changes with time cycle delta
  • Color-Coded — Green=add, Red=remove, Blue=update in form view
  • Rebase Tracking — previous_change_ids & bom_rebase_ids for conflicts
🏭

Manufacturing Integration

  • Create ECO from MO — One-click from Manufacturing Order, auto-fill BOM & product
  • MO ↔ ECO Link — production_id on ECO, eco_ids on MO
  • BOM ↔ ECO Link — eco_ids & eco_count on mrp.bom
  • Product ↔ ECO Link — eco_ids & action_view_ecos() on product.template
  • Operation Documents — Sync documents to new BOM operations on apply
⚠

Rebase & Conflict Handling

  • Rebase State — state='rebase' when the upstream BOM changes while an ECO is in progress
  • Conflict State — state='conflict' for manual resolution
  • Intermediate BOM — current_bom_id for tracking mid-ECO changes
  • Rebase Diff — bom_rebase_ids & previous_change_ids auto-compute
  • Audit Trail — Full changelog via mail.thread chatter

Role-Based Approval Engine

Every ECO stage can have approval templates of mandatory, optional, or comment-only type. Stage advancement is blocked until all mandatory approvals are met.

Default Approval Templates — In Review Stage

👨‍💼
Engineering Manager
MANDATORY
Sequence: 10
✅
Quality Assurance
MANDATORY
Sequence: 20
📋
Production Planner
OPTIONAL
Sequence: 30

Approval Template

FieldDescription
nameRole / approval name (e.g. "Engineering Manager")
sequenceApproval order within stage
approval_typemandatory / optional / comment
user_idsUsers who can approve (restricted to PLM User group)
stage_idStage where this template applies

Approval Record

FieldDescription
eco_idECOs awaiting approval
approval_template_idTemplate reference
statusnone / comment / approved / rejected
user_idWho approved/rejected
approval_dateTimestamp approval
is_closedApproval closed on stage change
✅

Approval Mechanism

  • Auto-Generate — _create_approvals() creates approval records + mail activities
  • Stage Gating — Stage advance is blocked if mandatory approvals are not complete
  • User Restriction — approve/reject only for users in template.user_ids
  • Stage Transition — Moving stage menutup processed approvals, menghapus pending
  • Mail Activities — Auto-create todo activities for approvers
⚠

Approval Types

  • Mandatory — Must approve before stage can advance. is_approved = (status == 'approved')
  • Optional — Can approve but non-blocking. is_approved is always True
  • Comment — Comment only, does not affect approval status
  • Constraint — A user may not be assigned more than once per stage

Approval & Stage Gating Flow

Create ECO
→
Auto-Generate Approvals
→
Mail Activities Sent
→
Approve / Reject
Stage Advance Blocked?
→
All Mandatory Approved
→
Stage Advanced
→
Apply Changes

Dynamic Stage Workflow

Configurable stage framework for ECO — with Python hooks, server actions, RBAC groups, and approval template integration.

Pipeline Workflow

Stage Enter
→
Python Hook
→
Server Action
→
RBAC Check
→
State Sync

ECO Stages Configuration

StageStateConfirmBackApply
Draftconfirmed✓✗✗
In Reviewprogress✓✓✗
Approvedprogress✗✓✓
Applieddone✗✗✗

Dynamic Stage Features

  • Configurable per Model — Independent stages for xerpium.plm.eco
  • Python Hooks — enter_method runs when a record enters the stage
  • Server Actions — ir.actions.server automatically on stage enter
  • RBAC Groups — group_ids restricts who can move to the stage
  • Native State Sync — Auto-sync stage ↔ state field (confirmed/progress/done)
  • Back Navigation — allow_back for moving back a stage (configurable)
  • Approval Templates — approval_template_ids on stage (via xerpium_dynamic_stage_plm)
  • Default Stage — is_default auto-assigned on new record

Module: xerpium_dynamic_stage_plm

Integration module that adds approval_template_ids ke xerpium.dynamic.stage and syncs the ECO stage after action_new_revision() and action_apply().

# xerpium_dynamic_stage_plm/models/xerpium_dynamic_stage.py class XerpiumDynamicStage(models.Model): _inherit = "xerpium.dynamic.stage" approval_template_ids = fields.One2many( "xerpium.plm.eco.approval.template", "stage_id", string="Approval Templates", ) # xerpium_dynamic_stage_plm/models/xerpium_plm_eco.py class XerpiumPlmEco(models.Model): _inherit = "xerpium.plm.eco" def action_new_revision(self): result = super().action_new_revision() self._x_sync_stage_from_state(force=True) return result

PLM Document System

xerpium.plm.document — polymorphic document system that can attach to ECO, BOM, Product, or routing operation.

📎

File (PDF, Images)

  • Upload via ir.attachment
  • Mimetype auto-detect
  • Copy on BOM revision
  • Cover image for ECO
🔗

External Link

  • Google Slides, external URL
  • widget="url" in forms
  • action_open_link()
  • No file upload needed
📝

Text Note

  • Plain text content
  • Inline editing in forms
  • Quick notes / instructions
  • No attachment required

Document Attachment Points

TargetFieldNotes
ECOres_model + res_idSupporting documents for the change
BOMbom_idBOM engineering documents
Productproduct_tmpl_idSpec sheet, datasheet
Operationbom_operation_idSOP per routing operation
Both BOM & Productattached_on_mrpShared documents

Document Features

  • Polymorphic — res_model + res_id, attach to any model
  • Kanban View — Card renders differently per doc_type (file/link/text)
  • Operation Documents — bom_operation_id for SOP per operation
  • Sync on Apply — _sync_operation_documents() copies documents to new BOM
  • Cover Image — displayed_image_id for ECO cover
  • Copy with Attachment — copy() duplicates ir.attachment for file-type
  • Multi-Company — company_id isolation

BOM & Product Versioning

Integrated versioning system for BOMs and Products — every ECO apply can automatically bump the version.

BOM Revision Flow

Step 1
Start Revision
action_new_revision() — copy BOM ke working copy:
new_bom = bom.copy({
  version: bom.version + 1,
  active: False,
  previous_bom_id: bom.id
})
🔄
Step 2
Edit Working Copy
Edit new_bom (inactive). Auto-compute change diff:
ADD — new components
REMOVE — components removed
UPDATE — qty / UoM changed
✎
Step 3
Apply Changes
action_apply() — activate new BOM, deactivate old:
new_bom.active = True
old_bom.active = False
product.version += 1 # if will_update_version
_sync_operation_documents(new_bom)
✅

BOM Version Fields

FieldTipeDescription
versionIntegerVersion number, auto-increment on revision
previous_bom_idMany2oneLink to previous BOM version
is_revisionBooleanTrue if the BOM is a working copy of an ECO
eco_idsOne2manyECOs referencing this BOM
document_idsOne2manyRelated engineering documents

Product Version Fields

FieldTipeDescription
versionIntegerProduct version, auto-increment on ECO apply (change_type='product')
eco_idsOne2manyECOs referencing this product
eco_countIntegerNumber of related ECOs (computed)

Change Tracking — BOM Diff Computation

ECO automatically computes the differences between the old BOM and the new BOM using _get_difference_bom_lines():

➕
ADD
New component added to BOM
➖
REMOVE
Component removed from BOM
✎
UPDATE
Qty or UoM changed

PLM KPI Dashboard

xerpium_dashboard_plm — KPI dashboard with 6 widgets, dual data source (ORM + SQL), auto-refresh every 5 minutes.

📊
6
Dashboard Items
⚙
2
Data Sources
📊
4
KPI Tiles
📊
2
Charts

Dashboard Items

WidgetTipeColorSource
Total ECOsKPI TileBlueORM
Pending ApprovalsKPI TileOrangeSQL
Active BOMsKPI TileGreenSQL
Versioned ProductsKPI TilePurpleSQL
ECOs by StagePie ChartBlueSQL
ECO Trend (12 months)Line ChartGreenSQL

Dashboard Features

  • Auto-Refresh — 300-second (5-minute) refresh interval
  • Auto-Apply Filters — Automatic filter when dashboard opens
  • Dual Source — ORM source (ECOs, BOMs, Products) + SQL source (aggregates)
  • Green Theme — Green color theme consistent with PLM branding
  • Global Dashboard — visible to all PLM users
  • Built on Dashboard Studio — vit_dashboard_studio infrastructure

SQL Sources

ECOs by Stage
SELECT stage_id, COUNT(*)
FROM xerpium_plm_eco
WHERE active = true
GROUP BY stage_id
ECO Trend (12 months)
SELECT DATE_TRUNC('month', create_date),
  COUNT(*)
FROM xerpium_plm_eco
WHERE create_date >= NOW() - INTERVAL '12 months'
GROUP BY 1 ORDER BY 1

Cross-Module Integration

PLM fully integrated with the XERPIUM manufacturing ecosystem.

🏭

PLM ↔ Manufacturing (MRP)

  • Create ECO from MO — One-click from Manufacturing Order
  • MO ↔ ECO — production_id link, eco_ids on MO
  • BOM Version Control — ECO apply activate new BOM version
  • Operation Sync — SOP documents synced to new BOM operations
  • Work Center Documents — mrp.routing.workcenter.document_ids
📦

PLM ↔ Product

  • Product Version — product.template.version auto-increment
  • ECO History — eco_ids & action_view_ecos() on product form
  • ECO Notebook — ECOs tab on product form
  • Document Attach — Spec sheet, datasheet per product
📊

PLM ↔ Dashboard Studio

  • KPI Dashboard — vit_dashboard_studio hosting
  • ORM + SQL Sources — Dual data source
  • Auto-Refresh — 5 minute interval
  • Chart Types — Tile, Pie, Line, dll
🔗

PLM ↔ Dynamic Stage

  • Configurable Stages — Data-driven, not hard-coded
  • Approval Templates — approval_template_ids on stage
  • Python Hooks — enter_method per stage
  • RBAC Groups — group_ids per stage
  • State Sync — Auto-sync stage ↔ native state
📧

PLM ↔ Mail Thread

  • Chatter — Full audit trail per ECO
  • Mail Activities — Auto-generate todos for approvers
  • Mail Alias — Email ke alias auto-create ECO
  • CC Tracking — mail.thread.cc inheritance
🏢

PLM ↔ Multi-Company

  • Company Isolation — Record rule per company_id
  • Company on ECO — company_id field with default
  • Company on Document — Multi-company document isolation
  • Company on ECO Type — Per-company type configuration

Security & Access Control

Two-tier access control with multi-company isolation and granular per-model permissions.

Security Groups

GroupImpliesAccess Rights
PLM UserMRP UserR W C (no delete) on ECO & Document
PLM ManagerPLM UserFull CRUD for all PLM models

Record Rules

  • Multi-Company ECO — company_id in user's company_ids
  • Multi-Company Document — company_id isolation for documents
  • User ECO Rule — R W C, no delete for PLM Users
  • Manager ECO Rule — Full CRUD for PLM Managers

Access Matrix per Model

ModelPLM UserPLM Manager
xerpium.plm.ecoR W CFull CRUD
xerpium.plm.eco.typeRead onlyFull CRUD
xerpium.plm.eco.approvalR WFull CRUD
xerpium.plm.eco.approval.templateRead onlyFull CRUD
xerpium.plm.eco.bom.changeRead onlyFull CRUD
xerpium.plm.eco.routing.changeRead onlyFull CRUD
xerpium.plm.eco.tagRead onlyFull CRUD
xerpium.plm.documentR W CFull CRUD
vit.dashboardRead onlyFull CRUD

PLM Navigation

PLM (sequence: 170, icon: xerpium_plm) ├── Dashboard (seq: 5, vit.dashboard) ├── Changes (seq: 10, ECO action) │ └── ECO Kanban / List / Form ├── Master Data (seq: 20) │ ├── Products (product.template) │ ├── Bill of Materials (mrp.bom) │ └── Work Centers (mrp.workcenter) ├── Configuration (seq: 90, group_plm_manager) │ ├── ECO Types (xerpium.plm.eco.type) │ └── ECO Tags (xerpium.plm.eco.tag) └── User Guide (seq: 999, HTML user guide)

ECO Kanban

Grouped by stage, drag-and-drop, priority widget, responsible avatar

ECO List

Code, name, product, BOM, responsible, tags, stage, state, effectivity date

ECO Form

Header buttons, stat buttons, notebooks for changes, approvals, documents

PLM Architecture Model

7 PLM models + 4 inherited models with full integration into the MRP ecosystem.

PLM Models

ModelDescription
xerpium.plm.ecoEngineering Change Order — main model
xerpium.plm.eco.typeECO Type with mail alias
xerpium.plm.eco.approvalApproval record per ECO
xerpium.plm.eco.approval.templateTemplate approval per stage
xerpium.plm.eco.bom.changeBOM line/byproduct change tracking
xerpium.plm.eco.routing.changeRouting/operation change tracking
xerpium.plm.eco.tagECO tag with color
xerpium.plm.documentPolymorphic document (file/link/text)

Inherited Models

ModelAdditional Fields
product.templateversion, eco_ids, eco_count
product.producteco_ids, eco_count
mrp.bomversion, previous_bom_id, is_revision, eco_ids, document_ids
mrp.bom.line_get_sync_values() for diffing
mrp.bom.byproduct_get_sync_values() for diffing
mrp.routing.workcenterdocument_ids, document_count
mrp.productioneco_ids, eco_count, action_create_eco()
xerpium.dynamic.stageapproval_template_ids (via _plm module)

Module Dependencies

xerpium_plm
Application — Core PLM
xerpium_dynamic_stage_plm
Integration — Stage + Approval
xerpium_dashboard_plm
Reporting — KPI Dashboard

Why XERPIUM PLM?

Aspect Competitor PLM XERPIUM PLM
License Per-user / add-on fee SaaS / On Premise
ECO Workflow Enterprise only ✓ Included
BOM Version Control Enterprise only ✓ Full versioning
Approval Workflow Limited / Enterprise ✓ Role-based, stage-gated
Dynamic Stage ✗ Hard-coded ✓ Configurable per model
Document Management Separate module ✓ Built-in (file/link/text)
Manufacturing Integration Limited ✓ One-click ECO from MO
Change Impact Analysis Manual ✓ Auto-diff BOM lines
KPI Dashboard ✗ Not available ✓ 6 widgets, auto-refresh
Mail Alias ✗ Not available ✓ Email-to-ECO
Multi-Company Enterprise only ✓ Included
Rebase & Conflict ✗ Not available ✓ State: rebase / conflict
User Guide External documentation ✓ Built-in HTML guide
Try nowContact