EDI Storage backend support

edi_storage_oca
REPOSITORY
REPOSITORYOCA/edi-framework
GIT
GIThttps://github.com/OCA/edi-framework.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi-framework/tree/18.0/edi_storage_oca
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE
COMMITTERS
COMMITTERSEnric Tobella, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Hector Vior, Arnau
WEBSITE
WEBSITEhttps://github.com/OCA/edi-framework
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/edi:
    - base_edi
OCA/edi-framework:
    - edi_core_oca
OCA/server-env:
    - server_environment
OCA/storage:
    - fs_storage
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyYAML
openupgradelib
fsspec>=2024.5.0
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allow exchange files using storage backends from OCA/storage.

This module adds a storage backend relation on the EDI backend. There
you can configure the backend to be used (most often and SFTP) and the
paths where to read or put files.

Often the convention when exchanging files via SFTP is to have one input
forder (to receive files) and an output folder (to send files).

Inside this folder you have this hierarchy:

    input/output folder
        |- pending
        |- done
        |- error

- pending folder contains files that have been just sent
- done folder contains files that have been processes successfully
- error folder contains files with errors and cannot be processed

The storage handlers take care of reading files and putting files
in/from the right place and update exchange records data accordingly.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
edi_backend_view_form edi.backend notebook Inherits edi_core_oca.edi_backend_view_form
Models touched (4)

New fields (7)
  • input_dir_done Char
    help='Path to folder for doneful operations' args: 'Input done directory'
  • input_dir_error Char
    help='Path to folder for error operations' args: 'Input error directory'
  • input_dir_pending Char
    help='Path to folder for pending operations' args: 'Input pending directory'
  • output_dir_done Char
    help='Path to folder for doneful operations' args: 'Output done directory'
  • output_dir_error Char
    help='Path to folder for error operations' args: 'Output error directory'
  • output_dir_pending Char
    help='Path to folder for pending operations' args: 'Output pending directory'
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Storage for in-out files' ondelete='restrict' string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Record created from a file found in this FS storage' readonly=True string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • exchange_filename_pattern Char
    help='For output exchange types this should be a formatting string with the following variables available (to be used between brackets, `{}`): `exchange_record`, `record_name`, `type` and `dt`. For instance, a valid string would be {record_name}-{type.code}-{dt}\nFor input exchange types related to storage backends it should be a regex expression to filter the files to be fetched from the pending directory in the related storage. E.g: `.*my-type-[0-9]*.\\.csv`'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • check(self, exchange_record)
  • receive(self, exchange_record)
  • send(self, exchange_record)
REPOSITORY
REPOSITORYOCA/edi-framework
GIT
GIThttps://github.com/OCA/edi-framework.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi-framework/tree/17.0/edi_storage_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Luis Rodriguez
WEBSITE
WEBSITEhttps://github.com/OCA/edi-framework
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component_event
    - component
OCA/edi:
    - base_edi
OCA/edi-framework:
    - edi_oca
OCA/queue:
    - queue_job
OCA/server-env:
    - server_environment
OCA/storage:
    - fs_storage
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyYAML
cachetools
requests
fsspec>=2024.5.0
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allow exchange files using storage backends from OCA/storage.

This module adds a storage backend relation on the EDI backend. There
you can configure the backend to be used (most often and SFTP) and the
paths where to read or put files.

Often the convention when exchanging files via SFTP is to have one input
forder (to receive files) and an output folder (to send files).

Inside this folder you have this hierarchy:

    input/output folder
        |- pending
        |- done
        |- error

- pending folder contains files that have been just sent
- done folder contains files that have been processes successfully
- error folder contains files with errors and cannot be processed

The storage handlers take care of reading files and putting files
in/from the right place and update exchange records data accordingly.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
edi_backend_view_form edi.backend notebook Inherits edi_oca.edi_backend_view_form
Models touched (3)

New fields (7)
  • input_dir_done Char
    help='Path to folder for doneful operations' args: 'Input done directory'
  • input_dir_error Char
    help='Path to folder for error operations' args: 'Input error directory'
  • input_dir_pending Char
    help='Path to folder for pending operations' args: 'Input pending directory'
  • output_dir_done Char
    help='Path to folder for doneful operations' args: 'Output done directory'
  • output_dir_error Char
    help='Path to folder for error operations' args: 'Output error directory'
  • output_dir_pending Char
    help='Path to folder for pending operations' args: 'Output pending directory'
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Storage for in-out files' ondelete='restrict' string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Record created from a file found in this FS storage' readonly=True string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • exchange_filename_pattern Char
    help='For output exchange types this should be a formatting string with the following variables available (to be used between brackets, `{}`): `exchange_record`, `record_name`, `type` and `dt`. For instance, a valid string would be {record_name}-{type.code}-{dt}\nFor input exchange types related to storage backends it should be a regex expression to filter the files to be fetched from the pending directory in the related storage. E.g: `.*my-type-[0-9]*.\\.csv`'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/edi-framework
GIT
GIThttps://github.com/OCA/edi-framework.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi-framework/tree/16.0/edi_storage_oca
VERSION
VERSION 1.2.3
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE
COMMITTERS
COMMITTERSEnric Tobella, Sébastien Alix, JordiMForgeFlow, Weblate, OCA-git-bot, Simone Orsi, oca-ci, duongtq, thien, Tran Anh Tuan
WEBSITE
WEBSITEhttps://github.com/OCA/edi-framework
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component_event
    - component
OCA/edi:
    - base_edi
OCA/edi-framework:
    - edi_oca
OCA/queue:
    - queue_job
OCA/storage:
    - fs_storage
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyYAML
cachetools
requests
fsspec>=2024.5.0
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
edi_backend_view_form edi.backend notebook Inherits edi_oca.edi_backend_view_form
Models touched (3)

New fields (7)
  • input_dir_done Char
    help='Path to folder for doneful operations' args: 'Input done directory'
  • input_dir_error Char
    help='Path to folder for error operations' args: 'Input error directory'
  • input_dir_pending Char
    help='Path to folder for pending operations' args: 'Input pending directory'
  • output_dir_done Char
    help='Path to folder for doneful operations' args: 'Output done directory'
  • output_dir_error Char
    help='Path to folder for error operations' args: 'Output error directory'
  • output_dir_pending Char
    help='Path to folder for pending operations' args: 'Output pending directory'
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Storage for in-out files' ondelete='restrict' string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • storage_id Many2one → fs.storage
    comodel_name='fs.storage' help='Record created from a file found in this FS storage' readonly=True string='FS Storage'
Public methods (0)

No public methods.

New fields (1)
  • exchange_filename_pattern Char
    help='For output exchange types this should be a formatting string with the following variables available (to be used between brackets, `{}`): `exchange_record`, `record_name`, `type` and `dt`. For instance, a valid string would be {record_name}-{type.code}-{dt}\nFor input exchange types related to storage backends it should be a regex expression to filter the files to be fetched from the pending directory in the related storage. E.g: `.*my-type-[0-9]*.\\.csv`'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/15.0/edi_storage_oca
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE
COMMITTERS
COMMITTERSEnric Tobella, jcoux, Weblate, OCA-git-bot, Iryna Vyshnevska, oca-ci, Jasmin Solanki
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:34
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component_event
    - component
OCA/edi:
    - edi_oca
    - base_edi
OCA/queue:
    - queue_job
OCA/server-env:
    - server_environment
OCA/storage:
    - storage_backend
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyYAML
cachetools
requests
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
edi_backend_view_form edi.backend notebook Inherits edi_oca.edi_backend_view_form
Models touched (2)

New fields (8)
  • input_dir_done Char
    help='Path to folder for doneful operations' args: 'Input done directory'
  • input_dir_error Char
    help='Path to folder for error operations' args: 'Input error directory'
  • input_dir_pending Char
    help='Path to folder for pending operations' args: 'Input pending directory'
  • input_dir_remove Boolean
    args: 'Remove input after done'
  • output_dir_done Char
    help='Path to folder for doneful operations' args: 'Output done directory'
  • output_dir_error Char
    help='Path to folder for error operations' args: 'Output error directory'
  • output_dir_pending Char
    help='Path to folder for pending operations' args: 'Output pending directory'
  • storage_id Many2one → storage.backend
    comodel_name='storage.backend' help='Storage for in-out files' ondelete='restrict' string='Storage backend'
Public methods (0)

No public methods.

New fields (1)
  • exchange_filename_pattern Char
    help='For output exchange types this should be a formatting string with the following variables available (to be used between brackets, `{}`): `exchange_record`, `record_name`, `type` and `dt`. For instance, a valid string would be {record_name}-{type.code}-{dt}\nFor input exchange types related to storage backends it should be a regex expression to filter the files to be fetched from the pending directory in the related storage. E.g: `.*my-type-[0-9]*.\\.csv`'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/14.0/edi_storage_oca
VERSION
VERSION 1.8.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE
COMMITTERS
COMMITTERSEnric Tobella, Lois Rilo, Alexey Pelykh, JordiMForgeFlow, jcoux, oca-travis, Weblate, OCA-git-bot, Simone Orsi, oca-ci, fshah
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector:
    - component_event
    - component
OCA/edi:
    - edi_oca
    - base_edi
OCA/queue:
    - queue_job
OCA/server-env:
    - server_environment
OCA/storage:
    - storage_backend
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pyyaml
cachetools
requests
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
edi_backend_view_form edi.backend notebook Inherits edi_oca.edi_backend_view_form
Models touched (2)

New fields (8)
  • input_dir_done Char
    help='Path to folder for doneful operations' args: 'Input done directory'
  • input_dir_error Char
    help='Path to folder for error operations' args: 'Input error directory'
  • input_dir_pending Char
    help='Path to folder for pending operations' args: 'Input pending directory'
  • input_dir_remove Boolean
    args: 'Remove input after done'
  • output_dir_done Char
    help='Path to folder for doneful operations' args: 'Output done directory'
  • output_dir_error Char
    help='Path to folder for error operations' args: 'Output error directory'
  • output_dir_pending Char
    help='Path to folder for pending operations' args: 'Output pending directory'
  • storage_id Many2one → storage.backend
    comodel_name='storage.backend' help='Storage for in-out files' ondelete='restrict' string='Storage backend'
Public methods (0)

No public methods.

New fields (1)
  • exchange_filename_pattern Char
    help='For output exchange types this should be a formatting string with the following variables available (to be used between brackets, `{}`): `exchange_record`, `record_name`, `type` and `dt`. For instance, a valid string would be {record_name}-{type.code}-{dt}\nFor input exchange types related to storage backends it should be a regex expression to filter the files to be fetched from the pending directory in the related storage. E.g: `.*my-type-[0-9]*.\\.csv`'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/edi-framework
PULL REQUEST
PULL REQUEST[19.0][MIG] edi_storage_oca: Migration to 19.0 (#254)