From antigravity-awesome-skills
Guides Odoo custom module migration from v14-v17 by analyzing code for API changes, deprecations, view updates like attrs to inline conditions, and providing fix checklists.
npx claudepluginhub mit-network/antigravity-awesome-skillsThis skill uses the workspace's default tool permissions.
Migrating Odoo modules between major versions requires careful handling of API changes, deprecated methods, renamed fields, and new view syntax. This skill guides you through the migration process systematically, covering the most common breaking changes between versions.
Guides Odoo custom module migration from v14-v17 by analyzing code for API changes, deprecations, view updates like attrs to inline conditions, and providing fix checklists.
Provides Odoo 17 development references for Python models/ORM, XML/CSV data/views, OWL/JS client code, QWeb reports, security, cron/server actions, migrations, tests, i18n, performance. Activates on Odoo code, manifests, tracebacks, or addon errors.
Indexes Odoo codebases for sub-100ms searches of models, fields, views, XML IDs, and modules. Validates references and traces dependencies before coding or debugging.
Share bugs, ideas, or general feedback.
Migrating Odoo modules between major versions requires careful handling of API changes, deprecated methods, renamed fields, and new view syntax. This skill guides you through the migration process systematically, covering the most common breaking changes between versions.
odoo-upgrade.@odoo-migration-helper, specify your source and target versions, and paste your module code.| Topic | Old (v16) | New (v17) |
|---|---|---|
| View visibility | attrs="{'invisible': [...]}" | invisible="condition" |
| Chatter | <div class="oe_chatter"> | <chatter/> |
| Required/Readonly | attrs="{'required': [...]}" | required="condition" |
| Python minimum | 3.10 | 3.10+ |
| JS modules | Legacy define(['web.core']) | ES module import syntax |
| Topic | Old (v15) | New (v16) |
|---|---|---|
| Website published flag | website_published = True | is_published = True |
| Mail aliases | alias_domain on company | Moved to mail.alias.domain model |
| Report render | _render_qweb_pdf() | _render_qweb_pdf() (same, but signature changed) |
| Accounting move | account.move.line grouping | Line aggregation rules updated |
| Email threading | mail_thread_id | Deprecated; use message_ids |
attrs visibility to Odoo 17<!-- v16 — domain-based attrs -->
<field name="discount" attrs="{'invisible': [('product_type', '!=', 'service')]}"/>
<field name="discount" attrs="{'required': [('state', '=', 'sale')]}"/>
<!-- v17 — inline Python expressions -->
<field name="discount" invisible="product_type != 'service'"/>
<field name="discount" required="state == 'sale'"/>
<!-- v16 -->
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
<!-- v17 -->
<chatter/>
# v15
record.website_published = True
# v16+
record.is_published = True
--update=your_module on each version before pushing to production.HISTORY.rst for community modules.npm run validate after migration to catch manifest or frontmatter issues early.version in __manifest__.py (e.g., 17.0.1.0.0).account_accountant, sign) may have undocumented breaking changes; test on a staging environment with Enterprise license.