1. Odoo Open Days - 4th June 2014
ODOO
« REFLEX WMS »
CONNECTOR
Cyril MORISSE
2. Odoo Open Days - 4th June 2014
Audaxis : Who are we ?
Odoo Gold Partner
20 years track record on ERP systems
SCM & WMS expert
Certified Training Partner
2
3. Odoo Open Days - 4th June 2014
Agenda
Starting Point
The Business Case for a Reflex WMS - Odoo integration
Reflex WMS by Hardis
Odoo - Reflex interfacing challenges
Technical Challenge : Interfacing
Functional Challenges : Business Objects Mismatch
Business Process Integration: Invoicing
Odoo - Reflex Connector by Audaxis
Technical Architecture
Solving the business objects mismatch
A tightly integrated Invoicing Process
The big picture
Questions
3
4. Odoo Open Days - 4th June 2014
Business case for a Reflex WMS odoo integration
Customer is an ecommerce company selling small pieces in high
volume at peak period
Up to 12.000 products shipped per day
Project started 10/2013 with Go Live planned for August 2014
Too early for odoo v 8.0
Customer had ambitious plans for warehouse automation (Radio
Devices, picking « hives », multipath conveyor belts, …)
OpenERP 7 was not a viable option
Customer choose the Reflex WMS
4
5. Odoo Open Days - 4th June 2014
Reflex WMS by Hardis
Reflex WMS is a product from Hardis, a French
Software Editor founded in 1988
“Reflex WMS” is a best of breed WMS aimed at
implementing newest logistic best practices.
250 Customers
700 Warehouses deployed
Out of the Box, Reflex is connected with the most
important French Carriers Information System.
https://www.hardis.fr/fr/jsp/site/Portal.jsp?page_id=63
5
6. Odoo Open Days - 4th June 2014
Odoo – Reflex interfacing challenges
Odoo - Reflex integration raised 3 challenges:
Technical challenge
Reflex has a huge set of file based interfaces
Functional challenge
Both systems do not implement the same abstractions
Integration challenge
Invoice printing requires to imbricate Odoo and Reflex
processes
6
7. Odoo Open Days - 4th June 2014
Functional challenge : business objects mismatch
Main problem comes from the fact that Odoo manages
products while Reflex manages GEI
GEI = Exchangeable Entity Group
A set of “products” with the same logistic attributes (Eg. same product,
same quality, same packaging, same lot it, …).
GEI are used to manage products qualities and quality changes (a return
product is entered in stock with quality “Return” and it will be changed to
“Normal” (Sellable) after Quality Control)
7
Code Name Quality Qty
00123 XPS 13 Laptop
Computer
Normal (Sellable) 7
00123 XPS 13 Laptop
Computer
Return (Quality set after a RMA process) 2
00123 XPS 13 Laptop
Computer
SellOff 1
Total 10
8. Odoo Open Days - 4th June 2014
Technical challenge : Reflex Interface
Reflex interface is based on the exchange of files organized into records of variable
structure
70 Interfaces (files format) are defined. We use 15 for odoo interface.
Reflex defines a specific set of size, encoding and justification rules.
Example: 3.1415 is 000003141 if Reflex type= float and size 9,3
Example of interface file content
8
9. Odoo Open Days - 4th June 2014
Integration Challenge: Invoicing Process
Due to French law and since some final customers ordered via mail order,
the required Invoicing Process is:
1. odoo ask Reflex to ship a “Delivery Order”
Using the “Preparation Order” standard Reflex interface.
2. Reflex users do the Shipping (and join the Reflex printed Invoice in the
package)
3. Once shipping is done, Reflex returns what has been effectively “collected”
Using the “Preparation Report” standard Reflex interface
4. odoo:
Confirms the delivery order line
Generate the Invoice
based on what has been delivered
9
Problem !!
10. Odoo Open Days - 4th June 2014
odoo – Reflex connector by Audaxis:
Technical Architecture
10
“OpenERP Connector” ( http://openerp-connector.com )
• Queues • Workers • Exceptions
• Backends • Synchronizers • Events
server 7
“Reflex WMS” Connector
• ReflexBatchExportSynchro
nizer
• ReflexBatchImportSynchro
nizer
• ReflexImportSynchroni
zer
• ReflexSerializerMixin • Backend
Customer’s Reflex Connector
15 custom implemented interfaces
11. Odoo Open Days - 4th June 2014
odoo – Reflex Connector by Audaxis:
Solving the business objects mismatch
Reflex GEI Mapping:
GEI qualities are mapped to odoo stock locations
GEI quality changes are transformed to odoo “Internal Moves” between stock
locations
By doing this:
Reflex manages detailed stock locations content
odoo manages stock valuation
To track error, we:
implemented a stock gap analysis tool
keep track of all Reflex “moves” ids in odoo corresponding internal moves
Main problem here is that odoo does Double Entry stock accounting while Reflex generates
Single Entry stock moves
11
Reflex Side Odoo Side Bot
h
Code Name Quality Odoo locations Qty
00123 XPS 13
Laptop
Normal Physical Locations/ Company / Stock 7
00123 XPS 13
Laptop
Return Physical Locations/ Company / Downgraded/Return 2
00123 XPS 13
Laptop
SellOff Physical Locations/ Company / Downgraded/ SellOff 1
Total returned by odoo “stock by locations”
report
10
12. Odoo Open Days - 4th June 2014
odoo – Reflex Connector by Audaxis:
Tightly Integrated Invoicing Process
The final process:
1. odoo asks Reflex to ship a “Delivery Order” and uses an interface comment field to send to
Reflex the name and path of the future invoice.
Using the “Preparation Order” standard Reflex interface.
2. Reflex users do the picking
At the end of picking (not packaging), Reflex returns what has been “collected” using a
Reflex customized Interface (identical to the one he uses at the end of shipping)
3. odoo processes the interface content and generates then uploads an Invoice for prepared
products (using the path defined in 1).
4. At packaging step, Reflex prints the odoo invoice (inserted into customer’s package)
5. At Shipping Confirmation (carriers truck departing), Reflex sends an updated “Shipping”
interface
6. odoo processes the interface file and puts on exception delivery orders whose content is
different from the one received at 2)
12