SBOM Schema Crosswalk: CycloneDX and SPDX Field Mappings

Field mapping reference for the CISA 2026 SBOM Minimum Elements across CycloneDX 1.6/1.7, SPDX 2.3 and SPDX 3.0, plus a general crosswalk for SBOM properties across formats.

← Back to Compliance Overview

This page maps the CISA 2026 Minimum Elements, and SBOM properties generally, to their specific field paths in CycloneDX, SPDX 2.3, and SPDX 3.0.

Need help with compliance? We can help you navigate your SBOM compliance journey.

Get in Touch

Note: The CISA Framing document’s published crosswalk table references CycloneDX v1.6. This page uses CycloneDX 1.7 schema paths, which are largely compatible but include some updates (e.g., tools object structure).

BSI TR-03183-2 Note: For EU CRA compliance via BSI TR-03183-2, SBOMs MUST use CycloneDX 1.6+ or SPDX 3.0.1+ in JSON or XML format. See the EU CRA page for full requirements.


CISA 2026 Minimum Elements: Format Mappings

The CISA 2026 Minimum Elements define 23 elements, of which 17 are data fields. The tables below map each data field to its representation in SPDX and CycloneDX.

Provenance: element names and definitions are quoted from the CISA 2026 Minimum Elements (29 July 2026). The format mappings come from an OpenSSF working document produced with the SPDX and CycloneDX communities. That mapping work is in progress and should be treated as community guidance rather than a ratified standard — verify against the format specifications before relying on it for conformance.

As CISA notes, the correspondence is not one-to-one: “Each Data Fields element need not correlate directly with a particular data field in an SBOM data format, and an implemented data field may satisfy one or more of the minimum elements.”

Component Data

CISA 2026 ElementSPDX 2.3SPDX 3.0CycloneDX 1.6CycloneDX 1.7
Component Producerpackages[].originatorPackage.originatedBymanufacturer.name or authors[].nameSame
Component Namepackages[].namePackage.namecomponents[].nameSame
Component Versionpackages[].versionInfoPackage.packageVersioncomponents[].versionSame
Component Identifierspackages[].externalRefs[] incl. SWID/gitoidpackageURL; externalIdentifier; contentIdentifiercpe, purl, swid, omniborId, swhidSame
Component Hash Valuepackages[].checksums[].checksumValueHash.hashValuecomponents[].hashes[].contentSame
Component Hash Algorithmpackages[].checksums[].algorithmHash.algorithmcomponents[].hashes[].algSame
Component Licensepackages[].licenseDeclaredhasDeclaredLicenselicenses[]; acknowledgement=declaredSame
Component Dependency Relationshiprelationships[] (DEPENDS_ON)Relationship: dependsOndependencies[].ref / dependsOn[]Same

SBOM Metadata

CISA 2026 ElementSPDX 2.3SPDX 3.0CycloneDX 1.6CycloneDX 1.7
SBOM AuthorcreationInfo.creators[] Person/OrgcreationInfo.createdByAgent.namemetadata.manufacturer.name or authors[].nameSame
SBOM Author SignatureExternal signed envelopeExternal signed envelopesignature (JSF)signature (JSF)
SBOM Data Format NamespdxVersion = "SPDX-2.3"creationInfo.specVersion = "3.0.1"bomFormat + media typeSame
SBOM Data Format VersionspdxVersioncreationInfo.specVersionspecVersion = 1.6specVersion = 1.7
SBOM Generation ContextcreationInfo.commentSoftware/Sbom.sbomTypemetadata.lifecycles[].phaseSame
SBOM TimestampcreationInfo.createdcreationInfo.createdmetadata.timestampSame
SBOM Tool NamecreationInfo.creators[] Tool entrycreatedUsingTool.namemetadata.tools.components[].nameSame
SBOM Tool VersionParsed from creators[] Tool entryTool → versioned Packagemetadata.tools.components[].versionSame
SBOM VersiondocumentNamespaceSBOM-SPDXIdentifierversion + serialNumberSame

Notes on the mappings

SBOM Author Signature has no native SPDX representation. In SPDX 2.2 through 3.0 it requires an external signed envelope. SPDX 3.1 (candidate) introduces Artifact plus an external signature. CycloneDX has supported JSF signatures since 1.5, and CycloneDX 2.0 (candidate) moves to a list of JSS signature objects.

Component Producer moved in CycloneDX 1.6. In 1.5 it maps to components[].author with a property where needed; from 1.6 onward manufacturer.name or authors[].name is the better fit. CycloneDX 2.0 (candidate) replaces both with components[].parties[].

Component Producer is not the same as supplier. The older crosswalk below maps NTIA’s “Supplier Name” to components[].supplier.name. The OpenSSF mapping for CISA 2026’s Component Producer uses manufacturer/authors instead, reflecting that Component Producer means the entity that originated the software rather than the one that supplied it. If you populate only supplier, review whether it carries the meaning the 2026 element expects.

Component License in CycloneDX should be explicit about acknowledgement. The mapping specifies acknowledgement=declared, distinguishing a declared licence from a concluded one.


Document-Level Metadata

PropertyCycloneDX 1.7SPDX 2.3SPDX 3.0
SBOM Authormetadata.authors[]creationInfo.creators[]creationInfo.createdBy
Timestampmetadata.timestampcreationInfo.createdcreationInfo.created
Tool Name/Versionmetadata.tools.components[] and/or metadata.tools.services[]creationInfo.creators[] (tool identifier)creationInfo.createdUsing
Generation Contextmetadata.lifecycles[].phaseCreatorComment or DocumentCommentProfile-dependent properties

Notes:

  • The CISA Framing crosswalk maps “SBOM Author Name” to metadata.authors (CycloneDX v1.6). CycloneDX 1.7 additionally provides metadata.manufacturer for organizational authorship if needed.
  • In CycloneDX 1.7, metadata.tools is an object containing components and/or services arrays. The legacy array format is deprecated.
  • The metadata.lifecycles[].phase field captures the stage(s) in which data in the BOM was captured (design, pre-build, build, post-build, operations, discovery, decommission).
  • SBOM Generation Context (per CISA 2026) is “the relative software lifecycle phase and data available at the time the SBOM author generated the SBOM.” For complete representation, you may also use metadata.tools (to express tooling) and metadata.properties[] (for additional context).

Component Identification

PropertyCycloneDX 1.7SPDX 2.3SPDX 3.0
Supplier Namecomponents[].supplier.namepackages[].supplierOrganization agent linked to element
Component Namecomponents[].namepackages[].nameElement name field
Component Versioncomponents[].versionpackages[].versionInfoElement version field
Package URL (purl)components[].purlpackages[].externalRefs[]External identifier support
CPEcomponents[].cpepackages[].externalRefs[]External identifier support
Component Hashcomponents[].hashes[]packages[].checksums[]Verification/checksum properties

Relationships

PropertyCycloneDX 1.7SPDX 2.3SPDX 3.0
Dependency Relationshipdependencies[].ref + dependencies[].dependsOn[]relationships[] (DEPENDS_ON)Relationships between elements

PropertyCycloneDX 1.7SPDX 2.3SPDX 3.0
Licensecomponents[].licenses[]packages[].licenseDeclared / packages[].licenseConcludedRich licensing model (profile-dependent)

Lifecycle Properties (FDA/CLE)

PropertyCycloneDX 1.7SPDX 2.3SPDX 3.0
Support Levelcomponents[].properties[]annotations or externalRefsExtension/property modeling
End-of-Support Datecomponents[].properties[]packages[].validUntilDateExtension/property modeling

Note: SPDX 2.3’s validUntilDate field is defined as the “end of support period for the package from the supplier,” making it the most appropriate mapping for FDA’s end-of-support date requirement.


BSI TR-03183-2 Component Properties

BSI TR-03183-2 requires additional component properties not covered by standard SBOM fields. These use the BSI CycloneDX property taxonomy for CycloneDX and software_additionalPurpose for SPDX.

PropertyCycloneDX 1.6+SPDX 3.0.1
Filenamecomponents[].properties[name="bsi:component:filename"]software_File.name via hasDistributionArtifact relationship
Executable propertycomponents[].properties[name="bsi:component:executable"]Add executable to software_additionalPurpose list
Archive propertycomponents[].properties[name="bsi:component:archive"]Add archive to software_additionalPurpose list
Structured propertycomponents[].properties[name="bsi:component:structured"]Add container (structured) or firmware (unstructured) to software_additionalPurpose
Effective licencecomponents[].properties[name="bsi:component:effectiveLicense"]Custom relationship with relationshipType: other and comment: hasEffectiveLicense
Hash (deployable)components[].externalReferences[type="distribution"].hashes[alg="SHA-512"]software_File.verifiedUsing via hasDistributionArtifact relationship
Dependency completenesscompositions[].aggregate (complete/incomplete/unknown)Relationship.completeness (complete/incomplete/noAssertion)

Notes:

  • BSI requires SHA-512 specifically for the deployable component hash
  • The BSI property taxonomy uses the bsi: namespace prefix for CycloneDX properties
  • For detailed JSON examples, see BSI TR-03183-2 Section 8.2


Disclaimer: This page represents our interpretation of the referenced frameworks and standards. While we strive for accuracy, we may have made errors or omissions. This content is provided for informational purposes only and does not constitute legal advice. For compliance decisions, consult the official source documents and seek qualified legal counsel.

← Back to Compliance Overview