Skip to content

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:

  1. stock integrity during CKD to FG transformation
  2. deterministic asset identity at vehicle level
  3. component-level traceability for lifecycle, ABS, IoT, and warranty use cases
  4. 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_id
  • chassis_id
  • motor_id
  • mcu_id
  • ckd_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_id is human-readable
  • fingerprint_hash is 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

  1. Receive CKD shipment and assign ckd_lot_id.
  2. Create a manufacturing order.
  3. Consume CKD components using lot-based traceability.
  4. At assembly, capture component serials.
  5. Produce the FG motorcycle and assign vehicle_id.
  6. 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_id
  • motor_id
  • mcu_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

  1. Record CKD lot at receipt.
  2. Issue CKD lot to the assembly line.
  3. Capture chassis_id, motor_id, and mcu_id during assembly.
  4. Generate or assign vehicle_id.
  5. Link all IDs into one identity bundle.
  6. Complete the manufacturing order, consuming CKD lot and producing FG serial.

Control Rules

  • no FG without vehicle_id
  • no vehicle_id without 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