Odoo Lot / Serial Numbers: Physical Asset Identity¶
Purpose: Explain how Odoo's Lot/Serial constructs represent specific physical items and serve as the anchor for asset-service binding.
Audience: Developers, operations teams, ABS integration engineers.
1. What Problem Lot / Serial Numbers Solve¶
In Odoo, products are generic definitions, not physical things.
- A Product answers: What is this?
- A Lot / Serial Number answers: Which exact one is this?
Lot/Serial constructs are Odoo's only intrinsic, first-class mechanism to represent individual physical instances of a product without inventing new models.
2. Core Concepts¶



2.1 Product (Generic Definition)¶
Defines type, specifications, pricing, BoM, category
Example: * "Electric Motorcycle E3H" * "Home Energy System 1.2kWh"
A product does not represent an owned asset.
2.2 Lot / Serial Number (Physical Identity)¶
A Lot / Serial Number represents a specific physical instance of a product.
Key properties: * Belongs to exactly one product * Created when: * Manufactured * Received * Or manually assigned * Moves through inventory with stock operations
Mapping to OVES terminology: * VIN → Serial Number * ProductItemID → Serial Number * Battery Pack ID → Serial Number
Principle: If something can be pointed at in the real world, it should be a Serial Number in Odoo.
2.3 Lot vs Serial¶
| Concept | Meaning | Typical Use |
|---|---|---|
| Serial Number | One unique ID per physical unit | Vehicles, batteries, electronics |
| Lot Number | One ID shared by many identical units | Bulk items, batches |
For asset-based services, always use Serial Numbers, even if Odoo's UI calls the model stock.lot.
3. Data Model Position¶



Conceptual structure:
Product
|
| 1:N
v
Lot / Serial Number
|
| flows through
v
Stock Moves / Pickings
Key points: * The Lot/Serial is not owned by Sales * It is owned by Inventory * Sales only reference it indirectly through delivery
This separation aligns well with asset-service architecture.
4. Lifecycle of a Physical Asset¶
Canonical lifecycle for a specific physical item:
Step 1: Product is defined¶
- Category: Goods
- Tracking: By Serial Number
- No asset exists yet
Step 2: Serial is created¶
Happens when: * Manufacturing order completes * Vendor receipt is validated * Asset is imported into stock
At this point: * The serial exists * It is unowned, sitting in a location
Step 3: Sales Order is confirmed¶
- Still generic
- No serial binding required yet
Step 4: Delivery (Stock Picking)¶
Critical moment:
- A specific serial is selected
- The serial moves from:
- Warehouse → Customer location
- Ownership is implicitly transferred
This is the first moment Odoo can say:
"This exact physical thing now belongs to this customer."
Step 5: Traceability Becomes Immutable History¶
After delivery, Odoo knows: * Customer * Product * Serial * Date * Sales Order * Invoice
This record is auditable and stable, making it ideal as the trigger point for ABS service binding.
5. Why Lot / Serial Is the Right Anchor for ABS Integration¶
ABS system requirements: * Which exact asset * Owned by which customer * At what time * Under what service plan
Odoo Lot/Serial provides, without customization:
| ABS Requirement | Native Odoo Source |
|---|---|
| Asset identity | stock.lot (Serial) |
| Customer | res.partner via delivery |
| Sale context | sale.order |
| Commercial intent | sale.order.line |
| Ownership event | stock.picking (done) |
The serial number is the perfect join key between Odoo and ABS.
6. What Lot / Serial Is Not¶
Lot/Serial does not: * Represent service entitlement * Represent warranty duration * Represent privilege or subscription * Enforce behavior
That is by design.
Those meanings belong to: * Service products (commercial) * ABS ServicePlan objects (execution)
Overloading Lot/Serial with service semantics would interfere with existing operations.
7. Availability¶
Odoo Versions¶
Lot/Serial tracking is a core inventory feature, stable across modern versions.
Deployment Types¶
| Deployment | Availability |
|---|---|
| Odoo Cloud | Yes |
| Odoo.sh | Yes |
| On-Prem | Yes |
Editions¶
- Available in Community and Enterprise
- No dependency on optional apps
This makes it one of the safest architectural anchors available.
8. Design Implications¶
Serial Number = Canonical representation of a specific physical asset in Odoo.
Design layers: * Sales Order expresses intent * Delivery + Serial expresses fact * Integration event expresses meaning * ABS ServicePlan enforces reality
Related Documentation¶
- Service Bundles Intent - Bundle architecture overview
- Odoo SO as Contract - Line-level contract semantics
- ABS ServicePlan Integration - Odoo-ABS contract
- Non-Fungibility Concepts - Serial as non-fungible anchor