How to integrate Ordering Stack with any POS system


Ordering Stack platform was created with flexibility in mind and can be integrated with almost any POS/EPOS system. It has extensive product model which can handle all kinds of complex products from almost any POS system including combo meals, full configurable pizzas (including half and half, custom toppings) and mixtures of it (combo meals of configurable pizzas). This document describes how such integration can be done in the scope of menu, products, prices and orders. There are some other areas such us promotions and loyalty which will be described in another document.

In typical case there are 3 channels of data flow:

  • 1) menu/products/prices definitions
  • 2) new orders
  • 3) existing orders statuses
We recommend to create two separate components for it: Menu Importer and Local Agent.

The data flow is presented on the following diagram:

A generic square placeholder image with rounded corners in a figure.

1. Import menu definition from POS system

Menu Importer module is responsible for fetching all menu definitions and passing it furter to Ordering Stack platform. Importer module should be installed on node with read-only access to POS API providing (or database containing) all menu, products and prices master data. All fetched data are transformed into json documents and sent to OrderingStack Menu API. Importer module is running on predefined schedule or on demand. All activities are logged, so each data processing can be audited.

After Menu Importer finishes its job, there is one more activity to perform manually: we need to enrich imported data with additional attributes and media files in OrderingStack backoffce module. We especially need to upload product pictures, descriptions and assign products to categories. All this work is need to be done only once as all next imports will not overwrite these data.

2. Passing ready order from Ordering Stack into POS system

This description applies to POS installed locally in each restaurant. Ordering Stack platform uses POS API to insert ready order. It requires installing Ordering Stack Local Agent on the node with local access to instance of POS API. Local Agent initiates connection to server so there is no need to expose anything to public network.

3. Updating order status

Ordering Stack Local Agent is responsible for periodically querying for the status of previously inserted orders. If there is any update, Local Agent is pushing status update to Ordering Stack Server.

Integration with Oracle Micros


Ordering Stack can work together with Oracle Micros with locally installed Micros RES 3700 server and multiple POS stations in each restaurant. Solution works exactly like described above. If restaurant chain uses Micros Enterprise Manager (EM) than Menu Importer module needs to be installed with read-only access to EM sybase database. In other case selected restaurant database can act as source for Menu Importer. In case of Micros 3700 we need to manually extend imported product definitions with product pictures, descriptions, tags and assign them to appropriate categories. This data will not be overwritten by subsequent imports. Pushing orders from Ordering Stack back into Micros 3700 requires Micros Res POS Api and Ordering Stack Local Agent installed locally in each restaurant. Local Agent is establishing connection from local restaurant network to Ordering Stack platform, receives all new orders and insert them into Micros using Res POS API Soap Web Service. Local Agent is also regularly queries Micros for the status of all previously inserted orders. If status is updated, it pushes this information into Ordering Stack servers.

Presented setup allows to gather orders from Ordering Stack application like KIOSK, mobile and web app and have them in local restaurant POS exactly as it was entered through Micros POS terminal, with assurance that menu, products and prices are always up to date. Micros 3700 integration with Ordering Stack is is visualised here:

A generic square placeholder image with rounded corners in a figure.
In this scenario kitchen uses MICROS KDS, but it is also possible to use Ordering Stack KDS. For such configuration we need to use ISL scripting and SIM/PSM module connected to each Micros POS instance (ISL is scripting programming language for automating Micros POS, whereas SIM/PSM is technique for connecting external libraries/programs allowing extending functionality of MICROS). For each new order special ISL script is invoked and it has access to its definition, all check lines. Script can invoke SIM/PSM module which can connect to Ordering Stack server and send new order data. Then it goes to the proper KDS and is processed as any other order, with the difference that is marked not to be sent back to MICROS.

Instead of digging into Micros API documentation, you can trust or knowledge or Micros internals. We’ve been working with MICROS 3700 for 6 years. Our implementation works for brands like Pizza Hut, KFC, Burger Kind, Starbucks and Costa and process daily really huge number of orders.