ELM Baseline staging streams and how to use them

In the IBM Engineering Lifecycle Management (ELM) solution, the baseline staging stream is a special type of global configuration for assembling global baselines. In this post, we explore how to use baseline staging streams, and perhaps more importantly, how not to use them.

First, it helps to understand global baselines and the process of creating them. A global baseline is a global configuration (GC) that is immutable (unchangeable); all of its contributions are baselines as well, and you can’t remove or replace them. Typically, you create a global baseline at lifecycle milestones, to record a snapshot of your solution at that specific point in time – so later you can refer to it, or even use it as the starting point for a new global configuration.

When you baseline a GC, the system can automatically generate baselines for each of its stream contributions. While convenient, that automation is not always appropriate in more complex environments, where many component teams might manage their own local baselines asynchronously. The alternative is to stage the baseline, creating a baseline staging stream – kind of a “baseline in progress”.

stage baseline action

The baseline staging stream serves as an assembly area for the Configuration Lead to manually substitute baselines for each of the stream contributions, based on input from the different teams. Once all substitutions are made, you can then commit the global baseline.

replace stream in BSS

The baseline staging stream can also be useful should you realize a global baseline includes incorrect contributions, which you can’t remove or replace.  You could return to the original GC and start the baseline process again, but for limited changes, it might be more expedient to generate a baseline staging stream from the global baseline itself. You can then substitute the appropriate baseline contributions in the staging stream, and commit the new global baseline once complete.

While it’s common to progressively stabilize your working stream as you approach a lifecycle milestone, the baseline staging stream is not a stabilization stream. It is not intended as a context where engineering teams perform work or make changes. Do not add a baseline staging stream to a working global configuration, or try to create change sets or make content changes in the context of the staging stream. The system will prevent some of those operations (some in the near future), and they will not yield correct results. The only changes made in a baseline staging stream should be to replace the contributions with baselines.

If you require stabilization streams, ensure that you plan your stream strategy accordingly. Because a GC can include both stream and baseline contributions, you can replace stream contributions with baselines as different teams and components freeze, using parallel streams for stabilization and ongoing work; you might also define the configuration hierarchy to support lower-level GCs that can baseline on different schedules. Where appropriate, you can assign stabilization, “work ahead”, or lower-level GCs to dedicated team areas for the specific users who will work in them.

To summarize, the baseline staging stream is a temporary assembly area for the Configuration Lead to create a global baseline when automated recursive baselines aren’t appropriate. As a “baseline in progress”, it is not a stream for engineering teams to perform work.

Leave a comment