Why a working module disappears after an update
You installed an Odoo update or a new app and restarted the server. Now a screen shows an error like
Module not found: web_tour
ImportError: No module named web_tour
What happened is simple: the update removed or moved the module that your process or user interface depends on. It’s not a configuration error—it’s a version mismatch. The module you need exists in one Odoo version but not in the one you just installed.
This situation is common when custom addons or third-party apps rely on modules that ship with Odoo but are renamed or dropped between versions. For example, the web_tour module was included in Odoo 14 but moved to a separate repository in Odoo 15. If your custom app still references it, the module won’t load and your screens break.
Other frequent symptoms are:
- Database startup fails with a traceback pointing to a missing module.
- A specific screen or action returns a 500 error with a module import failure.
- The app menu or buttons tied to the missing module are gone.
Quick checks before you dig deeper
Is the module actually installed in your Odoo version?
Run this command on the Odoo server to list modules shipped with your Odoo installation:
odoo-bin --list-modules | grep web_tour
What this does: It queries the Odoo installation directory for modules that match the name web_tour and prints them. If nothing prints, the module is not present in this version.
If the module is missing, check the Odoo release notes or the app store page for the update you installed. Look for a line that says the module was moved, deprecated, or replaced by another module (often with a different name).
Did you install the module in the wrong environment?
Odoo installs modules in a specific addons path. If your custom addons folder or third-party apps folder points to an old version, the new Odoo version won’t see the module. Run:
grep addons_path /etc/odoo/odoo.conf
What this does: It shows the configured addons paths. If the path points to /odoo/addons/14.0 but your Odoo runs version 15.0, modules from 14.0 won’t load.
Did the module get removed by a dependency update?
Sometimes a third-party app you installed depends on a module that was removed in the update. Check the traceback for the missing module name and see if it’s referenced by an app you recently installed or updated. Look in /odoo-custom-addons/ or the path listed under custom in your config.
How to restore the module without breaking other apps
Step 1 – Confirm the correct replacement module
Open the Odoo release notes for the version you upgraded to. Search for the name of the missing module. You’ll usually find one of these outcomes:
- Replaced by: A new module with a similar name (e.g.,
web_tour→website_tour). - Deprecated: The module is no longer supported; you must refactor your custom code.
- Moved: The module is now in a separate repository or app; you must install it separately.
Example: After upgrading from Odoo 14 to 15, the web_tour module was moved to the website_tour module. Your custom code that imported web_tour must be updated to import website_tour instead.
Step 2 – Install the correct module version
If the module was moved to a separate repository or app, install it using the Odoo app store or the command line:
odoo-bin -u website_tour --stop-after-init
What this does: It installs the website_tour module and stops Odoo after initialization. If the module installs without errors, restart Odoo normally.
If the module is deprecated, you’ll need to refactor your custom code or find an alternative. See the Odoo Custom Addons Guide for instructions on updating imports and dependencies.
Step 3 – Update your custom addons to match the new API
If your custom addons reference the old module, update the import statements in your Python files. For example, change:
from odoo.addons.web_tour.controllers.main import WebTourController
to:
from odoo.addons.website_tour.controllers.main import WebsiteTourController
Then reinstall your custom module:
odoo-bin -u your_custom_module --stop-after-init
What this does: It reloads your custom module with the updated imports. If the module installs without errors, the missing module warning should disappear.
Verify the fix and prevent future issues
Check the module list after restart
After restarting Odoo, open the Apps menu and search for the module that was missing. If it appears, click Install to confirm it loads without errors.
Check the server log for any new errors:
tail -n 20 /var/log/odoo/odoo-server.log
What this does: It shows the last 20 lines of the Odoo log. Look for lines that start with ERROR or WARNING. If you see none, the module loaded successfully.
Test the feature that depends on the module
If the missing module powered a specific screen or action, test it now. For example, if web_tour powered a guided tour, open the tour and confirm it plays without errors.
Update your deployment checklist
Add a step to your Odoo Implementation Checklist to check for module renames or removals after every update. Keep a local copy of the Odoo release notes for the versions you run. Store them in a shared drive or internal wiki so your team can reference them quickly.
Automate version compatibility checks
If you manage multiple Odoo instances, consider running a simple script after every update that lists modules in your addons path and compares them to the Odoo version manifest. A minimal Python script can do this:
import os
from odoo.tools import config
addons_path = config['addons_path']
version = config['server_version']
print(f"Checking addons for Odoo {version}")
for mod in os.listdir(addons_path):
if os.path.isdir(os.path.join(addons_path, mod)):
print(mod)
Save this as check_modules.py and run it after updates to catch missing or mismatched modules early.
When to seek help
If you followed the steps above and the module still won’t load, or if you see errors like Database access denied or Invalid module state, stop and escalate. These errors often indicate deeper issues like database corruption, permission problems, or conflicts between custom and core modules.
Escalation triggers:
- The error persists after two restarts and two attempts to install the module.
- You see database errors in the log, such as
relation does not existorcolumn does not exist. - Multiple modules are missing or failing to load, suggesting a version or dependency chain issue.
- You suspect the issue is related to a third-party integration listed in your Odoo Integration Guide.
Who to contact:
- Your internal Odoo administrator or DevOps team.
- The vendor of the third-party app that depends on the missing module.
- Odoo support if the issue is with a core module or the Odoo installation itself.
Cost and risk of leaving the issue unresolved
Immediate productivity loss
If the missing module powers a daily workflow—such as a guided tour, a custom report, or an integration screen—your team loses that feature until it’s restored. This can slow down onboarding, reduce user adoption, and create frustration.
Data integrity risks
Some modules manage data consistency or validation rules. If they fail to load, your database may accept invalid data or skip critical validations, leading to downstream errors in reports, invoices, or financial records.
Upgrade lock-in
If you skip fixing the missing module and proceed with other updates, you may lock yourself into an older Odoo version or a custom fork, which can complicate future upgrades and increase Odoo licensing and support costs.
Integration failures
If the missing module is part of an integration with an external system (ERP, CRM, e-commerce), the integration may fail silently or throw errors that corrupt sync jobs. This can disrupt order flows, inventory updates, or customer notifications.
Bottom line: Treat a missing module after an update as a critical incident. The longer it’s unresolved, the higher the risk of data drift, user frustration, and upgrade debt.
Your immediate action plan
Here’s what to do right now to restore your module and prevent repeats:
- Check the logs: Run
tail -n 50 /var/log/odoo/odoo-server.logand look for lines containingModule not foundorImportError. - Identify the module: Note the exact module name from the error (e.g.,
web_tour). - Check Odoo version: Run
odoo-bin --versionto confirm your Odoo version. - Compare with release notes: Open the release notes for your Odoo version and search for the module name to find its replacement or status.
- Install or refactor: Either install the replacement module or update your custom code to use the new module name.
- Restart and test: Restart Odoo and test the feature that depends on the module.
If you’re unsure which module to install or how to refactor your code, escalate to your Odoo administrator or a developer familiar with your custom addons. Do not skip this step—delaying the fix increases integration risk and upgrade debt.
Practical Next Step
Check your Odoo logs for missing module errors right now
Discuss Your Odoo ScopeFAQ
What does 'Module not found' mean in Odoo?
It means Odoo cannot locate the Python package or directory for the module you are trying to load. This happens when the module is not installed in the addons path for your Odoo version, or when the module was renamed or removed in the version you upgraded to.
How do I know which Odoo version I am running?
Run odoo-bin --version on the server. The output shows the Odoo server version, e.g., 15.0+e. Compare this to the release notes to see which modules were changed or removed.
Can I install an older version of a module if the new one is missing?
Installing an older module version is not recommended. It can cause compatibility issues with your database schema and may break other modules. Instead, update your custom code to use the new module or find an alternative that supports your Odoo version.
What if the missing module is a third-party app I paid for?
Check the vendor’s documentation or support portal for the module. Many vendors provide updated packages for newer Odoo versions. If the module is no longer supported, ask the vendor for a migration path or an alternative solution before proceeding with your upgrade.
How can I prevent this issue in future updates?
Add a pre-update checklist that includes reviewing the Odoo release notes for module changes, checking your custom addons for deprecated imports, and testing the update in a staging environment. Store the release notes locally and reference them after every update.