Daily updates from Odoo
Tuesday, November 4, 2025
41 changes
2 changes
Enhancements to existing features
This update refreshes the QR-code URLs sent to Avalara when issuing Brazilian NFC-e invoices. It prevents invoice errors caused by outdated links, helping sales operations continue smoothly in states that changed their official QR-code addresses.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845
Forward-Port-Of: odoo/enterprise#95726This change greatly speeds up the process of changing a contract template on a pending job offer. It reduces unnecessary database work so the action completes in milliseconds instead of minutes on large databases, improving responsiveness for HR teams.
Original PR description
Description ----------- - Fix performance regressions due to breaking the prefetcher via `[0]` indexing of `hr.version` and batch `write`. - Evaluate only the current employees contracts in `_get_contract_versions` for an *onchange* context, else the `hr. version` for all employees are fetched and evaluated, leading to significant overhead downstream. - Add missing index for `_remove_work_entries` Benchmark --------- On a database in 19.0, with ~10k employees, ~30k versions and ~5M work-entries, the onchange triggered when changing the contract template on a pending offer for a new lambda employee took: | | Before | After | |-------------|--------|--------| | Query Count | 107k | 349 | | Time | 2.9min | ~300ms | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
2 changes
Enhancements to existing features
This change prevents the built-in Public User from being deleted, which could previously break the login page in databases without the Website module. It helps keep public access working reliably and avoids an internal server error for users trying to sign in.
Original PR description
Steps to Reproduce:
1. Create a database without installing the Website module.
2. Navigate to archived users and delete the "Public User."
3. Attempt to log in to the database from another browser or incognito
mode.
4. An internal server error occurs because the public user does not
exist, making the login page inaccessible.
Issue:
Previously, it was possible to delete the public user, leading to an
internal server error due to its absence, which prevented public access
to the login page.
Solution:
- Implemented a restriction to prevent the deletion of the public user,
similar to portal and default users.
- Added a test case to validate this functionality and ensure the
public user cannot be deleted.
task-4423568
Forward-Port-Of: odoo/odoo#196918This update refreshes the QR-code URLs sent to Avalara for Brazilian NFC-e invoices. It fixes errors caused by outdated state-specific links, helping invoice issuance continue to work correctly.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845
Forward-Port-Of: odoo/enterprise#957261 change
Enhancements to existing features
This update refreshes the NFC-e QR-code URLs sent to Avalara so they match the latest links used by the states. It helps prevent invoice errors caused by outdated or invalid QR-code addresses during tax calculation and invoice submission.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845
Forward-Port-Of: odoo/enterprise#9572618 changes
Enhancements to existing features
This update improves how employee benefits, such as Belgian eco vouchers, are handled across contracts, salary offers, and payslips. It helps payroll teams avoid unwanted automatic copying of benefit values while making salary rule settings more flexible and reliable.
Brazilian invoices, sales orders, and point-of-sale orders for foreign customers now include the required export details when sent to Avalara and EDI services. This helps ensure export-of-goods transactions are correctly identified and processed for Brazilian localization compliance.
Original PR description
Purpose: By allowing the user to add a foreign partner as a customer on an invoice, we will need to include the export of goods information in the requests sent to Avalara and EDI. The required information under goods to be sent for export invoices are: - header.goods.idDest = 3 (indicates export operation) - header.goods.exportInfo.shippingState (indicates the state the products will ship from) - header.goods.exportInfo.place (incoterm_location) - header.locations.entity.address.neighborhood = "EXTERIOR" - header.locations.entity.address.zipcode = "99999999" - header.locations.entity.address.cityCode = "9999999" - header.locations.entity.address.cityName = "EXTERIOR" - header.locations.entity.address.state = "EX" - header.locations.entity.federalTaxId = "9999999999" task-4802462
Warehouse teams can now print Starshipit shipping labels in batches, reducing repetitive work when processing multiple deliveries. Labels also include the sales order reference in the order number, making it easier to match each label to the correct customer order.
Original PR description
Adds two improvements to the usability of the module by supporting printing starshipit labels in batch, and also adding the SO reference to the order number to more easily match the label with it. task-4821727 Forward-Port-Of: odoo/enterprise#91405
Account lists now show the current applicable fiscal rate and fiscal category, making review work easier. Fiscal report warnings about multiple rates are more accurate because they only consider accounts used in the selected period, and Belgian chart data was corrected to remove a duplicate rate assignment.
Original PR description
[IMP] account_fiscal_categories: enhance list view of account_account ====================================================== With this commit, we add a new field `current_rate` in `account.account`.…
[IMP] account_fiscal_categories: enhance list view of account_account ====================================================== With this commit, we add a new field `current_rate` in `account.account`. This `current_rate` is a non-stored compute field, used to compute the current applicable rate on the given account. This `current_rate` and `fiscal_category_id` has been introduced in the list view of `account.account`. [IMP] account_fiscal_categories: enhance multiple rate warning in fiscal report =========================================================== Before this commit, the "multiple rate" warning was shown even when no entries for accounts with multiple rates existed in the selected period. This happened because all accounts were considered for multiple rates, regardless of journal entries in that period. After this commit, only accounts with entries in the selected period are considered for the "multiple rates" warning. The warning is now clickable, redirecting the user to the accounts having multiple rates. [FIX] l10n_be_fiscal_categories: remove redundant rate on CoA ================================================= This commit removes the redundant fiscal rate on account-613311. Both fiscal categories 1206 and 1073 were assigned to this account, resulting in two rates. Only 1073 should be there. ref-https://github.com/odoo/enterprise/commit/f2579a80833ac129b2f21613b93c4e3203646a1b **task**-5163392 ----------------------- Forward-Port-Of: odoo/enterprise#97324
Appraisal forms now include an expand button for employee and manager feedback fields. This opens a larger pop-up editor, making it easier to review and update longer feedback during performance appraisals.
Original PR description
Add the expand button to the employee feedback and manager feedback fields on the appraisal form, click on it, it will open a pop up to update the employee or manager feedback. task-4852953
The Belgian POS blackbox integration now prompts users to update their IoT device so it can support an upcoming queued communication flow. This prepares retailers for a more reliable connection between POS terminals and the fiscal blackbox in the next update.
Original PR description
This commit is the first of two which will introduce a queue mechanism in the communication between the POS and the blackbox. This commit adds an action to the iot and invites users to update their iot to be prepared for the next commit which will effectively add the queue mechanism and use the new action. Second part: https://github.com/odoo/enterprise/pull/90747 Forward-Port-Of: odoo/enterprise#96904 Forward-Port-Of: odoo/enterprise#96639
The Barcode app now shows a more descriptive unpack icon by combining existing icon elements into a custom visual. This helps warehouse users better recognize the unpack action and reduces confusion during barcode workflows.
Original PR description
In barcode the unpack icon isn't descriptive enough. Since font-awesome doesn't provide any icons to convey the proper meaning, this PR stacks 2 fa icons to create a new one. task-5051649 Forward-Port-Of: odoo/enterprise#95749
The bike tax deduction field was removed from the vehicle model information because it is now managed under engine specifications. This avoids showing the same information in two places and helps keep payroll fleet data clearer for users.
Original PR description
for bike, removed tax deduction field from model info since it's now handled under engine specs. task-4653379
The Discuss app now uses a shared synchronization approach for related channel, member, and category information. This reduces duplicate logic behind the scenes, making future maintenance safer while preserving the user experience.
Original PR description
Currently, Discuss Channel, Discuss Channel Member, Discuss Category, have certain fields that need to stay synchronized when updated. This is currently done with a custom implementation of _sync_field_names on each model and orm (write) overrides. Since the synchronization logic is mostly similar across these models, we want to introduce a way to generalize this solution. task-5221092 https://github.com/odoo/odoo/pull/233654
All IoT-related code has been brought together into the Enterprise IoT module, simplifying where these capabilities are maintained. This should make future improvements and support for connected devices, point of sale hardware, and self-ordering integrations more consistent.
Original PR description
As it was decided to move all IoT related code to Enterprise, this commit merges back `iot_base` into `iot`. odoo/odoo#231746
This update makes the small buttons in the top menu bar show clearer visual states, such as hover, active, and dropdown behavior. It creates a more consistent experience across apps, light and dark themes, and enterprise navigation areas.
Original PR description
*: documents, hr_contract_salary, hr_payroll, industry_fsm_stock, mail_enterprise, mrp_workorder, stock_barcode, test_l10n_be_hr_payroll, voip, web_studio, website_enterprise This PR improves the…
*: documents, hr_contract_salary, hr_payroll, industry_fsm_stock, mail_enterprise, mrp_workorder, stock_barcode, test_l10n_be_hr_payroll, voip, web_studio, website_enterprise This PR improves the different button states within the `.o_menu_systray element` - requires https://github.com/odoo/odoo/pull/227858 | ///////// | Master | This PR | |--------|--------|--------| | AppSwitcher (**Light**) | <img width="489" height="43" alt="image" src="https://github.com/user-attachments/assets/39638af5-3bf4-4489-bd28-d409e74130a7" /> | <img width="493" height="49" alt="image" src="https://github.com/user-attachments/assets/0ae1a53f-457d-408e-847c-e4cbe187b6d1" /> | | AppSwitcher (**Dark**) | <img width="487" height="40" alt="image" src="https://github.com/user-attachments/assets/926c499f-18a0-4e8b-b71c-50ff0dd2d73a" /> | <img width="493" height="47" alt="image" src="https://github.com/user-attachments/assets/3983d593-2cdc-4184-a325-36a4bda4dd03" /> | | In App (**Light**) | <img width="494" height="47" alt="image" src="https://github.com/user-attachments/assets/c82bd674-00c3-47e6-9fd6-7b8abb29c873" /> | <img width="475" height="46" alt="image" src="https://github.com/user-attachments/assets/7d3829ae-17cf-42b0-940f-5b3eb7b57209" /> | | In App (**Dark**) | <img width="490" height="44" alt="image" src="https://github.com/user-attachments/assets/e1583d60-1ec9-4954-b63a-d6adcf55c070" /> | <img width="482" height="45" alt="image" src="https://github.com/user-attachments/assets/fd64aba7-921b-4d4e-97f5-c5e36de5ebf3" /> | | Front-end (**Light**) | <img width="487" height="48" alt="image" src="https://github.com/user-attachments/assets/b7421589-cb20-447c-9b81-80dcb4f00b66" /> | <img width="507" height="48" alt="image" src="https://github.com/user-attachments/assets/a7bdc284-e949-481c-a20d-849221cebee7" /> | | Front-end (**Dark**) | <img width="502" height="47" alt="image" src="https://github.com/user-attachments/assets/aefb1260-6a0a-4c69-a4db-d30865427b91" /> | <img width="505" height="49" alt="image" src="https://github.com/user-attachments/assets/0411a78f-807f-42bb-b88c-3fb4b65fb67f" /> | --------- Currently, these buttons are either: - `<button>` elements with only the .btn class, which does not provide a complete set of CSS properties. - `.dropdown-toggle` elements with an inherited background-color, which ends up being the transparent background set on the `<nav>` element. This commit harmonizes these approaches into a single one, aligned with the implementation used in .o_menu_sections. This increases consistency and also improves the accessibility of these items. task-5098241
This update adds a dedicated PDF version of Mexican payroll CFDI documents, making it easier for companies to generate and share compliant payroll receipts. It improves payroll reporting and presentation for employees and administrators using Mexico payroll localization.
Original PR description
Forward-Port-Of: odoo/enterprise#94551
Brazilian point-of-sale invoicing now uses updated NFC-e QR code links required by several states. This helps prevent invoice issuing errors caused by outdated links when sending tax and goods invoice requests through Avalara.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845
Forward-Port-Of: odoo/enterprise#95726Salary adjustments can now be linked to a beneficiary bank account, ensuring payments are directed to the correct account in payment reports. The beneficiary details are also shown on payslips, giving employees and payroll teams clearer payment information.
Original PR description
This commit introduces the concept of a beneficiary for salary adjustments. A bank account can now be linked to an adjustment, so that the adjustment payment is directed to it in the payment report and also displayed on the payslip. Task: 5040786
Hong Kong payroll declaration forms now include chatter, making it easier for users to follow discussions and track activity directly on the reports. This improves collaboration and visibility for teams managing local payroll declarations based on user feedback.
Original PR description
Based on HK feedback, chatter is added on their declaration forms task:5067386
Contract salary template version fields now open using the correct form view configuration. This helps HR users reach the intended contract template screen more reliably and reduces navigation confusion.
Original PR description
The contract template form view is now written on the formview_action directly. task-5082709
Accounting reports can now include multiple text-based columns, making it easier to present items such as tax box numbers. This improves clarity for VAT reports in countries like Germany, South Africa, and North Macedonia without changing core reporting workflows.
Original PR description
Add a simple text engine to reports to be able to add multiple text columns. This is useful for reports that have box numbers eg. DE/ZA/MK VAT Reports
Odoo now uses one consistent way to keep internal dictionary data read-only, reducing the chance of inconsistent behavior. This improves reliability and performance for internal processes without changing day-to-day user workflows.
Original PR description
Before this commit, Odoo had two implementations for creating an immutable dictionary. These two implementations have different behaviors and coexist for backward compatibility reasons. The purpose of this commit is to leave only one implementation for the immutable dictionary, called `frozendict`. This implementation makes it truly impossible to modify the mapping. In addition, by default, we don't override internal methods of the dictionary which improves performance (despite the cost during creation). Note 1: Classes `LangData` and `LangDataDict` are adapted as `Mapping` subclasses instead of `ReadonlyDict`. This simplifies their implementation, which is not performance-critical. Note 2: This change is possible because the `MappingProxyType` class implements fallback on the `__hash__` method since version 3.12 (thanks to d357125). task-4808836
14 changes
Enhancements to existing features
Pakistan payroll tax rules have been updated with the new 2026 bracket values. This helps ensure employee payslips and payroll calculations stay accurate and aligned with the latest local tax requirements.
Original PR description
Tax brackets for pakistan localization has been updated to include the new values for 2026. Forward-Port-Of: odoo/enterprise#98345
This change adds a shared set of helper methods for accounting tests, making it easier to create invoices, sales orders, reversals, and other common test records. It helps establish a single standard that future accounting test work can reuse, improving consistency and reducing duplicated test setup code.
Original PR description
This commit adds bunch of helper methods on AccountTestInvoicingCommon to make it easier to do generic accounting test actions, such as: - creating invoice - creating sale order - reversing invoice - skipping test if module isn't installed - creating down payment invoice ... and many more. We're aware that there are thousands of different helpers for creating invoice out there in different localizations. This commit serves as the first necessary step to create one standard that can be extended across all other test helpers. This is a simplified version of the merged commit in master. We are not refactoring/rewriting any other test to use these new helpers. Our goal is just to make it available for everyone to start using this helper on their accounting-related tests. task-4891206 Forward-Port-Of: odoo/odoo#234036 Forward-Port-Of: odoo/odoo#233724
This update refreshes the QR-code links sent to Avalara when issuing Brazil NFC-e invoices. It helps prevent invoice errors caused by outdated or invalid links, ensuring tax calculations and invoice submission continue to work correctly.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845
Forward-Port-Of: odoo/enterprise#95726Messages that include a rating are now treated as non-empty in portal views. This prevents rated feedback from being overlooked and improves the accuracy of customer interactions shown to users.
Original PR description
*: portal, portal_rating, rating, website_slides task-5016995 Forward-Port-Of: odoo/odoo#234059 Forward-Port-Of: odoo/odoo#223515
This update keeps Raspberry Pi and IoT device setup working with newer Python and related system libraries. It also fixes where Wi‑Fi settings are saved, helping ensure network configuration is applied correctly on recent device images.
Original PR description
To ensure compatibility with python 3.13+, we updated the method to generate the rpi's password to avoid using the removed `crypt` lib.
In addition, we ensure that Wi-Fi configuration is saved to the right path, nmcli saving path changed in latest versions. (see: https://github.com/raspberrypi/trixie-feedback/issues/3).
Finally, we ensure compatibility with old `cryptography` versions, by using `not_valid_after_utc` or `not_valid_after` depending on on image version.
Forward-Port-Of: odoo/odoo#234014
Forward-Port-Of: odoo/odoo#233423This update prepares the POS and blackbox integration for a more reliable communication flow by introducing a new action to the connected device. It is the first step toward a queue-based mechanism that will help transactions between the POS and blackbox run more smoothly in the next update.
Original PR description
This commit is the first of two which will introduce a queue mechanism in the communication between the POS and the blackbox. This commit adds an action to the iot and invites users to update their iot to be prepared for the next commit which will effectively add the queue mechanism and use the new action. Second part: https://github.com/odoo/enterprise/pull/90747 Forward-Port-Of: odoo/enterprise#96904 Forward-Port-Of: odoo/enterprise#96639
The Iyzico payment provider now supports webhooks, allowing Odoo to receive payment updates automatically from Iyzico. This improves payment status tracking and makes the integration more reliable for customers and the business.
Original PR description
This commit adds webhook support for the Iyzico payment provider. task-5067754
This update improves how user mentions are detected and validated while composing messages. It also moves part of the message preparation work into a dedicated component, paving the way for a more accurate “what you see is what you get” experience in the composer.
Original PR description
This commit introduces a new MentionPlugin to handle user mentions in the mail composer. The MentionPlugin is responsible for detecting and validating mentions. It listens to selection changes and processes mention elements accordingly. This commit also moves part of the prepareMessageBody logic to the MentionPlugin, so that we can finally get rid of the prepareMessageBody in the future and get what you see is what you get in the composer. task-5137057 backport - https://github.com/odoo/odoo/pull/232538 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds the "Wage on signature" field to the contract version list and the "Company Car" field to the employee list. It makes these values visible at a glance, helping users review important HR information more quickly without opening each record.
Original PR description
*: hr_contract_salary,l10n_be_hr_payroll_fleet Added the "Wage on signature" field to versions list view, and "Company Car" to employee list view. task-5231169
Attachment content is now prepared in a way that helps AI find and understand information more accurately. PDFs are indexed more directly, and tabular files are reformatted into a clearer text structure so retrieval results are more relevant.
Original PR description
### Summary
This improvement refines how attachments are indexed to enhance retrieval quality and RAG comprehension.
### Key Changes
- **PDF Indexation:**
- Moved the PDF attachment indexation logic from the previous implementation to the main `_index` method in the `attachment_indexation` module [COM PR].
- PDFs are now indexed directly and their content is stored into `index_content` to be used directly.
- **Tabular File Indexation:**
- In alignment with the community PR that indexes tabular files as CSV text, this update introduces a new helper method:
- `_process_csv_text`: Converts CSV content into a **header–dictionary-style text**, improving semantic understanding for RAG.
---
**Task:** 5045336This update adds extra IGIC tax data for the Canary Islands and splits purchase taxes into goods and services. It helps Odoo apply the correct tax mappings based on the type of purchase, improving compliance and reducing manual adjustments.
Original PR description
We have splitted purchase taxes in goods and services because there are different mappings according to the scope. It has a similar functionality with spanish mainland taxes @jco-odoo There are doubts with the fiscal position `fp_nacional_canary_ns` as it is applied automatically to spanish non canarian partners but it should be similar to non-EU partners IMO. However, I think that the opinion fo some canary people would be nice to clarify it @Christian-RB --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230964 Forward-Port-Of: odoo/odoo#228667
Receipts are now included by default in the invoice and bill views, alongside regular customer invoices and vendor bills. This makes it easier for users to see all related accounting documents without adjusting filters manually.
Original PR description
This commit Shows by default receipts along side invoices/bills from customer invoices or vendor bills pages. task-5187350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change greatly speeds up the contract template update process when preparing a new job offer. It reduces unnecessary data processing and database work, which cuts waiting time from minutes to a fraction of a second in large databases.
Original PR description
Description ----------- - Fix performance regressions due to breaking the prefetcher via `[0]` indexing of `hr.version` and batch `write`. - Evaluate only the current employees contracts in `_get_contract_versions` for an *onchange* context, else the `hr. version` for all employees are fetched and evaluated, leading to significant overhead downstream. - Add missing index for `_remove_work_entries` Benchmark --------- On a database in 19.0, with ~10k employees, ~30k versions and ~5M work-entries, the onchange triggered when changing the contract template on a pending offer for a new lambda employee took: | | Before | After | |-------------|--------|--------| | Query Count | 107k | 349 | | Time | 2.9min | ~300ms | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234202
The deferred date fields now use a range-style date picker, making it simpler to enter matching start and end dates. If the end date is left blank, it will automatically match the start date, which avoids errors and supports accrual entries without unnecessary warnings.
Original PR description
* use the widget `daterange` on `deferred_start_date` and `deferred_end_date` * auto fill `deferred_end_date` when it is empty to `deferred_start_date` to avoid double encoding of the same value, and avoid raising an error * remove the warning `has_abnormal_deferred_dates` when the date is the same, this can be used to do an accrual entry. task-5207293
3 changes
Enhancements to existing features
This update refreshes the QR-code links used for Brazilian NFC-e invoices so they match the latest URLs required by several states. It helps prevent invoice submission errors caused by outdated or invalid links.
Original PR description
In This PR:
- Several states have updated their NFC-e QR-code URLs, which caused errors when issuing invoices due to invalid or outdated links. This commit updates the 'nfceQrCode' parameter in Avalara requests ('calculate-tax' and 'submit-invoice-goods') to ensure the correct QR-code links are used.
task- 5115845This change prevents the built-in public user from being deleted, which could previously break the login page for anonymous visitors. It also ensures that existing databases missing this user can recover correctly when the Website module is installed, avoiding an internal server error and restoring access.
Original PR description
Steps to Reproduce: 1. Create a database without installing the Website module. 2. Navigate to archived users and delete the "Public User." 3. Attempt to log in to the database from another browser or incognito mode. 4. An internal server error occurs because the public user does not exist, making the login page inaccessible. Issue: Previously, it was possible to delete the public user, leading to an internal server error due to its absence, which prevented public access to the login page. Solution: - Implemented a restriction to prevent the deletion of the public user, similar to portal and default users. - Introduced a **pre_init_hook** to verify the existence of the public user in existing databases. If missing, the user is recreated during the Website module installation. - Added a test case to validate this functionality and ensure the public user cannot be deleted. task-4423568 Forward-Port-Of: odoo/odoo#196918
Users can now quickly search journal items by entering an amount, making it easier to find the right accounting lines without manual filtering. This improves day-to-day efficiency for accounting teams working with large numbers of entries.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
This update makes an error message more explicit when the system rejects files from an uninstalled module. It should help support teams and users understand the cause faster and troubleshoot without digging into the code.
Original PR description
While working on a support ticket, I was faced with this exception handling: https://github.com/odoo/odoo/blob/49061347c181b1a451435bc363bb9508db8b6fab/odoo/addons/base/models/ir_asset.py#L344-L346 It might be nitpicky, but given the if condition, the exception error text could be more explicit about the fact that it's raised because the files in question being from an uninstalled addon/module. This might fast track troubleshooting without having to dive into the source code to understand why the error is being raised. There is always the possibility that I might be missing some context or other scenarios where this error could be raised. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr