Safety stock rule: Priority list

When multiple safety stock rules apply to an inventory availability condition, the rule with the highest relative priority is selected, where 1 being the highest priority. In general, the rules that are most specific will have higher priority and under certain circumstances tie breaker criteria will apply to compute the priority.

For details, see the information in the tables and examples.
Table 1. Safety stock priority computation criteria
Ranking (1 = highest) Criteria
1 Number of conditions (dimensions): The matched rules with the most number of conditions will be given the highest priority. For example, when an availability query matches against two rules having "Item ID" and "Item ID and Node" as conditions respectively, then the rule with "Item ID and Node" is given higher priority because it has more matched conditions.
2 Effective duration remaining: When there are multiple matched rules with an equal number of conditions, a rule that will expire earlier will be given higher priority. For example, assume that two rules have the same number of conditions. The first rule is scheduled between 15th January to 15th February, while the second rule is scheduled between 1st of January to 30th of January. If the current date is 20th January, then the second rule will be get higher priority because it has only 10 days remaining whereas the first rule has 26 days remaining.
3 Relative dimensional importance: When matched rules have the same number of conditions, and they have same effective duration remaining then the rules are ranked based on the importance of the condition (dimension). The rule having a dimension with more importance, will get higher priority. The system recognizes the dimensions in the following order of importance:
Importance (1 = highest) Dimension
1 Node (for node level safety stock)/Distribution group (for network level safety stock)
2 Item ID
3 Node type
4 Item attribute
5 Item category path
6 Delivery method
4 Rule name (alphabetical order): In the extreme case when the matched rules are still at the same priority level, the system determines the priority based on the rule name in alphabetical order followed by the rule's last modified date.
Note: Ensure that safety stock rules are specific enough to try to avoid this situation.
5 Most recently modified: In an extreme case when matched rules are still at the same priority level, the system determines the priority based on the rule with the last modified date.

Examples of rules resolution

For each of these examples, the following safety stock rules are configured in a system where all rules below are enabled. For these examples, you can assume that the item 'FreshFoamShoe_2023' belongs in the Item category path '/Footwear/Shoes'.

  • Rule 1 (R1): If the Node is 'Boston_store1' and an item belongs in the Item category path '/Footwear/Shoes', then apply a safety stock of five units. Effective duration: unrestricted.
  • Rule 2 (R2): If the Node is 'Chicago_store1' and an item belongs in the Item category path '/Footwear/Shoes', then apply a safety stock of four units. Effective duration: for the next seven days.
  • Rule 3 (R3): If the Node type is 'store', then apply safety stock of three units. Effective duration: unrestricted.
  • Rule 4 (R4): If the Item ID is 'FreshFoamShoe_2023', then apply a safety stock of two units. Effective duration: unrestricted.
  • Rule 5 (R5): If the Node is 'Chicago_store1' and the Item ID is 'FreshFoamShoe_2023', then apply a safety stock of one unit. Effective duration: unrestricted.

Scenario A

Safety stock queried for item 'FreshFoamShoe_2023' at store 'Boston_store1' and determined that rules R1, R3 and R4 all satisfy the requirements. Based on the ranking criteria:

  • Rule R1 is the highest priority because it has two dimensions (condition attributes), while rules R3 and R4 each only have one dimension.
  • Between rules R3 and R4, although they both have unrestricted durations, rule R3 has the dimension 'Node type' while rule R4 has the dimension 'Item ID'. In this case, rule R4 is the higher priority.

The final computed relative priority for this scenario is rules R1=1, R4=2, and R3=3. In this scenario, the safety stock applied will be from rule R1, which would be five units.

Scenario B

Safety stock queried for item 'FreshFoamShoe_2023' at store 'Chicago_store1' and determined that rules R2, R3, R4 and R5 all satisfy the requirements. Based on the ranking criteria:

  • Rules R2 and R5 each have two dimensions while rules R3 and R4 each have only one dimension. So rules R2 and R5 are both a higher priorities than rules R3 and R4.
  • Between rules R2 and R5, rule R2 has a shorter effective duration remaining (one week for rule R2 versus unrestricted duration for rule R5). In this case, rule R2 is the higher priority.
  • Between rules R3 and R4, although they both have one dimension and unrestricted durations, rule R3 has the dimension 'Node type' while rule R4 has the dimension 'Item ID'. In this case, rule R4 is the higher priority.

The final computed relative priority for this scenario is rules R2=1, R5=2, R4=3, and R3=4. In this scenario, the safety stock applied will be from rule R2, which would be four units.

Scenario C

Safety stock queried for item 'FreshFoamShoe_2023' at store 'Chicago_store1' after two weeks and determined that rules R3, R4 and R5 all satisfied the requirements. Rule R2 did not satisfy the requirements because the duration was only one week, not two weeks. Based on the ranking criteria:

  • Rule R5 has two dimensions while rules R3 and R4 each have only one dimension. In this case, rule 5 is the highest priority.
  • Between rules R3 and R4, although they both have only one dimension, rule R3 has the dimension 'Node type' while rule R4 has the dimension 'Item ID'. In this case, rule R4 is the higher priority.

The final computed relative priority for this scenario is rules R5=1, R4=2, and R3=3. In this scenario, the safety stock applied will be from rule R5, which would be one unit.

Note: While searching for the rules stored in the system, sorting based on priority is not supported because it is computed on the fly among a subset of the applicable rules.