Safeguard
Supply Chain•

How do you move SBOM tracking from a spreadsheet to a platform?

Seven steps to move SBOM tracking from a spreadsheet to a platform: clean identifiers, regenerate, import, verify, run in parallel, then cut over.

Safeguard Security Team
4 min read

Migrate in seven steps: inventory what the sheet holds, clean the identifiers, regenerate SBOMs from source where you can, import, verify counts, run both in parallel for a release cycle, then retire the sheet as read only. Regenerating beats converting rows whenever the source is available.

Step 1: inventory the sheet

List every tab, product, release and column. Mark which rows came from a generator and which were typed by a person. Typed rows are the risk, because they may hold knowledge that exists nowhere else, such as a manual license decision.

Step 2: clean the identifiers

A package URL for each component makes matching dependable. Where the sheet has only names and versions, add the ecosystem and build the identifier. Flag rows where you cannot, rather than guessing. The post on which identifier an SBOM should use helps with the choice.

Step 3: regenerate where you can

For current and recent releases, regenerate the SBOM from source, lockfiles or images using your generator in the build. This is more accurate than converting rows. See how to generate an SBOM for npm, Python and Maven projects for starting points. Reserve conversion for old releases where the source is gone.

Step 4: carry over human knowledge

Collect notes people added to the sheet: license decisions, not affected rationales, supplier contacts, approved exceptions. Move them as annotations on components, with author and date. Do not paste them into a single comment field where they will be lost.

Step 5: import and verify

Import a pilot set of two or three products. Check:

CheckMethod
Component countsSheet or source file versus platform
RelationshipsSpot check twenty components
LicensesCompare for a sample
Status valuesMap your old vocabulary to the new one
ReleasesEach release is its own record

Fix mapping issues before importing everything.

Step 6: run in parallel

For one release cycle, keep updating both. Answer real questions from the platform and compare with the sheet. Differences are either platform errors you need to report or sheet errors you can now stop making. Set a date for the end of parallel running so it does not drag on.

Step 7: cut over and archive

On the cutover date, make the sheet read only, rename it with the date, and store it with the migration notes. Do not delete it. It is your fallback and a historical record. Update the runbook: where SBOMs live, who uploads, who approves, how to export. Review roles as described in which roles an SBOM platform needs.

Mistakes to avoid

  • Migrating everything at once. Pilot first.
  • Importing stale data and treating it as current. Mark the original timestamp.
  • Skipping the exit test. Confirm you can export before you commit, as in the round trip test.
  • Forgetting the people. Teach the readers how to find what they used to read in the sheet.

Where Safeguard fits

Safeguard scans produce SBOM and dependency inventories you can use as the regenerated baseline in step 3. Run the free scan at gold.safeguard.sh/scan on one repository to see the output.

Try it yourself

Click through it at your own pace, or open it full screen.

Compare the inventory view to your sheet and note which of your columns are missing from it, or the other way round.

Quick check

Should I convert old rows or regenerate SBOMs?

Regenerate wherever the source or image still exists. Convert only when it does not, and label those records as converted.

How long should parallel running last?

One release cycle is usually enough to expose mapping problems.

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.