How to manage product configuration?

This article talks about how to manage product configuration inside DocDokuPLM platform.

The product structure is made of assemblies and parts. Configuration management is the activity of selecting the constituent components of the product that was designed as configurable. In our software, the product configuration management is based on 2 concepts:

  • Optional usage links
  • Substitute links

As we can guess an optional usage link is not mandatory, thus a viable product structure instance could exist without it.


A substitute link is the object which holds the alternative link to a sub-component of a given assembly. It carries the identity of the variant part as well as the quantity and the unit which hence could be different from the substituted usage link. For example, the screenshot above shows that the assembly could be composed of one LG or one Samsung screen.

Therefore, configuring a product consists of making all those choices, selecting or not the variants, retaining or not the optional parts. The role of the baselines is to capture those product configurations.


Baselines freeze a PBS (Product Breakdown Structure) in order to subsequently create one or more instances of product without any ambiguity on their composition.
Apart from the configuration choices, they encapsulate the precise version of each component. A baseline has to be complete and self-sufficient in the sense it must fully set up the product.

There are two kinds of baselines : “latest” and “released”.
The first one includes the parts in their latest version while the second gathers only part versions which have the “released” status. Creating a baseline is straightforward and does not require any user interaction if the PBS does not define neither variant nor optional part. Otherwise the user will have to determine himself:


In the previous example, part P0888 (called “TABLE”) is an assembly which is composed of either part P777 (SCREEN SAMSUNG) or part P779 (SCREEN LG). The baseline creator must choose. After that, we can see two optional parts P99A and PLLK.

Once all the choices have been made, the  baseline can be created.


The baseline creation process just described will be repeated every time we want to create one. This could be cumbersome and error prone. In fact, it is easy to create inconsistent and unsustainable configurations.

That is why, it is interesting to save these choices in a “Configuration” type object. These objects can then be applied later when creating baselines.

The configurations and baselines creation look similar but the main difference is that configurations do not need to be complete, they can capture only a subset of the choices which have to be made the rest will be provided by the creator of the baseline.