Skip to main content
Question

ManualReservationsForShipmentAndCustomerOrderLine Too Slow for Custom Solution?

  • January 15, 2026
  • 2 replies
  • 47 views

Forum|alt.badge.img

Hi, everyone! I’m working on a custom C# service allowing my company to use the “Manual Reservations for Customer Order Line” functionality with custom reservation location logic programmatically. Reason being our business analysts have determined the native “Reserve Customer Order Lines” IFS functionality doesn’t work for our business needs as we need to be able to choose the inventory location to reserve from. I’ve been told there are ways in native IFS functionality to somewhat determine how the reservation locations get chosen. But that option doesn’t work for us, either.

Currently, my process for reserving customer order lines looks like this:

  1. Grab reservation locations from custom PL/SQL logic. This is a sub second operation the majority of the time.
  2. Loop through all of the reservation locations, executing a reservation for each location using the following API endpoints:
    1. ManualReservationsForShipmentAndCustomerOrderLine.svc/ManualReservationsForShipmentAndCustomerOrderLineSet(SourceRef1='{SourceRef1}',SourceRef2Db='{SourceRef2Db}',SourceRef3Db='{SourceRef3Db}',SourceRef4Db='{SourceRef4Db}',SourceRefType=IfsApp.ManualReservationsForShipmentAndCustomerOrderLine.LogisticsSourceRefTypeShipment'{SourceRefType}',ShipmentId={ShipmentId},Contract='{Contract}')
    2. ManualReservationsForShipmentAndCustomerOrderLine.svc/ManualReservationsForShipmentAndCustomerOrderLineSet(SourceRef1='{SourceRef1}',SourceRef2Db='{SourceRef2Db}',SourceRef3Db='{SourceRef3Db}',SourceRef4Db='{SourceRef4Db}',SourceRefType=IfsApp.ManualReservationsForShipmentAndCustomerOrderLine.LogisticsSourceRefTypeShipment'{SourceRefType}',ShipmentId={ShipmentId},Contract='{Contract}')/InventoryPartInStockArray(Contract='{InventoryPartInStock_Contract}',PartNo='{InventoryPartInStock_PartNo}',ConfigurationId='{InventoryPartInStock_ConfigurationId}',LocationNo='{InventoryPartInStock_LocationNo}',LotBatchNo='{InventoryPartInStock_LotBatchNo}',SerialNo='{InventoryPartInStock_SerialNo}',EngChgLevel='{InventoryPartInStock_EngChgLevel}',WaivDevRejNo='{InventoryPartInStock_WaivDevRejNo}',ActivitySeq={InventoryPartInStock_ActivitySeq},HandlingUnitId={InventoryPartInStock_HandlingUnitId},SourceRef1='{InventoryPartInStock_SourceRef1}',SourceRef2Db='{InventoryPartInStock_SourceRef2Db}',SourceRef3Db='{InventoryPartInStock_SourceRef3Db}',SourceRef4Db='{InventoryPartInStock_SourceRef4Db}',SourceRefTypeDb='{InventoryPartInStock_SourceRefTypeDb}',ShipmentId={InventoryPartInStock_ShipmentId})
    3. ManualReservationsForShipmentAndCustomerOrderLine.svc/InventoryPartInStockSet(Contract='{Contract}',PartNo='{PartNo}',ConfigurationId='{ConfigurationId}',LocationNo='{LocationNo}',LotBatchNo='{LotBatchNo}',SerialNo='{SerialNo}',EngChgLevel='{EngChgLevel}',WaivDevRejNo='{WaivDevRejNo}',ActivitySeq={ActivitySeq},HandlingUnitId={HandlingUnitId},SourceRef1='{SourceRef1}',SourceRef2Db='{SourceRef2Db}',SourceRef3Db='{SourceRef3Db}',SourceRef4Db='{SourceRef4Db}',SourceRefTypeDb='{SourceRefTypeDb}',ShipmentId={ShipmentId})/IfsApp.ManualReservationsForShipmentAndCustomerOrderLine.InventoryPartInStock_ReserveManually

The main problem we’re having right now is speed with the API calls. Here are the main reasons why: IFS locks down the customer order record when reserving any of the customer order lines underneath it (“ORA-20113: CustomerOrder.FND_LOCKED: The update could not be performed since the Customer Order record is currently locked. Please retry the operation.”). This causes us to not be able to execute reservations for lines under an order until the current order line is finished. So, we cannot run the lines in parallel. IFS also locks down the customer order line record (understandable, here), so we cannot run each reservation location for an order line in parallel, either (although, I don’t think that would save much time per most lines anyhow).

And here is why the above speed issue is causing problems for us: the above process for one customer order line can take 6-7 seconds to execute some lines. And that number continues to grow the more reservation locations are needed for one customer order line. This becomes a problem because we can have orders with up to 500-700 lines on it.

I’m looking to see if:

  1. Is there a way to not get the customer order record to lock during reservations for customer order lines?
  2. Is there an API endpoint I’m missing that allows us to pass in a LIST of customer order lines and reservation locations to reserve those lines to? Versus the current option of doing each one at a time?

Thank you for any help/insight!

2 replies

Piyal Perera
Hero (Employee)
Forum|alt.badge.img+10
  • Hero (Employee)
  • January 15, 2026

Hi ​@jmoore,

   This is my first thought only. Since you are doing a customization, can’t we use storage zone functionality to guide a CO line to search specific set of location. 

 

regards,

Piyal


Forum|alt.badge.img
  • Author
  • Do Gooder (Customer)
  • January 15, 2026

Hi! That functionality is what our business analysts originally looked into using. However, it wasn’t flexible/dynamic enough for what they needed. And we do use it in other aspects of the business. We just can’t use it for reservations, unfortunately.

Which is why we went down the path of a custom PL/SQL procedure to grab the location(s) based on our business logic. Which is great for speed but doesn’t work well since IFS won’t allow us to reserve customer order lines under a custom order in parallel.