I ran Odoo's migration scripts before and had been quite successful in upgrading in the past (thank you!). This time, I was upgrading from 17 to 18 to 19; 17 to 18 was fine; when running from 18 to 19, an error from one of Odoo SA's module 'account_edi_ubl_cii' popped up. The same error popped up when I ran it with Odoo's demo data.
2026-06-18 08:56:15,306 24 INFO OdooTest odoo.modules.loading: Module account_add_gln loaded in 0.19s, 110 queries (+110 other)
2026-06-18 08:56:15,306 24 INFO OdooTest odoo.modules.loading: Loading module account_edi_ubl_cii (40/50)
2026-06-18 08:56:15,312 24 INFO OdooTest odoo.modules.migration: module account_edi_ubl_cii: Running upgrade [>19.0.1.0] pre-migration
2026-06-18 08:56:15,313 24 INFO OdooTest OpenUpgrade: account_edi_ubl_cii: pre-migration script called with version 18.0.1.0
2026-06-18 08:56:15,314 24 ERROR OdooTest OpenUpgrade: map_values is called with the same value for source and old columns : ubl_cii_tax_exemption_reason_code. Please copy this column to preserve existing data, and map the values from there (tip: you can use `copy_columns` and `get_legacy_name` functions to achieve this).
NoneType: None
2026-06-18 08:56:15,314 24 ERROR OdooTest odoo.sql_db: bad query: b"UPDATE account_tax\n SET ubl_cii_tax_exemption_reason_code = 'VATEX-EU-AE'\n WHERE ubl_cii_tax_exemption_reason_code = 'VATEX_EU_AE'"
ERROR: column "ubl_cii_tax_exemption_reason_code" does not exist
LINE 3: WHERE ubl_cii_tax_exemption_reason_co...
^
2026-06-18 08:56:15,314 24 ERROR OdooTest OpenUpgrade: Error after 0:00:00.000427 running UPDATE account_tax
SET ubl_cii_tax_exemption_reason_code = 'VATEX-EU-AE'
WHERE ubl_cii_tax_exemption_reason_code = 'VATEX_EU_AE'
2026-06-18 08:56:15,314 24 ERROR OdooTest OpenUpgrade: account_edi_ubl_cii: error in migration script /opt/odoo/custom-addons/OpenUpgrade/openupgrade_scripts/scripts/account_edi_ubl_cii/19.0.1.0/pre-migration.py: column "ubl_cii_tax_exemption_reason_code" does not exist
LINE 3: WHERE ubl_cii_tax_exemption_reason_co...
^
2026-06-18 08:56:15,314 24 ERROR OdooTest OpenUpgrade: column "ubl_cii_tax_exemption_reason_code" does not exist
LINE 3: WHERE ubl_cii_tax_exemption_reason_co...
^
Traceback (most recent call last):
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 2566, in wrapped_function
func(
~~~~^
api.Environment(cr, uid or SUPERUSER_ID, context or {})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<2 lines>...
version,
^^^^^^^^
)
^
File "/opt/odoo/custom-addons/OpenUpgrade/openupgrade_scripts/scripts/account_edi_ubl_cii/19.0.1.0/pre-migration.py", line 22, in migrate
openupgrade.map_values(
~~~~~~~~~~~~~~~~~~~~~~^
env.cr,
^^^^^^^
...<3 lines>...
table="account_tax",
^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 2324, in map_values
logged_query(cr, query, values)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 1852, in logged_query
cr.execute(query, args)
~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/odoo/odoo/sql_db.py", line 440, in execute
self._obj.execute(query, params)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
psycopg2.errors.UndefinedColumn: column "ubl_cii_tax_exemption_reason_code" does not exist
LINE 3: WHERE ubl_cii_tax_exemption_reason_co...
^
2026-06-18 08:56:15,319 24 WARNING OdooTest odoo.modules.loading: Transient module states were reset
2026-06-18 08:56:15,320 24 ERROR OdooTest odoo.registry: Failed to load registry
2026-06-18 08:56:15,320 24 CRITICAL OdooTest odoo.service.server: Failed to initialize database `OdooTest`.
Traceback (most recent call last):
File "/opt/odoo/odoo/service/server.py", line 1544, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'], reinit_modules=config['reinit'])
File "/opt/odoo/odoo/tools/func.py", line 88, in locked
return func(inst, *args, **kwargs)
File "/opt/odoo/odoo/orm/registry.py", line 199, in new
load_modules(
~~~~~~~~~~~~^
registry,
^^^^^^^^^
...<5 lines>...
models_to_check=models_to_check,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/odoo/odoo/modules/loading.py", line 464, in load_modules
load_module_graph(
~~~~~~~~~~~~~~~~~^
env, graph, update_module=update_module,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
report=report, models_to_check=models_to_check)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/custom-addons/OpenUpgrade/openupgrade_framework/odoo_patch/odoo/modules/loading.py", line 12, in load_module_graph
return odoo.modules.loading.load_module_graph._original_method(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
env, graph, *args, **kwargs
^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/odoo/odoo/modules/loading.py", line 174, in load_module_graph
migrations.migrate_module(package, 'pre')
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/modules/migration.py", line 215, in migrate_module
exec_script(self.cr, installed_version, pyfile, pkg.name, stage, version)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/modules/migration.py", line 253, in exec_script
mod.migrate(cr, installed_version)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 2566, in wrapped_function
func(
~~~~^
api.Environment(cr, uid or SUPERUSER_ID, context or {})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<2 lines>...
version,
^^^^^^^^
)
^
File "/opt/odoo/custom-addons/OpenUpgrade/openupgrade_scripts/scripts/account_edi_ubl_cii/19.0.1.0/pre-migration.py", line 22, in migrate
openupgrade.map_values(
~~~~~~~~~~~~~~~~~~~~~~^
env.cr,
^^^^^^^
...<3 lines>...
table="account_tax",
^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 2324, in map_values
logged_query(cr, query, values)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/.venv/lib/python3.14/site-packages/openupgradelib/openupgrade.py", line 1852, in logged_query
cr.execute(query, args)
~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/odoo/odoo/sql_db.py", line 440, in execute
self._obj.execute(query, params)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
psycopg2.errors.UndefinedColumn: column "ubl_cii_tax_exemption_reason_code" does not exist
LINE 3: WHERE ubl_cii_tax_exemption_reason_co...
^
2026-06-18 08:56:15,322 24 INFO OdooTest odoo.service.server: Initiating shutdown
2026-06-18 08:56:15,322 24 INFO OdooTest odoo.service.server: Hit CTRL-C again or send a second signal to force the shutdown.
2026-06-18 08:56:15,323 24 INFO OdooTest odoo.sql_db: ConnectionPool(read/write;used=0/count=0/max=64): Closed 1 connections
git log --oneline
625e6bcb (grafted, HEAD -> 19.0, origin/19.0) [FIX] l10n_fr_pdp: fix IncludedNote node
git log -1 --format=%ai 625e6bcb
2026-06-05 14:00:33 +0000
Describe the bug
I ran Odoo's migration scripts before and had been quite successful in upgrading in the past (thank you!). This time, I was upgrading from 17 to 18 to 19; 17 to 18 was fine; when running from 18 to 19, an error from one of Odoo SA's module 'account_edi_ubl_cii' popped up. The same error popped up when I ran it with Odoo's demo data.
This is a dump of the error log:
To Reproduce
Affected versions: Odoo 19 migration script
Steps to reproduce the behavior:
Workaround
Since I don't use this app (namely account_edi_ubl_cii), I uninstalled it in Odoo18 and ran the migration which pass.