Everything Has A Story, OMS has, too

A typical day, as usual, you step into a familiar store. After taking a look around, you immediately go to the drink shelves. Well, let's see, if buying a can of Cocacola with a cute little sandwich today, you will get a discount of 5k, 27k to only 22k, which means you get a nearly 20% discount. Such a sweet deal. So you grab a Cocacola, then step less than 1m to the fast-food stall, and grab a sandwich immediately. "This store really knows how to deal with customers," you think while walking to the counter for the payment. The cashier smiled at you, quickly grabbed the items, scanned the bar code, and put them into the bag. But pausing for a few seconds, the cashier suddenly said:

  • "Sorry, please wait for a minute, our ordering system is faulty."
  • "Ok, then."

After a few minutes from the time you bring the goods to the checkout, you can finally go home. Such a bad experience, you think, and quietly decide that you should never come back to that place again.

A whole series of perfect experiences, which was optimized little by little from product and promotions arrangements planning to customer serving was ruined, just because of a single bad order management system. That really creates an unforgettable buying experience for our gods. Therefore, the order management system is always one of the most essential pillars of the business, becomes the company's face before the end-user. And as a philosopher once said (might be I as well), love is likely to come after a good first impression, so make it a point.

What is order management system doing?

Order management system (OMS), is one of the most essential components in the E-commerce system, along with supply chain management, product management, and logistics. They are the core that creates business value for enterprises and the community. OMS mainly focuses on supporting sales operations. Nowadays, as more and more retail stores have been bringing together into online marketplaces, the number of businesses that need to satisfy increases and requires a faster delivery rate than ever before. Therefore, we, the developers, need to do a great job synthesis, modeling the business, and making the right technical decisions. The system design must be ready to adapt to changes while ensuring user satisfaction.

Firstly, the system must meet the basic functional requirements, which, of course, allows us to comprehensively manage orders:

  • About the order information:
    • Our system users vary from the end-user who buys sandwiches, the cashier, order processing staff, warehouse management staff, to the deliveryman. With such a set of gods, so many men, so many minds, the work of the programmer is also harder to complete.
    • Not to mention the order information for each sale channel, each seller has different specific details. OMS's mission is to continuously record all information and respond to changes and order information.
    • Order's information is also governed by many systems such as product information from the product catalog management system, customer information from the customer management system, goods status from the warehouse management system, the delivery information from the logistics system, ... OMS architecture must meet the ability to change/synchronize from the above systems to be able to operate well in an E-commerce environment.
  • About order status, it is another difficult problem.
    • Because we need to please everyone, but we also have to treat each person differently. For example, a customer might be able to buy a sandwich, but we should not allow him to work as a cashier if not granted enough privileges.
    • Order status is an attribute that is determined at each stage of the order. It is an input condition that controls the operations that can be performed on order. It also limits the changes that we can do with the order and the next sets of states that will be able to transit into.
    • With different sellers and sale channels, we can have many different ways of managing, giving birth to many different businesses. Adapting to the change above, we must manage many states from all other sides and allow customizations to be evolved to meet the changing business day by day. OMS must be become a centralized order status management (sync up with all associated systems) and support to control user actions based on the status information of the application.

At the same time, the system must also meet many non-functional requirements. We can now do good business, but can we improve it more, and stabilize the revenue. Our system cannot be broken amidst crowded shops. To achieve those things, our system must:

  • Easy to maintain and expand in terms of the system:
    For critical systems such as OMS, maintenance is always at an extremely high priority. The system design must ensure that it is easy to maintain and change over time. Otherwise, business development will be stagnant and cause many damages to businesses and the community. With such a business volume, if we make it becomes Tom Moreland intersection, recruiting new members or developing new systems will face many difficulties, affecting the performance of the whole company.
  • Meet high demand for performance:
    OMS must meet the needs of many integrators, support diverse users. So performance requirements are also paramount. Requirements for processing speed of user requests have been initially very high and increasing day by day, booming by the business. Order information is also accessed continuously from all related systems. It can be said that OMS exists as a core of the E-commerce system, where the corner of the road records and transfers data between systems, between users and business. It is best not to let customers climb a supercar with a maximum speed of 10km / h.
  • Meet the needs of internal system integration and expansion to the outside of the system:
    OMS was born to bridge users' communication and the enterprise, as a bridge between the systems. So, adjusting the interface has a huge impact, but it is a mandatory job to be better every day. Now serving as an Online marketplace, the system must provide public APIs for partner systems to use. Security requirements, binding changes, and keeping the system stable are pushed higher than ever, this is something that developers need to pay a lot of attention.

Is an order management system really that complex?

Without sophisticated attributes management like product service, which is hugely diverse with countless attributes and is recorded daily, order service still have special operations that need special attention. Details of an order may vary depending on the business; some of the typical information that can be shown include:

  • Basic information:
    • Identifier information of the order
    • A code, an alias worked as a bridge for communication of users and salesman because it is easier to remember and more accessible than the base identifier
    • The time we recorded the order, the last time the order was updated
    • The status of the order
  • Order related objects:
    • The salesman and staffs that joins the operation on the order
    • Customer who buys the order
    • Items information of order
    • The promotions applied on the order
    • The seller, who this order comes from
    • Place of sale, where we sold this order
    • The sales channel, where did customer approach to place this order
    • Additional services included on the order
  • Related information:
    • Shipping information of the order
    • Billing information of the order
    • Invoice information of delivery orders
  • Operational requests:
    • Approval request for extra promotions, tax-free and so on
    • Revert and return requests for the goods, and the pos refund operation
  • Information recorded from other systems:
    • Import/export/deliver goods information
    • Payment recorded on order

Take an in-depth look over the order's information, we will understand why the story of OMS becomes so complicated. Obviously, our source of truth is just about:

  • Order's identifier (how this order is accessed, where it came from)
  • Sales information (what items the customers buy, how they use the promotion)
  • Customer information (who the buyer is, what logistics service or billing support is served).

But the marginal information is extremely numerous and must be collected from more than a dozen different systems, almost all Teko's system.
In examplar, business operations that must be handled include:

  • Allow typical users to create orders.
  • Allow customers to pay for the order on the application, convert order's payment information, change order's shipping information, invoice information.
  • Allow cashier to record payment of the customer.
  • Allow order processing staff to record more detailed information for better serving customers and later customer care.
  • Allow people to search and view orders' information
  • Receive a refund request for the customer if they are not satisfied, and support them go through the process

Aside from many right-handed jobs, we also have many left-handed jobs.

  • How to enable several people (customers and a lot of employees in the chain) to work on the order without error?
  • Inform customers about the status changes of the order as quickly as possible.
  • Ensure the benefits of customers as much as possible.

"Please go with satisfied visitors" is deeply concerned in the hearts of OMS team developers. With those spirits, in the next part, we will follow the team's journey to the final technical solution to make OMS become an excellent service.