From 669a62c625ada6fac95bb426ebc57bb5f016366e Mon Sep 17 00:00:00 2001 From: xpl-odoo Date: Fri, 30 Aug 2024 14:53:09 +0000 Subject: [PATCH] [IMP] upgrade: better introduce the upgrade process closes odoo/documentation#10919 X-original-commit: e05a37917d561ba6e0db40016b348f75232c1e38 Signed-off-by: Xavier Platteau (xpl) --- content/administration/odoo_online.rst | 2 +- content/administration/upgrade.rst | 149 +++++++++++------- .../upgrade/odoo-sh-message.png | Bin 0 -> 14090 bytes .../upgrade/rr-upgrade-message.png | Bin 22588 -> 14335 bytes .../developer/howtos/upgrade_custom_db.rst | 24 +-- 5 files changed, 103 insertions(+), 72 deletions(-) create mode 100644 content/administration/upgrade/odoo-sh-message.png diff --git a/content/administration/odoo_online.rst b/content/administration/odoo_online.rst index 5621f0115..312896411 100644 --- a/content/administration/odoo_online.rst +++ b/content/administration/odoo_online.rst @@ -46,7 +46,7 @@ Trigger a database upgrade. .. seealso:: For more information about the upgrade process, check out the :ref:`Odoo Online upgrade - documentation `. + documentation `. .. _odoo_online/duplicate: diff --git a/content/administration/upgrade.rst b/content/administration/upgrade.rst index 4d326716d..049131097 100644 --- a/content/administration/upgrade.rst +++ b/content/administration/upgrade.rst @@ -2,31 +2,55 @@ Upgrade ======= -An upgrade is the process of moving your database from an older version to a newer :doc:`supported -version ` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is essential as -each version comes with new and improved features, bug fixes, and security patches. +An upgrade involves moving a database from an older version to a newer supported version (e.g., from +Odoo 15.0 to Odoo 17.0). Regular upgrades are crucial as each version offers new features, bug +fixes, and security patches. Using a :doc:`supported version ` is strongly +recommended. Each major version is supported for three years. -.. _upgrade_faq/rolling_release: +Depending on the hosting type and Odoo version used, a database upgrade can be **mandatory**. + +.. tabs:: + + .. group-tab:: Odoo Online + + - If a database is on a **major version** (e.g., 15.0, 16.0, 17.0), an upgrade is mandatory + every two years. + - If a database is on a **minor version** (e.g., 17.1, 17.2, 17.4), an upgrade is mandatory + a few weeks after the next version is released. Minor versions are usually released every + three months. + + .. group-tab:: Odoo.sh + + After the initial three years of support, you will have another two years to complete the + upgrade. You will be notified when an upgrade is required. + + .. image:: upgrade/odoo-sh-message.png + :alt: The "unsupported version" popup on Odoo.sh. + + .. group-tab:: On-premise + + You can stay on the same version indefinitely, even if it is not recommended. Note that the + smaller the version gap, the easier the upgrade should be. .. spoiler:: Automatic upgrades: Odoo Online's Rolling Release process - The Rolling Release process allows Odoo Online customers to upgrade their database directly from - a message prompt sent to the database administrator as soon as a new version is released. The - invitation to upgrade is only sent if no issues are detected during the automatic tests. + You will receive a notification in your database a few weeks before a mandatory upgrade will be + automatically carried out. You are in control of the process as long as the deadline is not + reached. .. image:: upgrade/rr-upgrade-message.png :alt: The upgrade message prompt on the top right of the database - It is strongly recommended to manually :ref:`test the upgrade first `. - Clicking :guilabel:`I want to test first` redirects to `the database manager - `_, where it is possible to request an upgraded test database - and check it for any discrepancies. + Concretely, Odoo’s Upgrade Team performs a silent test upgrade of every database that should be + upgraded. If the test is successful and lasts less than 20 minutes, you can directly trigger the + upgrade from the database. If the test fails, you can test an upgrade using the `database manager + `_. - It is **not** recommended to click :guilabel:`Upgrade Now` without testing first, as it - immediately triggers the live production database upgrade. + When you are invited to upgrade, it is strongly recommended to :ref:`request an upgraded test + database ` first and spend time :ref:`testing ` it. - If the Rolling Release process detects an issue with the upgrade, it will be deactivated until - the issue is resolved. + An automatic upgrade to the next version will be triggered if no action is taken before the + specified due date. An upgrade does not cover: @@ -40,36 +64,40 @@ An upgrade does not cover: If your database contains custom modules, it cannot be upgraded until a version of your custom modules is available for the target version of Odoo. For customers maintaining their own custom modules, we recommend to parallelize the process by :ref:`requesting an upgraded database - ` while also :doc:`upgrading the source code of your custom + ` while also :doc:`upgrading the source code of your custom modules `. +.. _upgrade-nutshell: + Upgrading in a nutshell ------------------------ +======================= #. Request an upgraded test database (see :ref:`obtaining an upgraded test database - `). + `). #. If applicable, upgrade the source code of your custom module to be compatible with the new version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`). #. Thoroughly test the upgraded database (see :ref:`testing the new version of the database - `). -#. Report any issue encountered during the testing to Odoo by `submitting a ticket for an issue - related to my future upgrade (I am testing an upgrade) `_. + `). +#. Report any issue encountered during the testing to Odoo by going to the `Support page and + selecting "An issue related to my future upgrade (I am testing an upgrade)" + `_. #. Once all issues are resolved and you are confident that the upgraded database can be used as your main database without any issues, plan the upgrade of your production database. #. Request the upgrade for the production database, rendering it unavailable for the time it takes - to complete the process (see :ref:`upgrading the production database `). -#. Report any issue encountered during the upgrade to Odoo by `submitting a ticket for an issue - related to my upgrade (production) `_. + to complete the process (see :ref:`upgrading the production database `). +#. Report any issue encountered during the upgrade to Odoo by going to the `Support page and + selecting "An issue related to my upgrade (production)" + `_. -.. _upgrade/request-test-database: +.. _upgrade-request-test: Obtaining an upgraded test database ------------------------------------ +=================================== -The `Upgrade page `_ is the main platform for requesting an upgraded +The `Upgrade page `_ is the main platform for requesting an upgraded database. However, depending on the hosting type, you can upgrade from the command line -(on-premise), the `Odoo Online database manager `_, or your `Odoo.sh -project `_. +(on-premise), the Odoo Online `database manager `_, or your +`Odoo.sh project `_. .. note:: The Upgrade platform follows the same `Privacy Policy `_ as the @@ -81,7 +109,7 @@ project `_. .. group-tab:: Odoo Online Odoo Online databases can be manually upgraded via the `database manager - `_. + `_. The database manager displays all databases associated with the user's account. Databases not on the most recent version of Odoo display an arrow in a circle icon next to their name, @@ -115,8 +143,7 @@ project `_. .. image:: upgrade/odoo-sh-staging.png :alt: Odoo.sh project and tabs - The **latest production daily automatic backup** is then sent to the `upgrade platform - `_. + The **latest production daily automatic backup** is then sent to the Upgrade platform. Once the upgrade platform is done upgrading the backup and uploading it on the branch, it is put in a **special mode**: each time a **commit is pushed** on the branch, a **restore @@ -149,7 +176,7 @@ project `_. $ python <(curl -s https://upgrade.odoo.com/upgrade) --help An upgraded test database can also be requested via the `Upgrade page - `_. + `_. .. important:: In databases where custom modules are installed, their source code must be up-to-date with @@ -175,22 +202,20 @@ project `_. .. note:: You can request multiple test databases if you wish to test an upgrade more than once. -.. _upgrade/upgrade_report: - .. note:: When an upgrade request is completed, an upgrade report is attached to the successful upgrade email, and it becomes available in the Discuss app for users who are part of the "Administration / Settings" group. This report provides important information about the changes introduced by the new version. -.. _upgrade/test_your_db: +.. _upgrade-testing: Testing the new version of the database ---------------------------------------- +======================================= -It is essential to spend some time testing the upgraded test database to ensure that you are not -stuck in your day-to-day activities by a change in views, behavior, or an error message once the -upgrade goes live. +It is essential to test the upgraded test database to ensure that you are not stuck in your +day-to-day activities by a change in views, behavior, or an error message once the upgrade goes +live. .. note:: Test databases are neutralized, and some features are disabled to prevent them from impacting the @@ -245,9 +270,10 @@ working correctly and to get more familiar with the new version. This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo. If you face an issue while testing your upgraded test database, you can request the assistance of -Odoo by `submitting a ticket for an issue related to my future upgrade (I am testing an upgrade) -`_. In any case, it is essential to report any problem -encountered during the testing to fix it before upgrading your production database. +Odoo by going to the `Support page and selecting "An issue related to my future upgrade (I am +testing an upgrade)" `_. In any case, it is essential to +report any problem encountered during the testing to fix it before upgrading your production +database. You might encounter significant differences with standard views, features, fields, and models during testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced @@ -265,12 +291,12 @@ module to make it compatible with the new version of Odoo. - Server actions in the action menu on form views, as well as by selecting multiple records on list views -.. _upgrade/upgrade-prod: +.. _upgrade-production: Upgrading the production database ---------------------------------- +================================= -Once the :ref:`tests ` are completed and you are confident that the upgraded +Once the :ref:`tests ` are completed and you are confident that the upgraded database can be used as your main database without any issues, it is time to plan the go-live day. Your production database will be unavailable during its upgrade. Therefore, we recommend planning @@ -288,15 +314,15 @@ day before upgrading the production database is also recommended.** - Business interruptions (e.g., no longer having the possibility to validate an action) - Poor customer experience (e.g., an eCommerce website that does not work correctly) -The process of upgrading a production database is similar to upgrading a test database with a few -exceptions. +The process of upgrading a production database is similar to upgrading a test database, but with a +few exceptions. .. tabs:: .. group-tab:: Odoo Online The process is similar to :ref:`obtaining an upgraded test database - `, except for the purpose option, which must be set to + `, except for the purpose option, which must be set to :guilabel:`Production` instead of :guilabel:`Test`. .. warning:: @@ -306,8 +332,8 @@ exceptions. .. group-tab:: Odoo.sh - The process is similar to :ref:`obtaining an upgraded test database - ` on the :guilabel:`Production` branch. + The process is similar to :ref:`obtaining an upgraded test database ` on + the :guilabel:`Production` branch. .. image:: upgrade/odoo-sh-prod.png :alt: View from the upgrade tab @@ -337,7 +363,8 @@ exceptions. $ python <(curl -s https://upgrade.odoo.com/upgrade) production -d -t An upgraded production database can also be requested via the `Upgrade page - `_. + `_. + Once the database is uploaded, any modification to your production database will **not** be present on your upgraded database. This is why we recommend not using it during the upgrade process. @@ -347,14 +374,14 @@ exceptions. a filestore. Therefore, the upgraded database filestore must be merged with the production filestore before deploying the new version. -In case of an issue with your production database, you can request the assistance of Odoo by -`submitting a ticket for an issue related to my upgrade (production) -`_. +In case of an issue with your production database, you can request the assistance of Odoo by going +to the `Support page and selecting "An issue related to my future upgrade (I am testing an upgrade)" +`_. -.. _upgrade/sla: +.. _upgrade-sla: Service-level agreement (SLA) ------------------------------ +============================= With Odoo Enterprise, upgrading a database to the most recent version of Odoo is **free**, including any support required to rectify potential discrepancies in the upgraded database. @@ -363,8 +390,10 @@ Information about the upgrade services included in the Enterprise Licence is ava :ref:`Odoo Enterprise Subscription Agreement `. However, this section clarifies what upgrade services you can expect. +.. _upgrade-sla-covered: + Upgrade services covered by the SLA -=================================== +----------------------------------- Databases hosted on Odoo's cloud platforms (Odoo Online and Odoo.sh) or self-hosted (On-Premise) can benefit from upgrade services at all times for: @@ -378,8 +407,10 @@ benefit from upgrade services at all times for: Upgrade services are limited to the technical conversion and adaptation of a database (standard modules and data) to make it compatible with the version targeted by the upgrade. +.. _upgrade-sla-not-covered: + Upgrade services not covered by the SLA -======================================= +--------------------------------------- The following upgrade-related services are **not** included: diff --git a/content/administration/upgrade/odoo-sh-message.png b/content/administration/upgrade/odoo-sh-message.png new file mode 100644 index 0000000000000000000000000000000000000000..db8c7ec48b8de780d79bc4833622dc8027741928 GIT binary patch literal 14090 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 F{{X1)3Sa;L literal 22588 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. +make them work on an :ref:`upgraded database `. To make sure the custom code is working flawlessly in the new version, follow these steps: @@ -243,8 +243,8 @@ Running and testing upgrade scripts .. group-tab:: Odoo.sh - As explained on the `Odoo.sh` tab of :ref:`upgrade/request-test-database`, Odoo.sh is - integrated with the upgrade platform. + As explained on the `Odoo.sh` tab of :ref:`upgrade-request-test`, Odoo.sh is integrated with + the upgrade platform. Once the upgrade of a staging branch is on "Update on commit" mode, each time a commit is pushed on the branch, the upgraded backup is restored and all the custom modules are updated. @@ -277,9 +277,9 @@ are consistent and that nothing was lost during the upgrade process. Things to pay attention to: - Views not working: During the upgrade, if a view causes issues because of its content, it gets - disabled. You can find the information on disabled views on the :ref:`Upgrade report - `. This view needs to be activated again (or removed if not useful anymore). - To achieve this, we recommend the use of upgrade scripts. + disabled. You can find the information on disabled views on the Upgrade report. This view needs to + be activated again (or removed if not useful anymore). To achieve this, we recommend the use of + upgrade scripts. - :doc:`Module data <../tutorials/define_module_data>` not updated: Custom records that have the ``noupdate`` flag are not updated when upgrading the module in the new database. For the custom data that needs to be updated due to changes in the new version, we recommend to use upgrade @@ -293,9 +293,9 @@ Step 5: Testing and rehearsal When the custom modules are working properly in the upgraded database, it is crucial to do another round of testing to assess the database usability and detect any issues that might have gone unnoticed in previous tests. For further information about testing the upgraded database, check -:ref:`upgrade/test_your_db`. +:ref:`upgrade-testing`. -As mentioned in :ref:`upgrade/upgrade-prod`, both standard upgrade scripts and your database are +As mentioned in :ref:`upgrade-production`, both standard upgrade scripts and your database are constantly evolving. Therefore it is highly recommended to frequently request new upgraded test databases and ensure that the upgrade process is still successful. @@ -309,4 +309,4 @@ Step 6: Production upgrade ========================== Once you are confident about upgrading your production database, follow the process described on -:ref:`upgrade/upgrade-prod`, depending on the hosting type of your database. +:ref:`upgrade-production`, depending on the hosting type of your database.