Product lineage
Product lineage refers to the relationship established between products and their previous versions or alternate products. Demand Planning uses the product lineage information to create surrogate history for such products, which serves as a forecast input for demand predictions.
Product lineage supports the following patterns:
-
A single product has one lineage or alternate product = 1:1
The following example shows an 1:1 scenario.
-
A single product has more than one product as lineage or alternate = Many:1
Demand Planning supports product lineage relationship modeled as both chain or flattened methods.
Chain format – You can directly model lineage relationships like A to B and B to C. In the following example. Demand planning will model the lineage relationship as A to B, B to C, and A to C.
Predecessor Successor A
B
B
C
The following example shows an Many:1 scenario - Chain format
Flattened format – Demand Planning will continue to support lineage information in A to B and A to C format. In the following example, Demand planning will model the lineage relationshop as A to B and A to C. B to C is not considered.
Predecessor Successor A
B
A
C
Note
Chain format will only support 10 levels of lineage relationship. If you have more than 10, you can use flattened format to model the lineage relationship.
The following example shows an Many:1 scenario - Flattened format
-
A single product can be lineage or alternate for more than 1 product = 1 : Many
To enable the product lineage feature, you can define the lineage relationship for the different versions of the products or alternates/substitutes in the product_alternate data entity. For more information, see Demand Planning.
If your instance was created on or after September 11, 2023, you will see product_alternate data entity in the AWS Supply Chain data Connection module. If your instance was created before September 11, 2023, create a new data connection to enable the product_alternate data entity for ingestion.
To ingest data into the product_alternate data entity, follow the guidelines below:
-
product_id – The primary product to create the forecast.
-
alternative_product_id – Previous version of the product or alternate/substitute product.
To consider multiple alternative_product_id for a single product_id, enter them in separate rows.
-
Demand Planning will consider the data ONLY when the values are provided in the following format.
-
alternate_type is similar_demand_product.
-
status is active.
-
alternate_product_qty_uom is the text percentage.
-
alternate_product_qty – Enter the proportion of history of the alternate product you want to use for forecasting new products in the alternate_product_qty data field. For example, if it is 60%, enter 60. When you have multiple alternative_product_id for a single product_id, the alternate_product_qty does not have to add up to 100.
-
-
The eff_start_date and eff_end_date data fields are required. However, you can leave this field empty and Demand Planning will autofill with 1000 and 9999 years respectively.
When the forecast is created using product lineage data, you will see an indicator Forecast is based on alternate product's history on the Demand Planning page when you filter by product ID.
The following table shows an example of how Demand Planning Product lineage feature works based on the data ingested into the product_alternate data entity.
Column | Required or Optional | Example 1 | Example 2 | Example 3 | Example 4 | Example 5 | Example 6 | Example 7 | Example 8 | Example 9 | Example 10 | Example 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
product_id |
Required | Product 123 | Product 123 | Product 123 | Product 123 | Product 123 | Product 123 | Product 123 | Product 123 | Product 123 | Null | Product 123 |
alternative_product_id |
Required | Product XYZ | Null | Product XYZ | Product XYZ | Product XYZ | Product XYZ | Product XYZ | Product XYZ | Product XYZ | Null | Product XYZ |
alternate_type |
Required | Similar_Demand_Product | Similar_Demand_Product | Null or a different value | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product | Similar_Demand_Product |
status* |
Required | active | active | active | inactive | active | active | Null | active | active | active | active |
alternate_product_qty |
Required | 100 | 60 | 100 | 100 | Null | 100 | 100 | 100 | 100 | 100 | 60 |
alternate_product_qty_uom |
Required | percentage | percentage | percentage | percentage | percentage | Null or a different value | percentage | percentage | percentage | percentage | percentage |
eff_start_date |
Required | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | Null | 2023-01-01 00:00:00 | 2023-01-01 00:00:00 | Null |
eff_end_date |
Required | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | 2025-12-31 23:59:59 | Null | 2025-12-31 23:59:59 | Null |
Expected behavior |
NA | 100% of product XYZ's history from 1/1/2023 to 31/12/2025 will be used to forecast product 123. | Invalid mapping since alternative_product_id is missing. | Invalid mapping since alternate _type is not 'similar_demand_product'. | Inactive mapping. | Invalid mapping since alternate_product_qty is missing. | Invalid mapping since alternate_product_qty_uom is missing or not percentage. | Invalid mapping since status is missing. | Ingestion will fail. | Ingestion will fail. | Invalid mapping since product_id and alternative_product_id are missing. | Ingestion will fail. |
NA | NA | NA | NA | NA | NA | NA | NA | Demand Planning will auto-populate the eff_start_date to year 1000. This scenario is valid and data ingestion will not fail. |
Demand Planning will auto-populate the eff_end_date to year 9999. This scenario is valid and ingestion will not fail. |
NA | Demand Planning will auto-populate the eff_start_date to year 1000 and eff_end_date to year 9999. This scenario is valid and ingestion will not fail. |
The following example explains how Demand Planning will interpret when the status is set as inactive and the product lineage is in chain format.
Column | Column | Status |
---|---|---|
A |
B |
Active |
B |
C |
Inactive |
C |
D |
Active |
Demand planing considers the status of the first root and child mapping as the status for the entire chain.
A to B Active
A to C Active
A to D Active
B to C Inactive
B to D Inactive
C to D Active