Product substitution

In some cases, you may want to specify demand at a high level in terms of products, but fulfill the demand using other products. For example, you may have substitutable products produced at different manufacturing plants.

The general process for defining product substitution is as follows:

  1. Create all required products in the Product table.
  2. Create a group or a filter with the name of the product for which its members can be used as substitutes. The members of this group/filter must be the products that can be used as substitutes.
  3. Create Customer Demand records using the product group/filter in those cases where product substitution is permitted. Use “All” as the way to apply the group/filter. You can create product-specific Customer Demand records for any of the products where substitution is not allowed.
  4. Create policies that support the individual substitution products.
  5. Create constraints using products or the product group/filter as needed.
There must be no Customer Demand for the substitute products at a customer/site within the same period that the regular product is demanded. For example, if there is demand for Product_A at CZ_1 in Period_001, you cannot have demand for Alt_P1 (a substitute product) at CZ_1 in Period_001. In this case, the demand is not handled correctly.

Product substitution examples

Example 1

In this example, there are three products: Corn Flakes, Rice Puffs and Oatmeal. Note that Corn Flakes has the lowest Unit Price:

Corn Flakes and Rice Puffs are categorized as "Cold Cereal" and these can be substituted for each other, based on cost, availability and any other constraints. You can define a filter in the Products table for these two products:

Alternatively, you can define a group that contains the two products:

If you want to allow product substitution to occur for specific demand, enter the name of either the filter or the group you created and Customer Demand table and apply it to (All):

In this case, there are no additional costs or constraints and we are solving to Maximize Profit. As a result, the solution serves the demand using Rice Puffs:

Example 2

In this case, we use the same products as above. The Customer Demand is as follows with an overlap between the demand for Cold Cereal and for Rice Puffs. Because of the overlap, we assign unique Fulfillment ID values:

This ensures that the demand will be served.

Product substitution limitations

The following cases are not allowed when using product substitution:

  • Product substitution is not supported for Site Demand.
  • Product substitution is currently supported for quantity units of measure in the Customer Demand/Customer Orders Quantity column. Weight- and volume-based units of measure are not supported at this time.
  • For a given customer and for all the products demanded at that customer, if the products share any substitute product, you must provide a unique Fulfillment ID value for each of these demand records. This allows overlapping sets to be identified correctly.
    • Product_A and Product_B are demanded at CZ_1. Both Product_A and Product_B can substitute with Alt_P1. In this case, you must define a unique Fulfillment ID value.
    • Product_A is demanded at CZ_1 and Product_B is demanded at CZ_2. Both Product_A and Product_B can substitute with Alt_P1. This case does not require Fulfillment ID values.
    • Product_A and Product_B are demanded at CZ_1. Product_A can substitute with Alt_P1 and Product_B can substitute with Alt_P2. This case does not require Fulfillment ID values..
  • For a given customer in a given period, you cannot have demand for the main product and for any of the substitute products.
    • Product_A is demanded by CZ_1 in Period_001. Product_A can substitute with Alt_P1. Product Alt_P1 cannot be demanded by CZ_1 in Period_001. Alt_P1 can be demanded by other customers in Period_001 or by CZ_1 in other periods.

Last modified: Friday May 12, 2023

Is this useful?