How to Configure BOM Mapping in CPQ

April 13, 2019 | 13 minute read
Julio Camara
Principal Solutions Architect
Text Size 100%:

BOM Mapping Overview

A Bill Of Materials, BOM, is a list of part and quantities that make up an end product. A lot of companies use bill of materials in the manufacturing environment, typically in back-end systems, i.e. ERP or fulfillment system.

BOM mapping allows you to import multi-level BOM product structures, from ERP for example, for use in CPQ configurations, to help stream-line internal processed. CPQ allows you to create multi-level BOM structures and use those in the configuration portion of Oracle CPQ Cloud.

When a CPQ quote is generated for a configurable product or service, CPQ uses BOM Mapping rules to create a BOM instance, which is a hierarchical list of all the different parts, items and attributes associated with configuration selections.

Those can then be transferred to commerce transactions, and CPQ can then use the getBOM function to send the Sales BOM or Manufacturing BOM to an ERP system for order fulfillment.

This data-driven solution significantly reduces the amount of time needed to setup and maintain integrations of configured products with ERP systems using BOM Tables in a BOM mapping rule type.

BOM mapping features give you the ability to capture the BOM Item Definition in a CPQ data table. As illustrated in the image below (Picture 1), you can import product structures from back-end systems into CPQ Data tables and then map these to BOM item definitions tables. The next step in the implementation is to setup BOM configuration rules to link the BOM definitions to the CPQ Configuration attribute selections. The configuration rules can use simple table-based rules, or advanced BML-based rules, or both, to accomplish BOM mapping.

Picture 1

Hiearchical Relationships in BOM Mapping

A central component of the BOM Mapping is the capture of product structure hierarchies by the BOM Mapping rules. Picture 2 is an example that illustrates how the hierarchy is stored.

Picture 2

In the left part of the image there is a hierarchical tree of a laptop. At the top of the BOM tree, you can see the root item, LP94777, a laptop. Below that, are some child items. The customer has the choice of multiple processors: s/he could choose either an Intel dual-core or an AMD processor. Also there's are three different types of battery pack, which are grandchildren of the root item. There is also an external drive (child) and there are multiple types of external drives (grandchildren).

The table on the right half of the image, is a row/column representation of the tree on the left. It uses columns that store the item variable name, the parent item variable name and the root item variable name.

BOM Mapping Use Cases

CPQ provides flexibility in creating BOM Mapping. You can choose among a variety of options depending on your requirements or use case. The table below describes these use cases and which tables must be activated to support the implementation.

Picture 3

The majority of CPQ customers implement BOM Mapping by using the second use case, "BOM Mapping Integration". These customers only need to activate 2 tables: "BOM Item Definition" and "BOM item Mapping".

BOM Mapping Tables

The BOM Mapping implementation requires two sets of tables: platform and data tables.
The BOM Mapping platform tables contain the schema for associating BOM structures to Configuration attribute values. Data Tables store customer-specific mapping details.

Picture 4

The combination of these two sets of tables enables users to create simple Table-Based Configuration rules to associate fulfillment system BOMs, CPQ Configuration attributes, and Commerce transaction lines without the need for BML or other logic.

Here is a brief overview of each table.

BOM Item Definition Table

The BOM Item Definition Table stores the BOM hierarchical relationships used in the fulfillment system, along with item variable references, which recursively link child items to parent items. In addition to the hierarchical information, it also stores other information from the fulfillment BOM, such as:

  • Fulfillment system IDs
  • Default quantity
  • Whether an item is optional, a sales item, or a manufacturing item
  • BOM item effective dates
BOM Item Mapping Table

The BOM Item Mapping table associates BOM items to Configuration attributes. Activating this table enables simple Table-Based BOM Mapping Configuration rules. If this table is not active, administrators need to use advance BML-Based Rules to establish the association between BOM items and Configuration attributes.

BOM Attribute Definition Table

The BOM Attribute Definition Table stores attribute definitions and attribute effective dates from the fulfillment system. These attributes can define options, such as color or size. BOM item variable references associate the fulfillment system attributes with the applicable BOM items.

BOM Attribute Mapping Table

The BOM Attribute Mapping Table stores associations between BOM attributes, Configuration attributes, Commerce transaction line attributes, and quantity values. Setting up this table enables simple Table-Based BOM Mapping Configuration rules for associating BOM attributes to CPQ Configuration and Commerce.

BOM Attribute Translation Table

The BOM Attribute Translation Table associates translations for the applicable attributes. BOM attribute variable references associate the fulfillment system translation with the applicable attributes. If there is a multi-language requirement, then this table needs to be activated.

BOM Table Relationships

The relationship between the BOM Mapping tables is illustrated on the picture below. BOM Mapping uses variable names as references to capture hierarchical relationships. BOM Mapping also uses variable names to identify relationships between BOM tables.

Picture 5

Implementation Process

Now that the main concepts and components have been introduced, it's time to describe how to enable and configure BOM Mapping.
The BOM Mapping implementation process has 6 steps:

  1. Capture the BOM definitions in the CPQ data tables
  2. Activate the BOM Mapping Platform tables.
  3. Map the CPQ BOM platform tables to the data tables.
  4. Validate the BOM Item Definition tree.
  5. Define BOM Mapping configuration rules.
  6. Validate table-based configuration rules.

Each one of these steps are going to be described in detail now.

Capture the BOM definitions in the CPQ data tables

Typically ERP systems are the "source-of-truth", the repository that holds metadata about all product items, parts, etc. Therefore, the first step is to bring in the bill of materials from that back-end system and store in CPQ. To make the import easier you should get a CSV template that contains all the columns that CPQ expects. Then populate the template, CSV file, with data from ERP. You will perhaps need to transform the data from ERP format when adding it to the CSV file. When all data is copied to the CSV file, it is imported to a CPQ data table.

Follow these steps to get the template file:

  1. In CPQ follow this trail: Admin home page > Products > BOM > BOM Tables
  2. Activate the table you want to get a template and click Save
  3. The table name becomes a link. Click on the link
  4. Contents of platform table is displayed. On the top left click on “Download Sample” (see picture 6 below)

Picture 6

Open CSV file in a spreadsheet program or editor of choice and populate it with data from ERP.

Follow these steps to import the CSV file:

  1. Go to Data Tables page: Admin > Developer Tools > Data Tables.
  2. If "BOM Tables" folder doesn't exist yet, create it.
  3. Select "BOM Tables" folder and then click on File > Import.
  4. Browse to the file path, select file, and ensure the data delimiter is csv. Also in the destination select BOM Tables. Click import.

Note: if you are importing multiple files, you can import all of them together by zipping them up and uploading the zip file.

Repeat the same steps for any other tables.

Activate the BOM Mapping Platform tables

As discussed previously, the choice of which platform table(s) to use depends on your requirements and/or use case. You will need to enable one or more BOM platform table(s), but at least one table, BOM Item Definition, will have to be enabled.

If you followed the steps to download a template file for one or more platform tables, you probably will have already activated the tables you need. Otherwise follow these steps:

  1. follow this trail: Admin home page > Products > BOM > BOM Tables
  2. Activate the table you want and click Save.
  3. The table name becomes a link. Click on the link

Map the CPQ BOM platform tables to the data tables

Now that the platform tables are enabled, the next step is to map them to the data tables. Here is an example.
The picture below was taken after the tables were enabled, but before they were mapped to the data tables. Notice how the mapping status shows “Incomplete”.

Picture 7

To map it, first click on the link “BOM Item Definition”, then select the data table “Oracle_BomItemDef".

Picture 8

When the selection is made, CPQ reads the columns of the data table and automatically maps those to the columns of the platform table. You should to do a visual check to ensure all assignments (types and column names) are correct.

Picture 9

If everything looks good, click save and you should get a message that mapping was saved successfully.

Picture 10

Now click cancel to go back out and notice how the mapping status is complete.

Picture 11

Validate the BOM Item Definition tree

Now that the mapping is complete, you should check if the hierarchy tree is okay, i.e. no errors.
To validate the BOM Item Definition, you can check the BOM Root Item List. Click on the BOM Root Item List on the BOM administration platform page.

Picture 12

Then you will get a list of BOM items.

Picture 13

Click the name of a BOM item. It will show the BOM with all the items/parts that makes up that product. Verify that there are no errors.

Picture 14

Define BOM Mapping configuration rules

Now you have a hierarchical tree of BOM items but the configurator is not yet aware of the BOM mapping. Therefore you need to associate configuration attributes to BOM items. This will enable customers to configure the appropriate items that are part of their product that they're trying to configure.

There are 3 types of BOM Mapping rules:

  • simple table-based rules, or
  • advanced BML-based rules, or
  • you can use both: a combination of the two.

The advantage of BML is that it gives you more direct control over how you implement the BOM Mapping rule. The downside is that it makes implementation and maintenance more complex.
To create a BOM Mapping rule, you need to go into the specific product model page ("Model Administration List"). Then for the specific model that you will create a configuration rule, on the Navigation Link menu, you need to select "BOM Mapping", and then click the "List" button.

Picture 15

That will take you to a BOM Mapping rules list for that product model. Every product model that has a BOM must have a BOM Mapping rule.

Picture 16

But before you create a new mapping rule you need to find out what name the rule needs to have. That name has already been defined. It's part of the BOM Item Mapping table. There is a column in the BOM Item Mapping table called the ParentBomMapVarName field. Values in that field are very long. They are formed by concatenating several values to form the fully qualified name. This is the syntax:
productFamilyVarName:productLineVarName:modelVarName:configRuleVarName

When you build the BOM Mapping rule for a particular model, the rule must match the configRuleVarName exactly, i.e. it is case sensitive. So you need to look up the rule name before you create the rule.

To look up the rule name, go to the BOM Item Mapping table. Below is an example of a BOM Item Mapping table.

Picture 17

Click on the Data tab and scroll all the way to the right. You will find the ParentBomMapVarName column.

Picture 18

Notice at the end of the long string that the configRuleVarName is serverBOM. And this is what the variable name of the BOM Mapping rule must be in order for this BOM to work in CPQ.
Now that we know what the rule name has to be, we can go build the BOM Mapping rule for this BOM item.
Go to the Admin homepage > Products > Catalog Definition

Picture 19

In “Supported Products” page click the List button

Picture 20

In “Supported Product Families” click “List” again by the product which contains the model you are working with.

Picture 21

In “Product Line Administration List” click “List” by Models.

Picture 22

We finally get to the "Model Administration List". Here we have to select BOM Mapping and click List.

Picture 23

When we get to our BOM Mapping Rules List page, you'll notice we have no BOM Mapping. We have create a new mapping rule. Click “Add”

Picture 24

The rule, and most importantly the variable name, needs to be named serverBOM. It must be Active. The condition type for mapping rules is always True. Since we have a BOM Item Mapping table, we can do Simple (Table-based) rules. So We want to pick the target BOM, i.e. the product to be MP-1000, and we want to tie that to the Oracle Quote to Order process. Click “Add and Back”. And that is all there is to creating a simple BOM mapping rule.

Picture 25

And with our BOM Mapping rule in place, we should now be able to configure a Small Business Server.
Click on Home link/icon, select “Configure Custom Small Business Server”

Picture 26

Validate table-based configuration rules

And now with the BOM Mapping rule in place, we can configure our Small Business Server.

Picture 27


I hope this has been helpful to demystify how to setup BOM Mapping in CPQ.

Julio Camara

Principal Solutions Architect


Previous Post

OAC Remote Data Connector with Jetty

Richard Williams | 12 min read

Next Post


Integrating Okta as Identity Provider to IDCS

Kiran Thakkar | 5 min read