Product Nesting

Setting up product nesting or hierarchical products is a way to create complex configurations, which involve configurations within configurations. This type of product configuration structure can be setup with unlimited levels of nesting. The configuration that references other configurations is referred to as the parent product or configuration. While the configurations that are being referenced are referred to as child product or configuration.

For example, the user may enter the configuration of a server rack, which requires configuring not only the server rack options but also each blade server within the rack. Product nesting allows the parent product (server rack) to be configured along with child configurations (blade servers).

Product nesting or hierarchical products also provides a way to configure product systems or solutions. For example, the user can configure an office’s computer setup, which includes choosing the computers, printers, servers, switches, network cable, etc. Some selections apply to the entire office – network cable, switches, etc – while other products need to be configured as child products – computers, server, etc.

The product display types Configurable Product, Collection of Configurable Products, System (List) of Configurable Products, and Parent/Child System (List) of Configurable Products allow product nesting or hierarchical products to be setup (see Product Display Types for more information on each of these display types). Product nesting is setup by creating references to other products from the parent configuration.

Types of Product Nesting

By referencing other products in a configuration, values from the referenced/child product can be used within the parent configuration and values from the parent configuration can be used in the child configuration. These product references can be setup in 3 different ways:

  1. Attribute value(s) referencing simple products
    1. The simple product’s name, part number, prices (price, cost, recurring price/cost), and description are used for the attribute value.
  2. Attributes referencing a configurable product
    1. This way requires the attribute to be set as a Subproduct display type. This allows the user to enter into the referenced product’s configuration – with all of its attributes, rules and calculations. When finished, the user will save the referenced product’s configuration, taking them back to the parent product. This is not the recommended method of setting up nested products. Using containers is the recommended method.
  3. Container attribute referencing configurable products
    1. In the container editor (Setup»Products»Attributes), configurable products are referenced under the Content tab (see Attribute Container for more information on setting up containers). Attributes from the referenced product(s) can then be added as columns under the Columns tab. Under the Actions tab, the setting “Open new configurator” determines whether the referenced product’s configuration opens when adding a new row or if the configuration is done through the columns set as attributes.

Unlimited Product Nesting Levels

The product nesting or hierarchical product structure can be setup with unlimited levels. This provides a way to create a deep relationship structure such as:

1. Parent configuration (first level)
1.1. Child configuration (second level)
1.1.1. Grandchild configuration (third level)
1.1.1.1. Great-grandchild configuration (fourth level)
1.1.1.1.1. …

Each configuration level can have its own attributes, rules, pricing, etc. Attributes within each level can also be set to list as line item. These line items will be shown appropriately on the quote (more on this below).

Setting Up a Product Nesting Structure

As discussed above, there are 3 ways to setup product nesting, which can be done using simple products or configurable products. The type of product being referenced will determine the method of referencing and also the product display type required.

Simple Products

Simple products are referenced in order to use the product’s name, part number, description, and pricing (price, cost, recurring price/cost) in the parent product. This provides a way for the simple product to be quoted separately from the catalog or within a configuration, which might have rules and unique pricing applied to it. This also proves to be an efficient way of setting up options within product configurations, since any changes made to the simple product are automatically updated in the parent product as well. This reduces the amount of maintenance required for products that are quoted from the catalog and within configurations.

There are 2 ways in which simple products can be referenced in the parent configuration:

  1. From an attribute value. While editing the parent product, go to the Product Attributes/Options tab and edit an existing attribute already added to the product. Click the magnifying glass icon next to the Reference Product field of an attribute value. This will open a window where a simple product can be searched and selected. Once a simple product has been selected, the Reference Product field will show the name of the product and the part number and price fields will be populated with the simple product’s values. Simple products can also be referenced easily by clicking the Add Products as Values button when editing an attribute or when creating a new attribute. This provides a way to create new values by selecting products.
  2. From an attribute container. Simple products can also be referenced from an attribute container. These references are created in the container editor (Setup»Products»Attributes) under the Content tab. See Attribute Container for more information. Container columns need to be setup with an expression to display the simple product values, such as product name, price, etc. A CTX tag with the objects MyContainer.CurrentRow.Product can be used to get these values. When multiple products are referenced from a container, the user will be prompted to select a product when adding a new row.

In both of the above methods, remember to set the attribute to List as Line Item in order to see the simple product values in the quote.

When referencing simple products, any of the following product display types can be used for the parent configuration:

  • Configurable Product
  • Collection of Configurable Products
  • System (List) of Configurable Products
  • Parent/Child System (List) of Configurable Products

Each display type provides different behavior when the configuration is added to the quote. Selecting the most appropriate display type will depend on how the parent configuration should ultimately be displayed when added to the quote. See Product Display Types for more information on each of these product display types.

Configurable Products

Configurable products may be referenced for different reasons:

  • A configuration, which can be quoted on its own, can also be configured within one or more other configurations. For example, a backup solution requires configuration and can be quoted standalone. When configuring a server, the backup solution configuration can be accessed from within the server configuration. Different pricing or configuration rules can also be applied in the backup solution configuration based on the options selected for the server.
  • Multiple instances of a configuration can be included within another configuration. For example, a router configuration not only includes options for the chassis but also configuration of the cards that are inserted into the chassis. Each card added to the chassis provides its own configuration, including rules, pricing, etc. Additional configuration rules can also be applied between the cards in the chassis and to all cards based on options selected for the chassis.

Setting Up the Attribute Container

The best way to reference a configuration from the parent configuration is through an attribute container. These references are created in the container editor (Setup»Products»Attributes) under the Content tab. See Attribute Container for more information.

Additionally, settings under the Actions tab determine the behavior of configuration within the container. The referenced configuration will open when adding a new row in the container if the Open New Configurator option is selected. If this option is not selected, then columns in the container need to be used to configure the product. More on this below.

Container columns can be setup to display the referenced configuration values, such as attributes, descriptions, price, etc. This can be done through (1) using a CTX tag with the objects MyContainer.CurrentRow.Product in the column calculation field to get price, part number, etc. or (2) using container columns that reference attributes from the referenced configuration. The latter method provides a way to select options in the referenced configuration without opening the configuration (when Open New Configurator is not checked). The column should be set to a display type such as Drop Down, Checkbox, etc.

Setting Up the Parent Configuration

Once the attribute container has been setup, it needs to be added to the parent configuration under the Product Attributes/Options tab. The List as Line Item option needs to be selected for the attribute in order to see the container rows as line items in the quote.

When referencing configurable products, any of the following product display types can be used for the parent configuration:

  • Configurable Product
  • Collection of Configurable Products
  • System (List) of Configurable Products
  • Parent/Child System (List) of Configurable Products

Each display type provides different behavior when the parent configuration is added to the quote. Selecting the most appropriate display type will depend on how the parent configuration should ultimately be displayed when added to the quote. See Product Display Types for more information on each of these product display types.

Shared Attributes Between Parent and Child Configurations

Attributes can also be shared between parent configurations and child configurations. When this is done, the selected (or calculated) values from the parent configuration can be passed to child configuration, whether the child configuration has been opened yet or not. For example, an Internet Service configuration has child configurations for components of the service. One of the attributes selected in the parent configuration is Internet Speed. Each of the components must also have the same Internet speed as parent. When the speed is selected in the parent, the value is passed to all the child configurations.

The behavior in which attribute values are passed to child products can be controlled in the parent product editor. For more details, see Pass Attribute Values From Parent To Child Configuration.

Quote Line Item Enumeration

When more than 2 levels of product nesting are being used, the line item enumeration in the quote is the way in which the different levels of nesting can be identified. The way the configuration’s line items are displayed in the quote largely depends on the display type selected for the parent configuration.

Setup»General»Application Parameters under the Shopping Cart and Quotes tab, the parameter Roll-up Cart Items must be set to be TRUE in order for the following line item enumeration to behave properly.

The Configurable Product display type will represent the line items without any separation between nested products. This product display type provides the least amount of distinction between nested products but will still display them as line items.

The System (List) of Configurable Products and Collection of Configurable Products display types represent product nesting line items in the proper hierarchy. These display types will ignore the parent configuration along with any attributes marked as List as Line Item that do NOT reference any products. They will only display the referenced products in the quote.

Figure 1 represents the quote line item hierarchy for these product display types:

Figure 1 - Product nesting in System of Configurable product display type


The Parent/Child System (List) of Configurable Products display type also represents product nesting line items in the proper hierarchy. This display type, on the other hand, does not ignore the parent configuration or any attributes marked as List as Line Item. It will display the parent configuration and its line items, along with all referenced products. Figure 2 represents the quote line item hierarchy for this product display type:

Figure 2 - Product nesting in Parent/Child product display type

Item sorting in the quote

When user wants to sort items in the quote, following rules must be applied:

  • Within one main item we display line items before child main items and the child main item can not be moved before line items.
  • Only main items at the same level can be reordered.
  • If the main item is the first child it can not be moved up (arrow exists but nothing is happened when you click on it)
  • If the main item is the last child it can not be moved down (arrow exists but nothing is happened when you click on it)
  • When you move main item up or down all children will be moved with the parent item.
You are here: SAP Sales Cloud CPQ Online HelpBest PracticesProduct AdministrationProduct Nesting