Safeguard
Supply Chain•

How do you build a quarterly upgrade backlog from your SBOM?

Turn an SBOM into a ranked upgrade backlog in five steps: export, group, flag end-of-life and advisories, size the work, and cut it to fit the quarter.

Safeguard Security Team
4 min read

Export an SBOM for each service, merge them into one list, group components by ecosystem and owner, flag anything end-of-life or with a known advisory, size each group, and cut the list to what the quarter can hold. The result is a ranked backlog you can defend, not a wish list.

What an SBOM gives you that a lockfile does not

A lockfile describes one project. An SBOM, in CycloneDX or SPDX form, is a portable inventory you can produce for every service, container image and build output, then combine. For planning, that cross-service view is the point. It shows that eleven services share the same outdated logging library, which a single lockfile never will.

An SBOM lists what is present. It does not say what to upgrade first. You add that judgment in the steps below.

Step 1: Export and merge

Generate an SBOM per deployable unit in CI so the data is current, not a stale spreadsheet. Merge them into one table with columns for component name, version, ecosystem, which services use it, and whether it is direct or transitive.

Step 2: Group, do not list

A backlog of 600 components is unusable. Group them into upgrade units that a person can own:

  • By family. A framework and its plugins move together.
  • By runtime. Language runtime, base image and package manager belong in one unit.
  • By owner. Every unit needs a team name.

Most inventories collapse into a few dozen units this way.

Step 3: Flag the reasons to act

Add flags to each unit. Keep them factual and checkable.

FlagWhere it comes from
End of support within two quartersThe project's own published support policy
Known advisory with a fixed versionAdvisory databases, matched to your versions
Advisory in code you actually callReachability analysis on your code
Unmaintained upstreamRelease and commit activity, checked by hand
Major versions behindCompare against the latest release

The reachability flag is useful for ordering. A vulnerable function that your code never calls is real debt, but it ranks below one on a request path.

Step 4: Size it

Estimate each unit in a small, medium or large bucket using your own history rather than guessing in days. If a framework major took two engineers a sprint last time, that is your large. Our guide to taking a major version upgrade in small steps helps break large units down.

Step 5: Cut to fit

Rank by the flags, then draw a line where the quarter's capacity ends. Everything above the line is committed. Everything below goes into a visible deferred list with a reason, not into silence. Review that deferred list at the next planning session.

Try it yourself

Click through it at your own pace, or open it full screen. Look at how a dependency inventory shows direct and transitive components in one place, which is the raw material for step 2.

Where Safeguard fits

Safeguard produces SBOMs and scans dependencies across your repositories, so the merged inventory in step 1 does not have to be built by hand. A free scan is available at gold.safeguard.sh/scan.

Quick check

Do I need SPDX or CycloneDX?

Either works for planning. Pick the one your tools and customers already accept, and keep it consistent across services.

How often should the backlog be rebuilt?

Regenerate the SBOMs on every build, and re-rank the backlog once per quarter, with a short check each month for new advisories.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.