Enable Dark Mode!
how-much-should-you-budget-for-an-odoo-20-migration.jpg
By: Ayana R

How Much Should You Budget for an Odoo 20 Migration?

Technical Odoo 20 Odoo Enterprises Odoo Community

An Odoo upgrade implies not only swapping old software for new but is also a comprehensive task in the case of customized Odoo software. Businesses that are currently working with customized Odoo solutions have to deal with such things as database migration, custom modules migration, Studio customizations, third-party applications, integrations, data validation, regression testing, and user acceptance testing.

With Odoo 20 being released, many businesses are considering the option of upgrading to Odoo 20 and, first and foremost, the cost of this upgrade.

However, there is no standard fee that applies to all cases of Odoo upgrade. An Odoo database that uses mainly standard applications of Odoo software does not need much extra development, whereas a database with lots of customization and several integrations needs much more.

Thus, the best thing to do would be estimating the cost of your Odoo upgrade depending on your current Odoo database.

What Determines the Cost of an Odoo 20 Upgrade?

The cost of upgrading to Odoo 20 typically depends on the following:

  • Number of Odoo versions to skip
  • Custom lines of code
  • Customization of Studio
  • Third-party applications
  • Database size
  • External integrations
  • Need for testing and validation
  • New functionalities in Odoo 20
  • Hosting needs
  • Customization that could be replaced with native Odoo functionality

These parameters need to be evaluated before giving a fixed quote.

1. Number of Odoo Versions Skipped

The first important cost element is that of the current version of Odoo compared to Odoo 20.

For example:

Current Version Target Version Version Gap
Odoo 19 Odoo 20 1 version
Odoo 18 Odoo 20 2 versions
Odoo 17 Odoo 20 3 versions
Odoo 16 Odoo 20 4 versions
Odoo 15 Odoo 20 5 versions

An update with one version is much simpler to estimate than a migration with several major versions.

Nevertheless, it doesn't mean that each missed version will increase the total cost of the project by a certain number of hours or days. Everything depends on how many changes occurred in the modules and customizations in the process of the versions' evolution.

For instance, an enterprise going from Odoo 19 to Odoo 20 will need to resolve fewer compatibility issues than an enterprise going from Odoo 16 to Odoo 20.

It is recommended to review custom developments with respect to the newly appeared features and to question current customizations prior to migration. Eliminating custom functionality that performs operations available in Odoo out-of-the-box will help to simplify the process of the upgrade.

Why old versions cost more

The bigger version gap is:

  • More changes in the framework
  • More deprecated methods and APIs
  • More changes in views and XML
  • More changes in JS/OWL
  • More changes in accounting/business processes
  • More third-party modules that need to be replaced
  • More migration of data
  • More regression testing

The bigger the custom code base is and the more complex it is, the more code has to be tested against Odoo 20.

2. Custom Lines of Code

In customized Odoo systems, custom code can be one of the best predictors of how difficult an upgrade process will be.

  • A business might have:
  • Custom Python modules
  • Custom XML views
  • Custom JavaScript/OWL
  • Custom reporting
  • Custom controllers
  • Custom automated actions
  • Custom workflows
  • Custom security access rules
  • Custom server-side logic

The more extensive the custom code base, the more code that has to be tested in the new Odoo 20 system.

Using odoo-bin cloc to Measure Custom Code

Odoo has an in-built cloc utility that calculates the number of relevant lines of code in the Python, JavaScript, CSS, SCSS, and XML languages. The tool can handle additional modules available in the database, as well as specific server actions and manually added computed fields. This method is referred to as being approximate and is useful for maintenance pricing.

An example of such a command is:

./odoo-bin cloc -c odoo.conf -d my_database

This gives an objective basis to estimate the extent of custom development.

However, lines of code should not be the ultimate cost measure.

Two projects might have 20,000 lines of code each and yet have completely different levels of migration complexity.

For instance:

  • 20,000 lines of basic views and reports could be easy enough to migrate.
  • While 20,000 lines of code with complex accounting logic, Point of Sale customizations, JavaScript, and data migration could be more difficult to move over.

Thus, CLOC should be supplemented with a technical review.

3. Studio Customizations

The Odoo Studio application enables companies to modify their applications without building custom modules.

The Studio can be used to:

  • Custom fields
  • Forms modifications
  • Lists and Kanban views
  • Automations
  • Custom reports
  • Approvals
  • Custom models
  • Business rules

The Studio customizations need to be considered during the upgrade assessment regardless of whether or not the company maintains custom modules.

For Odoo Enterprise users, the upgrade service provided by Odoo takes into account the Studio customizations only if the Studio continues to be installed and the corresponding subscription is active.

This will allow us to avoid the manual work of porting custom modules.

Still, the company will need to test its Studio customizations post-upgrade. The upgrade is not the same as the redesign of processes.

4. Third-Party Apps and Custom Modules

The use of third-party modules will definitely affect the upgrading cost of Odoo to version 20.

These consist of:

  • Modules available at the Odoo Apps Store
  • Modules created by partners
  • Community modules
  • In-house created custom modules
  • Special modules

Each module should be checked whether it is compatible with Odoo 20.

In case a third-party module has its Odoo 20 version, then there will be little work to do. The abandoned module will have to be either substituted or newly created.

Odoo's upgrading guidelines specify that extra modules created in-house or by third parties will not be part of the regular enterprise upgrade SLA unless the appropriate maintenance coverage applies.

5. Data Volume

Data volume in the database may have an impact on migration as well as the testing process.

Key data volume factors are:

  • Customer and vendor count
  • Product count
  • Sales orders
  • Purchase orders
  • Invoices and bills/li
  • Accounting entries
  • Inventory moves
  • Manufacturing data
  • POS orders
  • Attachments
  • Documents
  • Website data
  • Historical data

Upgrading a smaller database with several thousand transactions is quite a different task compared to migrating a database storing several years of accounting, inventory, manufacturing, and POS history.

At the same time, data volume does not automatically equal the necessity of manual migration of each record.

Guidance on Customized Database Migration in Odoo makes special emphasis on migration scripts for situations where technical data such as models, fields, or external ID changes occur during a custom module upgrade.

6. External Integrations

Integration is yet another important expense factor.

The Odoo database can be integrated with:

  • Payment gateways
  • Logistics companies
  • Marketplaces
  • E-commerce platforms
  • CRM tools
  • Banking software
  • Payroll software
  • Tax software
  • Manufacturing software
  • Warehousing software
  • REST APIs
  • Webhooks
  • Mobile apps

An integration that functioned in a previous Odoo version will need modifications due to:

  • API modifications
  • Authentication modifications
  • Model modifications
  • Field modifications
  • Controller modifications
  • JavaScript modifications
  • Third-party API modifications

For this reason, all integrations must be specified individually in the estimate.

A project with five basic integrations cannot be estimated at the same price as a project with five highly customized two-way integrations.

7. Testing Effort

Testing is frequently overlooked in computing the cost of upgrading Odoo.

A successful technical migration is not always an indication that the migrated system is now good for production.

Testing could involve:

Functional testing

Testing of business flows like:

  • Quote generation
  • Quote to Sales order
  • Procurement to Receipt
  • Invoicing
  • Posting payment
  • Inventory Moves
  • Production
  • Point-of-Sales
  • Returns
  • Payroll
  • Expenses

Technical testing

This could include:

  • Installation of custom modules
  • View validation
  • Access rights
  • Automation rules
  • Scheduled actions
  • Reports
  • JavaScript
  • API Integration
  • Performance Testing

Regression Testing

Old business flows have to be tested once more, as any change to the core structure of Odoo could impact custom business flows.

User Acceptance testing

Business users have to check that the migrated system works before production deployment.

Odoo suggests a test process involving asking for a test database, upgrading custom modules if needed, and testing the upgraded database thoroughly before proceeding to a production upgrade.

Odoo Enterprise Upgrade Service vs. Custom Code Porting

One of the first things to understand when getting an Odoo 20 upgrade estimate is the difference between the database upgrade service and custom development migration.

If the organization is an Odoo Enterprise customer, then Odoo offers an upgrade service for supported databases. Based on current Odoo documentation, the service will include technical migration and adaptation of standard applications and data, as well as Studio customization under the mentioned conditions and customizations under a maintenance-of-customizations subscription.

Having an Enterprise subscription doesn't always mean that custom development tasks are free of charge.

Typically included

  • Depending on subscription and applicable SLA:
  • Standard Odoo applications
  • Standard database migration
  • Studio customizations where eligible
  • Customizations under maintenance subscription
  • Not typically included but may require additional effort
  • In-house developed modules
  • Unsupported third party modules
  • Custom JavaScript/OWL development
  • Custom integrations
  • Data cleanup
  • New developments
  • Functional re-design
  • Intense custom testing
  • Training

Odoo specifically states that data cleanup, migration of additional modules that are not included in a maintenance contract and training are not included in the regular upgrade SLA.

Thus, the upgrade quote should be divided into:

Odoo Upgrade Service and Custom Code Migration and Implementation Services

It will clarify the estimate for the customer greatly.

A Practical Odoo 20 Upgrade Estimation Model

A useful estimation model can divide the project into several workstreams:

Workstream Typical Assessment
Version upgrade Current version > Odoo 20
Standard database upgrade Odoo upgrade service
Custom modules Based on CLOC and complexity
Studio Number and complexity of customizations
Third-party apps Compatibility and availability
Data migration Volume and custom data
Integrations Number and complexity
Testing Functional + technical + regression
Deployment Staging, rehearsal and production
UAT Business-user validation
Documentation/training Based on project requirements

A simplified formula for calculation can be stated as:

Total Upgrade Cost = Core Upgrade Evaluation + Custom Code Conversion + Third Party Application Migration + Integration Cost + Data Cost + Testing + Deployment

And the exact amount can then be calculated by multiplying the rate decided.

Example Odoo 20 Upgrade Effort Bands

These bands are only exemplary ranges of estimates, not Odoo pricing. The actual effort should be determined after a review of the database, custom modules, CLOC numbers, integrations, and testing.

Upgrade Type Typical Environment Indicative Effort
Basic Mostly standard Odoo, minimal customization 10–20 working days
Small Custom Limited custom modules and Studio changes 20–40 working days
Medium Custom Several custom modules, reports and integrations 40–80 working days
Complex Large custom codebase, multiple integrations and significant data 80–150 working days
Enterprise / Highly Customized Extensive custom modules, complex integrations, large database and intensive testing 150+ working days

These figures should not be viewed as an absolute pricing schedule.

For instance, while a 60,000 line of code base with basic functionality might need less resources compared to a 30,000 line of code with complex features like accounting, point of sale system, inventory management, and customization of JavaScript.

The most accurate calculation can only come through the assessment of both technical and functional aspects rather than CLOC alone.

Example: Estimating a Medium-Sized Odoo 20 Upgrade

Take the case of an organization using Odoo 17 now and intending to upgrade to Odoo 20.

If the situation includes:

  • 3 version upgrades to go through
  • 25,000 lines of custom code
  • 15 Studio customization entries
  • 8 third-party modules
  • 4 integrations with other systems
  • Years of accounting and sales records
  • Extensive POS and inventory processes
  • Necessity of complete regression testing

A plan for planning may be as follows:

Activity Example Effort
Technical assessment 5 days
Custom module migration 35 days
Studio/customization validation 5 days
Third-party module migration 15 days
Integration updates 15 days
Data migration/validation 10 days
Functional and regression testing 20 days
UAT support and bug fixing 10 days
Production deployment and stabilization 5 days
Total 120 days

This is just for demonstration purposes.

The amount of effort involved could either increase or decrease based on the complexity of the custom program and the integration of the third-party software applications.

How to Reduce the Cost of an Odoo 20 Upgrade

Among the most efficient ways of reducing the cost of migration is avoiding migrating all customizations.

It is better to look at each customization and ask oneself:

Is this functionality already available in Odoo 20?

The software comes with new features in every major update. There can be many customizations that are now unnecessary because of that.

For instance, an organization might have created its own custom workflow related to:

  • Approval
  • Purchasing rules
  • Sales automation
  • Inventory management
  • Reporting
  • Activity management
  • Security
  • Document management
  • Notification

If the same functionality can now be obtained using standard configuration, then it will not make sense to migrate the customization.

Odoo developers recommend checking the current developments against the newer standard functionality and eliminating redundant customizations during migration.

Why Replacing Customizations Can Be Cheaper

Let's take the example where there is 2,000 lines of customized code.

If the same requirement could now be done through Odoo standard configuration, migration of 2,000 lines of code would result in extra expenses for no reason.

Instead of the process:

Analyze > Rewrite > Fix > Test > Maintain,

The company may go for the following path:

Configure > Test > Train.

It is not only related to the current Odoo 20 migration but will also give the opportunity to simplify the further upgrade process as well.

What Should Be Included in an Odoo 20 Upgrade Quote?

The quotation for a professional upgrade needs to have a clear scope.

At least, it needs to have the following information listed:

1. Versions of source and target

For example,

Odoo 17 > Odoo 20

2. Scope of database

The number of:

  • databases;
  • companies;
  • applications used;
  • approximate size of data.

3. Custom code

  • The number of:
  • custom modules;
  • odoo-bin cloc;
  • languages used;
  • complexity level.

4. Studio customization

The number of:

  • Studio customizations;
  • automated actions;
  • custom fields;
  • custom views;
  • reports.

5. Third party modules

Identify all third party modules and their Odoo 20 availability.

6. Integration

Identify:

  • API integration
  • Payment gateway
  • Shipping service
  • Marketplaces
  • Third party applications

7. Testing

Define:

  • Functional testing
  • Regression testing
  • Integration testing
  • UAT
  • Performance testing if necessary

8. Deployment

List:

  • Development environment
  • Staging environment
  • Rehearse upgrade
  • Production deployment
  • Post go-live support

This will avoid any unwanted actions from becoming a cost later on in the process.

Final Checklist Before Requesting an Odoo 20 Upgrade Estimate

Before approaching an Odoo partner or development team, prepare the following:

  • Current Odoo version
  • Target version: Odoo 20
  • Hosting type: Odoo Online, Odoo.sh, or On-Premise
  • List of installed applications
  • List of custom modules
  • odoo-bin cloc result
  • List of Studio customizations
  • List of third-party applications
  • List of external integrations
  • Approximate database size
  • Number of companies
  • Number of users
  • Key business workflows
  • Required reports
  • Required testing scenarios
  • Required downtime window
  • Data-cleaning requirements
  • Training requirements

The more complete this information is, the more accurate the upgrade estimate will be.

The price for an Odoo 20 upgrade is not supposed to depend on how many versions you plan to jump during the upgrade. It will depend on the complexity of your current Odoo environment.

If the company uses mainly stock Odoo features, the upgrade will go smoothly, but heavily customized environments will need much more development and testing.

For counting the custom code you can use odoo-bin cloc, however, the full technical analysis has to take into account Studio customizations, third-party modules, data amount, and testing. The official Odoo upgrade procedure also includes two parts – upgrading the standard database and adaptation of unsupported custom modules.

The best way to manage the price is to analyze customizations prior to their migration. If Odoo 20 already offers a stock solution for the feature you previously customized, it can save you money not only for the current, but also for the future Odoo upgrades.

To read more about How to Plan Your Odoo 20 Migration from Odoo 16, 17, 18, or 19, refer to our blog, How to Plan Your Odoo 20 Migration from Odoo 16, 17, 18, or 19.


Frequently Asked Questions

Is the upgrade to Odoo 20 free for customers of Odoo Enterprise?

Odoo Enterprise has the upgrade service available for eligible databases. It includes the technical migration of standard apps and data migration. The eligible Studio customizations and the customizations under the maintenance-of-customization subscription will also be included in the migration. However, custom modules and third-party applications that do not have that kind of coverage will need further development.

How can I calculate the number of custom code lines in my Odoo database?

Odoo has the command called odoo-bin cloc which is counting the lines of code for extra modules and some database-specific code. For example, ./odoo-bin cloc -c odoo.conf -d my_database It can be used to calculate the lines of code for estimation of custom-module migration but there are other factors to consider as well.

Can replacement of customizations lower the price of the Odoo 20 upgrade?

Yes. In case the functionality which is needed can be obtained from Odoo 20 in the form of a standard app, then the replacement or redesign of the customization will help save some code and its testing during the migration.

If you need any assistance in odoo, we are online, please chat with us.



0
Comments



Leave a comment



WhatsApp