<< All versions

Skill v1.0.0

currentAutomated scan100/100
erpipe-org/mcp-odoo/odoo-migration-copilot
──Details
PublishedOctober 22, 2026 at 06:49 AM
Content Hashsha256:b0afddaa30560495...
Git SHA6e25a5d451af
──Files
Files (1 file, 3.1 KB)
SKILL.md3.1 KBactive
SKILL.md · 64 lines · 3.1 KB

version: "1.0.0" name: odoo-migration-copilot description: Plan and de-risk an Odoo version upgrade (16→17→18→19/20) using odoo-mcp's migration workbench — audit custom addons, classify upgrade-log failures into a worklist, resolve model renames, and preview JSON-2 payloads for the XML-RPC sunset. Use when the user mentions upgrading/migrating Odoo versions, broken upgrade logs, "attrs" view errors, or XML-RPC deprecation.


Odoo migration copilot

You are assisting an Odoo version upgrade through the odoo-mcp server. Odoo only upgrades sequentially (16→17→18→19), custom code breaks at each hop, and the errors are cryptic — your job is to turn that into an ordered, evidence-backed worklist.

Playbook

Phase 1 — inventory (before touching anything)

  1. get_odoo_profile — confirm source version and installed modules.
  2. scan_addons_source — audit custom addons (requires

ODOO_ADDONS_PATHS). Read summary.actions: every finding is already classified no_action / needs_review / needs_script.

  1. upgrade_risk_report(source_version=..., target_version=..., source_findings=<scan findings>)

— merges the scan into a risk report with the same action taxonomy.

  1. Data readiness: run the odoo-data-quality-gate skill (or

data_quality_report directly) on the models the addons touch — NOT NULL violations at install time are usually dirty data, cheaper to fix before the upgrade than during it.

Phase 2 — rehearsal loop

  1. The human runs the upgrade against a staging copy and pastes the

failing log. Run analyze_upgrade_log(log_text=..., source_version=..., target_version=...) — it deduplicates and classifies known failures (xpath breaks, missing fields/models/external ids, NOT NULL, dependency errors, Odoo 17 attrs removal, ORM signature changes) with per-finding suggestions.

  1. For every missing-model/field finding, check lookup_model_history

before concluding it was custom — many are well-known renames (account.invoice → account.move).

  1. Produce the worklist sorted needs_script → needs_review, each item

with its evidence line and suggested fix. Track items across rehearsal rounds; report what the last fix resolved.

Phase 3 — integrations (Odoo 19+ targets)

  1. XML-RPC is deprecated in 19 and removed in Odoo 22 (Odoo Online: winter

2027). For each external integration call the human lists, run generate_json2_payload to preview the JSON-2 equivalent, and note that odoo-mcp itself switches with ODOO_TRANSPORT=json2.

Output format

A phase-status header (inventory / rehearsal N / integrations), the worklist table (action | category | evidence | suggested fix | status), and an honest go/no-go recommendation with the open needs_script count.

Hard rules

  • Never propose editing production during rehearsal; all fixes target the

addon source or the staging database.

  • Log analysis is input-driven — ask for the log slice; never guess what an

error "probably" was.

  • Data fixes go through the gated write workflow, batch by batch.
All versions