Migrate Odoo v15 to v19
Right at the structural boundary. Your very first hop is the most critical one — the analytic JSONB migration.
Migration Chain
v15 → v16 structural boundary (analytic JSONB migration)
Breaking Changes by Hop
Click each hop to see the detailed changes your database will undergo.
| Severity | Table / Field | Change | Impact |
|---|---|---|---|
| CRITICAL | account_move_line | analytic_account_id (M2O) → analytic_distribution (JSONB) Type changed | Analytic accounting completely redesigned. Every cost center assignment must be migrated to JSONB format |
| HIGH | account_move_line | analytic_tag_ids → (removed) Removed | Analytic tags completely removed, replaced by JSONB distribution |
| HIGH | account_asset_asset | category_id → (config on asset) Removed | Asset categories removed, configuration moves directly to asset records |
| MEDIUM | account_asset_asset | invoice_id (M2O) → original_move_line_ids (M2M) Type changed | Asset-to-invoice link changes from single to multiple entries |
| MEDIUM | account_asset_asset | state: open/draft → state: running/model Values changed | Asset status values renamed |
| Severity | Table / Field | Change | Impact |
|---|---|---|---|
| CRITICAL | account_account | user_type_id (M2O) → account_type (selection) Type changed | Account type completely restructured from a related table to an inline selection. Requires French PCG mapping |
| CRITICAL | account_account_type | (full table) → (deleted) Table deleted | Entire account type table removed from the database |
| MEDIUM | product_template | product_uom → product_uom_id Renamed | Unit of measure field renamed for consistency |
| Severity | Table / Field | Change | Impact |
|---|---|---|---|
| HIGH | (Docker) | UID 101 → UID 100 Type changed | Odoo 18 Docker image changes UID from 101 to 100 — filestore permissions break silently |
No major breaking changes in this hop. Mostly incremental improvements and minor adjustments.
Modules Affected
Accounting
Critical: analytic JSONB migration is your first hop + account type deletion
Assets
Full asset restructuring in v15-v16
Post-Migration Validation
Every migration includes our automated validation suite across 12 domains.
1,900 assertions · 1,020 tables scanned
Pricing
The v15-v16 boundary makes this a custom engagement. We analyze your analytic accounts before quoting.
View full pricingFrequently Asked Questions
Odoo completely redesigned analytic accounting. The simple M2O field (analytic_account_id) becomes a JSONB distribution that supports multiple cost centers per line. This requires careful data transformation.
Analytic tags are removed in v16. Their function is replaced by the JSONB distribution system. We map your existing tags to the new structure during migration.
v15 is right at the threshold. Starting April 2026, Odoo applies a +25% license surcharge for v15 and below. Migrating now locks in your current rates.
Ready to migrate?
Send us your database backup. Testable instance in 14 days, or you owe nothing.
Start My Migration