Reservations by date (V2)
The V2 reservation by date supports reservation at node and network level with ability to book reservation against future inventory. The network level V2 reservation uses the node priority calculation that ensures reservations are booked against a node. In the order, the node priority is defined in the distribution group definition.
Node reservation by date
requestedReservationTs
can be used
to define the future start date. If there are use cases to protect future inventory such as inbound
PO or preOrder scenario, the requestEndTs
attribute can be used in the reservation
request to limit the inventory availability lookup range. The requestEndTs
is the
timestamp on how late the reservation can postpone to before considering insufficient reservation
quantity.requestedEndTs
is 30 days from
requestedReservationTs
.Example: Reservation with requestEndTs
Consider today date
as 1 October 2022, and the inventory picture for PLATE-EACH-NEW
at Node1 is as followed:- On-hand quantity: 5 qty
- PO arriving on 5 October 2022 - 10 qty
- PO arriving on 10 November 2022 - 15 qty
First, supplies that are valid on requestedReservationTs
are used to
fulfill the reservation request. If these supplies are not sufficient for full quantity, then
supplies coming on or before requestedEndTs
are also considered. In this example,
the current date is 1 October 2022 and the node quantities for the PLATE-EACH-NEW
item is as follows.
If V2 Reservation POST API is called for
node1-PLATE-EACH-NEW
for 12 quantity on 1 October 2022 without passing
requestedReservationTs
and requestedEndTs
, reservation is
successful. The reservationTS
is determined based on the last availability date
that can fulfill all the requested quantity.
{
"availabilityType" : "SELL",
"considerSafetyStock" : true,
"lines" : [ {
"deliveryMethod" : "SHP",
"itemId" : "PLATE",
"lineId" : "1",
"productClass" : "NEW",
"quantity" : 12.0,
"requestedReservationTs" : "2022-10-01T00:00:00.000Z",
"reservations" : [ {
"expirationTs" : "2022-10-01T00:15:00.000Z",
"id" : "4a61f54d-6134-4c1e-bedc-11ac0a19e4c5",
"quantity" : 12.0,
"reservationTs" : "2022-10-05T00:00:00.000Z",
"shipNode" : "node1"
"totalReservedQuantity" : 12.0,
"unitOfMeasure" : "EACH"
} ]
}
}
requestedReservationTs
and 11 November 2022 as requestedEndTs
for
17 quantity, the reservation is made at node1 for a quantity of 17. All supplies are considered in
this case. The reservation API output is as
follows.{
"availabilityType" : "SELL",
"considerSafetyStock" : true,
"lines" : [ {
"deliveryMethod" : "SHP",
"itemId" : "PLATE",
"lineId" : "1",
"productClass" : "NEW",
"quantity" : 17.0,
"requestedReservationTs" : "2022-10-02T00:00:00.000Z",
"reservations" : [ {
"expirationTs" : "2022-10-02T00:15:00.000Z",
"id" : "4a61f54d-6134-4c1e-bedc-11ac0a19e4c5",
"quantity" : 17.0,
"reservationTs" : "2022-11-10T00:00:00.000Z",
"shipNode" : "node1"
} ],
"shipNode" : "node1"
"totalReservedQuantity" : 17.0,
"unitOfMeasure" : "EACH"
} ]
}
Reservation line limit
Distribution group reservation by date
The distribution group level reservation is always placed by using node priority feature. For
more information, see Reservations topic. Additionally, distribution group
reservation also uses requestedReservationTs
and requestedEndTs
fields as described in the node reservation section.
{
"availabilityType" : "SELL",
"considerSafetyStock" : true,
"lines" : [ {
"deliveryMethod" : "SHP",
"distributionGroup" : "DG1",
"itemId" : "PLATE",
"lineId" : "1",
"productClass" : "CLASS_1",
"quantity" : 5.0,
"requestedReservationTs" : "2021-07-07T00:00:00.495Z",
"reservations" : [ {
"expirationTs" : "IGNORE_VALUE",
"id" : "IGNORE_VALUE",
"reservedQuantity" : 5.0,
"reservationTs" : "2021-07-07T00:00:00.000Z",
"shipNode" : "store-BostonMA"
} ],
"segment" : " ",
"segmentType" : " ",
"totalReservedQuantity" : 5.0,
"unitOfMeasure" : "EACH"
} ]
}
{
"availabilityType" : "SELL",
"considerSafetyStock" : true,
"lines" : [ {
"deliveryMethod" : "SHP",
"distributionGroup" : "DG1",
"itemId" : "PLATE",
"lineId" : "1",
"productClass" : "CLASS_1",
"quantity" : 25.0,
"requestedReservationTs" : "2021-07-07T00:00:00.864Z",
"reservations" : [ {
"expirationTs" : "2021-07-07T00:16:00.000Z",
"id" : "IGNORE_VALUE",
"reservedQuantity" : 10.0,
"reservationTs" : "2021-07-07T00:00:00.000Z",
"shipNode" : "store-BostonMA"
}, {
"expirationTs" : "2021-07-07T00:16:00.000Z",
"id" : "IGNORE_VALUE",
"reservedQuantity" : 10.0,
"reservationTs" : "2021-07-07T00:00:00.000Z",
"shipNode" : "store-SacramentoCA"
}, {
"expirationTs" : "2021-07-07T00:16:00.000Z",
"id" : "IGNORE_VALUE",
"reservedQuantity" : 5.0,
"reservationTs" : "2021-07-07T00:00:00.000Z",
"shipNode" : "store-SpringfieldIL"
} ],
"segment" : " ",
"segmentType" : " ",
"totalReservedQuantity" : 25.0,
"unitOfMeasure" : "EACH"
} ]
}
Distribution group reservation when network availability and node availability is different
There are scenarios when the network availability and collection of node availability does not match up due to difference in safety stock rules settings. Assume that there is a network level safety stock of 2 qty.
- Node1 - 3 qty
- Node2 - 2 qty
- DG1 = [Node1, Node2] = 3 + 2 = 5 qty is the total available
If safety stock of DG1 is 2, then the total availability for DG1 is 5 - 2 = 3 qty.
When a reservation is made against DG1 for 5 qty, the reservation results in partial reserved of 3 qty. This is because the 2 quantity is withheld at the network level regardless of the availability at node level. If the safety stock is set at Node2 instead, the total reserved quantity remains 3 except that the consideration was restricted by the node instead of the network.