ADR 0001: CKD to FG Transformation and Asset Identity Regime¶
Status¶
Proposed
Context¶
OVES operates a CKD-based supply model:
- products are shipped as CKD kits from China to Africa
- local assembly operations transform CKD into finished-goods motorcycles
- critical component serials such as chassis, motor, and MCU are only revealed at assembly
The system must support:
- stock integrity during CKD to FG transformation
- deterministic asset identity at vehicle level
- component-level traceability for lifecycle, ABS, IoT, and warranty use cases
- minimal extension of Odoo by using native models where possible
Decision¶
Adopt a unified model named emob-lifecycle-models.
This governs:
- supply and CKD intake
- transformation and assembly
- identity at vehicle and component level
- lineage and lifecycle traceability
- downstream lifecycle integration with ABS and IoT
Scope Definition¶
Lifecycle Model Covers¶
- CKD intake and lot control
- assembly transformation from CKD to FG
- identity and serial regime
- lineage binding from components to vehicle
- integrity and fingerprint validation
- lifecycle hooks for ABS, IoT, and service
- future refurbish, redeploy, and end-of-life flows
Core Principles¶
P1: Traceability Begins At Assembly¶
Component serials are captured when revealed, not forced upstream.
P2: Separate Batch Versus Identity¶
- CKD uses lot-based batch traceability
- FG uses serial-based asset identity
P3: One Asset Equals One Identity Bundle¶
Each vehicle must bind:
vehicle_idchassis_idmotor_idmcu_idckd_lot_id
P4: Odoo Is Transactional SPOT¶
- Odoo owns inventory and manufacturing traceability
- Odoo does not own identity logic or fingerprinting
P5: Identity Must Be Human And Machine Usable¶
vehicle_idis human-readablefingerprint_hashis machine-verifiable
System Architecture¶
| Layer | Responsibility |
|---|---|
| Odoo | Inventory, MO, and lot or serial traceability |
| Assembly Operations | Capture real-world component IDs |
| Lifecycle or Service Layer | Identity validation, fingerprint, and lifecycle logic |
CKD To FG Transformation Model¶
Inventory Structure¶
| Stage | Tracking Method | Purpose |
|---|---|---|
| CKD Import | Lot tracking | Batch traceability |
| Assembly | Manual capture of component IDs | Identity formation |
| FG Output | Serial tracking with vehicle_id |
Lifecycle anchor |
Manufacturing Flow¶
- Receive CKD shipment and assign
ckd_lot_id. - Create a manufacturing order.
- Consume CKD components using lot-based traceability.
- At assembly, capture component serials.
- Produce the FG motorcycle and assign
vehicle_id. - Complete the manufacturing order.
Key Clarification¶
CKD components do not need to be pre-serialized in inventory. Serial capture occurs at the assembly station, and traceability is established after revelation.
Identity And Serial Regime¶
Component Identity Inputs¶
Captured during assembly:
chassis_idmotor_idmcu_id
Vehicle Identity¶
Define a human-readable unique vehicle serial such as:
OV-KE-2026-MC-000123
Store it as the FG serial in Odoo.
Identity Binding Record¶
Each FG must bind:
| Field | Description |
|---|---|
vehicle_id |
FG serial |
chassis_id |
Frame serial |
motor_id |
Motor serial |
mcu_id |
Controller serial |
ckd_lot_id |
Source CKD batch |
Integrity And Fingerprint Model¶
Purpose¶
Detect part substitution, tampering, and lifecycle inconsistencies.
Fingerprint Definition¶
fingerprint_hash = SHA256(
chassis_id | motor_id | mcu_id | vehicle_id | salt | version
)
Design Rules¶
- it is not used as the vehicle serial
- it is stored in the lifecycle or external system
- it is versioned for future schema changes
- it is salted for security
Operational SOP¶
- Record CKD lot at receipt.
- Issue CKD lot to the assembly line.
- Capture
chassis_id,motor_id, andmcu_idduring assembly. - Generate or assign
vehicle_id. - Link all IDs into one identity bundle.
- Complete the manufacturing order, consuming CKD lot and producing FG serial.
Control Rules¶
- no FG without
vehicle_id - no
vehicle_idwithout component capture - one vehicle equals one identity bundle
- CKD remains lot-based and is not forced into upstream serialization
Consequences¶
Benefits¶
- minimal disruption to the supply chain
- clean Odoo-native implementation
- strong downstream traceability
- support for ABS contract binding, warranty tracking, IoT asset mapping, and tamper validation
Trade-Offs¶
- no pre-assembly component traceability
- strict assembly discipline is required
- fingerprinting needs external or lifecycle-layer logic
Future Extensions¶
- battery serial integration for swap pools
- configuration versioning
- refurbish and redeploy flows
- automated barcode and scan workflows at assembly