Creating a variant by branching

Create a variant when your team must change the same product in different ways or independently of each other. After you branch a product, teams can work in parallel. You can create a variant from either a stream or a baseline.

Before you begin

  • You must have the Configuration Lead or Administrator role, which includes permission to create streams from either streams or baselines and permission to modify stream attributes, links, and contributions (Modify stream attributes + replace configurations + change hierarchies).
    Note: To control who can replace contributions or add, remove, and move contributions in streams, administrators can set finer-grained permissions. For details, see "Configuration Lead" in Role-based permissions for Global Configuration Management (GCM).
  • Creating a stream directly from another stream does not create a baseline. To capture a frozen set of artifacts for auditing or regulatory purposes, create a baseline and then branch from that baseline. See Creating a baseline to save a milestone.

About this task

Teams can branch from a stream or baseline (initial baseline or a later baseline) at any point during development to create a variant.

Select the best starting point for the teams. Teams use branching to accomplish goals like these:
  • Create a stream for parallel development. For example, your team is working on version 3.0, and a customer submits a defect against version 2.0 that must be patched.
  • Create a stream to perform experimental work. For example, a small tiger team needs to test a sensor that conforms to new standards before the sensor is added to a product line.
  • Create a stream to stabilize work before you complete a release. For example, in preparation for a release, a team branches from the main stream and then uses the separate stream to continue bug-fix development without destabilizing the main stream. The team selectively delivers necessary changes to the main stream so that they control the changes that are pulled in.
  • Create a stream to experiment and try out changes, or to explore whether another stream should replace an existing stream. For example, your team is working on the Adaptive Cruise Control component of an Automobile platform, and a question arises whether the Luxury Automobile should have a more sophisticated version. You temporarily replace the current stream with the one for the more sophisticated cruise control. You can always replace the new stream with the one you used before.
    Note: Streams created directly from other streams are not intended to replace the original stream.


  1. Find the configuration that you want to branch from and then select it.

    To find a specific baseline of the stream: In the tree view, click the Baselines tab. Select the appropriate baseline. If the Baselines tab is empty, select the initial baseline, which is shown in the Attributes tab next to Created From:. You can also create a baseline to branch from.

  2. In the tree view, right-click the configuration and select Create Stream.
  3. Enter a name suffix. The name suffix is used to form new stream names by appending it to the component name of each configuration.
  4. Click New Tree.
  5. Add tags or a branch value, if necessary.

    After the variant is created, you can modify tag and branch values, and add or remove tag and branch values. Learn about adopting changes made to attribute and link labels or values after they were added to a global configuration in Adopting changes to attribute and link labels or values.

    To learn about tags and branch values, see Tags, attribute values, and links.

    Configuration leads who need to create branch values can see Managing type definitions. Configuration leads who need to define tags can see Adding tags, attributes, and links to a global configuration or component.

  6. Create the variant.

    A branch is a copy of the global configuration. The configurations that are copied from IBM® Engineering Lifecycle Management (ELM) applications initially match what is already in the global configurations. If users in contributing applications set their Configuration Context to the newly branched global configuration (a stream), they cannot work because their local configuration (set in the Local Configuration) is still a baseline.

    Image shows "Configuration Context" with global configuration stream and local configuration baseline.

    Starting in version 6.0.1, you can create a stream in the GCM application for a configuration contributed by a different ELM application, if you have permission to create streams in the contributing applications. After you select and branch the configurations in the hierarchy that you need to create variants for, the GCM application automatically creates the required streams up the hierarchy for you.

    Streams from the Change and Configuration Management (CCM) application must be created manually in that application, and then you can replace the baselines with the streams. For other contributing ELM applications, if the stream cannot be created, fix the problem and then create the stream again. Only the streams that failed are created after you fix the problem.

  7. In the tree view, begin working in the new branch.

    To refine the configuration so that it gathers only the configurations applicable for the branched product, see Managing configurations.