The purpose of this post is to help teach you how to integrate ecommerce Web stores like Magento, Demandware, Prestashop, ZenCart, OpenCart, VirtueMart, OS Commerce, Drupal commerce, and others with an ADempiere and iDempiere, open source ERP.
We will begin the discussion thinking small, and we will end the discussion thinking in terms of 50K Web transactions per month.
Let’s start with the concept: eCommerce platforms and ERP systems are two very different and separate entities. They serve different purposes and different people. It is considered best practice that a Web store can support a Web user transaction without needing to speak with the ERP during the transaction. It is only after the Web user leaves the store that the Web store will push the order to the ERP system. The Web people like it this way, and the operations people like it this way!
Why keep eCommerce platforms and ERP systems separate? eCommerce is a Web sales and marketing tool. ERP is an operational execution and financial reporting system.
- Marketing teams spend hours learning about and supporting customer buying behaviors. Magento has many tools and experts that facilitate maximizing your chances of completing a transaction for the most amount of money. Strategies include creating product groupings, discounts and coupons, games, social media communications, and much more…
- Operational teams spend hours creating process and workflows to manage people and products. ERP systems have many tools and experts to ensure orders are perfectly executed and customer expectations are exceeded. Strategies include implementing lean operations, queue-based workflows, quality checks and approvals, dashboard metric feedback, and much more…
If the two systems are seperate, what is the best practice to get them to speak?
Let’s start by thinking small and define the minimum requirements needed to integrate a Web store and an ERP:
- Simplify the initial configuration: do not try to automate syncing the product configurations and price lists between your Web store and ERP. The categorization engines that exist in Magento, for example, are pretty impressive and complex. The ERP system does not need this complexity. Let your Web team create/update/delete products, categories, and groupings in the Web store. You expectation should be that (a) the Web store tells your ERP system what to do, and (b) the ERP does what it is told. Only the products and costs need be entered into the ERP system.
- Export to flat file: Use your Web store’s built-in export ability to push orders and payments to files. I realize this seems old-school; however, the complexity of maintaining ‘live’ communication between the ERP and Web store systems is expensive to create/buy and maintain as your business changes. By using plain files, the Web store already knows what orders have been exported. You can use free macro tools like AutoIt or free ETL automation tools like Kettle or Jitterbit to push the exported files into ADempiere or iDempiere’s order import table.
- Don’t Recreate the Wheel: Use ADempiere’s or iDempiere’s order import capabilities. They are extremely powerful and flexible. They already handle finding product IDs based on search keys, looking up or creating new business partners based on names/emails/etc…, grouping the correct products into the correct orders, and allowing you to create additional logic to find problem orders as quickly as possible.
- What to export from the Web Store: Orders and Payments. All ADempiere or iDempiere needs to support high-volume fulfillment are orders and payments. The shipments will be automatically generated from orders based on product availability. Invoices will be automatically generated based on your invoicing rules. Payments and invoices will automatically be allocated based on your allocation rules. ADempiere and iDempiere can even support replenishment to support Web store quantities.
- Export Product Qty from ERP: The only information that the Web store needs from the ERP is product QtyOnHand. The Web store will attempt to maintain quantity for you; however, it is not aware of physical inventories, returns, warranty shipments, and other activities that affect product levels. Set ADempiere or iDempiere to export inventory once per day or once per week depending your needs.
- Perform Authorize and Capture at Sale: When taking Web orders, authorizing and capturing funds at the time of sale (as opposed to time of shipping) is by far the most simple solution. Doing so prevent the ERP from needing to track transaction or user tokens. It also minimizes the credit card fee structure by removing misuse and other delayed capture related fees.
As Volume and Complexity Go Up:
As transaction volume and complexity goes up, the above process will start to introduce manual processes and bottlenecks. Here are some examples:
- Returns: Using the above method, returns are somewhat manual. Even though ADempiere and iDempiere can automate the materials transactions, the accounting/payment process is manual with the above process. Accounting must go into the credit card gateway and refund the charge. Accounting must then create the refund payment in ADempiere or iDempiere. If you process three returns per week, this situation may not be a big deal. If you process several hundred, you will increase labor and errors.The Solution is to import transaction and customer tokens with your orders and payments. Doing so allows accounting to reverse the ADempiere and credit card payment at the same time.
- Delayed Shipping, Back Orders and Subscriptions: Using the above method, delayed shipping, back orders and subscriptions become a challenging task. Customer do not appreciate you charging their card on day 1 and shipping on day 120. This is not considered best practice! However, there are business situations where you need the freedom and flexibility to charge payments at future dates without contacting the customer for payment details. The solution is to perform an payment authorization the time of sale and a payment capture a the time of shipment, or the solution is to obtain customer tokens at the time of sale and perform the payment authorization/capture at the time of shipping.
Why not at the beginning
The above bullets explain how to overcome volume or complexity related challenges with Web store integration. The question is “why not perform the complex integration from the beginning?” The answer depends on budget and needs. Complexity grows budget and timing exponentially. I cannot make this statement strong enough. Going live with an ERP/Webstore is challenging. It involves changing the habits of many people. It also introduces risk that did not exist before.
Unless there is a compelling story to move toward complexity, keep it simple. I have seen organization cross the $100M in Web transactions using the simple implementation outlined above. Once you go live and you begin to understand the ADempiere and iDempeire way of thinking, your ability to innovate and adopt new business practices is greatly enhanced by your understanding of the system and the stability of your existing processes.
Going Beyond Files
Once you start to hit volumes of 30K+ Web transactions per month, or you need to provide the user with a much more rich shopping experience by gaining more information from the ERP system, you might need to go beyond the file import/export structure discussed above. This is where ADempiere and iDempiere’s Web services architecture starts to help. Just about anything you can do as a user can be implemented as a Web service through the existing ADempiere and iDempiere Web services capability.
I hope this helps! If you would like to know more about using ADempiere or iDempiere to support high-volume Web distribution, let me know. I spend my days teaching people how to learn, configure and audit open source ERP.
If I can improve this article in any way, be quick to let me know.
ADempiere vs iDempiere
Please note that ADempiere, iDempiere and Openbravo are forks or copies from Compiere. Therefore, they have similar abilities mentioned above. The biggest difference is that ADempiere and iDempiere are pure open source. There are no features held behind a commercial or paid license.
About Chuck Boecking: I am an ERP educator. I believe that open source ERP have achieved mainstream capabilities, and as a result, more companies can create greater efficiency across their organization. I started using the iDempiere code base in 2003. Back then, it was called Compiere. In 2006, I started my first multi-million dollar installation. Since then, ADempiere has helped me create great success with distribution and manufacturing companies all over the world. My vision of success is to find companies that can best use open source ERP to help them achieve a single, global instance that drives a discontinuous increase in profitability. I believe that organizations win when they own their technology.
If you have questions, comments or concerns, let me know. I definitely want your feedback.
You can contact me by phone using 512.850.6068.
My email is firstname.lastname@example.org.
You can complete the form on this page.
Thank you for taking the time. I look forward to speaking with you.