We want to launch the Odoo v13 eCommerce module and connect it to our existing ERP system which handles the stock, accounting, sales, statements, hr etc.
Odoo eCommerce will allow our business customers to place orders using their individual price lists. Data which need to be exchanged between the systems are mainly: new customers (Odoo -> Digitland), new orders (Odoo -> Digitland), new product (Digitland -> Odoo), stock availability (Digitland -> Odoo), invoices&wh/outs (Digitland -> Odoo).
We do not plan nor want to create the system-wide integration between those two. We want to transfer only the informations which are necessary and keep the things light and easy as possible.
What technology may we use for data exchange?
A. Digitland Enterprise is built upon Oracle 11g database.
It does not offer us any proper API interface, but it does have a module called DE-WWW.
This module is a set of tables and views which are separated from the tables/views the system uses normally. The content of DE-WWW is being checked periodically and if any changes are detected, the new records are being transferred to the main database. We can fetch all the needed informations from the system database, which we also already tested using Talend on Products, Customers, stock availability.
B. For Odoo we consider using CData JDBC Odoo driver. It uses Odoo External API (XML-RPC) and enables us to fetch / pull the data from / to Odoo like if it was a regular database using SQL queries. Additionally it allows us to RPC Odoo using another mechanism using nested JSON, so we gain all the possibilities which are available when using regular XML-RPC API/
REST API. We performed some tests of this driver using Talend with success. Otherwise we may use XML-RPC or REST-API.
When should be the data exchanged?
The amount of data to be exchanged will not exceed 100MBs/day before the end of 2022 (under 200 new orders / day + invoices + stock quantity updates).
New orders and customers from Odoo will be pushed to Digitland using object state change detection and the webhooks. We want so that Odoo used Talend endpoints to pass the order/customer data and to trigger the exchange process this way. Looking from the other side, DE-WWW may prepare the needed data for us using right tables and views. We can either use a Oracle Database Change Notification mechanism for the exchange processes to be triggered automatically (like from Odoo) or we can periodically check the number of rows to change and then fire the Talend job. I must say that the first solution with the Database Change Notification is being analyzed at the moment so that’s why we do have a backup option. In both systems we will store the external IDs of the objects (Orders, Customers, Products) and additionally we would also want to have some „object identifier" database in the middle (which could Talend use; contains: Odoo Object IDs, Digitland Object IDs) and the log which would contain all the exchanged information headers with the timestamps, flow direction. They both could be done using Redis or some other key=>value database.
Below I attach 2 simple diagrams which show the general idea for the project. One of them does concentrate on the types of data to be exchanged, and the other one shows also the intermediary part of the system - ETL/ESB tool.
We have the Odoo and Digitland partners ready for cooperation, they know the basic concept behind the project.
Please let us know:
- what do you think about the project, weak design elements, what should be done differently?
- what is your experience with Talend (and other ETL/ESB tools)?
- what is the right and most effective tool for the job in your opinion (Talend / NiFi / MuleSoft ... xxx) which could also be used in the future to build more complex integration?
- what would you be responsible for in the project?
- how long will it take you to finish the integration?
- when can you start the project and what informations do you need to start?