User Guide
Everything you need to know about using Uplift to migrate your Odoo modules.
1. What is Uplift?
Uplift is an automated migration analysis tool for Odoo custom modules. When you need to upgrade your Odoo instance from one version to another (e.g., 16.0 to 18.0), your custom modules often contain code patterns, API calls, and XML structures that have changed or been removed in the newer version.
Uplift scans your module's Python, XML, JavaScript, SCSS, and CSV files against a comprehensive database of 239+ migration rules and identifies every breaking change, deprecation, and required update. For many issues, it can also automatically generate the correct fix and apply it to your code.
Key benefits:
- Detect breaking changes before they cause production issues
- Get detailed explanations of what changed and why
- Auto-fix common migration patterns with one click
- Support for multi-hop migrations (e.g., 14.0 → 19.0)
- Export detailed CSV reports for project planning
2. Getting Started
Using Uplift is straightforward and requires no installation. Here's the basic workflow:
Account requirement: Viewing analysis reports is free and doesn't require an account. To apply auto-fixes and download the patched module, you'll need to create a free account and purchase a fix package.
3. Uploading Your Module
On the home page, you'll find the upload area. You can either drag and drop your module or click to browse your files.
Requirements:
- Format: Your module must be compressed as a
.zipfile - Structure: The zip should contain your module directory with a
__manifest__.pyor__openerp__.pyfile - Size: Maximum file size is 50 MB
- Content: Only one module per upload is supported
Make sure your zip file contains the module at the root level or one directory deep. For example: my_module.zip/my_module/__manifest__.py
4. Selecting Versions
After uploading, you'll select the source version (the Odoo version your module currently runs on) and the target version (the Odoo version you want to migrate to).
Supported versions: 14.0, 15.0, 16.0, 17.0, 18.0, and 19.0
Multi-hop migrations: You can migrate across multiple versions at once. For example, if your module is on 14.0 and you want to go to 18.0, Uplift will analyze all intermediate version changes (14→15, 15→16, 16→17, 17→18) and combine them into a single comprehensive report.
The source version must be lower than the target version.
5. Reading the Analysis Report
Once the analysis completes, you'll see a detailed report with all detected issues. The report includes:
Summary Bar
At the top, you'll see your module name, migration path, total issue count, and an effort estimate (Simple, Medium, or Complex) to help you plan the migration.
Statistics Cards
Four cards show a breakdown: Errors (critical issues that must be fixed), Warnings (recommended changes), Info (optional improvements), and Auto-fixable (issues Uplift can fix automatically).
View Modes
You can view issues in three ways:
- All Issues — A flat list of every detected issue
- By File — Issues grouped by source file, useful for fixing file by file
- By Category — Issues grouped by type (ORM, Views, Fields, etc.)
Filters & Search
Use the filter bar to narrow down issues by severity (error/warning/info), category, or auto-fixable status. The search box lets you find issues by file path or message text.
Issue Cards
Each issue card shows:
- Severity badge — Color-coded: red (error), amber (warning), blue (info)
- File path and line number — Exact location in your code
- Description — What the issue is and why it matters
- Code diff — Click to expand and see the old code vs. suggested fix
- Docs badge — Links to official Odoo documentation when available
- Migration guide — Step-by-step instructions from our knowledge base
Export CSV
Click the "Export CSV" button in the top bar to download all filtered issues as a CSV file for use in spreadsheets or project management tools.
6. Applying Auto-Fixes
Issues marked as "Auto-fixable" can be automatically patched by Uplift. Here's how:
- Select issues: All auto-fixable issues are selected by default. You can uncheck any issues you prefer to fix manually.
- Sign in: You need a free account to apply fixes. Click "Sign In" or "Create Free Account" if prompted.
- Purchase: Click "Apply Selected Fixes & Download" at the bottom of the page. You'll be shown the pricing tier based on your module's complexity, then complete payment via PayPal.
- Download: After payment, the patched module is automatically prepared and downloaded as a .zip file.
After patches are applied, Uplift automatically validates the patched module. It checks Python syntax (compiling every .py file), XML well-formedness, and manifest correctness (required keys, data file references). You'll see a validation banner showing whether the patched module passed or failed, with per-file details for any issues found.
Always test the patched module in a staging environment before deploying to production. While auto-fixes handle common patterns, your module may have custom logic that requires manual adjustments.
7. Pricing
Analysis reports are always free. You can upload and analyze as many modules as you want at no cost. You only pay when you want to apply auto-fixes and download the patched module.
Pricing is based on the complexity of your module (measured by the number of auto-fixable issues):
- Small modules
- Simple migrations
- Few breaking changes
- Medium modules
- Multi-hop migrations
- Moderate complexity
- Large modules
- Complex migrations
- Full coverage
The correct tier is automatically selected based on your analysis results. Payment is processed securely via PayPal — no PayPal account is required, you can pay with any credit or debit card.
8. Your Dashboard
After signing in, you can access your dashboard from the navigation bar. The dashboard provides an overview of all your activity:
Statistics
At the top, you'll see summary cards showing your total reports, errors found, warnings, fixes downloaded, and total amount spent.
Reports Tab
- Search: Filter reports by module name or version
- Filter: View All, Paid, Unpaid, or Downloaded reports
- Select & Bulk Actions: Use checkboxes to select multiple reports, then delete or export them in bulk
- Export: Export selected (or all) reports as a CSV summary file
- View: Click "View" to open the full analysis report
- Expand: Click any row to see detailed breakdown (errors, warnings, effort, payment info)
- Delete: Remove individual reports or use bulk delete for multiple reports
Payments Tab
View your complete payment history including date, type, status, and amount for each transaction.
9. Issue Categories Explained
Uplift analyzes your module using six specialized analyzers across eight issue categories:
Detects deprecated ORM methods, changed API signatures, removed imports, and Python compatibility issues. Includes workflow engine removal, mail/communication API changes (message_post, mail.channel → discuss.channel), and controller/routing updates. Examples: @api.multi removal, signal_workflow removal, binary_content() deprecation.
Identifies broken XPath expressions, renamed view attributes, deprecated QWeb directives, and view architecture changes. Covers search panel rewrites, pivot/graph view changes, and workflow XML removal. Examples: <tree> → <list>, t-raw → t-out, col_group_by → column_groupby.
Checks for renamed or removed field types, changed field attributes, and deprecated field parameters. Examples: track_visibility → tracking, oldname removal, related_sudo deprecation, compute_sudo default change.
Validates access control lists, checks for missing group references, and ensures security file format compliance. Detects public access enforcement, multi-company rule changes, and record rule SQL evaluation requirements.
Detects OWL 2 and OWL 3 component migration issues, legacy widget patterns, SCSS variable renames, and asset bundle changes. Covers useSubEnv deprecation, props validation enforcement, and new onWillRender/onRendered lifecycle hooks.
Checks module manifest for version format, removed keys, deprecated dependencies, and missing required fields. Covers 70+ module dependency renames/removals across all version hops.
Detects SQL constraint issues, index type changes (btree, trigram, btree_not_null), ir.translation removal (translations moved to jsonb columns in v18), and column type validation. Flags manual CREATE INDEX that should use field-level index parameters.
Flags incompatible translation patterns: f-strings inside _() (rejected in v17+), missing _lt() for class-level attributes (v19), ir.translation direct access (removed in v18), and PO file format changes.
10. Frequently Asked Questions
Is the analysis free?
Yes! You can upload and analyze as many modules as you want at no cost. You only pay when you want to apply auto-fixes and download the patched module.
What file format should my module be in?
Your module must be compressed as a .zip file. The zip should contain your module directory with a __manifest__.py (or __openerp__.py) file.
Can I migrate across multiple Odoo versions at once?
Yes! Uplift supports multi-hop migrations. For example, you can analyze a migration from 14.0 directly to 18.0, and Uplift will check all intermediate version changes.
Are all issues auto-fixable?
No. Some issues require manual review and changes due to their complexity. The report clearly marks which issues can be auto-fixed and which need manual attention.
What happens to my uploaded files?
Your files are processed on our servers and automatically deleted within 1 hour. We do not store or share your code. See our Privacy Policy for full details.
Can I re-download the patched module?
The patched module is available for download immediately after payment. Session files are cleaned up after download, so make sure to save your file. If you need to re-download, you can run a new analysis and purchase again.
Do I need a PayPal account to pay?
No. While payment is processed through PayPal, you can pay using any credit or debit card without creating a PayPal account.
How accurate are the auto-fixes?
Auto-fixes handle well-known, deterministic migration patterns. They are accurate for the patterns they cover, but we always recommend testing in a staging environment before deploying to production.