Author: Alexandru Pavel is a Certified Master Anaplanner and Solution Architect at Keyrus.
In manufacturing, supply chain planning, and production management, it is often necessary to determine the quantities of raw materials required to produce a finished good.
This process, commonly referred to as BOM (Bill of Materials) Explosion or BOM Break-down, transforms a multi-level product structure into a clear view of the base materials needed for production.
Because a finished good may contain several levels of intermediate products, sub-assemblies, and components, the BOM structure can become deeply hierarchical, making it difficult to calculate material requirements.
Anaplan provides an effective way to solve the BOM Explosion challenge by leveraging its calculation engine, multidimensional model structure, and dynamic lists.
Instead of using recursive database queries or external processing tools, the BOM break-down can be performed directly within the Anaplan model.
1. BOM breakdown: general considerations
The purpose of the BOM (bill of materials) "explosion"(break down) is to determine the required quantities of base components (base materials) needed to produce a finished good (SKU – stock keeping unit). This process accounts for the fact that a finished good's recipe may include sub-products, which themselves may have recipes containing base components or additional sub-sub-products, and so forth.
As a result, a finished good can have multiple levels of break-down depending on the number of sub-products involved in the recipe.
The challenge lies in the fact that the number of levels is not known in advance.
Therefore, it is necessary to remove the sub-products from all levels, leaving only the base components in the finished goods recipe and to recalculate the quantities of the base elements from the sub-products recipes across different levels.
The Base Materials/Base Components refer to the fundamental raw materials or primary components used in the manufacturing or assembly of a product. These materials serve as the foundation for creating sub-assemblies, parts, or the final product (finished goods). In terms of hierarchy, they are the elements that do not have any children.
The following solution defines a method to dynamically generate elements in a list for each level.
The solution starts with the definition of a maximum number of levels. These should be sufficient to cover all recipes for all finished goods.
However, if another additional level is necessary, the solution allows to add this level by simply pushing a button to generate the additional elements in the break down structure and to make small adjustments to the formula to consider this new level. Namely:
- Add a new line-item for the additional BOM level (Usage LV1, Usage LV2, Usage LVx)
- Change the final formula for the demand to consider the new line-item (Usage Final)
The final result of the BOM Explosion can be seen in the below table, where all the Levels are “siblings” under the same Finished Goods code.
2. BOM file structure
A BOM file could have the following parent-child structure.
The primary key of the file is the combination of Material and Component columns.
The columns are:
- UoM Mat: Unit of Measure for the Parent related to the column “Base Quantity”. This can be a Finished Goods (FG) or a Sub-Products (SUBP)
- Material: the Parent Code ( FG or SUBP)
- Component: the Child Code. It can be base Materials (MAT) or Sub-Products (SUBP)
- Base quantity: is the quantity the result for the Parent
- Quantity: is the quantity of the Child (Component) to generate Base Quantity of the Parent.
- UoM comp: is the Unit of Measure of Component (Child) related to the Quantity.
BOM levels explained:
- Level1 (L1): Contains all the Components (Base Materials and Sub-Products) that are part of a Finished Goods Code (FG01).
- Example: The FG01 has components Base Materials MAT01, MAT02, MAT03…MAT12 and Sub-Product SUBP01.
- Level2 (L2): Contains all the Components (Base Materials and Sub-Products) that are part of a Sub-Products present in Level1 for a Finished Goods (SUBP01).
- Example: The SUBP01 has components Base Materials MAT02, MAT13, MAT04, MAT14 and Sub-Product SUBP02.
- Level3 (L3): Contains all the Components (Base Materials and Sub-Products) that are part of a Sub-Products present in Level2 for a Finished Goods.
- Example: The SUBP02 has components like Base Materials MAT15, MAT01, MAT14. I
- Level4 (L4): Contains all the Components (Base Materials and Sub-Products) that are part of a Sub-Products present in Level3 for a Finished Goods.
And so on. The levels can continue under a Finished Goods until the most detailed level of the Sub-Products that contain only Base Materials is broken down.
In the above example, the Finished Goods FG01 has only 3 Levels of BOM Explosion as SUBP02 contains only Base Materials. However, potentially SUBP02 can contain any number of other Sub-products and other Base Materials.
3. Main lists
- #BOM Upload Data: numbered list where the BOM file is uploaded. Follows exactly the BOM file structure.
- PR2 - SKU Finished Goods: indicates what are the Finished goods (SKUs) that can have Sales and for which we need the “explode” the recipes until the Base materials. This list could have multiple levels. The list could have a parent list like “PR1 - SKU Product Category”. The codes of this list can be found in BOM file in the column Material (Parent).
- MAT2 - Base Materials: indicates what are the Base Materials that are used in recipes of Finished Goods and Sub-products. This list could have a parent list “MAT1 - Base Materials Group”.
- PR3a - FG SKU-Material: Combination List that concatenate Finished Goods (FG) and Base Materials (MAT) resulted from the full explosion of all BOM levels. It has as parent list “PR2 - SKU Finished Goods”. It will be used to aggregate data from the BOM ALL levels Explosion considering only the Base Materials from all the intermediary levels.
- #PR3b - BOMX ALL Levels: Combination lists where are “exploded” all levels of BOM file for every Finished Goods (SKU). It has as parent list “PR2 - SKU Finished Goods”. The population of this list is the main goal of the BOM explosion.
- BOM ALL Mat+Components: a Flat List to gather ALL codes received from BOM file in both columns “Material” (Parent) and Components (Child). It will contain all the Finished Goods, Base Materials and Sub-Products.
- BC1 BOM Upper Level Flat: technical list updated (step-by-step) with all the sub-products of the next level explosion. In combination with #BOM Upload Data will be used as main tool to generate the next level
4. Main system modules
4.1. SYS01 PR2 - SKU
Generic Finished Goods system module:
4.2. SYS02 PR3 - FG SKU-Material
Combi SKU Finished Goods – Base Materials, containing all the Base Materials from ALL BOM levels explosion, excluding the Sub-Products.
4.3. SYS03 MAT2 Materials
Base Materials system module with their properties:
4.4. SYS20 BOM ALL Mat+Components
All Codes present in BOM file: Finished Goods, Sub-Products, Base Materials.
Condition to be Sub-Product: in Code present in BOM file in both Parent (Material) and Child (Component) columns.
4.5. SYS23 Conversion UoM
Conversion factors between different UoM’s
Used to convert the quantities, if different UoM is used for the same Component in different BOM Levels.
5. BOM explosion modules
5.1. BM00 BOM DataLoad
- Based on the list “#BOM Upload Data”
- Contains the BOM File information
- Used as source for quantities for ALL the levels
- Source to update the list BOM ALL Mat+Components
- Used to create the Level1 (L1) explosion for the Finished goods, what are their 1st level recipe
5.2. BM01 BC1 BOM Upper Level Flat
- Based on the list “BC1 BOM Upper Level Flat”
- Technical module that contains the latest Sub-Products (upper level) elements.
- The list is deleted and updated with the next level Sub-Products
In the below example are present the L2 Sub-Products as base to generate the Next Level explosion (L3):
5.3. BM02 Create BOMX2 for UpperLevels
- Based on the lists #BOM Upload Data, BC1 BOM Upper Level Flat
- Technical module used to create the Next Level Explosion level in the target list #PR3b - BOMX ALL Levels
Example: for all the Level2 Subproducts, it will be generated from BOM file the L3 (exploded the recipes of the sub-products).
5.4. BM03 PR3b BOM Explosion ALL Levels
- Based on the list #PR3b - BOMX ALL Levels
- It contains all the BOM explosion level.
- Main calculation model: the main purpose of the BOM explosion solution
- It is generated from the module “BM02 Create BOMX2 for UpperLevels”
- For each intermediary level, the corresponding "parent" element (the sub-product) is specified in a line item (AN Upper PR3b BOMX).
- Every Usage LVx uses the result of the previous level (ex: Usage LV7 uses in the formula Usage LV6) using the LOOKUP of the “parent” element of the previous level(AN Upper PR3b BOMX). This is why if an additional level is needed, it is needed to add a new line-item Usage LV8 in the module with its formula.
- “Usage Final” is the line-item that contains the quantities from all the levels considering only the Base Materials from all the BOM levels for a final product (finished good). It is the sum of all Usage LVx, without considering the intermediary levels (the Sub-Products). When a new level is needed (ex. Usage LV8), it is necessary to change the formula in “Usage Final” to add the new line-item.
5.5. DEM02 FG SKU-Material
- Based on the list PR3a - FG SKU-Material
- Contains unique combinations of the Finished Goods with Base Materials• Aggregates the Usage Final of every Based material for a Finished Good from the module
- The demand for each material under a finished good is calculated by multiplying the Usage Final by the Finished Goods quantities (Production Volumes).
6. BOM explosion mechanism
The BOM Explosion mechanism has these main steps:
- Upload the BOM File and populate the module BM00 BOM Datatload
- Populate the Level1 BOM explosion elements in the list #PR3b - BOMX ALL Levels
- Identify the max Level explosion in the list #PR3b - BOMX ALL Levels and what are the Sub-Products that need Next Level explosion
- Delete all elements in the list BC1 BOM Upper Level Flat
- Populate the list BC1 BOM Upper Level Flat with the Sub-Products from the Step 3.
- Populate the list #PR3b - BOMX ALL Levels with the next level explosion by filtering data from the module “BM02 Create BOMX2 for UpperLevels”
Repeat Steps 4 to 6 until no elements will be available in Step 6.
In Anaplan, there is no built-in command for creating iterations with an unknown number of steps (such as DO…WHILE loops). This is why the steps 4 to 6 can be grouped in a process and the users can manually push the button to generate additional levels until all the sub-products are “exploded” to the base-material components.
Other options to simulate automatic loops, but with known number of iterations:
- Use CloudWorks to schedule the same process periodically multiple times.
- Create different actions for every steps with exactly the same filters, but using different saved view names to duplicate the Step 4 to 6 and add them in the same process.
7. Conclusion
The BOM Explosion solution provides a scalable and flexible approach for transforming multi-level product recipes into a complete list of base materials required for finished goods production. By recursively breaking down all sub-products and consolidating the resulting base components, the model ensures accurate calculation of material requirements regardless of the complexity of the product structure.
A key advantage of this approach is its ability to handle an unknown number of BOM levels through a dynamic design. The predefined level structure can be easily extended whenever additional hierarchy levels are encountered, requiring only the creation of a new usage line item and a small adjustment to the final demand calculation. This minimizes maintenance effort while preserving the integrity of the explosion logic.
Ultimately, the solution delivers a flattened BOM structure in which all required base materials are represented directly under the finished good, with quantities correctly aggregated across all levels of the hierarchy. This enables more accurate demand planning, procurement, inventory management, and production planning by providing full visibility into the true component requirements of each finished product.