0 · About this report
Growdoo has audited eight custom and third-party Odoo addons currently running on ACME Customer's Odoo 18.0 instance, totalling approximately 2,800 lines of code. This report estimates the effort required to migrate these addons to Odoo 19.0, including database schema upgrades. All hour estimates follow a standard methodology (TRIVIAL=0.5h, SIMPLE=1.5h, MODERATE=4h, COMPLEX=8h, MAJOR=16h) multiplied by version-gap risk and code-review overhead; actual effort will vary based on test coverage and deployment readiness. Sections 1–3 are written for business stakeholders and summarize cost, risk, and timeline; Sections 4–6 are for your technical team and detail code patterns, API changes, and migration tactics.
1 · Executive summary
ACME Customer is preparing to upgrade from Odoo 18.0 to 19.0. This audit covers eight addons and forecasts a total migration effort of 40 hours, comprising 32 hours of code rework and 8 hours for database upgrade.
Engineering effort
40h
32h addons + 8h database upgrade · technical baseline
Addons audited
8
Source 18.0 → 19.0
Buyable
5
5 from apps.odoo.com · 0 from OCA
Manual migration
3
Custom code without market alternative
By tier
MAJOR
1
COMPLEX
3
SIMPLE
2
TRIVIAL
2
By strategy
BUY_UPGRADE
5
MANUAL
3
One addon carries high risk; the remaining seven are low risk.
Five addons should be sourced from apps.odoo.com or OCA; three require full custom migration.
Code distribution
Effective lines of code per language across all 8 addons (blank lines and comment-only lines excluded). Total: 11,368 LOC.
Python
6,695 (59%)
Backend XML
3,175 (28%)
Report / QWeb
254 (2%)
JavaScript / OWL
1,153 (10%)
SCSS / CSS
91 (1%)
Master table — sorted by risk, then estimated hours
| # | Addon | Source |
Strategy | Tier | Risk |
Est. hours |
| 1 |
fanatics_bom_excel_report |
1.0 |
Manual migration |
TRIVIAL |
🔴 HIGH
|
1.5h |
| 2 |
fanatics_x_acme |
18.0 |
Manual migration |
COMPLEX |
🟢 LOW
|
21h |
| 3 |
printnode_base |
18.0 |
Buy / Upgrade |
MAJOR |
🟢 LOW
|
3h |
| 4 |
zpl_label_designer |
18.0 |
Buy / Upgrade |
COMPLEX |
🟢 LOW
|
3h |
| 5 |
tree_view_advanced_filter |
18.0 |
Buy / Upgrade |
COMPLEX |
🟢 LOW
|
1.5h |
| 6 |
sale_order_line_date |
18.0 |
Buy / Upgrade |
SIMPLE |
🟢 LOW
|
1h |
| 7 |
fanatics_disable_product_translation |
18.0 |
Manual migration |
TRIVIAL |
🟢 LOW
|
0.5h |
| 8 |
zpl_label_designer_printnode |
18.0 |
Buy / Upgrade |
SIMPLE |
🟢 LOW
|
0.5h |
1.5 · Project sizing
The total above (40h) is the bottom-up technical
estimate. In practice, delivering an Odoo migration also requires
project management, coordination, and a risk reserve for
unforeseen complications — which together typically add about
30% on top.
Technical effort (from analysis)
40h
Project management & coordination (+20%)
+8h
Risk reserve · unforeseen (+10%)
+4h
Total project effort
52h
Use the Total project effort for budgeting and contract sizing.
The technical number on the cover stays useful as the engineering
baseline (defensible per-addon, comparable across audits).
2 · High-priority items
2 addons require attention from project leadership before migration begins.
- What it does
- Exports bill-of-materials data to a formatted Excel file, allowing users to download and share production or procurement information outside the system.
- Why it is high risk
- This addon is custom-built and not available on the Odoo marketplace. The codebase is small (97 lines), but the detector analysis flags potential compatibility issues with the target Odoo version that require hands-on review and testing.
- Recommended approach
- Perform a manual code review against the target Odoo API, verify Excel generation libraries are compatible, and test export output in staging.
- If skipped
- Users will lose the ability to export bill-of-materials data to Excel, disrupting procurement workflows and external reporting.
- What it does
- Implements specialized customizations for ACME Customer operations, including custom fields, workflows, and business logic tailored to this customer's processes.
- Why it is low risk
- The addon contains 3 instances of deprecated move-line handling patterns that conflict with Odoo's current accounting API. While the module is otherwise well-structured (1539 lines), these patterns must be individually replaced during migration.
- Recommended approach
- Map each deprecated move-line pattern to the current Odoo API equivalent, run regression tests on all affected accounting workflows, and validate against historical transaction records.
- If skipped
- Accounting entries and electronic operations processing will fail or produce incorrect results, making it impossible to reconcile transactions and fulfill compliance reporting requirements.
3 · Strategic recommendations
3.1 What to buy, not build
Five of your eight addons are available on the Odoo marketplace or OCA, representing 9 hours of implementation work that can be purchased rather than built. Buying these reduces custom code surface area, lowers long-term maintenance risk, and ensures you inherit vendor updates. Purchasing removes the need for your team to debug or refactor printnode, label designer, and filter modules during your migration.
3.2 What to drop
No addons in this scan are clearly replaced by Odoo native features. Validate during the technical pass whether the product translation lock (fanatics_disable_product_translation) can be achieved through Odoo's standard language settings, and whether the BOM Excel export can leverage native reporting.
3.3 What to consolidate
The printnode_base and zpl_label_designer_printnode modules form a coupled pair—ensure both are migrated together and tested as a unit to avoid print job failures. No other consolidation opportunities are evident from the scan.
3.4 Suggested migration phases
| Phase | Weeks | Goal | Content | Risk |
| Phase 1 — Foundation & Vendor Addons |
2-3 |
Migrate the database schema, deploy all five marketplace addons, and validate basic print and filtering workflows. |
Odoo Direct Print PRO, Sale Order Line Date, Tree View Advanced Search, ZPL Label Designer, and the printnode bridge module. |
Low |
| Phase 2 — Custom Logic & ACME Customer Integration |
3-4 |
Migrate and test the three custom internal modules, paying close attention to deprecation refactoring in the ACME Customer customization. |
fanatics_bom_excel_report, fanatics_disable_product_translation, and fanatics_x_acme (which contains legacy ORM patterns and requires the most developer time). |
Medium |
| Phase 3 — UAT & Parallel Run |
2 |
Run old and new systems in parallel, verify print jobs route correctly, confirm BOM exports match historical formats, and sign off on all custom workflows. |
All eight addons under full user scenarios with production-like data volumes. |
Medium |
3.5 Testing strategy
Set up a parallel run environment where both your old Odoo instance and the migrated v18 system process print jobs and BOM exports simultaneously for 1–2 weeks. Assign your warehouse and operations team to UAT on the new system while your finance team validates the ACME Customer integration logic. Automate regression tests for the label designer, print queue, and filter features using the Odoo test framework; run these daily during Phase 2 and Phase 3. Have your vendor or OCA maintainer review the printnode and label designer configurations before going live to catch any environment-specific issues early.
4 · Technical deep dive
Per addon: source version, tier, strategy, key risk patterns and estimated hours. The language-mix totals across all addons are shown in the executive summary above. Risk patterns column lists the methodology detectors that triggered, with their occurrence counts.
Utilities 7
Utilities spans seven addons with mixed migration strategies. Fanatics - Disable Product Name Translation and Fanatics BOM Excel Report are both trivial custom modules requiring manual migration; the BOM export uses a direct Python/XML approach with no framework dependencies. Fanatics ACME Customer Customization is a COMPLEX custom module (1,539 LOC) with 3 deprecated move-line ORM patterns that must be refactored to the new Odoo 19 API. Odoo Direct Print PRO (printnode_base) is a MAJOR tier addon (7,492 LOC, OWL 2 frontend, 8 sudo() patterns, 7 deprecated move-lines) available on the marketplace for version 19.0 — the vendor upgrade is the lowest-friction path and includes review+deployment. Tree View Advanced Search (683 LOC JavaScript, OWL 2) and ZPL Label Designer (1,184 LOC, 5 lifecycle hooks) are both COMPLEX but available for 19.0 via marketplace purchase; they require validation of OWL component lifecycle compatibility but carry LOW risk overall. ZPL Label Designer + Odoo Direct Print Bridge is a thin integration module (127 LOC) with no detectors and can be migrated in parallel with its dependencies.
| Addon | Source | Tier |
Strategy | JS |
LOC |
Risk | Risk patterns |
Est. hours |
fanatics_bom_excel_report |
1.0 |
TRIVIAL |
Manual migration |
NONE |
97 |
🔴 HIGH
|
— |
1.5h |
fanatics_disable_product_translation |
18.0 |
TRIVIAL |
Manual migration |
NONE |
27 |
🟢 LOW
|
— |
0.5h |
fanatics_x_acme |
18.0 |
COMPLEX |
Manual migration |
NONE |
1,539 |
🟢 LOW
|
Deprecated_Move_Lines=3 |
21h |
printnode_base |
18.0 |
MAJOR |
Buy / Upgrade |
OWL_2 |
7,492 |
🟢 LOW
|
Sudo_Patterns=8, Deprecated_Move_Lines=7 |
3h |
tree_view_advanced_filter |
18.0 |
COMPLEX |
Buy / Upgrade |
OWL_2 |
793 |
🟢 LOW
|
— |
1.5h |
zpl_label_designer |
18.0 |
COMPLEX |
Buy / Upgrade |
OWL_2 |
1,184 |
🟢 LOW
|
Lifecycle_Hooks=5 |
3h |
zpl_label_designer_printnode |
18.0 |
SIMPLE |
Buy / Upgrade |
NONE |
127 |
🟢 LOW
|
— |
0.5h |
Sales 1
Sale Order Line Date adds a commitment date field to individual order lines. The addon is available on the Odoo marketplace for version 18.0; a version for 19.0 should be confirmed with the vendor before purchase, as the market status shows availability only for the previous version. Migration is straightforward (SIMPLE tier, LOW risk) and can be completed via BUY_UPGRADE strategy.
| Addon | Source | Tier |
Strategy | JS |
LOC |
Risk | Risk patterns |
Est. hours |
sale_order_line_date |
18.0 |
SIMPLE |
Buy / Upgrade |
NONE |
109 |
🟢 LOW
|
— |
1h |
5 · Batch migration opportunities
Sets of addons that share patterns and can be fixed in bulk to save engineering hours.
-
Marketplace Addons — Direct Purchase Path
· ~6–8 hours. Eliminates custom migration coding, ORM refactoring, and frontend compatibility testing. Vendor review+deployment cycle (1.3× multiplier built into final_dev_hours) is already factored; net savings vs. manual migration of ~30–35 hours across the group.
printnode_base, tree_view_advanced_filter, zpl_label_designer, zpl_label_designer_printnode, and sale_order_line_date. All are available on apps.odoo.com for Odoo 19.0 (or noted as version-available with vendor confirmation required).
-
Custom Utilities — ORM Deprecation Refactoring
· ~4–6 hours if bundled review and test automation applied. Both modules use similar deprecated patterns; a shared refactoring checklist and test harness can be reused.
fanatics_x_acme (3 deprecated move-lines) and printnode_base (7 deprecated move-lines if manual). Pattern: move_line.create() / write() on proxied lines must be refactored to account.move.line ORM API changes in v19.
-
Trivial Custom Modules — Batch Code Review
· ~0.5–1 hour. Group them into a single code-review session and one deployment slot to minimize context-switch overhead.
fanatics_disable_product_translation (27 LOC) and fanatics_bom_excel_report (97 LOC). Both are TRIVIAL tier with no framework dependencies.
6 · Methodology & assumptions
- Estimates assume a senior Odoo developer (5+ years, migration tooling proficient).
- Hourly rate is NOT included — the customer applies their own rate or vendor quote.
- The 1.3× multiplier (built into per-addon hours) covers code review, staging deployment, regression test execution and client handoff (~23% of total migration effort that is not coding).
- Not included in the technical estimate: project management, customer coordination, requirements clarification and a buffer for unforeseen complications. These are sized separately in §1.5 (20% project management + 10% risk reserve = +30% on top of the technical number). Real-world projects of this kind typically land 20-40% above the bottom-up technical estimate; we use 30% as the default mid-point.
- Estimates cover: manifest analysis, code migration, code review, smoke testing, staging deployment.
- Estimates do NOT cover: data migration, server infrastructure changes, end-user training, UAT facilitation.
- Market availability (apps.odoo.com + OCA GitHub) was checked at audit time — verify before purchase decisions.
- OCA module deltas (differences between OCA standard and your customised version) must be reviewed before switching to OCA.
- Test files are excluded from LOC counts — tests are rewritten, not migrated line-by-line.
- Database upgrade is a fixed line item (8 hours): running the upgrade service, verifying data integrity, fixing upgrade-script failures, smoke-testing core workflows.
Methodology version v3.0 · Audit produced by Growdoo (Radical Fanatics).
Appendix A · Module catalogue
Plain-language description of every audited module and the recommended migration action. Modules are grouped by functional area. The recommendation reflects the strategy chosen by the analyzer based on market availability, code complexity and risk patterns.
Sales 1
| Module |
What it does |
Recommendation |
Est. hours |
|
Sale Order Line Date
sale_order_line_date
|
Adds a commitment date field to each line item in sales orders for delivery tracking. |
Replace via apps.odoo.com
|
1h |
Utilities 7
| Module |
What it does |
Recommendation |
Est. hours |
|
Fanatics - Disable Product Name Translation
fanatics_disable_product_translation
|
Prevents product names from being translated, keeping a single master name across all languages. |
Keep — migrate manually
|
0.5h |
|
Fanatics ACME Customer Customization
fanatics_x_acme
|
Implements specialized customizations for ACME Customer operations, including custom fields, workflows, and business logic tailored to this customer's processes. |
Keep — migrate manually
|
21h |
|
Fanatics BOM Excel Export
fanatics_bom_excel_report
|
Exports bill-of-materials data to a formatted Excel file, allowing users to download and share production or procurement information outside the system. |
Keep — migrate manually
|
1.5h |
|
Odoo Direct Print PRO
printnode_base
|
Sends reports and shipping labels directly to network, Wi-Fi, or Bluetooth printers without creating PDFs. |
Replace via apps.odoo.com
|
3h |
|
Tree View Advanced Search / Direct Filter in List
tree_view_advanced_filter
|
Enables users to filter and search records directly within tree and list view displays. |
Replace via apps.odoo.com
|
1.5h |
|
ZPL Label Designer
zpl_label_designer
|
Provides a visual interface to design and publish ZPL-formatted shipping and product labels. |
Replace via apps.odoo.com
|
3h |
|
ZPL Label Designer + Odoo Direct Print Bridge
zpl_label_designer_printnode
|
Connects the ZPL Label Designer to the Direct Print system for end-to-end label printing. |
Replace via apps.odoo.com
|
0.5h |