Distribution groups

A distribution group is a network of fulfillment centers (or nodes), which can contain one or more distribution centers and stores. A distribution group is created primarily based on geographical location.

As a seller, you can create and manage distribution groups, each of which can contain more than one node for order fulfillment. For the Promising service, you can use these distribution groups to restrict the list of nodes that are considered by the Calculate item delivery date and Calculate shipment assignments Scenario: Troubleshooting promising calculations APIs, version 2, during promising calculations.

For aggregate considerations across nodes, you must create a distribution group for each of the following purposes:
Inventory
This is required if you are using features such as availability and safety stock rules in the Inventory service.
Sourcing
If the distribution group is required for promising rules, estimated delivery date (EDD), and checkout assignment, you must assign the sourcing purpose to it.
Procurement
If you are considering node transfers to fulfill orders, you must create this distribution group to access transfer rules.
Note: A distribution group is identified uniquely by name and purpose. If you configure a DG1 (node1, node2) with purpose SOURCING but you also need to track inventory for the same nodes, then you must create a new DG2 (node1, node2) with an INVENTORY purpose. Also, you can't modify the purpose of a distribution group. As a result, you must delete the distribution group and re-create it with the correct purpose.

For more information, see Creating distribution groups and the Manage DG API.

You do not always need to create distribution groups due to the proximity of shipping locations. You can create distribution groups to differentiate between your own nodes and external suppliers.

For example, the following figure depicts multiple distribution node groups such as East Coast and Central.

The image displays an example of distribution groups.

Unassigned demands

Unassigned demand refers to the demands that are not associated with a specific node. Such demands can be created due to a customer order or any prediction of upcoming customer needs due to sale. The unassigned demands are important during inventory planning as it is a representation of probable future orders.

Factors for unassigned demands
Following are the possible factors that might cause unassigned demands:
Insufficient inventory or capacity
There may not be enough stock or production capacity available to fulfill the demand.
Planning constraints
The allocation rules, lead times, node availability prevent the system from assigning supply.
Data issues
Due to some calculation errors, there are incorrect demand forecasting or order entry that leads to unassigned demands.
Timing mismatches
Sometimes, the supply availability does not happen at the right time or location to meet the demand.
Impact of unassigned demands
Customer service
There can be unfulfilled orders that can lead to order delays, order cancellations, lost sales, or increased costs.
Availability
If unassigned demands are not accounted for order fulfillment, it can lead to inaccurate availability calculations and leads to over-promising or under-stocking.
Considering unassigned demands
To ensure that the unassigned demands are considered in distribution group's availability, you must set the value of considerUnassignedDemand to true. For more information, see Define distribution group API.
To enable considering unassigned demands via Order Hub, see Creating distribution groups.
For more information on distribution groups, see Distribution groups.
Example
Consider DG1 as the participating distribution group for order fulfillment. The order is captured and the participating nodes fulfills the order as the unassigned demand is converted to become an assigned demand with node assignment.
Consider the following calculation:
  • Node01 - 5 qty
  • Node02 - 4 qty
  • DG1 = Node01 + Node02 = 9 qty
  • Assigned demand = 3 qty
  • Unassigned demand = 2 qty
  • Availability = DG1 - Assigned demand - Unassigned demand = 9 qty - 3 qty - 2 qty = 4 qty
The fulfillment manager decides the distribution groups to account for these unassigned demands.
Note: You can have multiple distribution groups that participate in fulfilling unassigned demands.
Suppose two distribution groups DG1 and DG2 are marked to consider an unassigned demands and the unassigned demand is created for 100 qty. The availability of both the distribution groups gets reduced by 100 qty. This is considered until the demand is assigned to a node. Once the demand is assigned, only the node's distribution group's availability is reduced, while the other distribution group is not.
Note: The unassigned demand is only applicable for open order demands or OPEN_ORDER demands and its extensions.

Configuring node priority in distribution group definition

The Distribution Group API (PUT configuration/distributionGroups/{distributionGroupId}) takes in the priority for the nodes. Set the priority for the nodes of the distribution group by using the Distribution Group PUT API.
In this example, distribution group DG1 node priority is set with Node2 as priority 1, Node1 as priority 2, Node3 as priority 3, and Node4 as priority 4.
{ "shipNodes":[
  { "shipNode" : "node2", "priority" : 1},
  { "shipNode" : "node1", "priority" : 2},
  { "shipNode" : "node3", "priority" : 3},
  { "shipNode" : "node4", "priority" : 4}
  ]
}

Examples for node priority

Example 1: Network reservation considering node priority
The node priority with the quantity in the respective nodes are assigned as follows:
Node Quantity Priority
Node1 5 qty Priority 1
Node2 10 qty Priority 2
Node3 2 qty Priority 3
The total availability at DG1 is 5+10+2= 17.
Suppose that a reservation is made against DG1 for 5 qty. The system books the inventory against Node3 of 2 qty and Node2 of 3 qty according to the distribution group priority definition.
For more information on the v2 Reservation POST API, see Reservation by date.
Example 2: Effect of node priority reservation on other distribution groups sharing the same node
When a network reservation has successfully created against a network, the requested quantity is withheld at one of the priority nodes. If there are distribution groups that are sharing the same node, then their availability is also impacted. For
example, DG1 has the following nodes with Distribution Group configuration and respective node availability.
Table 1. Node Availability for Item1
Node Quantity Priority
Node1 200 2
Node2 0 1
Node3 10 3
Node4 50 4
If Item1 has reservation of two quantities against DG1 Item on 28 January 2021, then the reservation is booked against Node1 for two quantities since Node2 does not have any availability even though it has node priority of 1.
{
  "availabilityType": "SELL",
  "lines": [
    {
      "deliveryMethod": "SHP",
      "distributionGroup": "dg1",
      "lineId": "1",
      "quantity": 2,
      "totalReservedQuantity": 2,
      "reservations": [
        {
          "expirationTs": "2021-01-28T00:15:00Z ",
          "id": "5040f3e2-2af0-4f50-bcc4-d515b410b25b",
          "shipNode": "node1",
          "quantity": 2
        }
      ]
    }
  ]
}
Important: If multiple nodes have the same priority, the tiebreaker is based on the node with the most inventory.
Example 3: Node priority reservation above single node available quantity
Using the same setup of DG1, suppose that there is 202 quantity request for the reservation on DG1. Then, more than one node is picked for reservation since Node1 only has 200 qty available. The system then books the remaining two quantities against Node3.
The resulting reservation payload is given as follows. The 200 qty is reserved at Node1 and 2 qty is reserved at Node3.
{
  "availabilityType": "SELL",
  "lines": [{
     "deliveryMethod": "SHP",
     "distributionGroup": "dg1",
     "lineId": "1",
     "quantity": 202,
     "totalReservedQuantity": 202,
     "reservations": [{
         "expirationTs": "2021-01-28T00:20:00Z ",
         "id": "ad8af5d4-0d14-4eaa-a5d4-210cb8677176",
         "shipNode": "node1",
         "quantity": 200
     },
     {
         "expirationTs": "2021-01-28T00:20:00Z ",
         "id": "0cb34fe8-f313-41eb-9117-c77b61745c59",
         "shipNode": "node3",
         "quantity": 2
     }
    ]
   }
 ]
}