OdooWiki OCA HUB

Base External System

base_external_system folder_open OCA/server-backend open_in_new
Base License: LGPL-3

This module provides an interface/adapter mechanism for the definition of remote systems.

Note that this module stores everything in plain text. In the interest of security, it is recommended you use another module (such as keychain or red_october to encrypt things like the password and private key). This is not done here in order to not force a specific security method.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Lets administrators register connections to external systems (host, port, credentials, keys) and test them from Odoo. It is a technical foundation other modules use to talk to remote servers.

This module adds a new screen for storing connection details of external systems. Administrators find it under the Custom menu as "External Systems". Each record holds a name, the protocol, host, port, username, password, remote directory path, and optional keys and fingerprints.

On the form there is a "Test Connection" button that tries to reach the system and reports an error if it fails. A connection name must be unique, and if you leave the fingerprint empty while "Ignore Fingerprint" is unchecked, Odoo blocks saving with a validation message.

Access is restricted by company: each connection lists the companies allowed to use it, defaulting to the current user's company. Only users in the Settings group can create, edit or delete these records.

A "System Type" field chooses which adapter handles the connection. The module ships one working adapter for the local operating system, which can change to the configured remote path while connected and restore the previous directory afterwards. Other modules can add their own adapters. The search view lets you filter and group connections by host, port or username.

Depends on

base

Menus it adds

External Systems
Models and fields (3)
  • external.system · new modelhost, name, port, scheme, password, username, company_ids (Companies), fingerprint, private_key, remote_path, system_type, ignore_fingerprint, private_key_password, private_key_thumbprint
  • external.system.adapter · new model
  • external.system.adapter.os · new model

Text generated by AI (DeepSeek) from reading the Odoo 18.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: 5 confirmed, 4 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/server-backend.

terminal Installation and usage

OCA documentation · Odoo 18.0

Configure external systems in Settings =\> Technical =\> External Systems

[](https://runbot.odoo-community.org/runbot/149/10.0)

Implementation

The credentials for systems are stored in the external.system model, and are to be configured by the user. This model is the unified interface for the underlying adapters.

Using the Interface

Given an external.system singleton called external_system, you would do the following to get the underlying system client:

with external_system.client() as client:
    client.do_something()

The client will be destroyed once the context has completed. Destruction takes place in the adapter's external_destroy_client method.

The only unified aspect of this interface is the client connection itself. Other more opinionated interface/adapter mechanisms can be implemented in other modules, such as the file system interface in OCA/server-tools/external_file_location.

Creating an Adapter

Modules looking to add an external system adapter should inherit the external.system.adapter model and override the following methods:

  • external_get_client: Returns a usable client for the system
  • external_destroy_client: Destroy the connection, if applicable. Does not need to be defined if the connection destroys itself.

No verified information in OCA: Installation.

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.