The Routing Engine

Overview: Use Order Broker’s Routing Engine module to:

  • determine whether products are available across the enterprise

  • select the best location to source an order or line, either automatically based on criteria that you set for the enterprise, or by providing a list of possible locations

  • help the customer select a location where s/he can pick up an order

  • create orders across the enterprise

  • notify locations about assigned orders

  • track order or line status

In this topic:

Types of Orders

The types of orders that the Routing Engine supports are described briefly below.

  • Delivery Order

  • Pickup Order

  • Ship For Pickup Order

  • Summary of Order Types

    Important:

    When you create a new organization in Order Broker 20.0 or higher, ship for pickup orders are automatically enabled, and in this case retail pickup and ship-to-store orders are not supported. When you update to Order Broker 21.0 or higher, ship for pickup orders are automatically enabled in all existing orders, and in this case retail pickup and ship-to-store orders are converted to ship-for-pickup orders.

    For more information: See About Ship-for-Pickup Orders for background.

Delivery Order

The Routing Engine can select a location to ship an order to the customer, or staff can designate a location. You would typically use this option to ship an order even though the desired products are backordered in the originating location.

Example 1: The customer wants to buy a product from a retail location, but the product is out of stock. The location submits the order to the Routing Engine, specifying that the order be shipped directly to the customer from a nearby distribution center.


Illustrates the delivery order flow: a customer places the order; the item is backordered in the originating store location; the Routing Engine finds a location to fulfill the order if needed; the fulfilling location ships the order to the customer.

Example 2: The customer orders a product on the web storefront. Since the product is currently backordered in the warehouse, the order management system submits the order to Order Broker for fulfillment. The Routing Engine automatically selects a location to fulfill the order, and the selected location ships the product directly to the customer.

Illustrates another example of the delivery order flow: The customer places the order on the web storefront; the item is backordered in the warehouse; the Routing Engine finds a location to fulfill the order; the location ships the order to the customer.

Pickup Order

A location submits a pickup order to the Routing Engine when the customer has already selected a location where s/he would like to pick the order up and where the inventory is available. You would typically use this option to enable the customer to pick up the order at a nearby store that already has the inventory on-hand rather than wait for shipment.

Example: The customer contacts the call center to see if a product can ship from the warehouse. Since the product is currently backordered in the warehouse, the CSR helps the customer select a nearby store where the product is currently in stock, so the customer can pick it up there.


Illustrates the pickup order flow: The customer places the order; the originating location identifies where the customer wants to pick up the order; the Routing Engine facilitates communication on the order; the fulfilling location prepares the order for the customer; the customer picks up the order.

Ship For Pickup Order

A ship-for-pickup order is one that the customer picks up at a designated location, and that can have a separate placing, sourcing, and pickup location, although any two of these locations can be the same.

Example 1 (three different locations): The customer places an order on the web site (location A) and wants to pick the order up at location B. The Routing Engine “shops” the order and selects location C as the sourcing location. Location C ships the inventory to location B, where the customer can pick it up.


Illustrates the order flow: Customer places the order; the placed location identifies where the customer wants to pick up the order; the Routing Engine assigns a sourcing location, and the sourcing location ships the order to the pickup location; the pickup location receives the merchandise and prepares the order; the customer picks up the order.

Example 2 (placed location and pickup location are the same): The customer places an order at location A and also wants to pick the order up at location A. The Routing Engine “shops” the order and selects location B as the sourcing location. Location B ships the inventory to location A, where the customer can pick it up.


Illustrates the order flow: The customer places the order; the Routing Engine finds a location to source the order; the sourcing location transfers the inventory to the placing location; the placing location receives the inventory and prepares the order for pickup; the customer picks up the order.

Example 3 (sourced location and pickup location are the same): The customer places an order by phone (location A) and wants to pick the order up at location B. When the order is submitted to the Routing Engine, the requested item is available at location B, so it is selected as the sourcing location. Once the order is ready at location B, the customer picks it up.

This order flow resembles the pickup order.


Illustrates the order flow: the customer places the order; the originating location identifies the location where the customer wants to pick up the order; the Routing Engine facilitates communication; the pickup location sources the order for the customer; the customer picks up the order.

Example 4 (placed location and sourced location are the same): The customer places an order by phone (location A) and wants to pick the order up at location B. The distribution center has the inventory available, and ships it to location B. Once the order is ready at location B, the customer picks it up.


Illustrates the order flow: The customer places the order online; the originating location is where the customer wants to pick up the order; the Routing Engine facilitates communication; the pickup location sources the order; the customer picks up the order.

The pickup location for a ship-for-pickup order must be specified in advance, and cannot be changed. The sourcing location can also be specified in advance, or the Routing Engine can select the sourcing location. If the selected sourcing location cannot source the order, then the order can be “reshopped” so that another sourcing location is assigned.

Summary of Order Types

The different types of orders are summarized below.

Important:

When you create a new organization in Order Broker 20.0 or higher, ship for pickup orders are automatically enabled, and in this case retail pickup and ship-to-store orders are not supported. When you update to Order Broker 21.0 or higher, ship for pickup orders are automatically enabled in all existing orders, and in this case retail pickup and ship-to-store orders are converted to ship-for-pickup orders.

For more information: See About Ship-for-Pickup Orders for background.

  Delivery Pickup Ship for Pickup

used to:

ship an order to the customer when the inventory is backordered in the originating location

enable the customer to pick up the order at a nearby store that already has the inventory on-hand rather than wait for shipment

enable the customer to pick up the order at a nearby store, and source the inventory from the placing location, the pickup location, or a different location

originating location is where the order is:

placed

placed

placed, and possibly where it’s sourced or picked up

fulfilling location is where the order is:

shipped from

picked up

N/A; sourcing location and pickup location can be different

fulfilling location selected how?

Routing Engine, or designated by the originating location; can be restricted through zone fulfillment

customer

sourced: Routing Engine, or designated by placing location

pickup: designated by the customer

order shipped to:

customer

N/A

pickup location, if different from sourcing location

Selecting the Location for a Pickup Order (LocateItems)

Purpose: The submit order message for a pickup order needs to specify the fulfilling location and system. You can use the locate items message to request a listing of locations that should be able to fulfill an order for one or more products in a specified area.

Which locations have a product available for pickup? A pickup order means that the customer will pick up the product(s) in a location where the inventory is available, and it does not need to be transferred from a different location. If the request message indicates that the fulfillment type is a pickup:

  • The response message lists each location where the product is stocked, is flagged as Pickup Available, and has a quantity available that meets or exceeds the quantity specified in the request message; also, the response provides information such as the available quantity and the date and quantity of the next expected purchase order. If the customer requests more than one item, the response message lists locations where all requested items are available for pickup.

  • Once the customer specifies the location where s/he would like to pick up the product(s), you can then send the SubmitOrder request message, providing the customer information, requested products, and selected location.

    Note:

    Optionally, the request message can specify a requested location if the customer has a preferred store and wants to check on availability in that store only.

    For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Example:

A customer wants to pick up an item at a nearby store. The LocateItems request indicates:

  • the item (AB100 in a quantity of 5)

  • the postal code where the customer is located (01581)

  • the distance (in miles or kilometers) that the customer is willing to travel (15 miles)

The LocateItems response lists:

  • store location 23: 10.72 miles from the customer

  • store location 57: 13.51 miles from the customer

The response also includes the available quantity in each location, information on any open purchase orders, and the store’s address.


Illustrates how product locations are evaluated for a pickup fulfillment type, including whether the location is flagged as pickup available, it is within the proximity radius (if proximity rules apply), it has the available quantity, and is not excluded based on gift wrap support or probability rules. The response includes any qualifying locations, not to exceed the maximum quantity of locations to return. Otherwise, the response indicates that the product(s) is/are not available.

Cannot split: Pickup orders cannot be split across multiple fulfilling locations. To split a pickup order, the originating system needs to submit the request for each location as a separate order.

Exclude Locations with Zero Available? If the Exclude Locations with Zero Availability setting at the Preferences screen is selected, any possible product locations whose current available to promise quantities are 0 or less are excluded from consideration before the application of any potential probability rules.

Gift wrap? If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible for the pickup order.

Locate Items Sort Order, Pickup Request

If Use Weighted Brokering Rules is selected at the Preferences screen, the locations are listed in proximity sequence.

If Use Weighted Brokering Rules is not selected (Standard Brokering), the locations returned in the response are sorted based on the same Order Broker criteria that apply to delivery orders unless you use the Order Broker Preference Overrides screens to set up preference overrides. Otherwise, the organization-level settings apply to all systems and order types, and the number of eligible locations exceeds the Maximum No. Responses, it is possible that the store location closest to the customer might not be included in the search results, even if it has the requested item(s) available.

Example: On Hand Count is the first criterion under the Order Broker Settings at the Preferences screen, and the Maximum No. Responses is set to 5.

The available quantity of the requested item in each eligible location is:

  1. 100 in location A, 20 miles away

  2. 90 in location B, 25 miles away

  3. 80 in location C, 19 miles away

  4. 70 in location D, 15 miles away

  5. 60 in location E, 10 miles away

  6. 50 in location F, 5 miles away

Because location F is the sixth location, it is not included in the search results, even though it is the closest to the customer’s address.

However, if you use the Order Broker Preference Overrides screen to set up an override for the system to sort first on proximity when the order type is Pickup, then location F is returned first in the search results.

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Selecting a Location for a Delivery Order

Overview: You can have the Routing Engine select the fulfilling location for a delivery order.

Splitting orders or lines? The Allow Split Order preference controls whether it is possible to split a delivery order across multiple fulfilling locations, If this preference is selected, the Routing Engine splits orders if needed to fulfill the order, and the submit order message can specify multiple fulfilling locations for an order. If the Allow Split Line preference is also selected, the Routing Engine splits the quantity of a single order line across multiple fulfilling locations if necessary.

Weighted or standard brokering? The Use Weighted Brokering Rules setting at the Preferences screen controls how the Routing Engine “shops” for fulfilling locations:

  • Standard brokering: If Use Weighted Brokering Rules is not selected, the Routing Engine selects fulfilling locations based on the Standard Brokering criteria, including proximity, on-hand count, location priority, last order assigned, and sales velocity rank.

  • Weighted brokering: If Use Weighted Brokering Rules is selected, the Routing Engine filters the list of eligible fulfilling locations for an order and submits the list, along with information on the order line(s) and configuration data, such as weighted brokering settings, to the Science Engine module for brokering. The Science Engine evaluates the data and either assigns the fulfilling location(s) or returns a reason code indicating why the order or line(s) could not be fulfilled.

  • Weighted brokering is used to select fulfilling locations for the Submit Order message, Product Availability message, and “reshopping” an order or line; however, it is not used for the Locate Items message. Locations in the Locate Items response are listed in order of proximity, and do not reflect any Science Engine calculations.

    You can use weighted brokering to select fulfilling locations that are more profitable. For example, you can give preference to locations that have a lower labor cost or to product locations where the in-store margin (selling price - cost) is lower than the margin for an online sale.

The use of each method to select fulfilling locations is described below.

Locate Items Request for Delivery Order

Note:

Selecting a sourcing location for a ship-for-pickup order is very similar. See About Ship-for-Pickup Orders for key differences.

Which locations have the product(s) available for shipment or transfer? A delivery order means that the product(s) should be shipped to the customer’s home.

Note:

The locations where a product is available for pickup might differ from the locations where a product is available for shipment, based on the settings of the Pickup Available, and Delivery Available flags. For example, you might flag your retail store locations as Pickup Available and your warehouse as Delivery Available.

Grouping shipments? The Group Shipment Locations setting at the Preferences screen controls how the LocateItems response works for delivery requests:

  • If the Group Shipment Locations preference unselected, the response message lists locations where the available quantity should be able to fulfill the order. The logic is described below.

  • If the Group Shipment Locations preference is selected, the Routing Engine uses the same logic described below for when the preference is unselected; however, the response does not include details on each location that can fulfill the order. Instead, the response just includes the virtual (non-existent) location, indicating that the order can be fulfilled through the Routing Engine.

    The chart below illustrates the logic used to select locations to include in the response message if the Group Shipment Locations preference is unselected, the Allow Split Order preference is selected, the request message does not specify a requested location, and splitting is not prohibited based on carrier. If the request is subject to zone fulfillment, then the eligible locations considered are restricted to the primary or alternate locations specified for the zone.

Note:

The response includes the virtual location even when the only locations that meet the criteria are backordered, if they are flagged as Backorder Available.

Basic evaluation: To be included in the LocateItems response message without splitting a potential order or line, a location must:

  • have a quantity available that is not less than the requested quantity after applying any active probability rules, or be flagged as Backorder Available. If the request specifies more than one product the response message includes locations only if they stock both (or all) products in the request message.

  • be flagged as Delivery Available

  • be within the proximity specified in the LocateItems request message based on the postal code indicated (Note: The SubmitOrder message does not specify a proximity radius)

  • Not be excluded:

    • because it is within the same system as the requesting location, if the Disallow shopping within same system flag is selected at the System screen.

    • based on the Maximum No. Responses specified for the organization.

    • because the total number of delivery or ship-for-pickup orders assigned for fulfillment or sourcing for the current date meets or exceeds the Maximum Daily Orders limit specified at the Preferences screen. This evaluation takes place only if the Use Maximum Order Limits preference is selected; see Using Maximum Daily Order Assignment for more information.

    • based on any probability rules for which the location(s) or items are eligible. These rules apply before determining which locations to include in the response, and the availability information (available quantity, next purchase order date, and next purchase order quantity) to provide. For example, if a probability rule for a location indicates to reduce the available quantity by 10, Order Broker subtracts 10 from the availability quantity that is indicated in the response message.

Exclude Locations with Zero Available? If the Exclude Locations with Zero Availability setting at the Preferences screen is selected, any possible product locations whose current available to promise quantities are 0 or less are excluded from consideration before the application of any potential probability rules.

Gift wrap? If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible.

Zone fulfillment? If you use zones for fulfillment and the shipping address is within a zone, only locations specified for the zone are eligible for selection through the Routing Engine. See Using Zones for Fulfillment for more information.

Specific location requested? If the request message specifies a requested location such as the customer’s favorite store, then the response message includes only the requested location in the response, regardless of the Order Broker rules set up at the Preferences screen or whether the location is otherwise eligible (for example, through zone fulfillment, or whether it is within the same system if the Disallow shopping within same system flag is selected for the system). See the requested location for more information.

Do Not Split Order For Carrier?If the specified ship via matches the Do Not Split Order For Carrier specified at the Preferences screen and the fulfillment type is delivery, then the Routing Engine does not consider whether the request could be fulfilled by splitting the order across multiple locations.

If weighted brokering is enabled: Because weighted brokering is not evaluated when processing the Locate Items message, the Locate Items response simply lists eligible locations in order of proximity, and does not reflect any Science Engine calculations.

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.


Describes the logic for evaluating product locations for delivery. The location is eligible only if shipping or transfer is available, it is not excluded based on proximity or probable quantity, the available quantity is not less than the requested quantity or the location is flagged as backorder available, and the location has not exceeded the Maximum Order Limit for the day.

Location Selection

If Use Weighted Brokering Rules is selected at the Preferences screen, the locations are listed in proximity sequence. The Weighted Brokering rules do not apply to LocateItems request processing, and the Science Engine is not used for a Locate Items search.

If Use Weighted Brokering Rules is not selected at the Preferences screen (Standard Brokering). the Routing Engine uses the method described below to select locations for delivery orders.

Overrides: When selecting locations, the Routing Engine uses the Order Broker criteria in the order specified at the Preferences screen unless you have used the Edit Order Broker Preference Override screen to set an override sort preference for the system, order type, and Express carrier setting:

  • Proximity

  • Location Priority

  • On Hand Count

  • Last Order Assigned

  • Sales Velocity Rank

These criteria are ranked at the Preferences screen or the Edit Order Broker Preference Override screen to indicate which criterion to apply first. For example, if the Proximity criterion has a setting of 1, the closest locations are listed first, followed by locations that are farther from the requesting location. See Selecting a Location for a Delivery Order.

Note:

The Last Order Assigned and Sales Velocity Rank criteria are optional.

If zone fulfillment applies, then the criteria above apply to the primary or alternate locations specified for the zone. See Using Zones for Fulfillment for a discussion.

If the Disallow shopping within same system flag is selected at the System screen for the requesting location’s system, then the criteria above apply only to locations in other systems.

How many locations listed? If the Group Shipment Locations preference is unselected, the Routing Engine checks the Maximum No. Responses setting to determine how many possible locations to include in the LocateItems response. If not all eligible locations are included, the response eliminates locations based on the Order Broker selection criteria specified at the Preferences screen or the Edit Order Broker Preference Override screen. For example, if the first criterion is proximity, and the Maximum No. Responses is set to 5, the 5 closest qualifying locations are included.

If the request specifies a requested location, then only the requested location is included in the response, and it is included regardless of whether the location is within the related zone when zone fulfillment applies.

Splitting orders? When it receives a request, the Routing Engine always checks first to see if there is a location that could fulfill the entire order. Otherwise, if there is not a single location that can fulfill the order and the Allow Split Order preference is:

  • selected, the Routing Engine next checks whether assigning a single line to multiple locations can make it possible to fulfill the order. In this case, the response lists the locations that have the item available.

  • unselected, the Routing Engine does not attempt to split any order lines.

Splitting lines? If the Allow Split Order preference is selected, but assigning the individual lines to different locations does not make it possible to fulfill the order completely, the Routing Engine next checks the Allow Split Line setting at the Preferences screen to determine whether it can attempt to fulfill the order by splitting the quantity for a single item across multiple locations. If the Allow Split Line preference is:

  • selected, the Routing Engine next checks whether the order can be fulfilled by assigning the individual lines to different locations. If the order would be split, the Routing Engine evaluates each order line individually based on your Preferences settings. In this case, the sequence in which the locations are listed in the response indicates their eligibility based on your preferences.

  • unselected and the order could not be fulfilled without splitting, the Routing Engine indicates that the order cannot be fulfilled.

Splitting lines with backorder available? The LocateItems response message lists locations that could partially fulfill an order line regardless of whether any of these locations are flagged as Backorder Available. However, when you send the SubmitOrder message, the Routing Engine splits the line across locations using your specified criteria until it comes to the location flagged as Backorder Available; when it comes to this location, the Routing Engine assigns the remaining quantity of the item. See LocateItems Sequence and Splitting Examples (Standard Brokering) for an example.

Partially fulfill? If splitting the order or the lines does not make it possible to completely fulfill the order, the LocateItems response indicates the locations that could fulfill individual lines on the order. Lines that could not be completely fulfilled, even after splitting the line across locations, are indicated in the response with the message Product not available within search criteria.

Do Not Split Order For Carrier?If the specified ship via matches the Do Not Split Order For Carrier specified at the Preferences screen and the fulfillment type is delivery, then the Routing Engine does not consider whether the request could be fulfilled by splitting the order across multiple locations.

Note:

When determining whether a location can fulfill an order, the Routing Engine first checks for locations that have the required quantity on-hand; however, if there are no locations with the quantity on-hand, the Routing Engine considers locations flagged as Backorder Available.

Illustrates the splitting order logic as described above.

LocateItems Sequence and Splitting Examples (Standard Brokering)

Note:

Selecting sourcing locations for a ship-for-pickup order is very similar. See About Ship-for-Pickup Orders for key differences.

Location sequence in response: When the Routing Engine receives a request message for a delivery order and you are not using the Group Shipment Locations option, the sequence of the locations listed in the response message indicates the order in which the Routing Engine would select a location for fulfillment of the order.

Example: If your preferences indicate to select a location first based on proximity, the first location listed in the response is the location closest to the customer’s address based on postal code. If two or more locations are the exact same distance from the customer’s address, the Routing Engine checks the next criterion, such as available quantity.

Zone fulfillment? If you use zones for fulfillment and the shipping address is within a zone, only locations specified for the zone are eligible to be included in the response when the fulfillment type is DELIVERY. See Using Zones for Fulfillment for more information.

Specific location requested? If the request message specifies a requested location such as the customer’s favorite store, then the response message includes only the requested location in the response, regardless of the Order Broker rules set up at the Preferences screen or whether the location is otherwise eligible through zone fulfillment or if the location has exceeded the maximum number of orders and you are Using Maximum Daily Order Assignment. See the requested location for more information.

Maximum order limits? When the Use Maximum Order Limits preference is selected for the organization, the LocateItems response message for a delivery request excludes locations if the number of orders assigned for the current date meets or exceeds the Maximum Daily Orders limit specified at the Preferences screen. See Using Maximum Daily Order Assignment for more information.

Gift wrap? If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible.

Criteria based on location: The Order Broker search criteria of proximity, last order assignment, or priority number are based on the location itself, so the sequence of locations in the response message is not affected by the products requested.

Highest priority Order Broker setting is Proximity (set at either the Preferences screen or through the Order Broker Preference Overrides screen)

Example:

Product AB100 and product BC200 available in:

  • location 10: 10.21 miles from the customer’s location based on postal code

  • location 20: 7.88 miles from the customer’s location based on postal code

Result: The response lists location 20 before location 10.

Note:

If a product is available in a location that has the Use Proximity Locator preference unselected, then the distance calculated from the customer’s location is always 0. If you use the Proximity Order Broker criterion, you might apply this preference to your distribution center in order to have it always be the “preferred” location for delivery requests.

Location sequence based on available quantity if multiple products requested: If your Order Broker search criteria at the Preferences screen or the Edit Order Broker Preference Override screen are based primarily on on-hand count, this location sort logic is based on the combined available quantity for all requested products in each location where the products are available.

Highest priority Order Broker setting is On Hand Count (set at either the Preferences screen or through the Order Broker Preference Overrides screen)

Example:

  • Product CD100:

    • 400 available in location 11

    • 50 available in location 22

  • Product DE200:

    • 10 available in location 11

    • 75 available in location 22

Result: If the message requests:

  • just CD100: location 11 is listed first (available quantity of 400 is greater than 50)

  • just DE200: location 22 is listed first (available quantity of 75 is greater than 10)

  • both CD100 and DE200: location 11 is listed first (combined available quantity of 410 (400 + 10) greater than combined available quantity of 125 (50 + 75))

Note:

If your response includes locations with a negative quantity (included because the Backorder Available flag is selected), then it is possible that the first location listed might not have all requested products in stock, even when you are searching based on on-hand count. For example, location 33 has an average available quantity of 25 (20 of product EF300 and -5 of product FG400), while location 44 has an average available quantity of 6 (7 of EF300 and 5 of FG400). In this situation, location 33 is listed first in the response message.

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Location sequence based on sales velocity rank if multiple products requested: If your Order Broker search criteria at the Preferences screen or the Edit Order Broker Preference Override screen are based primarily on sales velocity rank, this location sort logic is based on the combined sales velocity for all requested products in each location where the products are available.

Highest priority Order Broker setting is sales velocity rank (low to high, set at either the Preferences screen or through the Order Broker Preference Overrides screen)

Example:

  • Product CD100:

    • sales velocity is 40 in location 11

    • sales velocity is 5 in location 22

  • Product DE200:

    • sales velocity is 10 in location 11

    • sales velocity is 30 in location 22

Result: If the message requests:

  • just CD100: location 11 is listed first (sales velocity of 40 is greater than 5)

  • just DE200: location 22 is listed first (sales velocity of 30 is greater than 10)

  • both CD100 and DE200: location 11 is listed first (combined sales velocity of 45 (40 + 5) greater than combined sales velocity of 40 (10 + 30))

Note:

If a product location has a sales velocity setting of 0 (for example, because the system has not yet reported a sales velocity), this setting counts as the lowest possible sales velocity.

Sequence if splitting: If the Allow Split Order preference is selected and the Routing Engine would not be able to fulfill an order for all requested items without splitting it across multiple locations, the response lists the possible locations in a different sequence for each requested item.

Highest priority Order Broker setting is On Hand Count (set at either the Preferences screen or through the Order Broker Preference Overrides screen), splitting order

Example:

  • Product GH100

    • 10 available in location 55

    • 20 available in location 66

  • Product HI200

    • 15 available in location 66

    • 43 available in location 77

  • Product IJ300:

    • 17 available in location 88

    • 23 available in location 99

Result: If the message requests all 3 items, the response lists the locations for each based on the available quantity of each item in each eligible location:

  • GH100: location 66 (20 available) before location 55 (10 available)

  • HI200: location 77 (43 available) before location 66 (15 available)

  • IJ300: location 99 (23 available) before location 88 (17 available)

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Splitting order if not all items available: If the Allow Split Order preference is selected, then the response indicates which items could be fulfilled, and which items are not available in the quantity requested.

Splitting order, not all items available in requested quantities

Example:

  • Product KL100, requested quantity 1:

    • 10 available in location 12

    • 20 available in location 23

  • Product MN200, requested quantity 5:

    • 15 available in location 34

    • 4 available in location 45

  • Product OP300, requested quantity 7: 2 available in location 56

Result: If the message requests all 3 items, the response indicates:

  • KL100: lists location 12 and location 23

  • MN200: lists location 34; location 45 not listed since available quantity of 4 is less than requested quantity of 5

  • OP300: indicates Product not available within search criteria

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Maximum number of responses: The response does not include more locations than the Maximum No. Responses specified at the Preferences screen, even if the Allow Split Line preference is selected and the order line would need to be split over more locations than permitted under the Maximum No. Responses.

Splitting items, locations required to fulfill requested quantity exceeds Maximum No. Responses

Example:

  • Product QR100, requested quantity 10:

    • 2 available in location 67

    • 2 available in location 78

    • 2 available in location 89

    • 3 available in location 90

    • 3 available in location 91

  • Maximum No. Responses = 3

Result: The response lists location 90 (3 available), location 91 (3 available), and location 67 (2 available). Although the response lists a total quantity available of 8, the additional locations not listed in the response have sufficient inventory to fulfill the entire quantity if the order line is split.

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Grouping shipments and splitting orders: If the Group Shipment Locations and Allow Split Order preferences are selected, the response indicates which of the requested items are available in the quantities indicated; however, if the Allow Split Order preference is unselected, then if any requested item is not available in the requested quantity, then the entire order is considered to be not available.

Grouping shipments, one requested item not available

Example:

  • Product KL100, requested quantity 1:

    • 10 available in location 12

    • 20 available in location 23

  • Product MN200, requested quantity 5:

    • 15 available in location 34

    • 4 available in location 45

  • Product OP300, requested quantity 7: 2 available in location 56

Result:

If the message requests all 3 items and Allow Split Order is selected, the response indicates:

  • KL100 and MN200: indicates available in the virtual location

  • OP300: indicates Product not available within search criteria

If the message requests all 3 items and Allow Split Order is unselected, the response indicates Product not available within search criteria for all 3 items

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Splitting an order line if a location is flagged as Backorder available: If the Allow Split Order and Allow Split Line preferences are both selected, then the Routing Engine splits a single line across multiple locations. However, if one of the locations it would select is flagged as Backorder Available, then that location serves as a catch-all to fulfill the remaining quantity of the order line.

Splitting an order line across multiple locations with one location flagged as Backorder available

Example:

  • Product KL100, requested quantity 15:

    • 3 available in location 12

      7 available in location 23

      2 available in location 37

      1 available in location 49

      2 available in location 82

Result:

  • If the Maximum No. Responses is not set less than 5 and the first Order Broker criterion is On Hand Count, the response lists the locations in the following order:

    • 7 available in location 23

    • 3 available in location 12

    • 2 available in location 37

    • 2 available in location 82

    • 1 available in location 49

  • However, if location 37 were flagged as Backorder Available, when you submitted an order line for a quantity of 15, the Routing Engine splits the line across locations as follows:

    • 7 assigned to location 23

    • 3 assigned to location 12

    • 5 assigned to location 37

Submit Order Request for Delivery Order (Standard Brokering)

The following process applies when Use Weighted Brokering Rules is not selected.

Note:

The process for selecting a sourcing location for a ship-for-pickup order is very similar. See Enable Ship-For-Pickup? for key differences.

Location designated? The originating location can specify the location(s) to fulfill a delivery order and indicate the selected location(s) in the submit order message. For example, you might use the locate items request and response to initially generate a list of possible locations, and then select a location from this list to designate in the submit order request. When the fulfilling location is designated in the submit order request, the Routing Engine confirms that each location is eligible to fulfill the order, based on:

  • Location eligible? The Delivery Available flag at the Preferences screen must be selected.

  • Backorder eligible? If the location does not have the requested quantity of each item on the order available after checking on inventory if it’s in an online system, and applying any probability rules (less any reserved quantity or fulfilled quantity; see Calculating the Available to Promise Quantity), the Backorder Available flag at the Preferences screen must be selected.

If a designated location is not eligible based on the above criteria, the Routing Engine returns an error to the submit order request message. However, if the location is otherwise eligible, the Routing Engine assigns the order to the specified location even if the location is:

  • not within the related zone when you use zone fulfillment, or

  • excluded based on probability rules, or

  • within the same system as the requesting system, even if the Disallow shopping within same system flag is selected for the system.

Gift wrap? If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible.

Note:

Regardless of the setting of the Allow Split Order and Allow Split Line preferences, the Routing Engine does not split an order or line when the fulfilling location is specified in the request message.

If location not designated: The Routing Engine uses the same logic to select a fulfilling location for a delivery order when it receives a locate items request as when it receives a submit order request without a fulfilling location specified. The Routing Engine checks each location stocking the requested item(s):

  • Excludes the location that generated the order.

  • If the shipping address falls within a fulfillment zone, restricts the results to the primary locations specified for the zone. See Using Zones for Fulfillment for a discussion.

  • If the Disallow shopping within same system flag is selected for the system of the requesting location, excludes all other locations for that system.

  • Applies any proximity rules to determine whether a location is an acceptable distance from the customer’s shipping address.

  • If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible.

  • Considers locations only if the Delivery Available flag at the Preferences screen is selected.

  • Excludes a location if the total number of delivery orders assigned for the current date meets or exceeds the Maximum Daily Orders limit specified at the Preferences screen. This evaluation takes place only if the Use Maximum Order Limits preference is selected; see Using Maximum Daily Order Assignment for more information.

  • Determines the Available to Promise quantity: see Calculating the Available to Promise Quantity.

  • Applies any probability rules to determine whether to include the location and to calculate the available quantity to use for evaluation purposes. For example, you might have a probability rule to exclude a location if the available quantity is less than 2, or a rule to include the quantity expected to be received on an upcoming purchase order in the available quantity.

    Note:

    If the Exclude Locations with Zero Availability setting at the Preferences screen is selected, any possible product locations whose current available to promise quantities are 0 or less are excluded from consideration before the application of any potential probability rules.
  • After performing the above calculations, considers each location as eligible only if it has at least the requested quantity available for each requested item (less any reserved quantity and fulfilled quantity; see Calculating the Available to Promise Quantity), or if it is flagged as Backorder Available.

  • If there is more than one eligible location at this point, applies the Order Broker selection criteria specified at the Preferences screen or the Edit Order Broker Preference Override screen to select the locations eligible to fulfill the order. You assign each of the five criteria with a rank to indicate which criterion to use first. The selection criteria are:

    • Proximity: Set this criterion to Closest to select the eligible location closest to the customer’s address. You might choose this setting to save on shipping costs.

    • Location Priority: Set this criterion to Low to High to select the eligible location whose location priority is the lowest number. The location priority is a number you assign to a location, location type, or organization to control the Routing Engine search logic.

    • On-hand count: Set this criterion to High to Low to select the eligible location where the Available to Promise quantity of the product is highest. You might use this setting to avoid depleting the inventory in any one location.

    • Last order assigned: Set this criterion to Variable to select the eligible location whose last order assignment date and time was the earliest. You might choose this setting to create an even distribution of orders among eligible locations. This criterion is optional.

    • Sales velocity rank: Set this criterion to Low to High to select the eligible location where the product’s Sales Velocity is lowest. This criterion is optional.

    • Criterion ranking: The Routing Engine uses the criterion with the highest rank to select the fulfilling location. If there is a “tie” (for example, if two locations have the same Available to Promise quantity or the same location priority), the Routing Engine uses the next criterion based on assigned rank.

Example: The On-hand Count preference is ranked at 1 with an Order of Descending (highest to lowest), so the Routing Engine selects the location with the highest Available to Promise quantity. If there are two locations with the same available quantity, the Routing Engine checks the selection criterion ranked at 2: this is Location Priority, and it has an Order of Ascending (lowest to highest). As a result, the Routing Engine selects the location whose Location Priority is 1 over a location whose Location Priority is 5.

Using alternate locations for a fulfillment zone: If the shipping address falls within a fulfillment zone and the order cannot be assigned using the primary locations specified for the zone, the Routing Engine next uses the steps above to attempt to assign the order using the alternate locations for the zone. If the order can using the alternate locations for the zone and you split orders, the Routing Engine then uses the steps above to attempt to assign the order across both the primary and alternate locations for the zone. See Using Zones for Fulfillment for a discussion.

Acknowledge order before brokering? If the Acknowledge Order Before Brokering preference is selected, the Order Broker does not select a fulfilling location before sending the submit order response message; instead, it confirms that the order information, such as address, products, and originating location, is valid, assigns the order to a temporary IN PROCESS location, and then sends the response message as to an order acknowledgment. The Order Broker then proceeds with location selection. The originating system can send a status inquiry request afterward to determine the assigned location(s). See Acknowledge Order Before Brokering for a discussion.

Order rejected? When a location rejects an order or line, the Routing Engine goes through the same selection criteria again; however, it excludes any location that has already rejected the order or line. Also, when you split orders, if the entire order is rejected, the Routing Engine does not attempt to assign all lines to the same fulfilling location; instead, it searches for locations for each line individually.

Note:

Even if the original submit order request message specified a fulfilling location, the Routing Engine uses its standard selection logic when the assigned location rejects the order or line.

If the Routing Engine cannot find a location for fulfillment: If at any point the Routing Engine receives a submit order message and cannot find an eligible location to ship the order or line, or if an order or line is rejected by an assigned location and the number of Search Retries specified at the Preferences screen is exceeded, the Routing Engine assigns the order or line to the Default Unfulfillable Location specified at the Preferences screen. By assigning an order or line to the Default Unfulfillable Location, the Routing Engine is flagging the order or line as unfulfillable. When the requesting system receives a status inquiry response message indicating that an order or line is assigned to this location, this indicates to the system that it either needs to fulfill the order or line using its internal processes or cancel the order or line.

Splitting an order at initial submission with subsequent rejection

Example: When order is initially created:

  • Product KL100, requested quantity 2:

    • 1 available in location 12

    • 1 available in location 23

Result:

  • Order created, with 1 unit assigned to location 12 and 1 unit assigned to location 23.

    Note:

    If only 1 unit were available when the submit order message was received, the Routing Engine would have assigned the entire order to the default unfulfillable location.

    Example: When a split order line rejected:

Result:
  • The Routing Engine puts the second order line in unfulfillable status; however, the order is still open if location 12 can fulfill the first order line.

For more information: See Calculating the Available to Promise Quantity and Using Probability Rules for information on factors that affect the available quantity.

Submit Order Request for Delivery Order (Weighted Brokering)

The following process applies when Use Weighted Brokering Rules is selected.

Note:

Selecting a sourcing location for a ship-for-pickup order is very similar. See About Ship-for-Pickup Orders for key differences.

Location designated? The originating location can specify the location(s) to fulfill a delivery order and indicate the selected location(s) in the submit order message. For example, you might use the locate items request and response to initially generate a list of possible locations, and then select a location from this list to designate in the submit order request. When the fulfilling location is designated in the submit order request, the Routing Engine confirms that each location is eligible to fulfill the order, based on:

  • Location eligible?The Delivery Available flag at the Preferences screen must be selected.

  • Backorder eligible? If the location does not have the requested quantity of each item on the order available after checking on inventory if it’s in an online system, and applying any probability rules (less any reserved quantity; see Calculating the Available to Promise Quantity), the Backorder Available flag at the Preferences screen must be selected.

If a designated location is not eligible based on the above criteria, the Routing Engine returns an error to the submit order request message. However, if the location is otherwise eligible, the Routing Engine assigns the order to the specified location even if the location is:

  • not within the related zone when you use zone fulfillment, or

  • excluded based on probability rules, or

  • within the same system as the requesting system, even if the Disallow shopping within same system flag is selected for the system.

Gift wrap? If the gift_wrap tag in the request is set to Y and the Use Attribute Rules flag is selected at the Preferences screen, only locations that are flagged to support gift wrap are eligible.

Note:

Regardless of the setting of the Allow Split Order and Allow Split Line preferences, the Routing Engine does not split an order or line when the fulfilling location is specified in the request message.

If location not designated: When Use Weighted Brokering Rules is selected, the Routing Engine submits a listing of eligible locations to the Science Engine, along with additional data to enable the Science Engine to select the fulfilling location(s) for the order. However, before submitting the information to the Science Engine, the Routing Engine filters the list of eligible locations to those that stock the requested item(s), and:

  • Excludes the location that generated the order.

  • If the shipping address falls within a fulfillment zone, restrict the list to the primary locations and secondary locations specified for the zone. See Using Zones for Fulfillment for a discussion.

  • If the Disallow shopping within same system flag is selected for the system of the requesting location, excludes all other locations for that system.

  • Applies any proximity rules to determine whether a location is an acceptable distance from the customer’s shipping address.

  • Considers locations only if the Delivery Available flag at the Preferences screen is selected.

  • Excludes a location if the total number of delivery orders assigned for the current date meets or exceeds the Maximum Daily Orders limit specified at the Preferences screen. This evaluation takes place only if the Use Maximum Order Limits preference is selected; see Using Maximum Daily Order Assignment for more information.

  • Determines the Available to Promise quantity: see Calculating the Available to Promise Quantity.

  • Applies any probability rules to determine whether to include the location and to calculate the available quantity to use for evaluation purposes. For example, you might have a probability rule to exclude a location if the available quantity is less than 2, or a rule to subtract 10% from the reported available quantity for certain locations.

    Note:

    If the Exclude Locations with Zero Availability setting at the Preferences screen is selected, any possible product locations whose current available to promise quantities are 0 or less are excluded from consideration before the application of any potential probability rules.
  • After performing the above calculations, considers each location as eligible only if it has at least the requested quantity available for each requested item (less any reserved quantity; see Calculating the Available to Promise Quantity), if the order might be split across the eligible locations that collectively have the requested quantity, or if the location is flagged as Backorder Available.

Do Not Split Order For Carrier? If the specified ship via matches the Do Not Split Order For Carrier specified at the Preferences screen and the fulfillment type is delivery, then the Routing Engine does not consider whether the request could be fulfilled by splitting the order across multiple locations.

Submission to Science Engine: The Routing Engine then submits the list of eligible locations to the Science Engine. The information sent to the Science Engine includes:

  • Order line information: order type, request ID, line number, product code, selling price

  • Configuration information: Weighted Brokering criteria (the percentage weights assigned for Labor Cost, Gross Margin, Proximity, On Hand Quantity, and Sales Velocity, as well as the Priority for evaluating sales velocity), Allow Split Order setting, Allow Split Line setting, and Maximum Order Splits setting

  • Information on each eligible product location: Product code, System code, Location code, Available to Promise quantity after subtracting any reserved quantity and applying any probability rules, distance, zone group level (primary or secondary), Backorder Available setting, On Clearance setting, Selling Price, Cost, Sales Velocity, and the location’s Labor Cost

Criteria for fulfilling location assignment: The Science Engine uses similar criteria for fulfilling location assignment to standard brokering criteria, except in each of the following scenarios, if more than one location could fully or partially fulfill the order, select a location based on weighted brokering rules:

  1. Single location? If a single location could fulfill the entire order with its on-hand quantity, use that location, selecting a primary location if the order is subject to fulfillment zone processing; otherwise,
  2. Fulfill by splitting order? If Use Split Order is selected, and the entire order could be fulfilled across more than one location by splitting the order, but not the line quantities, with the locations’ on-hand quantities and without exceeding the Maximum Order Splits, use these locations. If the order is subject to fulfillment zone processing, split the order only across primary locations; otherwise,
  3. Fulfill by splitting order and lines? If Use Split Order and Use Split Line are selected, and the entire order could be fulfilled across more than one location by splitting the order and line quantities with the locations’ on-hand quantities and without exceeding the Maximum Order Splits, use these locations. If the order is subject to fulfillment zone processing, split the order and lines only across primary locations; otherwise,

  4. Fulfill by splitting order in primary or alternate locations in zone? If the order is subject to fulfillment zone processing, Use Split Order is selected, and the entire order could be fulfilled across more than one Primary or alternate location by splitting the order, but not the line quantities, with the locations’ on-hand quantities and without exceeding the Maximum Order Splits, use these locations; otherwise,

  5. Fulfill by alternate locations in zone? If the order is subject to fulfillment zone processing and could not be fulfilled by assignment to primary locations, but a single alternate location could fulfill the entire order with its on-hand quantity, use that location; otherwise,

  6. Fulfill by splitting order and lines in primary or alternate locations in zone? If the order is subject to fulfillment zone processing, Use Split Order and Use Split Line are selected, and the entire order could be fulfilled across more than one Primary or alternate location by splitting the order and line quantities with the locations’ on-hand quantities and without exceeding the Maximum Order Splits, use these locations; otherwise,

  7. Fulfill by assignment to backorder location(s)? If any eligible locations are flagged as Backorder Available, select one of these locations with the highest on-hand quantity. The order and lines can also be split as in the above scenarios, as long as the Maximum Order Splits is not exceeded.

See Science Engine Examples for information on how the Science Engine evaluates potential locations based on the weighted brokering criteria passed, and see Primary and Alternate Search Hierarchy: Weighted Brokering for details on fulfillment zone processing.

Response from Science Engine: The Science Engine returns one of the following responses:

  • Fulfillable: The complete quantity of the order is fulfillable, based on the available to promise quantity without relying on backorder fulfillment.

    The Science Engine returns the location(s) to the Routing Engine.

  • Fulfillable through backorder: The order line(s) are fulfillable only by assigning one or more units or lines to a backorder location because the full quantities are not available.

    The Science Engine returns the location(s) to the Routing Engine, but also provides a reason code identifying how it selected the location(s). The following reason codes are stored in the UNFULFILLABLE_REASON_CODE in the XOM_STATUS_HISTORY table; however, no Transaction Note is displayed at the Order screen:

    • 4000: An order or line had to be assigned to a backorder location that was currently without sufficient inventory, because the entire order could not be assigned to locations with sufficient inventory without exceeding the Maximum Order Splits. For example, an order includes a line for 1 unit of item A, and another line for 2 units of item B. Location 100 can fulfill the line for item A. Locations 200 and 300 each have 1 unit item B. The Maximum Order Splits is set to 2. If location 200 supports backorders, the line with 2 units of item B is assigned there.

    • 5000: An order or line had to be assigned to a backorder location that was currently without sufficient inventory, because there were no locations that had the inventory on-hand; however, this was not the result of the Maximum Order Splits setting being exceeded.

    • 8000: An order or line could have been assigned to locations with inventory if split order or line were allowed; but since the order or line could not be split, it was assigned to a backorder location that was currently without sufficient inventory.

  • Unfulfillable: The order line(s) are not fulfillable even by assigning one or more units or lines to a backorder location, either because backorder locations are not available or because of a limit to splitting the order or lines.

    The Science Engine returns a reason code identifying why the order could not be fulfilled. The following reason codes are stored in the UNFULFILLABLE_REASON_CODE in the XOM_STATUS_HISTORY table:

    • Exceed Maximum Number of Splits: The Science Engine returned a code indicating that the entire order could not be fulfilled without exceeding the Maximum Order Splits, so the entire order is unfulfillable. This response can occur for a single-line order that could have been fulfilled by splitting the line, but split line is not enabled. A reason code of 1000 is stored as the UNFULFILLABLE_REASON_CODE in the XOM_STATUS_HISTORY table.

    • Not Enough Inventory and No Backorder Location: The Science Engine returned a code indicating that the entire order, or a line on the order, could not be fulfilled because there was not sufficient inventory on-hand, and there was not an eligible location that supported backorders. A reason code of 2000 is stored as the UNFULFILLABLE_REASON_CODE in the XOM_STATUS_HISTORY table if the entire order was unfulfillable, and a reason code of 3000 is stored for an individual line that was unfulfillable while other line(s) could be fulfilled.

    • Not Fulfilled due to Split Not Allowed: The Science Engine returned a code indicating that the entire order could not be fulfilled without splitting one or more order lines, and Allow Split Line was not selected. The same message is displayed if the order could not be fulfilled without splitting the order, and Allow Split Order was not selected. A reason code of 7000 is stored as the UNFULFILLABLE_REASON_CODE in the XOM_STATUS_HISTORY table if the entire order was unfulfillable, and a reason code of 6000 is stored for an individual line that was unfulfillable while other line(s) could be fulfilled.

Acknowledge order before brokering? If the Acknowledge Order Before Brokering preference is selected, the Routing Engine confirms that the order information, such as address, products, and originating location, is valid, assigns the order to a temporary IN PROCESS location, and then sends the response message as an order acknowledgment regardless of whether it has already received the response from the Science Engine. The originating system can send a status inquiry request afterward to determine the assigned location(s). See Acknowledge Order Before Brokering for a discussion.

Order rejected? When a location rejects an order or line, the Routing Engine again submits the order or line to the Science Engine; however, it excludes any location that has already rejected the order or line from the list of eligible locations.

Note:

Even if the original submit order request message specified a fulfilling location, the Routing Engine uses its standard location eligibility logic for submission to the Science Engine when the assigned location rejects the order or line.

If the Science Engine cannot find a location for fulfillment: If at any point the Routing Engine receives a submit order message and Science Engine cannot find an eligible location to ship the order or line, or if an order or line is rejected by an assigned location and the number of Search Retries specified at the Preferences screen is exceeded, the Routing Engine assigns the order or line to the Default Unfulfillable Location specified at the Preferences screen. By assigning an order or line to the Default Unfulfillable Location, the Routing Engine is flagging the order or line as unfulfillable. When the requesting system receives a status inquiry response message indicating that an order or line is assigned to this location, this indicates to the system that it either needs to fulfill the order or line using its internal processes or cancel the order or line.

When the requesting system receives a status inquiry response message indicating that an order or line is assigned to this location, this indicates to the system that it either needs to fulfill the order or line using its internal processes or cancel the order or line.

Science Engine Examples

The Science Engine uses the information passed from the Routing Engine, including the weighted brokering criteria, to select locations if there is more than one eligible location or an order or line needs to be split for fulfillment.

Each of the weighted brokering criteria that have percentage weights greater than 0 are considered.

Example 1: Select by margin (select the location where the difference between the in-store Selling Price and the Cost is lowest, since it is more profitable to source the online order there)

In this example:

  • The Weighted Percentages include a Gross Margin setting of 100%. The remaining percentages are set to 0.

  • The unit price specified for the order line is 10.00 for a quantity of 1.

  • There are 2 eligible locations:

    • Location A has a Selling Price of 5.00 with a Cost of 2.00.

    • Location B has a Selling Price of 6.00 with a Cost of 2.00.

    The margin = the order line unit price - the product location Selling Price - the product location Cost.

    For location A, the calculation is: (10.00 - 5.00 - 2.00) * 1 = 3.00, where:

    • 10.00 = the order line unit price

    • 5.00 = the product location Selling Price

    • 2.00 = the product location Cost

    • 1 = the unit quantity

    • 3.00 = overall score

    The calculation includes multiplying by the unit quantity, but in this case the unit quantity is 1

    For location B, the calculation is: (10.00 - 6.00 - 2.00) * 1 = 2.00, where:

    • 10.00 = the order line unit price

    • 6.00 = the product location Selling Price

    • 2.00 = the product location Cost

    • 1 = the unit quantity

    • 2.00 = overall score

Result: The Science Engine selects location A, because it has the higher score. An in-store purchase in location A results in a lower margin than location B, so it is more profitable to assign the online order to location A.

The Margin displayed for the Product Location differs from the margin calculation performed by the Science Engine. The Science Engine’s calculation includes the order line unit price, while the Margin displayed for a Product Location is simply the in-store Selling Price minus the Cost.

Example 2: Select by net profit (select the location where the overall profit is lowest after factoring in the order unit price, in-store Selling Price, Cost, and Labor Cost)

In this example:

  • The Weighted Percentages include a Gross Margin setting of 60% and a Labor Cost setting of 40%. The remaining percentages are set to 0.

  • The unit price specified for the order line is 10.00 for a quantity of 1.

  • There are 2 eligible locations:

    • Location A has a Selling Price of 5.00 with a Cost of 2.00. As in Example 1, the result of the Gross Margin calculation is 3.00. The Labor Cost for Location A is 4.00.

    • Location B has a Selling Price of 6.00 with a Cost of 2.00. As in Example 1, the result of the Gross Margin calculation is 2.00. The Labor Cost for Location B is 2.00.

    For location A, the calculation is (60% * (10.00 - 5.00 - 2.00) * 1) - (40% * (4.00), or 1.8 - 1.6 = 0.2.

    • 60% = Gross Margin weight

    • 10.00 = the order line unit price

    • 5.00 = the product location Selling Price

    • 2.00 = the product location Cost

    • 1 = the unit quantity

    • 40% = Labor Cost weight

    • 4.00 = Labor Cost

    • 0.2 = overall score

    For location B, the calculation is (60% * (10.00 - 6.00 - 2.00) * 1) - (40% * (2.00), or 1.2 - 0.8 = 0.4, where:

    • 60% = Gross Margin weight

    • 10.00 = the order line unit price

    • 6.00 = the product location Selling Price

    • 2.00 = the product location Cost

    • 1 = the unit quantity

    • 40% = Labor Cost weight

    • 2.00 = Labor Cost

    • 0.4 = overall score

Result: The Science Engine selects location B. After factoring in the higher Labor Cost for location A and the lower Labor Cost for location B, the Science Engine determines that location B is more profitable.

Note:

When you set the Weighted Percentages to include both Gross Margin and Labor Cost by applying percentages greater than 0, the Science Engine uses Labor Cost only as part of the net profit calculation by subtracting it from the margin weight as described above. However, if the Weighted Percentages include just Labor Cost and have the Gross Margin percentage set to 0, then the Science Engine uses Labor Cost by itself, based on its percentage weight.

Example 3: Select the best location based on weighted percentages that include both profitability and other criteria. Unlike the other examples, this scenario includes criteria that are not the same units: in this case, currency (such as dollars) and quantity.

In this example:

  • The Weighted Percentages include a Labor Cost setting of 40% and an On Hand setting of 60%.

  • There are 2 eligible locations:

    • Location A has a Labor Cost of 12.25 and an Available to Promise quantity of 10.

    • Location B has a Labor Cost of 7.75 and an Available to Promise quantity of 7.

    Determining the base value: The Science Engine identifies that the more desirable Labor Cost is 7.75, for Location B, and the more desirable Available to Promise quantity is 10, for location A. The Science Engine uses the more desirable value for each of the criteria as the base for calculation. For each criterion, the Science Engine divides the location’s value by the base. If the location’s value is the same as the base, the result is 1.

    For Location A, the calculation is (-40% * (12.25 / 7.75)) + (60% * (10/10)), or -0.032, where:

    • -40% = Labor Cost weight

    • 12.25 = location’s Labor Cost

    • 7.75 = base Labor Cost

    • 60% = On Hand weight

    • 10 = location’s Available to Promise quantity, which is also the base Available to Promise quantity

    For Location B, the calculation is (-40% * (7.75 / 7.75)) + (60% * (7/10)), or 0.02, where:

    • -40% = Labor Cost weight

    • 7.75 = location’s Labor Cost, which is also the base Labor Cost

    • 60% = On Hand weight

    • 7 = location’s Available to Promise quantity,

    • 10 = base Available to Promise quantity

Result: The Science Engine selects location B. Its lower Labor Cost outweighs the higher Available to Promise quantity of location A.

Using Attribute Rules for Delivery Orders

You can set up custom attributes to filter the locations eligible to source orders, or where orders can be picked up.

Custom attributes are used only if Use Attribute Rules is selected at the Preferences screen.

These rules apply when filtering locations for LocateItems, ProductAvailability, and SubmitOrder requests. They also apply when “reshopping” orders as a result of a StatusUpdate request or when the order is rejected through the user interface. If there have been any changes to the attribute assignments to locations or the product since the order line was created, the current attribute assignments apply.

Note:

This setting also controls whether to filter locations when gift wrap is required.

Examples:

Attribute Usage How to Implement

Engraving required: Product A always requires engraving, so only locations that support engraving can fulfill orders for this product.

Setup:

  • Create a custom attribute:

    • Attribute Type: Product and Location

    • Data Type: Boolean

  • Assign the engraving attribute to product A

  • Assign the attribute to each location that supports engraving:

    • Location Use set to Sourcing for locations that can fulfill delivery orders.

    • Location Use set to Pickup for locations that can fulfill pickup orders.

Web service responses: The LocateItems response, ProductAvailability response, and SubmitOrder response automatically filter locations to those that support engraving based on the attribute assignment and the fulfillment type.

Engraving optional: Product B is eligible for engraving, but can also be ordered without it. The individual request for the product indicates whether engraving is required.

Setup:

  • Create a custom attribute:

    • Attribute Type: Product and Location

    • Data Type: Boolean

    • Do not assign the attribute to product B. Instead, specify the attribute in the LocateItems, ProductAvailability, or SubmitOrder request only when it is required.

  • Assign the attribute to each location that supports engraving:

    • that can fulfill delivery orders, if your business process includes applying engraving in the sourcing location

    • Location Use set to Pickup for locations that can fulfill pickup orders, if your business process includes applying engraving at the pickup location

Web service requests: The LocateItems request, ProductAvailability request, SubmitOrder request should include the custom attribute only when engraving is required.

Web service responses: The responses messages filter eligible locations based on whether they support engraving for the specified Location Use.

Supported brand: Your organization includes store locations associated with multiple brands, but only locations that are associated with Brand ABC can fulfill orders for the brand.

Location 100 is associated with brand ABC.

Setup:

  • Create a custom attribute:

    • Attribute Type: Location

    • Data Type: List

    • List Values: All possible brands for your organization

    • Allow Multiple: Selected

  • Assign the attribute value of each supported brand to each location that can originate or fulfill orders.

    • Location 100: Orders originating here are always associated with brand ABC. Assigned a Value of ABC with a Location Use of Originating.

    • Location 200: Supports sourcing and pickup of orders for brands ABC and DEF. Assigned Values of ABC and DEF, both with a Location Use of Pickup, and also assigned Values of ABC and DEF with a Location Use of Sourcing.

    • Location 300: Supports pickup of orders for brand ABC. Assigned a Value of ABC with a Location Use of Pickup.

    Web service responses: The LocateItems response, ProductAvailability response, SubmitOrder response filter eligible locations based on the assigned Value for the Originating location (ABC), and the fulfillment type of the order:

    • Delivery fulfillment type: Only Location 200 is eligible to fulfill the order, because it is the only location assigned a Value of ABC and a Location Use of Sourcing.

    • Pickup fulfillment type: Both Location 200 and Location 300 are eligible to fulfill the order, because they are both assigned a Value of ABC with a Location Use of Pickup.

    Note:

    The same results would occur if, instead of assigning the brand attribute with a Value of ABC and a Location Use of Originating to location 100, the brand attribute was passed in the request message with a value of ABC.

Attribute setup options: You can use the following options when setting up attribute definitions:

  • Attribute Type: Attributes can filter eligible locations based on:

    • Location and Product: The location must be consistent with an attribute defined for the product. The attribute might be a universal requirement, such as the engraving required example above, or specified on a case-by-case basis, such as the optional engraving example.

    • Location: The location must be consistent with an attribute defined for the originating location. The requirement might apply to the pickup location for a pickup order, or to the sourcing location for a delivery order.

  • Product Type: Although you can create attributes with an Attribute Type of Product, these attributes are informational only and not used to route orders.

  • Data Type: Possible attribute data types are:

    • Boolean: The attribute is used to route orders if the Boolean is assigned to the product or originating location, such as the engraving examples above. An assigned Boolean is interpreted as True. Negative Boolean attributes are not supported.

    • List: Defines a list of valid values, such as the brand example above. When the attribute is used to route orders, there must be a match with one of the list values.

    • Text: Similar to the List data type, except it is not validated against a defined list of values.

    • Number: Similar to the List data type, except it is not validated against a defined list of values, and must be numeric.

  • Allow Multiple:

    • Locations: Controls whether the attribute can be assigned more than once to a single location with different values and the same Location Use (Originating, Sourcing, or Pickup). For example, a location can support multiple brands. Even if the attribute is set to not allow multiples, a different attribute value can be assigned to the location for each different location use; for example, a location can support engraving when it is a sourcing location, but not when it is a pickup location. Regardless of the Allow Multiple setting, only a single value can be assigned to a location when the Location Use is Originating.

    • Products: Controls whether the attribute can be assigned more than once with different values to the same product.

      The Allow Multiple setting does not apply to Boolean attributes, and cannot be selected.

    Filter based on multiple attributes? It is possible for multiple location, or product and location attributes to filter eligible locations. For example, one attribute can filter locations that do not support engraving, while another attribute can filter locations based on brand. All attributes apply, regardless of whether:

    • They have been assigned to the product or any potential sourcing or pickup locations;

    • They are passed in the LocateItems, ProductAvailability, or SubmitOrder request message;

    • They were initially applied to the order line at the time that it was created, and it is now being “reshopped.”

    A location is excluded if it does not qualify based on all location or product and location attributes. For example, the Brand attribute is applied to location 1 with a Location Use of Originating and a value of ABC, and a LocateItems request from location 1 passes the Brand attribute with a value of brand DEF with a Pickup fulfillment type. Only locations that are assigned both ABC and DEF with a Location Use of Pickup can be eligible as pickup locations.

    Assigning attributes to locations or products: Use the New Location Attribute and New Product Attribute screens to assign attributes.

Turn-by-Turn Distance Calculation for Delivery Orders

Overview: If you use the Oracle Maps Cloud Service API for proximity location, you can use turn-by-turn distance calculation, rather than straight-line distance calculation, for delivery orders that use a specified carrier.

Useful when? You might use this option to choose fulfilling locations based on the actual driving distance from the fulfilling location to the customer’s address. This way, you can avoid routes with a longer driving distance if, for example, an additional few miles are required to cross a bridge to get from a store location to the customer’s address, even though the store location and the customer’s address are directly across a river from one another, or if a U-turn is required to drive to the customer’s address.

Process overview: Order Broker uses the integration with Oracle Maps Cloud Service to determine the turn-by-turn distance of potential fulfilling locations as follows:

  • Submits the customer location to Oracle Maps Cloud Service determine its longitude and latitude.

  • Pre-qualifies potential locations based on straight-line distance:

    • Calculates the straight-line distance from each potential fulfilling location, based on the latitude and longitude of each.

    • Eliminates any location whose straight-line distance exceeds the maximum distance, either defined in the web service request or from the Maximum Turn-by-Turn Distance defined at the Preferences screen, as described below, or that does not have a latitude and longitude defined.

  • Submits a turn-by-turn request to Oracle Maps Cloud Service, providing the latitude and longitude of the customer’s location as the starting location, and the latitude and longitude of each potential fulfilling location within the specified maximum distance from the customer’s location.

  • When Oracle Maps Cloud Service returns the actual turn-by-turn distances, Order Broker omits any locations whose turn-by-turn distance exceeds the defined maximum distance from consideration. For example, the maximum distance is defined as 15 miles. The distance for location A was 14.78 miles based on the initial pre-pass calculation, but is 15.5 miles based on the turn-by-turn calculation. As a result, location A is not included in the list of eligible locations.

When does turn-by-turn distance calculation take place? This calculation takes place when:

Troubleshooting:

  • As with straight-line distance calculation, the Shop Order When Proximity Unknown preference controls how to handle submit order requests when the proximity cannot be determined. See that preference for more information.

  • The Trace Shopping Log screen indicates when a location is eliminated from consideration based on distance, including turn-by-turn distance, with a Reason of Proximity Distance. The distance used as a criterion is indicated.

  • Turn-by-turn distance calculation is enabled for a maximum of 50 locations within the requested distance. If there are more than 50 locations, the search will fail.

Note:

  • When you configure Carrier for Turn-by-Turn Distance Evaluation at the Preferences screen, Order Broker does not confirm that the Turn-by-Turn Distance URL is configured at the Tenant-Admin screen.

  • Similarly, Order Broker does not check whether there are any organizations configured for turn-by-turn distance at the Preferences screen if you do not set the Turn-by-Turn Distance URL setting at the Tenant-Admin screen.

For more information: See Using the Oracle Maps Cloud Service API for background and additional setup information.