OdooWiki OCA HUB
Generic Modules License: LGPL-3

This module implements a component system and is a base block for the Connector Framework. It can be used without using the full Connector though.

Documentation:

You may also want to check the Introduction to Odoo Components by @guewen.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Adds a technical framework that lets developers register and use reusable 'components' instead of only Odoo models. It provides the base building blocks used by connector-style modules.

This module is a technical foundation rather than a business feature. It introduces a way to organise code into reusable pieces called components, which can be looked up and used at runtime instead of relying only on standard Odoo models.

  • It adds an abstract model collection.base that other modules can inherit from to define a 'collection' (for example a backend). On such a collection, a work_on method opens a working session for a given model.
  • It adds a component.builder model that, each time Odoo builds its registry, scans installed modules and registers all declared components in a global registry.
  • It provides a base component named base, implicitly inherited by every component.
  • Components can be filtered by collection, by the model they apply on, and by a 'usage' label, and can be retrieved one by one or as a list.
  • Clear errors are raised when no component or several components match a request, and when the registry is not ready yet.

It does not add menus, screens, reports or business rules visible to end users. It touches only the technical models collection.base and component.builder, and depends on the Python library cachetools for caching component lookups.

Depends on

base
Models and fields (3)
  • base · new model
  • collection.base · new model
  • component.builder · new model

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 8 confirmed, 1 with no information of 9 versions.

Sources · Odoo 14.0

Confirmed on 2026-11-03 in branch 14.0 of OCA/connector.

terminal Installation and usage

OCA documentation · Odoo 19.0

As a developer, you have access to a component system. You can find the documentation in the code or on

In a nutshell, you can create components:

from odoo.addons.component.core import Component

class MagentoPartnerAdapter(Component): _name = 'magento.partner.adapter' _inherit = 'magento.adapter'

_usage = 'backend.adapter' _collection = 'magento.backend' _apply_on = ['res.partner']

And later, find the component you need at runtime (dynamic dispatch at component level):

def run(self, external_id): backend_adapter = self.component(usage='backend.adapter') external_data = backend_adapter.read(external_id)

In order for tests using components to work, you will need to use the base class provided by odoo.addons.component.tests.common:

  • TransactionComponentCase

There are also some specific base classes for testing the component registry, using the ComponentRegistryCase as a base class. See the docstrings in tests/common.py.

No verified information in OCA: Installation, Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.