Hi,
This issue occurs because of how Odoo handles module dependencies and related fields during upgrades. In your setup, Module A adds the status field to res.partner, while Module B creates a related field in account.move that depends on res.partner.status. When you upgrade Module A, Odoo temporarily reloads its model definitions, and since Module B’s related field still references a field that hasn’t been fully reloaded, it triggers a KeyError. This isn’t exactly a bug in your code but rather a limitation of Odoo’s registry initialization process when dealing with interdependent modules.
To fix it, the simplest method is to upgrade the modules in the correct order, upgrade Module A first, then Module B. If the Apps interface doesn’t work, this can be done using terminal commands with -u module_a followed by -u module_b.
If that doesn’t resolve it, you can temporarily disable the related field in Module B (by removing the related parameter), upgrade Module A, and then restore the related field after Module A has loaded successfully.
A more robust solution is to replace the related field with a computed field that depends on partner_company_id.status. This avoids hard registry dependencies during startup and ensures that upgrades run smoothly regardless of the module loading order.
Finally, make sure Module B’s manifest explicitly declares a dependency on Module A. In short, this issue is caused by Odoo’s dependency loading sequence, and the best long-term fix is to use a computed field or carefully manage module upgrade order.
Hope it helps