Many retailers are looking to bring a modern, experience-driven storefront to enhance the shopping and purchasing experience for their existing customer base. There is a strong need to enable more teams within these retailers to speed up operations and not rely on an IT team to make changes to their current website.
Many existing web solutions are home-grown and closely tied to their ERP. Often, there is a custom middleware in place that holds specific business rules tied to multiple channels (including the in-store POS system, in-store kiosks, mobile apps, and eCommerce Platform (ECP)). The home-grown nature of this solution makes it nearly impossible for a non-technical marketing team to make updates to the website and creates a bottleneck within the team to make website updates. Middleware can be closely tied to systems that are achieving their end goals, so it becomes important to isolate the systems that need to be upgraded and leverage the existing business logic as much as possible.
There are multiple options to replace existing systems that are all unique to individual situations. The first, and most obvious, option is to rip out and re-do the entire ecosystem starting with the middleware and adding the eCommerce Platform. This solution would solve all the existing problems facing the team and give the ability to customize every piece of the customer journey. However, if budget is an issue, this is not feasible because it is typically the most expensive option.
Another option is to mirror the commerce business logic implemented in the middleware to the new eCommerce Platform (ECP) and run them independent of each other. This option is technically the simplest because it requires integrating fewer systems together, but in-turn, makes managing the systems twice as difficult and much more complex. By standing up two separate systems, it would achieve the speed and cost that would satisfy many client requirements while also leaving itself open to future issues and mistakes by requiring updates in each of the separate systems.
Whenever possible, it is recommended to avoid having separate systems for doing the same thing or executing the same function. A well-known design principle is the “Separation of Concern” which advises against having separate systems do the same thing. Instead, each system should be isolated based on individual business function to allow for faster remediation of problems that might pop up.
Finally, you can consider a hybrid solution that only uses the required components from the eCommerce Platform while using the functionality provided by the middleware. We have implemented approaches in this fashion where the cart and order modules available in the ECP were not leveraged, but instead were integrated directly with the counterpart services offered by the middleware. In this case, the shopping cart, for example, was not stored in the ECP. Instead, it went through the Middleware to fetch directly from the ERP. The Middleware exposed a suite of cart web services and cart data objects using WCF technology. Then, the ECP consumed these services to implement actions on the website. For example, the “add to cart” function in the ECP creates needed data objects and calls the appropriate WCF web endpoint. Since the middleware already held the required business logic, we were able to speed up development and minimize rework.
Another function that reflects the hybrid nature of this solution is around how the ECP handles Shipping, Payment, and Taxes. Since this logic already exists in the Middleware and it was exposed using WCF endpoints, we were able to consume the logic and not have to rebuild it on top of the ECP platform. Since the payment gateway, shipping provider, and taxes had to exist in the previous platform, it made sense to leverage them there since they still had to exist for the in-store POS and kiosks.
Overall, this hybrid solution made sense for this particular company in this situation. There is no one size fits all approach to eCommerce especially when it comes to integrations. Individual businesses have individual needs and workflows that need to be kept in place to allow all business users to focus on the end client. With this approach, we were able to help our client launch a scalable, customer-centric site on-time and within their budget so that they could focus on the needs of their client base.