Maegham

RESERVATION FULFILMENT RULES FOR SALES ORDER

RESERVATION FULFILMENT RULES FOR SALES ORDER

Introduction:

In IBM Sterling OMS, reservations determine how inventory is allocated and promised to customer orders. Reservations can occur at the time of order creation. IBM sterling oms provides reservation configurable rules that control when and how inventory is reserved during the fulfillment process. 

Reservation rules define how Sterling OMS handles scenarios such as partial reservations, date-based inventory availability, and validations during order modifications. Based on these configuration order will be created with reserve order status. 

Configuration Path: DOM > Document specific > sales order > fulfillment > fulfillment rules.

Reservation fulfilment rules:

  1. Attempt to reserve the complete quantity of order line.
  2. Reservation is mandatory for the complete quantity of order line.
  3. Inventory Reservation created for specific date are valid for all orders with the same or future ship date.
  4. Suppress the validation of reservation order line modification.

Rule1: Attempt to reserve the complete quantity of an order line 

IBM Sterling OMS attempts to reserve the complete quantity of an order line from a single node. If full reservation is not possible then system might only reserve the available quantity.

Test Case1: Customer place order for 5 quantities. Onhand available quantity is 5 at node “MITDigitalDC01”. “Attempt to reserve the complete quantity of an order line” option is enabled in the Reservation Fulfillment Rule. Observe how the reservation process occurs when the order is created. 

Create order for 5 qty using “createOrder” API. 

<Order AllocationRuleID=”MaeghamSch” BuyerOrganizationCode=”MaeghamDigital” DocumentType=”0001″ EnterpriseCode=”MaeghamDigital” SellerOrganizationCode=”MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=”SHP” FulfillmentType=”HomeDelivery” ItemGroupCode=”PROD” OrderedQty=”5″ ShipNode=”MITDigitalDC01″>            <Item ItemDesc=”Iphone12Pro” ItemID=”Iphone12Pro” ItemShortDesc=”Iphone12Pro” ProductClass=”GOOD” UnitOfMeasure=”EACH”/>            <LinePriceInfo IsPriceLocked=”Y” UnitPrice=”1000″/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=”2027-11-11″ CreditCardName=”VISA Card” CreditCardNo=”10000456782342275″ CreditCardType=”VISA” FirstName=”Harini” LastName=”Ganesan” PaymentType=”CreditCard” MaxChargeLimit=”5000″ UnlimitedCharges=”N”>            <PaymentDetails AuthCode=”100″ AuthorizationExpirationDate=”2026-11-11T23:00:00″ AuthorizationID=”” ChargeType=”AUTHORIZATION” ProcessedAmount=”5000″ RequestAmount=”5000″/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/>    <PersonInfoBillTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/></Order>

Order is created with a “Reserved” status.

An RSRV_ORDER record is created in the YFS_INVENTORY_DEMAND table to indicate that the inventory has been reserved for the order.

Since the complete quantity is available, the order is fully reserved, and the order line status is set to RESERVED.

Test Case2: Customer places an order for 5 Quantity. When only 3 qty are available at node MITDigitalDC01 observe how the reservation process is handled during order creation.

Create order for 5 qty using createOrder API. 


<Order AllocationRuleID=”MaeghamSch” BuyerOrganizationCode=”MaeghamDigital” DocumentType=”0001″ EnterpriseCode=”MaeghamDigital” SellerOrganizationCode=”MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=”SHP” FulfillmentType=”HomeDelivery” ItemGroupCode=”PROD” OrderedQty=”5″ ShipNode=”MITDigitalDC01″>            <Item ItemDesc=”BoatPowerBank 20000mAh” ItemID=”BoatPowerBank” ItemShortDesc=”BoatPowerBank 20000mAh” ProductClass=”GOOD” UnitOfMeasure=”EACH”/>            <LinePriceInfo IsPriceLocked=”Y” UnitPrice=”1000″/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=”2027-11-11″ CreditCardName=”VISA Card” CreditCardNo=”10000456782342275″ CreditCardType=”VISA” FirstName=”Harini” LastName=”Ganesan” PaymentType=”CreditCard” MaxChargeLimit=”5000″ UnlimitedCharges=”N”>            <PaymentDetails AuthCode=”100″ AuthorizationExpirationDate=”2026-11-11T23:00:00″ AuthorizationID=”” ChargeType=”AUTHORIZATION” ProcessedAmount=”5000″ RequestAmount=”5000″/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/>    <PersonInfoBillTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/></Order>

Order is created with a “Partially Reserved” status.

Order Line information: IBM sterling OMS reserve 3 available quantities and remaining 2 quantity remains in “Created” status.

An RSRV_ORDER record is created for the reserved quantity, while the OPEN_ORDER entry represents the remaining 2 qty that could not be reserved.

Rule2: Reservation is mandatory for the complete quantity of an order line 

IBM Sterling OMS attempts to reserve the complete quantity of an order line from a single node. If the inventory is not available at that node, IBM Sterling OMS throws the error message: “Order Line could not be reserved.”

Example: Customer places an order for 5 Quantity. Onhand available quantity is 3 at node “MITDigitalDC01”. “Reservation is mandatory for the complete quantity of an order line”option is enabled in the Reservation Fulfillment Rule. Observe how the reservation process occurs when the order is created. 

Create order for 5 qty using “createOrder API”.

<Order AllocationRuleID=”MaeghamSch” BuyerOrganizationCode=”MaeghamDigital” DocumentType=”0001″ EnterpriseCode=”MaeghamDigital” SellerOrganizationCode=”MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=”SHP” FulfillmentType=”HomeDelivery” ItemGroupCode=”PROD” OrderedQty=”5″ ShipNode=”MITDigitalDC01″>            <Item ItemDesc=”HPWirelessMouse” ItemID=”WirelessMouse” ItemShortDesc=”HPWirelessMouse” ProductClass=”GOOD” UnitOfMeasure=”EACH”/>            <LinePriceInfo IsPriceLocked=”Y” UnitPrice=”1000″/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=”2027-11-11″ CreditCardName=”VISA Card” CreditCardNo=”10000456782342275″ CreditCardType=”VISA” FirstName=”Harini” LastName=”Ganesan” PaymentType=”CreditCard” MaxChargeLimit=”5000″ UnlimitedCharges=”N”>            <PaymentDetails AuthCode=”100″ AuthorizationExpirationDate=”2026-11-11T23:00:00″ AuthorizationID=”” ChargeType=”AUTHORIZATION” ProcessedAmount=”5000″ RequestAmount=”5000″/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/>    <PersonInfoBillTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/></Order>

When the complete quantity is not available, the reservation fails, the order is not created, and an error is thrown: “Order Line Could Not Be Reserved.”

Rule3: Inventory Reservation created for specific date are valid for all orders with the same or future ship date.

In Sterling OMS, when inventory is reserved for an order on a specific date, that reservation is not limited to just that order. It can also be applied to other orders with the same or a future requested ship date.

Example: 

Step1: Use the “reserveAvailableInventory” API to reserve available inventory for an order, with a reservation expiration date of November 1.

<Promise AllocationRuleID=“MaeghamSch” EnterpriseCode=“MaeghamDigital” OrganizationCode=“MaeghamDigital”>    <ReservationParameters AllowMultipleReservations=“” AllowPartialReservation=“” ExpirationDate=“2025-11-01T12:30:00” ReservationID=“Reservation003”/>    <PromiseLines>        <PromiseLine DeliveryMethod=“SHP” LineId=“1” FulfillmentType=“HomeDelivery” ItemID=“HPKeyboard” RequiredQty=“1” UnitOfMeasure=“EACH” ProductClass=“GOOD”>            <ReservationParameters ExpirationDate=“2025-11-01T12:30:00” ReservationID=“Reservation003”/>        </PromiseLine>    </PromiseLines></Promise>

Once the inventory is reserved, an entry is created in the YFS_INVENTORY_RESERVATION table

Step2: Simulates the first customer placed order on Oct 31 with a ship date of Nov 01

<Order AllocationRuleID=“MaeghamSch” BuyerOrganizationCode=“MaeghamDigital” DocumentType=“0001” EnterpriseCode=“MaeghamDigital” SellerOrganizationCode=“MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=“SHP” FulfillmentType=“HomeDelivery” ItemGroupCode=“PROD” OrderedQty=“1” ShipNode=“MITDigitalDC01” ReservationID=“Reservation003” ReqShipDate = “2025-11-01T00:50:00-04:00”>            <Item ItemDesc=“HPKeyboard” ItemID=“HPKeyboard” ItemShortDesc=“HPKeyboard” ProductClass=“GOOD” UnitOfMeasure=“EACH”/>            <LinePriceInfo IsPriceLocked=“Y” UnitPrice=“1000”/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=“2027-11-11” CreditCardName=“VISA Card” CreditCardNo=“10000456782342275” CreditCardType=“VISA” FirstName=“Harini” LastName=“Ganesan” PaymentType=“CreditCard” MaxChargeLimit=“1000” UnlimitedCharges=“N”>            <PaymentDetails AuthCode=“100” AuthorizationExpirationDate=“2026-11-11T23:00:00” AuthorizationID=“” ChargeType=“AUTHORIZATION” ProcessedAmount=“1000” RequestAmount=“1000”/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=“” AddressLine2=“” AddressLine3=“” AddressLine4=“” AddressLine5=“” AddressLine6=“” City=“Theni” Company=“MaeghamInfoTech” Country=“IN” FirstName=“” JobTitle=“” LastName=“” MiddleName=“” MobilePhone=“” State=“TN” Title=“” ZipCode=“520001”/>    <PersonInfoBillTo AddressLine1=“” AddressLine2=“” AddressLine3=“” AddressLine4=“” AddressLine5=“” AddressLine6=“” City=“Theni” Company=“MaeghamInfoTech” Country=“IN” FirstName=“” JobTitle=“” LastName=“” MiddleName=“” MobilePhone=“” State=“TN” Title=“” ZipCode=“520001”/></Order>

Order is created with a “Reserved” status.

An RSRV_ORDER record is created in the YFS_INVENTORY_DEMAND table to indicate that the inventory has been reserved for the order

Step3: Second order created for same item with requested ship date to Nov 2.

<Order AllocationRuleID=“MaeghamSch” BuyerOrganizationCode=“MaeghamDigital” DocumentType=“0001” EnterpriseCode=“MaeghamDigital” SellerOrganizationCode=“MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=“SHP” FulfillmentType=“HomeDelivery” ItemGroupCode=“PROD” OrderedQty=“1” ShipNode=“MITDigitalDC01” ReqShipDate=“2025-11-02T23:30:00-04:00” ReservationID=“Reservation003” >            <Item ItemDesc=“HPKeyboard” ItemID=“HPKeyboard” ItemShortDesc=“HPKeyboard” ProductClass=“GOOD” UnitOfMeasure=“EACH”/>            <LinePriceInfo IsPriceLocked=“Y” UnitPrice=“1000”/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=“2027-11-11” CreditCardName=“VISA Card” CreditCardNo=“10000456782342275” CreditCardType=“VISA” FirstName=“Harini” LastName=“Ganesan” PaymentType=“CreditCard” MaxChargeLimit=“1000” UnlimitedCharges=“N”>            <PaymentDetails AuthCode=“100” AuthorizationExpirationDate=“2026-11-11T23:00:00” AuthorizationID=“” ChargeType=“AUTHORIZATION” ProcessedAmount=“1000” RequestAmount=“1000”/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=“” AddressLine2=“” AddressLine3=“” AddressLine4=“” AddressLine5=“” AddressLine6=“” City=“Theni” Company=“MaeghamInfoTech” Country=“IN” FirstName=“” JobTitle=“” LastName=“” MiddleName=“” MobilePhone=“” State=“TN” Title=“” ZipCode=“520001”/>    <PersonInfoBillTo AddressLine1=“” AddressLine2=“” AddressLine3=“” AddressLine4=“” AddressLine5=“” AddressLine6=“” City=“Theni” Company=“MaeghamInfoTech” Country=“IN” FirstName=“” JobTitle=“” LastName=“” MiddleName=“” MobilePhone=“” State=“TN” Title=“” ZipCode=“520001”/></Order>

Order is created with a “Reserved” status.

IBM Sterling OMS allows the system to use inventory reservations made for earlier dates to fulfill orders with later ship dates.

Rule4: Suppress the validation of reservation on order line modification. 

In Sterling OMS, check the existing inventory reservation when modifications are made at the order line level.

  • For example: Customer place an order for 1 qty. IBM Sterling oms creates a reservation for one qty of the item at Store A. The order line is now RESERVED at Node 1 (Store A). Due to an unforeseen operational issue at Store A (e.g., a power outage or sudden closure), the retailer needs to modify the order to be fulfilled from a different nearby store (Store B). Sterling OMS ignores the standard inventory reservation check at the new node(Store B) and automatically proceeds with the modification. The reservation at the original node (Store A) is removed, and the demand is redirected to the new node (Store B).

Example: Customer places an order for 5 Quantity. Inventory availability is 5 qty at node “MITDigitalDC01. “Reservation is mandatory for the complete quantity of an order line” option is enabled in the Reservation Fulfillment Rule. Observe how the reservation process occurs when the order is created. 

Step1: Use the reserveAvailableInventory API to reserve available inventory for an order.

<Promise AllocationRuleID=”MaeghamSch” EnterpriseCode=”MaeghamDigital” OrganizationCode=”MaeghamDigital”>    <ReservationParameters AllowMultipleReservations=”” AllowPartialReservation=”” ExpirationDate=”2025-10-23T12:30:00″ ReservationID=”res100″/>    <PromiseLines>        <PromiseLine DeliveryMethod=”SHP” LineId=”1″ FulfillmentType=”HomeDelivery” ItemID=”HPKeyboard” RequiredQty=”5″ UnitOfMeasure=”EACH” ProductClass=”GOOD”>            <ReservationParameters ExpirationDate=”2025-10-23T12:30:00″ ReservationID=”res100″/>        </PromiseLine>    </PromiseLines></Promise>

Once the inventory is reserved, an entry is created in the YFS_INVENTORY_RESERVATION table.

Step2: Create an order using the “createOrder” API with a specified Reservation ID.

<Order AllocationRuleID=”MaeghamSch” BuyerOrganizationCode=”MaeghamDigital” DocumentType=”0001″ EnterpriseCode=”MaeghamDigital” SellerOrganizationCode=”MaeghamDigital”>    <OrderLines>        <OrderLine DeliveryMethod=”SHP” FulfillmentType=”HomeDelivery” ItemGroupCode=”PROD” OrderedQty=”5″ ShipNode=”MITDigitalDC01″ ReservationID=”res100″>            <Item ItemDesc=”HPKeyboard” ItemID=”HPKeyboard” ItemShortDesc=”HPKeyboard” ProductClass=”GOOD” UnitOfMeasure=”EACH”/>            <LinePriceInfo IsPriceLocked=”Y” UnitPrice=”1000″/>        </OrderLine>    </OrderLines>    <PaymentMethods>        <PaymentMethod CreditCardExpDate=”2027-11-11″ CreditCardName=”VISA Card” CreditCardNo=”10000456782342275″ CreditCardType=”VISA” FirstName=”Harini” LastName=”Ganesan” PaymentType=”CreditCard” MaxChargeLimit=”5000″ UnlimitedCharges=”N”>            <PaymentDetails AuthCode=”100″ AuthorizationExpirationDate=”2026-11-11T23:00:00″ AuthorizationID=”” ChargeType=”AUTHORIZATION” ProcessedAmount=”5000″ RequestAmount=”5000″/>        </PaymentMethod>    </PaymentMethods>    <PersonInfoShipTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/>    <PersonInfoBillTo AddressLine1=”” AddressLine2=”” AddressLine3=”” AddressLine4=”” AddressLine5=”” AddressLine6=”” City=”Theni” Company=”MaeghamInfoTech” Country=”IN” FirstName=”” JobTitle=”” LastName=”” MiddleName=”” MobilePhone=”” State=”TN” Title=”” ZipCode=”520001″/></Order>

Order is created with “Reserved” status.

An RSRV_ORDER record is created in the YFS_INVENTORY_DEMAND table to indicate that the inventory has been reserved for the order.

Step3: Change Fulfillment Location – An operational issue occurs at MITDigitalDC01 (e.g., store closure, power outage, or stock misplacement), and the retailer wants to fulfill the order from MITDigitalDC02.

Use the “changeOrder” API to change the fulfillment location from MITDigitalDC01 to MITDigitalDC02.

<Order Action=”MODIFY” DocumentType=”0001″ EnterpriseCode=”MaeghamDigital” OrderHeaderKey=”202510211831451304338″ OrderNo=”Y100006405″ Override=”Y”>    <OrderLines>        <OrderLine Action=”MODIFY” OrderLineKey=”202510211831451304339″ ShipNode=”MITDigitalDC02″/>    </OrderLines></Order>

The ship node is updated after invoking the “changeOrder” API. The fulfillment location is changed to MITDigitalDC02.

Since reservation validation is suppressed, the system does not verify inventory availability at the new node. The system directly moves the reservation from MITDigitalDC01 to MITDigitalDC02. The reservation at MITDigitalDC01 is removed, and the order is now assigned to MITDigitalDC02.

Conclusion:

Reservation Fulfillment Rules in Sterling OMS provide control over how inventory is reserved and allocated for orders. These rules allow the system to attempt to reserve the complete quantity of an order line, ensure mandatory reservations for full quantities, and utilize inventory reserved for the same or earlier ship dates. Additionally, by suppressing validation on order line modifications, Sterling OMS enables order changes without rechecking inventory at a new node, providing operational flexibility. Together, these settings optimize inventory usage, improve fulfillment accuracy, and support efficient order management.

 

Scroll to Top