Overview

ROM provides inventory visibility at either the enterprise level or at the seller level, depending on your setup and current touchpoint. This drives product visibility on webstores and confirms inventory through the lifecycle of the shopping experience. This topic explains how the ROM inventory touchpoints and safety stock rules interact to provide this visibility.

Inventory Touchpoints

Inventory visibility is available via the touchpoints shown in the following table.

TouchpointPurposeSenderFrequencyLevel
ATP FeedUsed to "light up" products on a website (Category Listing, Search Results, and so on) when inventory is available to sell.ROM sends to client.Full daily extract, with delta updates every 30 minutes.

Seller level

 

Quantity Request API

Provides aggregated ATP inventory for a specific product within an Inventory Org or a Seller. Often requested when the shopper is viewing a Product Detail page and then adds the product to the cart.**

Webstore service call to ROMOn demand.Inventory Org level or Seller level.*
in-store Inventory Quantity APIChecks in-store inventory for an item in one or more stores. Often requested with In-Store Pickup fulfillment type orders.Webstore service call to ROMOn demand.Specific to a node specified by the webstore
Inventory Detail APIProvides validation of inventory and estimated delivery date per line item. Identifies the sourcing locations for each item, which is necessary for origin-based taxes. Generally done when a shipping method is added to an order.Webstore service call to ROMOn demand.Specific to a node specified by the webstore
Reservation API (Create Allocation API)Soft allocates inventory immediately after the order is submitted. It holds the inventory from the time the shopper begins the submit order process and the time the order is created. It prevents overselling by stopping another shopping session from reserving the inventory while the current submit order is processing.Webstore service call to ROMOn demand 

* The default is Inventory Org level. A separate configuration is required for ATP by Seller; for details, see Manage Node Groups. You should only use ATP by Seller if you sell in multiple countries, share the same product catalog across multiple countries, and have sourcing restrictions on where order lines can be sourced from based on the seller webstore that originated the order.

** When using the Quantity Request API:

  • By Seller: Assign all nodes that are enabled for availability to a Node Group with a Seller ID.
  • By Inventory Org: Leave the Seller ID field blank on all Node Groups.

ATP + Safety Stock

Safety stock acts as a buffer to ensure that not all inventory is promised online. This is a bigger challenge in an omnichannel environment than it is in a non-omnichannel environment. The ATP inventory calculation takes numerous variables into consideration, including safety stock. This section explains the safety stock calculation methods, safety stock rules, and how the rules interact with the ATP touchpoints.

Safety Stock Calculation Levels

Safety stock is normally calculated at the Inventory Org level; however, it can be calculated at the Seller level. The calculation level is set before launch; you cannot change it. Inventory Org level calculations affect all Sellers across the organization. Seller level safety stock is useful if your organization has Sellers located in different countries, where Sellers might need different safety stock levels due to fluctuations in demand or supply in each particular country.

Safety Stock Calculation Methods

ROM has two calculation methods:

  • Deduct First: Ties safety stock to a node level. The safety stock is first deducted from each node, and then the remaining inventory is aggregated.
  • Aggregate First: Does not tie safety stock to a node level. The inventory is aggregated across applicable nodes and then the safety stock is deducted.

For both calculations methods, when the supply quantity drops to negative after safety stock application, inventory is set to 0 for that level.

Deduct First Safety Stock Rules

ROM currently supports six Deduct First global safety stock rules. As you set up safety stock rules in the ROM user interface, keep in mind that:

  • When you use these rules, you cannot configure safety stock at the Seller level.
  • More than one Deduct First safety stock rule can be configured.
  • When Deduct First safety stock rules are configured, the ATP Feed does not deduct any safety stock. The ATP Feed only considers the Aggregate First safety stock rule.
  • Only one safety stock rule can deduct the supply quantity.
  • When Deduct First safety stock rules are configured, the rule hierarchy is  applied in the following priority order for both the Quantity Request and Inventory Detail calls:
    1. If a Node Item is set up, then use the Node Item safety stock rule.
    2. If no Node Item set up, and a Node Type Item is set up, then use the Node Type Item safety stock rule.
    3. If no Node Item or Node Type Item are set up, then use the Node Item Attribute safety stock rule.
    4. If no Node Item, Node Type Item, or Node Item Attribute are set up, then use the Node Type Item Attribute safety stock rule.
    5. If no Node Item, Node Type Item, Node Item Attribute, or Node Type Item Attribute is set up, then use the Global Node Type safety stock rule.
    6. If no Node Item, Node Type Item, Node Item Attribute, Node Type Item Attribute, or Global Node Type is set up, then use the Global Supply safety stock rule.

The following examples assume that ATP is being returned at the Inventory Org level.

Node Item Safety Stock

Definition

When To Use:

The most granular level of safety stock. Allot safety stock (quantity or percentage) for a SKU item, for a specific node, by fulfillment type (ISPU, STS, STH) for a supply type (Onhand, In Transit, Held, and so on).

 

To protect inventory specific to an item within a node for in-store purchases.

Example: Item X is popular in the southwest region of the US. Within the southwest stores, you can set safety stock to hold back extra for expected higher in-store purchases.

 

Example

SKU123

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

100

20

20

0

Node Item Safety Stock

-- (none set)

3

2

1

Inventory Touchpoint

Description

Calculation

ATP Feed

The ATP Feed only looks at Aggregate First safety stock.

100+20+20+0=140

Quantity Request API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 100-0=100

Node B: 20-3=17

Node C: 20-2=18

Node D: 0-1=-1 (net to 0)

100+17+18+0=135 (Aggregate number is returned.)

Inventory Detail API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 100-0=100

Node B: 20-3=17

Node C: 20-2=18

Node D: 0-1=-1 (net to 0)

Node Type Item Safety Stock

Definition

When To Use:

Allot safety stock (quantity or percentage)  for a SKU item, by node type (DC, Retail Store), by fulfillment type (ISPU, STS, STH) for a supply type (Onhand, In Transit, Held, and so on).

To protect inventory specific to an item within a node type for in-store purchases.

Example: Item X is one of the most requested items for the holiday season. Within all retail stores, you can set safety stock to hold back extra for expected higher in-store purchases. And, you can set a smaller amount of safety stock for Distribution Center node types.

Example

SKU123

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

100

20

20

0

Node Type Item safety stock:

Distribution Centers = none set

Retail Stores = 2

-- (none set)

2

2

2

 

Inventory Touchpoint

Description

Calculation

ATP Feed

The ATP Feed only looks at Aggregate First safety stock.

100+20+20+0=140 

Quantity Request API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 100-0=100 

Node B: 20-2=18

Node C: 20-2=18

Node D: 0-2=-2 (net to 0)

100+18+18+0 = 136  (Aggregate number is returned.)

Inventory Detail API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 100-0=100 

Node B: 20-2=18

Node C: 20-2=18

Node D: 0-2=-2 (net to 0)

Node Item Attribute Safety Stock

Definition

When To Use:

Allot safety stock (quantity or percentage)  by a defined item attribute, for a specific node, by fulfillment type (ISPU, STS, STH) for a supply type (Onhand, In Transit, Held, and so on).

 

To protect inventory specific to an item attribute for specific nodes for in-store purchases.

Example: A new collection is expected to sell quickly. Demand is anticipated to be high in regional areas. All items within the collection are identified by an attribute.

Example

Attribute = Sarah Jessica Parker Collection

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

100

20

20

0

Node Item Attribute safety stock = Sarah Jessica Parker Collection

5

2

-- (none set)

3

 

Inventory Touchpoint

Description

Calculation

ATP Feed

The ATP Feed only looks at Aggregate First safety stock.

100+20+20+0=140

Quantity Request API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 100-5=95 

Node B: 20-2=18

Node C: 20-0=20

Node D: 0-3 = -3  (net to 0)

95+18+20+0=133 (Aggregate number is returned.)

Inventory Detail API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 100-5=95 

Node B: 20-2=18

Node C: 20-0=20

Node D: 0-3 = -3  (net to 0)

Node Type Item Attribute Safety Stock

Definition

When To Use:

Allot safety stock (quantity or percentage) by a defined item attribute, by node type (DC, Retail Store), by fulfillment type (ISPU, STS, STH) for a supply type (Onhand, In Transit, Held etc.)

To protect inventory specific to an item attribute by node types for in-store purchases.

Example: A new collection is expected to sell quickly. You want to hold back the same quantity of safety stock for each store. All items within the collection are identified by an attribute.

Example

Attribute = Sarah Jessica Parker Collection

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

50

12

12

12

Node Type Item Attribute Safety Stock =  Sarah Jessica Parker Collection

Distribution Centers = 1

Retail Stores = 2

1

2

2

2

 

Inventory Touchpoint

Description

Calculation

ATP Feed

The ATP Feed only looks at Aggregate First safety stock.

50+12+12+12 = 86

Quantity Request API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 50-1=49 

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

49+10+10+10=79 (Aggregate number is returned.)

Inventory Detail API

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 50-1=49 

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

Global Node Type Safety Stock

Definition

When To Use:

Allot safety stock (quantity or percentage) to all items, by node type (DC, Retail Store), by fulfillment type (ISPU, STS, STH) for a supply type (Onhand, In Transit, Held, and so on).

 

To protect the same amount of inventory across all catalog items based on the node type.

Examples:

  • Hold two items for in-store purchases at each Retail Store.
  • Hold one item at each DC.

Example

SKU 144

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

50

12

12

12

SKU 288

 

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

 

8

4

6

5

Safety Stock

 

 

 

 

Global Node Type safety stock:

Distribution Centers = 1

Retail Stores = 2

1

2

2

2

 

Inventory Touchpoint

Description

Calculation

ATP Feed: SKU144

The ATP Feed only looks at Aggregate First safety stock.

50+12+12+12=86

ATP Feed: SKU288

8+4+6+5=23

Quantity Request API: SKU 144

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 50-1=49

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

49+10+10+10=79 (Aggregate number is returned.)

Quantity Request API: SKU 288

Node A: 8-1=7

Node B: 4-2=2

Node C: 6-2=4

Node D: 5-2=3

7+2+4+3=16 (Aggregate number is returned.)

Inventory Detail API: SKU144

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 50-1=49 

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

Inventory Detail API: SKU288

Node A: 8-1=7

Node B: 4-2=2

Node C: 6-2=4

Node D: 5-2=3

Global Supply Safety Stock

Definition

When To Use:

Allot safety stock (quantity or percentage) for all items, across all nodes for a supply type (Onhand, In Transit, Held, and so on).

 

To protect the same amount of inventory across all catalog items.

Example: Hold two of all items.

Example

SKU 144

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

50

12

12

12

SKU 288

 

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand inventory

 

8

4

6

5

Safety Stock

 

 

 

 

Global Node Type safety stock = 2

 

2

2

2

2

 

Inventory Touchpoint

Description

Calculation

ATP Feed: SKU144

The ATP Feed only looks at Aggregate First safety stock.

50+12+12+12=86

ATP Feed: SKU288

8+4+6+5=23

Quantity Request API: SKU 144

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

Node A: 50-2=48

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

48+10+10+10 = 78 (Aggregate number is returned.)

Quantity Request API: SKU 288

Node A: 8-2=6

Node B: 4-2=2

Node C: 6-2=4

Node D: 5-2=3

6+2+4+3 = 15 (Aggregate number is returned.)

Inventory Detail API: SKU144

When Deduct First safety stock is configured, the rule hierarchy is followed in priority order.

 

Node A: 50-2=48

Node B: 12-2=10

Node C: 12-2=10

Node D: 12-2=10

Inventory Detail API: SKU288

Node A: 8-2=6

Node B: 4-2=2

Node C: 6-2=4

Node D: 5-2=3

Aggregate First Safety Stock Rules

ROM currently supports one Aggregate First global safety stock rule type: the Aggregate First rule.

  • When the Aggregate First safety stock rule is configured, do not configure any other rules because the calculation method is different. The user interface allows you to configure other safety stock rules, but Radial does not recommend this practice.
  • When the Aggregate First safety stock rule is configured, the ATP Feed deducts the configured safety stock.
  • If the Safety Stock rule is set to Seller, then this rule aggregates the safety stock across all nodes/node types at the specified Seller. You can only set Seller level safety stock when you use this rules.

The following example assumes that ATP is being returned at the Inventory Org level.

Aggregate First Safety Stock

Definition

When To Use:

Allot safety stock as a quantity or percentage. Apply globally to all SKUs across all fulfillment node types/ nodes.

Inventory Org level safety stock: To have the safety stock applied across your entire enterprise inventory rather than tie it to a specific node/ node type.

Seller level safety stock: To have the safety stock applied across a specific Seller's inventory rather than tie it to a specific node/ node type.

When the safety stock value can be the same regardless of SKU.

Example

 

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

SKU123

Node A (DC)

Node B (Retail Store)

Node C (Retail Store)

Node D (Retail Store)

Onhand Inventory

2

2

2

0

Aggregate First safety stock = Qty 1

 

 

 

 

 

Inventory Touchpoint

Description

Calculation

ATP Feed

The ATP Feed only looks at Aggregate First safety stock.

(2+2+2+0) - 1=5

Quantity Request API

When Aggregate First safety stock is configured, no other safety stock rules are considered.

(2+2+2+0) - 1=5

Inventory Detail API

When Aggregate First safety stock is configured, no safety stock is deducted.

If non-aggregated safety stock rules are configured in addition to the aggregated global, the rule hierarchy is followed.

Node A = 2

Node B = 2

Node C = 2

Node D = 0

Seller Level Safety Stock

When an Administrator sets up safety stock rules and values with Seller Level Safety Stock, the values apply to the Seller that the Administrator is working with. Moreover, the Seller level values can only be set when the Aggregated Global Safety Stock Rule is used. The following examples show how Seller Level Safety Stock is allocated and sourced, and how the ATP inventory is calculated.

Note: Seller Level Safety Stock is set at the Inventory Org level by Radial Administrators.

Assume that SuperMart is the Inventory Org. SuperMart has three Sellers:

  • SuperMart France (SM-FRA)
  • SuperMart Germany (SM-GER)
  • SuperMart Belgium (SM-BEL)

Safety Stock Settings by Seller

SellerInventory OrgSafety Stock TypeSafety Stock Value
SM-FRASuperMartQuantity0
SM-GERSuperMartQuantity5
SM-BELSuperMartQuantity3

Eligible Nodes for Sellers

Node - Item 711123OnhandSM-FRA Eligible?SM-GER Eligible?SM-BEL Eligible?
123 - France DC60Y  
345 - France Store20Y  
456 - France Store20Y  
987 - Germany DC70 YY
765 - Germany Store10 Y 
543 - Belgium Store5  Y
321 - Belgium Store6  Y

ATP Calculation

Inventory TouchpointCalculationNotes
ATP Feed

SM-FRA: (60+20+20) - 0 = 100

SM-GER: (70+10) - 5 = 75

SM-BEL: (70+5+6) - 3 = 78

  • Safety stock is taken into consideration.
  • Node 987 is counted under both SM-GER and SM-BEL
Quantity Request API

SM-FRA: (60+20+20) - 0 = 100

SM-GER: (70+10) - 5 = 75

SM-BEL: (70+5+6) - 3 = 78

  • Safety stock is taken into consideration.
  • Node 987 is counted under both SM-GER and SM-BEL
Inventory Detail API

Node 123: 60

Node 345: 20

Node 456: 20

Node 987: 70

Node 765: 10

Node 543: 5

Node 321: 6

  • Safety Stock is not taken into consideration.

ATP by Seller

The following example illustrates how the ATP by Seller feature works with the Quantity Request API.

Setup

Assume that the following node groups have been set up to handle ATP by Seller.

Italy: Seller Id TMSEB2

  • Node 100801- Italy DC
  • Node 100802 - Rome, Italy Store
  • Node 100803- Milan, Italy Store

Czech Republic: Seller Id TMSEB3

  • Node 100804- Czech Republic DC
  • Node 100805 - Prague, Czech Republic Store

Slovakia: Seller Id TMSEB4

  • Node 100804 - Czech Republic DC
  • Node 100806 - Bratislava, Slovakia Store
  • Node 100807 - Trnava, Sloakia Store

Example of Seller ATP Being Returned

The following table shows the setup and sourcing restrictions.

Inventory OrgSellerStore FulfillmentDC FulfillmentSourcing Restrictions

TMSNA

TMSEB2 IT

Italy stores

Italy DC

Can only be sourced from Italy DC and Italy stores

TMSNA

TMSEB3 CZ

Czech Republic stores

Czech Republic DC

Can only be sourced from Czech Republic DC and Czech Republic stores

TMSNA

TMSEB4 SK

Slovakia stores

Czech Republic DC

Can only be sourced from Czech Republic DC and Slovakia stores

Here's the onhand inventory and eligibility.

Node Item 7115566Onhand InventoryEligible - TMSEB2 ITEligible - TMSEB3 CZEligible - TMSEB4 SK

100801 - Italy DC

1

Y

N

N

100802 - Italy Store

1

Y

N

N

100803 - Italy Store

0

Y

N

N

100804 - Czech Republic DC

1

N

Y

Y

100805 - Czech Republic Store

1

N

Y

N

100806 - Slovakia Store

0

N

N

Y

100807 - Slovakia Store

0

N

N

Y

The Quantity Request API returns the following ATP at the Seller level.

Quantity Request for Seller Level ATP
SKUSellerATP

7115566

TMSEB2 IT

2

7115566

TMSEB3 CZ

2

7115566

TMSEB4 SK

1

If ATP by Seller was not configured, then the Quantity Request API returns the ATP at the Inventory Org level.

Quantity Request for Inventory Org ATP
SKUInventory OrgATP

7115566

TMSNA

4

Related Topics Link IconRelated Topics