Upgrade Analysis

upgrade_analysis
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/19.0/upgrade_analysis
VERSION
VERSION 1.0.4
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSHolger Brunn, Miquel Raïch, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides the tool to generate the database analysis files
that indicate how the Odoo data model and module data have changed
between two versions of Odoo. Database analysis files for the core
modules are included in the OpenUpgrade distribution so as a migration
script developer you will not usually need to use this tool yourself. If
you do need to run your analysis of a custom set of modules, please
refer to the documentation here:
<https://doc.therp.nl/openupgrade/analysis.html>

This module is just a tool, a continuation of the old
openupgrade_records in OpenUpgrade in previous versions. It's not
recommended to have this module in a production database.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
module_coverage module_coverage ir.ui.view qweb New
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis list New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config list New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record list New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=False store=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (3)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_module_coverage_file(self, no_changes_modules)
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr> string='Modules'
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/18.0/upgrade_analysis
VERSION
VERSION 1.4.5
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSStefan Rijnhart, Holger Brunn, Miquel Raïch, sergio-teruel, Weblate, OCA-git-bot, Simone Orsi, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides the tool to generate the database analysis files
that indicate how the Odoo data model and module data have changed
between two versions of Odoo. Database analysis files for the core
modules are included in the OpenUpgrade distribution so as a migration
script developer you will not usually need to use this tool yourself. If
you do need to run your analysis of a custom set of modules, please
refer to the documentation here:
<https://doc.therp.nl/openupgrade/analysis.html>

This module is just a tool, a continuation of the old
openupgrade_records in OpenUpgrade in previous versions. It's not
recommended to have this module in a production database.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
module_coverage module_coverage ir.ui.view qweb New
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis list New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config list New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record list New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=False store=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (3)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_module_coverage_file(self, no_changes_modules)
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr> string='Modules'
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/17.0/upgrade_analysis
VERSION
VERSION 1.0.5
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSStefan Rijnhart, Holger Brunn, Miquel Raïch, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
mako
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides the tool to generate the database analysis files
that indicate how the Odoo data model and module data have changed
between two versions of Odoo. Database analysis files for the core
modules are included in the OpenUpgrade distribution so as a migration
script developer you will not usually need to use this tool yourself. If
you do need to run your analysis of a custom set of modules, please
refer to the documentation here:
<https://doc.therp.nl/openupgrade/analysis.html>

This module is just a tool, a continuation of the old
openupgrade_records in OpenUpgrade in previous versions. It's not
recommended to have this module in a production database.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis tree New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config tree New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record tree New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=False store=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (3)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_module_coverage_file(self, no_changes_modules)
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr> string='Modules'
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/16.0/upgrade_analysis
VERSION
VERSION 1.2.1
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Sylvain LE GAL, Miquel Raïch, Weblate, OCA-git-bot, oca-ci, Guillaume MASSON
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
mako
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis tree New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config tree New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record tree New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (3)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_module_coverage_file(self, no_changes_modules)
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr> string='Modules'
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/15.0/upgrade_analysis
VERSION
VERSION 3.0.2
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSStefan Rijnhart, Sylvain LE GAL, OCA Transbot, Miquel Raïch, Roy Le, Weblate, OCA-git-bot, oca-ci, Jean-Charles Drubay, Cuong, Nguyen Minh Tran Manh
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
mako
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis tree New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config tree New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record tree New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (3)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_module_coverage_file(self, no_changes_modules)
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr>
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/14.0/upgrade_analysis
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYMigration
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Therp BV, Opener B.V.
COMMITTERS
COMMITTERSStefan Rijnhart, Sylvain LE GAL, GitHub, mreficent, OCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dataclasses
odoorpc
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_upgrade_analysis_form upgrade.analysis form New
view_upgrade_analysis_tree upgrade.analysis tree New
view_upgrade_comparison_config_form upgrade.comparison.config form New
view_upgrade_comparison_config_tree upgrade.comparison.config tree New
view_upgrade_generate_record_wizard_form upgrade.generate.record.wizard form New
view_upgrade_install_wizard_form upgrade.install.wizard form New
view_upgrade_record_form upgrade.record form New
view_upgrade_record_search upgrade.record search New
view_upgrade_record_tree upgrade.record tree New
Models touched (7)

New fields (2)
  • is_oca_module Boolean
    compute='_compute_is_oca_module'
  • is_odoo_module Boolean
    compute='_compute_is_odoo_module'
Public methods (0)

No public methods.

New fields (6)
  • analysis_date Datetime
    readonly=True
  • config_id Many2one → upgrade.comparison.config
    comodel_name='upgrade.comparison.config' readonly=True required=True string='Comparison Config'
  • log Text
    readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'draft'), ('done', 'Done')]
  • upgrade_path Char
    compute='_compute_upgrade_path' help="The base file path to save the analyse files of Odoo modules. Taken from Odoo's --upgrade-path command line option or the 'scripts' subdirectory in the openupgrade_scripts addon." readonly=True
  • write_files Boolean
    default=True help='Write analysis files to the module directories'
Public methods (2)
  • analyze(self)
    Retrieve both sets of database representations, perform the comparison and register the resulting change set
  • generate_noupdate_changes(self)
    Communicate with the remote server to fetch all xml data records per module, and generate a diff in XML format that can be imported from the module's migration script using openupgrade.load_data()

New fields (3)
  • name Char
    readonly=True
  • record_id Many2one → upgrade.record
    comodel_name='upgrade.record' index=True ondelete='CASCADE' readonly=True
  • value Char
    readonly=True
Public methods (0)

No public methods.

New fields (9)
  • analysis_ids One2many → upgrade.analysis
    comodel_name='upgrade.analysis' inverse_name='config_id' string='Analyses'
  • analysis_qty Integer
    compute='_compute_analysis_qty'
  • database Char
    required=True
  • name Char
  • password Char
    default='admin' required=True
  • port Integer
    default=8069 required=True
  • server Char
    default='localhost' required=True
  • username Char
    default='admin' required=True
  • version Char
Public methods (4)
  • action_show_analysis(self)
  • get_connection(self)
  • new_analysis(self)
  • test_connection(self)

New fields (1)
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (1)
  • generate(self)
    Reinitialize all installed modules. Equivalent of running the server with '-d <database> --init all' The goal of this is to fill the records table. TODO: update module list and versions, then update all modules?

New fields (3)
  • module_ids Many2many → ir.module.module
    comodel_name='ir.module.module' domain=<expr>
  • module_qty Integer
    compute='_compute_module_qty' string='Modules Quantity'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('done', 'Done')]
Public methods (7)
  • install_modules(self)
    Set all selected modules and actually install them.
  • return_same_form_view(self)
  • select_installable_modules(self, extra_domain=None)
  • select_oca_modules(self, extra_domain=None)
  • select_odoo_modules(self, extra_domain=None)
  • select_other_modules(self, extra_domain=None)
  • unselect_modules(self)

New fields (14)
  • attribute_ids One2many → upgrade.attribute
    comodel_name='upgrade.attribute' inverse_name='record_id' readonly=True
  • definition Char
    readonly=True
  • domain Char
    readonly=True
  • field Char
    readonly=True
  • mode Selection
    help='Set to Create if a field is newly created in this module. If this module modifies an attribute of an existing field, set to Modify.' readonly=True args: [('create', 'Create'), ('modify', 'Modify')]
  • model Char
    readonly=True
  • model_original_module Char
    compute='_compute_model_original_module'
  • model_type Char
    compute='_compute_model_type'
  • module Char
    readonly=True
  • name Char
    readonly=True
  • noupdate Boolean
    readonly=True
  • prefix Char
    compute='_compute_prefix_and_suffix'
  • suffix Char
    compute='_compute_prefix_and_suffix'
  • type Selection
    readonly=True args: [('field', 'Field'), ('xmlid', 'XML ID'), ('model', 'Model')]
Public methods (3)
  • field_dump(self)
    @api.model
  • get_xml_records(self, module)
    @api.model
    Return all XML records from the given module
  • list_modules(self)
    @api.model
    Return the set of covered modules