# alexdhika/odoo-universal-data-import architecture

> Architecture diagram of the GitHub repository alexdhika/odoo-universal-data-import, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alexdhika/odoo-universal-data-import
- Repository: https://github.com/alexdhika/odoo-universal-data-import

## Overview

Universal Data Import is an Odoo addon for configuring reusable imports from APIs, databases, and files, then discovering and executing operation-specific methods. The main workflow runs from source setup and connection testing through method discovery and manual or scheduled execution, with status and error monitoring. The excerpts show connection construction, dynamic method dispatch, chatter error reporting, and cleanup behavior; several UI and scheduling details are documented in the README but their implementation is not sampled, so those links are omitted or marked unverified.

Main entry points: [`universal_data_import/models/config.py`](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/config.py) (Source configuration), [`universal_data_import/models/import_types.py`](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py) (Method execution), [`universal_data_import/data/ir_cron.xml`](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/data/ir_cron.xml) (Background scheduler), [`universal_data_import/models/cleanup.py`](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/cleanup.py) (Record cleanup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sources["Source connections"]
  node_source_config["Source configuration<br/>[config.py]"]
  node_api_service["API service"]
  node_source_database[("External database")]
  node_uploaded_files["Uploaded files"]
end

subgraph group_workflow["Import workflow"]
  node_import_types["Import types<br/>[import_types.py]"]
  node_method_discovery["Method discovery<br/>[import_types.py]"]
  node_method_list["Method list<br/>[import_types.py]"]
  node_method_execution["Method execution<br/>[import_types.py]"]
  node_custom_import_methods["Custom import methods<br/>[import_types.py]"]
  node_background_scheduler["Background scheduler<br/>[ir_cron.xml]"]
end

subgraph group_monitoring["Monitoring and maintenance"]
  node_execution_status["Execution status and logs<br/>[import_types.py]"]
  node_mail_chatter["Odoo mail chatter"]
  node_record_cleanup["Record cleanup<br/>[cleanup.py]"]
end

node_administrator(("Odoo administrator"))
node_odoo_records[("Odoo business records")]

node_administrator -->|"configures"| node_source_config
node_source_config -->|"creates session"| node_api_service
node_source_config -->|"creates engine"| node_source_database
node_source_config -->|"decodes file"| node_uploaded_files
node_source_config -->|"tests connection"| node_api_service
node_source_config -->|"tests connection"| node_source_database
node_import_types -->|"generates methods"| node_method_discovery
node_method_discovery -->|"adds methods"| node_method_list
node_administrator -->|"runs manually"| node_method_execution
node_method_execution -->|"dispatches dynamically"| node_custom_import_methods
node_custom_import_methods -.->|"imports records"| node_odoo_records
node_background_scheduler -.->|"runs scheduled"| node_method_execution
node_method_execution -->|"updates status"| node_execution_status
node_method_execution -->|"posts errors"| node_mail_chatter
node_record_cleanup -->|"deletes batches"| node_odoo_records

click node_source_config "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/config.py"
click node_import_types "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_method_discovery "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_method_list "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_method_execution "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_custom_import_methods "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_background_scheduler "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/data/ir_cron.xml"
click node_execution_status "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py"
click node_record_cleanup "https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/cleanup.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_source_config,node_api_service,node_source_database,node_uploaded_files toneBlue
class node_import_types,node_method_discovery,node_method_list,node_method_execution,node_custom_import_methods,node_background_scheduler,node_odoo_records toneAmber
class node_execution_status,node_mail_chatter,node_record_cleanup toneMint
class node_administrator toneIndigo
```

## Components

### Source connections

- [Source configuration](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/config.py): `universal_data_import/models/config.py`
- **API service**
- **External database**
- **Uploaded files**

### Import workflow

- [Import types](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- [Method discovery](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- [Method list](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- [Method execution](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- [Custom import methods](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- [Background scheduler](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/data/ir_cron.xml): `universal_data_import/data/ir_cron.xml`

### Monitoring and maintenance

- [Execution status and logs](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/import_types.py): `universal_data_import/models/import_types.py`
- **Odoo mail chatter**
- [Record cleanup](https://github.com/alexdhika/odoo-universal-data-import/blob/16.0/universal_data_import/models/cleanup.py): `universal_data_import/models/cleanup.py`

### Other components

- **Odoo administrator**
- **Odoo business records**

## Connections

- Odoo administrator → Source configuration: configures (evidence: `README.md`)
- Source configuration → API service: creates session (evidence: `universal_data_import/models/config.py`)
- Source configuration → External database: creates engine (evidence: `universal_data_import/models/config.py`)
- Source configuration → Uploaded files: decodes file (evidence: `universal_data_import/models/config.py`)
- Source configuration → API service: tests connection (evidence: `universal_data_import/models/config.py`)
- Source configuration → External database: tests connection (evidence: `universal_data_import/models/config.py`)
- Import types → Method discovery: generates methods (evidence: `universal_data_import/models/import_types.py`)
- Method discovery → Method list: adds methods (evidence: `universal_data_import/models/import_types.py`)
- Odoo administrator → Method execution: runs manually (evidence: `README.md`)
- Method execution → Custom import methods: dispatches dynamically (evidence: `universal_data_import/models/import_types.py`)
- Custom import methods → Odoo business records: imports records
- Background scheduler → Method execution: runs scheduled
- Method execution → Execution status and logs: updates status (evidence: `universal_data_import/models/import_types.py`)
- Method execution → Odoo mail chatter: posts errors (evidence: `universal_data_import/models/import_types.py`)
- Record cleanup → Odoo business records: deletes batches (evidence: `universal_data_import/models/cleanup.py`)
