Bundle availability

As a prerequisite, ensure that the bundle parents and associated item components are set up. For more information about setting up bundle parents and associating item components, see Bundle.

Obtaining the bundle availability is a crucial step for an order capture as a fulfillment manager needs to ensure that all bundle component items are available at the time of the request. otherwise, the order will result into a backorder status that leads to undesirable shopper experience. The application supports availability look up of a bundle item by including the bundle parent item ID and returns availability by taking into account the configured kit quantity.

As a fulfillment manager you can query the availability for a bundle in any of the following ways:
  • Availability across nodes, which is the default behavior.
  • Availability at a single node.
  • Availability for a distribution group.
  • Node or network availability with component break down details.
Consider an example of a configured bundle:
  • Bundle item:
    • Motor oil change kit
  • Components items:
    • 4 unit of motor oil
    • 1 unit of funnel
    • 1 unit of drain pan
Assume that the availability picture at each of the locations are:
  • Node1: 4 motor oil, 1 funnel, 1 drain pan
  • Node2: 8 motor oil, 1 funnel, 0 drain pan
  • Node3: 8 motor oil, 2 funnel, 2 drain pan

Availability across nodes

By default, the node availability API looks up for availability across nodes that are included in the input request. As long as any of the nodes has the component items they are considered for the overall bundle availability. The request user is required to provide individual node in the availability request. Any node that is not included will not be considered. For example, with the current inventory picture for Node1, Node2, and Node3, the total availability of each components is 20 motor oil, 4 funnel, and 3 drain pan. Therefore, the total available quantity to sell for motor oil change kit is 3 quantity (3×4 motor oil, 3x funnel, 3x drain pan across Node1, Node2, and Node3).

As the availability is considered across node, the API skips the ship node attribute of the shipnodeAvailabilities element as it is not applicable. See the following sample response.
{
  "availabilityType" : "SELL",
  "lines" : [{
     "lineId" : "1",
    "deliveryMethod" : "SHP", 
    "itemId" : "MotorOilChangeKit", 
    "unitOfMeasure" : "EACH",
    "shipNodeAvailabilities" : [{
      "availableSupplies" : [
        "availableQuantity" : 3.0, "fromTs" : "2021-01-16T00:00:01.223Z","shortageQuantity" : 0.0,"toTs" : "2021-03-01T00:00:00.000Z"
      }]
    }],
    "shipNodes" : [ "Node1", "Node2"]
  }]
}

Search for availability across node enables the fulfillment manager to ship items around the same time frame , provided there is lesser business requirement to ensure the products are shipped in the same package or shipping box.

Availability at a single node

Business uses cases where bundle item are required to be shipped in a single package is often found in a gift package. Gift package adds a shipping constraint such that items must be shipped from the same node so the picker can provide additional service on the bundle. Such as gift wrapping and ensuring all items are shipped together. By doing so, the fulfillment manager can ensure that the order recipient receives all items together in a single delivery.

The node availability API includes the bundleAggregatesAcrossNodes=false boolean query parameter that supports in handling availability at a single node business use case. For example,
POST https://api.watsoncommerce.ibm.com/inventory/{tenantId}/v2/availability/node?bundleAggregatesAcrossNodes=false
With the current availability at Node1, Node2, and Node3, the request with bundleAggregatesAcrossNodes=false yields a different outcome.
    • Node1: 4 motor oil, 1 funnel, 1 drain pan (Max: 1x Motor oil change kit)
    • Node2: 8 motor oil, 1 funnel, 0 drain pan (Zero availability, since there is no drain pan)
    • Node3: 8 motor oil, 2 funnel, 2 drain pan(Max: 2x Motor oil change kit)

Availability for a distribution group

Most of the time network of ship nodes are predefined as distribution groups for the ease of reference, and to avoid manually passing node in each node availability API call. Similar to the availability across node feature, the user can instead pass a distribution group as a input to request a bundle availability lookup.

Suppose that distribution group DG1 consists of Node1, Node2, and Node3, to coincident with the current availability picture, the result will be 3 quantity of Motor Oil Change Kit (3×4 motor oil, 3x funnel, and 3x drain pan across Node1, Node2, and Node3) identical result to the availability across node scenario. On the other hand, for distribution group DG2 that consists of Node1 and Node2, the availability of Motor Oil Change Kit is 1 quantity, as there is exactly 1 drain pan that is shared between Node1 and Node2.

Node and network availability with component break down details

By using the standard node and network availability API only returns availability with respect to the bundle parent and does not show how the bundle quantity is derived. By using either the node or network availability product breakup by date APIs, the user can receive additional insight on the breakdown of the component availability.

The behavior of the production availability API is similar to the product parents (item with variation) where lineId=0 is always in reference to the parent item, which is the bundle.

Given that the node or network availability picture is the same for Motor Oil Change Kit across [Node1,Node2,Node3] or DG1[[Node1,Node2,Node3], and the setup is
    • Node1: 4 motor oil, 1 funnel, 1 drain pan
    • Node2: 8 motor oil, 1 funnel, 0 drain pan
    • Node3: 8 motor oil, 2 funnel, 2 drain pan
Then, the simplified result will be:
    • LineId=0, 1x MotorOilChangeKit
    • LineId=1, 20x motor oil
    • LineId=2, 4x funnel
    • LineId=3, 3x drain pan