In today’s era what all local businesses need is a little push and some good marketing and they are good to go to earn high profit in short time. However, expansion is always a problem because logistics and warehousing are difficult and expensive (Specially when you have very small list of products to offer to your customers). Businesses often have to cut themselves short simply because they cannot afford to operate profitably and lack the necessary funding to order and run an operation on a large scale. Therefore it is being necessary to use third party logistics (3PL) services for effective run the business. In our previous blog, we have already explained What is 3PL and why it can be beneficial to integrate it with Odoo. In this note, we will show you how 3PL can be technically integrated with Odoo.
Integrating any 3rd Party Logistics (3PL) system with Odoo is such a complex and challenging task. Consideration needs to be given to a variety of issues such as synchronisation of inventory, products, sale orders, purchase orders, shipments from Odoo to 3PL and vice versa. This technical note draws on our experience of integrating a number of 3rd party WMS systems with Odoo for highlighting the potential questions and issues affecting most of 3PL integrations with Odoo.
3PL connection can be achieved by either FTP connection or API provided by 3rd party vendor. Here in our development, we have used EDI based integration over FTP Server however on the demand & as per latest trends, we can integrate 3PL with the help of provided API as well.
FTP Server Details & Configuration
You can configure FTP server & file paths from where the files will be transferred in between 3PL system & Odoo. Per each specific operations, you can configure as many file paths as per your need.
3PL Warehouse configuration in Odoo
In Odoo, there will be a separate warehouse configured for 3PL, as 3PL is itself a warehouse where your goods will be stocked. Once you check ‘3PL Warehouse’, system will show you another tab ‘FTP Settings’, where you need to configure File Path for each and every operations.
There will be some files on FTP server such as delivery confirmation, purchase confirmation & stock file which you can archive/backup in other directory on FTP, so that you can keep backup of those processed files. You can set file prefix for every operations, which will be added as prefix when you export file to 3PL. Moreover you can set file name of confirmation from 3PL as well, so that you can set file name as per your convenience. Naming of files are totally flexible in this module!
Export your products from Odoo to 3PL
It is very essential to let 3PL know about all products which we are either purchasing from supplier or selling to customers. If 3PL doesn't have the product list from ERP, they won't be able to receive products in their system when any shipment arrives from supplier to their warehouse. So without export products to 3PL, they won't able to receive any shipment or deliver any orders to customers.
From our 3PL connector module, you will able to export either all or specific products to 3PL with all the basic informations such as Product description, Product Code (SKU), EAN13, Supplier & Supplier Product Code. If you don't select any product, then system will prepare a CSV file of all products & upload to FTP server in a configured file path. Once you export products to 3PL, it will be logged in Job Log as well. So you can aware about the history of past performed operations in Odoo.
From the log, users will be able to download a CSV file which is uploaded to FTP, without login in that FTP. If you want to export products daily to 3PL automatically at specific time, then you can configure Cron Job as per your convenience.
Export Purchase Orders to 3PL
When you raise any purchase order to supplier, at that time you must need to inform 3PL that certain products will be arrived from a particular supplier. So that when shipment arrives, they can process that shipment against a particular purchase order. Otherwise they won't able to receive that shipment unless we export first. So to any 3PL integration, we must need to export Purchase Orders from Odoo.
From this module, you will able to export all purchase orders or selective purchase orders to 3PL. Once you export these purchase orders, then 3PL will process this file from FTP and record exported purchase orders in their system. If you don't select any PO, then system will export all purchase orders which are not exported yet to 3PL. Here once, Purchase order once exported, then it will be marked as Exported to 3PL, so that it won't be export again to 3PL.
Once you export Purchase Orders, per export, system will log that job under Job Log, so that users will be having traceability later, in case user wants to check anything later.
Here users will able to all details in Job log, moreover user will able to download a file which was uploaded to FTP server from Odoo itself, so that they not need to login to FTP server in order to check file.
If you want to export purchase orders automatically at certain time by Odoo cron jobs, then user can set that as per the conveniency.
Process Purchase confirmation file from 3PL
When any shipment of purchase order is arrived from your supplier in 3PL, they will process that shipment against a particular purchase order. After they processed that shipment, they will respond back that confirmation file of purchase order received to FTP location. Our 3PL connector module will check whether any confirmation file is there for Purchase order or not over FTP, if exist, then system will process that file against a Purchase Order which is specified in a confirmation file by 3PL. So at below screen, our program is checking whether any confirmation file exist on FTP or not, if exist then system will process that file against a particular purchase order.
By processing a confirmation file from FTP, there are 2 shipments which are checked below are processed & products which are received by 3PL will be at the Stock in odoo as well.
There might be a chance that supplier delivered either less or more Qtys for some products, in this case system will process whatever is specified in a confirmation file, and create a mismatch log in Job Log. Those log will be emailed to responsible person of an organization, which is configurable in 3PL extension. Moreover it might happen that supplier delivered some products, which we was not originally ordered from Odoo, those products will be received as well & system will create a mismatch log in Job Log.
Here two purchase orders processed from the 3PL confirmation file over FTP server. In case of mismatch system will highlight a specific row in Blue color. System will process those products which was not there in Purchase Order, but received by 3PL from supplier, those will be processed as well and marked as mismatch so that user can get to know about that. A confirmation file which is processed, that will be attached in a Job Log & can be downloaded by user, so that user not need to login to FTP server.
Basically there will be certain time decided with 3PL, i.e. at what time they are going to upload confirmation file for Purchase Orders, according to that you can set Cron Job time in Odoo in order to process those confirmation file from FTP, so that you not need to process those files manually. Everything will be seamless and automatic !!
Export Delivery Orders to 3PL from Odoo
Delivery of an order is the key operation for any business. Orders which are created from any sales channel can be exported to 3PL, so that 3PL can deliver to orders to customers. If you are having online sales available at multi channels & using Odoo as central ERP system for managing all the other business profiles, we are having connector modules available for each of famous online sales channels like WooCommerce, Magento, Amazon, eBay or Shopify. Considering Amazon FBA as an 3PL service provider, we have connector available for integrate your Odoo with Amazon FBA service. From all the different sales channles, connectors will bring the sale orders into Odoo. From Odoo, those orders can be exported to 3PL. Generally, delivery export will contains an information such as Shipping address & Products needs to be deliver to customers along with Order Number.
You can export either selective delivery orders or all delivery orders which are not exported yet to 3PL. Once delivery order is exported 3PL, then it will be marked as sent to 3PL, so that it won't be exported again to 3PL to deliver to customer. In above screen, we have selected total 7 delivery orders. System will prepare a CSV file for those orders with customer's delivery address and upload to FTP server in a configured location. If you don't select any orders, then system will export all delivery orders which are not exported to 3PL yet.
Once those orders are exported, system will create a Job Log, from where user can check in detail. Moreover, system will attach an uploaded CSV file in Job Log, so that user not need to login to FTP server in order to check the file later on.
Generally there will be specific time decided with 3PL to upload a delivery file to FTP, so that 3PL will process that file from FTP and start delivery to customers. At that specific time, if you want to export new delivery orders to 3PL automatically, then you can do it via Cron job from our extension. In above example, System will export all new delivery orders daily at 7:30 AM to 3PL. So at morning every day 3PL will be having new delivery orders needs to deliver to customer, So that they can process all those orders in day time.
Delivery Confirmation from 3PL to Odoo
Once orders are exported to 3PL, they will process those files from FTP & start delivery to customers. Once they delivered all orders to customers, 3PL will upload a confirmation file back to FTP which will include informations such as Order Number, tracking number, Quantity of products delivered to customers.
From here, you can process delivery confirmation file manually, by doing so system will check whether any delivery confirmation file is uploaded on FTP or not, if there exists, then system will process that file against an order specified in a CSV file & it will process the delivery order.
Here selected delivery orders/pickings are processed by processing a confirmation file from FTP server which was uploaded by 3PL. System will set carrier tracking number as well in all delivery order which is received from 3PL.
Once delivery confirmation file is processed, system will create a job log as well. In job log, user can track if any mismatches were there or not. System will attach a CSV file as well which is processed, so that user not need to login to FTP server to check a processed file.
With 3PL, there will be a specific time decided that at what time they are going to upload a confirmation file on FTP. If you don't want to process those files daily manually, then you can configure a Cron Job as per your convenience. In above example, system will process a confirmation file daily at 8:30 PM. By this way users not need to manually process a confirmation file. System will do that automatically and process a confirmation file.
Delivery Returns Confirmation from 3PL to Odoo
Delivery which are returned by customers, those will be returned at 3PL warehouse directly. When 3PL process those returns, at that time they will process those delivery returns against a particular order number. 3PL will provide a confirmation file of those orders which are returned from the customer. That file should be processed as well in Odoo, so that returned stock will be back to Stock in odoo as well.
By processing a confirmation file system will create an incoming shipment in Odoo from the delivery order & processed it as well, because shipment is already received at 3PL warehouse.
In above screen, Incoming shipments which are checked, those are created and processed by processing a delivery return confirmation file from 3PL. For those incoming shipment reference will be created in such a way that user will able to track against which delivery orders those returns shipments are created.
Once delivery return confirmation file is processed, system will create a job log as well, which will show product details along with Quantity processed. In Job Log, system will attach a file which is processed from FTP server uploaded by 3PL.
Generally there will be a specific time decided with 3PL that at what time they are going to upload delivery return confirmation file. If you don't want to process those files everyday manually, then you can configure time & interval as per your convenience. Above we have set that delivery return confirmation file should be processed everyday at 7:00 PM.
Inventory File from 3PL Processing into Odoo
Most of 3PL provides a file which includes current stock at their warehouse of all products, which contains basic informations such as Product Code / Barcode, current stock of the product. By processing this file in Odoo, one can compare stock in between 3PL & Odoo. If any discrepancies are there then one can contact 3PL to check in detail about those discrepancies.
By doing stock report process, system will check whether there is any stock file exist on configured FTP Location, if exist then system will process that file and create a stock adjustment record at Inventory >> Inventory Control >> Stock Adjustment in Odoo. Later you can export your stock into Excel file with the filters available by specific category, product, location or warehouse in Odoo.
If later, user wants to validate the stock which is given by 3PL, then he / she can Validate Inventory in order to set stock level same as 3PL.
Once stock file is processed system will create a job log. In Job Log, system will attach a file which is processed from 3PL. So later, if user wants to check a file, then he/she not need to login to FTP server.
Generally with 3PL, there will be a specific time decided for stock file as well, so if you want to process that stock file automatically, then you can set cron job in Odoo as per your convenience. Above we have set stock file should be processed everyday at 11:00 PM.
Auto Email Notifications in case of mismatch
For any process for which 3PL upload a file on FTP such as Delivery confirmation, Delivery return Confirmation, Purchase receipt confirmation & stock file, by processing these files, there might be a chance of mismatches. Below you can see few of those mismatches.
- 3PL received a product which was not ordered to Supplier
- 3PL received either less or more quantities than ordered to supplier
- 3PL delivered a product which customer doesn't order.
- 3PL delivered either less or more quantity to customer than ordered.
- Product Code mismatches, i.e. In Odoo Product Code / Barcode not found.
Above are the examples of few mismatches which could happen when integration with any 3PL. In such cases, it will be very time consuming to check everyday a job log and all stuffs.
If you don't want to check Job Log, then in warehouse you can check an option 'Notify by Email'. So system will send an email while process delivery confirmation, purchase confirmation, delivery return confirmation or stock file from 3PL, if mismatches are there.
Once you install this extension, there will be preconfigured Email Template created for each operations from 3PL to send an email to responsible person in case of Mismatches, those you can change as per your convenience, if needed.
Few of our European Odoo customers, who didn’t have their own warehouse space, decided to outsource their warehouse activities to 3PL service providers. For them, as a leading solution providers in Odoo, we have leverage the solution of seamless integration between Odoo and some of the large 3PL service providers of EUROPE and China like TM Logistik, Alpha Direct Services, CB Fashion, WinIT Corporation etc.
If you are having small business and can't afford own warehouse, this solution will be ideal fit for you.
Odoo Technical Notes