OdooWiki OCA HUB

Import from Odoo

base_import_odoo folder_open OCA/server-tools open_in_new
Tools License: AGPL-3

This module was written to import data from another Odoo database. The idea is that you define which models to import from the other database, and add eventual mappings for records you don't want to import.

Use cases

  • merging databases
  • one way sync
  • aggregating management data from distributed systems

auto_awesome What this module does

AI-generated from the code · Odoo 16.0

Connect Odoo to another Odoo database and import records from it, with rules for handling duplicates, field mappings and automatic scheduled imports.

This module lets administrators pull data from a second Odoo database into the current one. You set up a connection (URL, database name, user, password) and choose which models to import, optionally filtered by a domain.

  • Configure import jobs under the 'Remote Odoo import' menu (Administration). Each job lists the models to import and field mappings.
  • Press 'Run import' to start; the work runs as a scheduled job so you can follow progress and results on the same screen.
  • Choose how duplicates are handled: skip existing records, overwrite them, or only fill empty fields.
  • Field mappings let you replace remote records with existing local ones (fixed), match records by equal fields, resolve references, or generate unique values (for example for user logins).
  • Records created by the import are tagged with a special external identifier linked to the remote database and remote ID, so re-imports update instead of duplicating.
  • Missing required links are temporarily filled with placeholder records that are replaced or removed once the real record is imported.
  • The module touches import.odoo.database, import.odoo.database.model, import.odoo.database.field and extends ir.model.data.

Depends on

mailbase_sparse_field

Menus it adds

Remote Odoo importmenu_import_odoo_database
Models and fields (4)
  • ir.model.data · extends an existing modelimport_database_id (From remote database), import_database_record_id (Remote database ID)
  • import.odoo.database · new modelssl, url, user, database, password, cronjob_id (Import job), duplicates, ssl_bypass, status_data (Status), status_html, null_password, cronjob_running, import_line_ids (Import models), import_field_mappings (Field mappings)
  • import.odoo.database.field · new modelmodel (Model name), local_id (Local ID), model_id (Model), sequence, field_ids (Field), remote_id (Remote ID), database_id (Database), id_field_id (ID field), mapping_type (Type), model_field_id (Model field)
  • import.odoo.database.model · new modeldomain, defaults, model_id (Model), sequence, database_id (Database), postprocess, extra_fields

Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

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

Confirmation status: 3 confirmed, 6 with no information of 9 versions.

Sources · Odoo 14.0

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

terminal Installation and usage

OCA documentation · Odoo 16.0

Go to Settings / Remote Odoo import / Import configurations and create a configuration.

After filling in your credentials, select models you want to import from the remote database. If you only want to import a subset of the records, add an appropriate domain.

The import will copy records of all models listed, and handle links to records of models which are not imported depending on the existing field mappings. Field mappings to local records also are a stopping condition. Without those, the import will have to create some record for all required x2x fields, which you probably don't want.

Probably you'll want to map records of model res.company, and at least the admin user.

The module doesn't import one2many fields, if you want to have those, add the model the field in question points to to the list of imported models, possibly with a domain.

If you don't fill in a remote ID, the addon will use the configured local ID for every record of the model (this way, you can for example map all users in the remote system to some import user in the current system).

For fields that have a uniqueness constraint (like res.users#login), create a field mapping if type unique, then the import will generate a unique value for this field.

For models using references with two fields (like ir.attachment), create a field mapping of type by reference and select the two fields involved. The import will transform known ids (=ids of models you import) to the respective local id, and clean out the model/id fields for unknown models/ids.

You can add custom defaults per model in case your database has different required fields than the source database. For res.partner, you'll most certainly fill in {'name': '/'} or somethign similar.

To use this module, you need to:

  • go to an import configuration and hit the button Run import
  • be patient, this creates a cronjob which will start up to a minutes afterwards
  • reload the form, as soon as the cronjob runs you'll see a field Progress that lets you inspect what was imported already
  • note that the cronjob also resets the password as soon as it has read it. So for a subsequent import, you'll have to fill it in again
  • running an import a second time won't duplicate data, it should recognize records imported earlier and just update them

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.