...
Splitting and routing of orders allows the Assure Increff OMS module to break up a single outward order into multiple sub-order spread across available warehouses in such a way that the delivery distance or the number of shipments is minimized.
Glossary
Location | Represents a warehouse or a store |
Reserved inventory | Inventory that is reserved for an order for the purpose of performing splitting/routing |
Overview
Order splitting / routing will be applied to outward orders that are created with the isSplitRequired flag set as true. The order can be split across locations based on one of two different algorithms: Minimize-Distance or Minimize-Shipments. After splitting of the order, the created sub-orders are processed as usual from their assigned locations.
Splitting Routing Algo Selection
The first step before performing the splitting of an order is the selection of a splitting algorithm for a client. This can be done under the Primary Routing Algorithm tab in the Clients screen. The user can select from one of two splitting algorithms from this screen and the algorithm can be updated at any time. The two splitting algorithms available are:
...
⚠️ Note: In case the splitting algorithm is updated for a client, the changes will only affect orders created after the update
Cluster and Area-Cluster Mappings
A Cluster represents a group of locations (stores or warehouses) identified by a unique cluster name. These clusters are used to represent a group of locations that are located in the same area or vicinity.
...
Figure 2: Split / Route Settings section in OMS for managing Clusters and Area-Cluster Mappings
Cluster
For setting up clusters, the following two steps are to be done
...
Figure 3: Example of clustering done to a group of locations based on proximity
Enabling / Disabling Clusters
Created clusters can be enabled / disabled at any time. Disabled clusters are ignored when performing minimize-distance based order splitting.
...
⚠️ Note 2: A DEFAULT cluster is created for each client in which all of their mapped locations are added. This default cluster is used for order fulfillment in the minimize-delivery algorithm if no other clusters are able to fulfill some quantity of an order. The default cluster ensures that an unfulfillable order is not created if required inventory exists in some location(s).
Area-Cluster Mapping
The area-cluster mapping is used to map delivery locations to specific clusters from which the order fulfillment will be attempted. For this, the prefix of a pincode or area-code can be mapped to up-to 5 clusters from which the fulfillment will be first attempted. When an order is received, its delivery pincode is matched with the pincode prefixes present in the area-cluster mapping. Based on the best matches, the clusters to be used are identified.
...
areaCodePrefix | cluster1 | cluster2 | cluster3 | cluster4 | cluster5 |
191 | Cluster-2 | Cluster-1 | |||
180673 | Cluster-1 | Cluster-2 |
Example of Cluster and Area-Cluster Mapping Setup
For the scenario detailed in the image below, the geographic area is divided into four distinct zones, each of which has a specific set of area-codes prefixes (as mentioned in the legend). Further, as there are 10 warehouses distributed across the geography.
...
Based on the location of the warehouses and the area-codes of the zones, the following cluster, cluster-definitions, and area-cluster mappings could be set up
1. Cluster
Cluster Name |
EAST_CLUSTER |
WEST_CLUSTER |
NORTH_CLUSTER |
SOUTH_CLUSTER |
2. Cluster-Definitions
Cluster | Location |
EAST_CLUSTER | WH1, WH2, WH3 |
WEST_CLUSTER | WH10 |
NORTH_CLUSTER | WH4, WH8, WH9 |
SOUTH_CLUSTER | WH5, WH6, WH7 |
3. Area-Cluster Mapping
Area-Code Prefix | Cluster | Priority |
11 | EAST_CLUSTER | 1 |
12 | EAST_CLUSTER | 1 |
21 | WEST_CLUSTER | 1 |
22 | WEST_CLUSTER | 1 |
31 | SOUTH_CLUSTER | 1 |
32 | SOUTH_CLUSTER | 1 |
41 | NORTH_CLUSTER | 1 |
42 | NORTH_CLUSTER | 1 |
Splitting Algorithms
The two splitting algorithms split the orders based on the following logic:
1. Minimize Distance Algorithm
The minimize-distance algorithm attempts to split the order in such a way that the order is fulfilled from those locations first that are nearest to the delivery area-code. Therefore, the sequence followed for splitting the order is in the ascending order of location distance from the delivery point.
...
Select all SKUs from order where Inventory allocation is required
Select Cluster(s) mapped to Delivery area code in sorted order
Get all locations for selected cluster(s)
Select all locations whose Inventory is exposed on marketplace AND where selected SKUs are available
Sort all selected locations by count of Items
Create maximum Sub-Order from Top Location
Check if more allocation is needed, if yes then goto 1 else end
Example of execution:
Assuming that the clusters are set up in the manner described here, suppose an order is received with the delivery area code: 320311. If the minimize-delivery algorithm is executed for this order, based on area code mappings, the best match(es) of the cluster would be picked. In this case, the best match with the longest matching area-code prefix is the SOUTH_CLUSTER which is mapped to the area-code prefix 32.
Therefore, the order will be allocated first from locations present in the SOUTH_CLUSTER, i.e., locations WH5, WH6, and WH7. Also, since there are multiple locations within the matching cluster, the minimize-shipments algorithm will be used to identify the order in which the three locations would be tried for allocation.
Find Serviceable Clusters for Area Code
In order to see which clusters would be used and in which order when running minimize-delivery for an order, a new screen Find Serviceable Clusters for Area Code has been added under the Area-Cluster Mapping screen. On specifying the delivery area code of the order, the list of custom clusters that will be used for sub-order creation will be displayed.
...
Figure 7: Screen to Find serviceable clusters for an Area Code Pattern
2. Minimize Shipments Algorithm
The minimize-shipments algorithm attempts to split the order in such a way that the number of sub-orders or shipments created in different locations is minimized. This is done by greedily picking locations based on:
...
Select all SKUs from the order where Inventory allocation is required
Select all locations whose Inventory is exposed on marketplace AND where selected SKUs are available
Rank Locations by Count of Items and SKUs available
Select Top Ranked Location(s)
If there are multiple top ranked locations, use Cluster Area Code mapping to find the closest location.
Create maximum Sub-Order from Top Ranked Location
Check if more allocation is needed, if yes then goto 1 else end
Example of execution:
Assume that the distribution of inventory for two SKUs across 3 warehouses is as follows:
...
In case any ordered quantity was left over after the first sub-order creation, the allocatable quantities would be recalculated and the next choice of location for sub-order creation would be decided.
Splitting Logic Flowchart (Simplified)
...
Handling Excess / Unfulfillable Orders
For an unfulfillable order, the available quantities will be assigned or reserved to splitted sub orders based on the selected primary routing algorithm. For the excess ordered quantities, a single sub-order will be created from any one of the available locations. No preference will be given to a specific location during the creation of the excess order (except in the case of Manufacturable SKUs, see attached note).
⚠️ Note: If the excess ordered quantity contains manufacturable SKUs, the sub-orders for such items will be created in locations where these SKUs are marked as manufacturable. If multiple, excess manufacturable SKUs are present in the outward order, each of which is manufacturable in different locations, multiple sub-orders would be created to ensure that the excess sub-order of a manufacturable SKU is always present in a location where the SKU can be manufactured.
Handling Cancellations before Splitting
In case an order is partially canceled before the splitting / routing is performed, a single sub-order will be created with all the canceled quantities during splitting. This sub-order will be created from any arbitrary, valid location corresponding to the order.
FAQs
Q. Which locations will be considered when performing splitting/routing of orders?
...