Skip to content

Add SBOM manufacturer during export - #6935

Open
Zuplyx wants to merge 2 commits into
DependencyTrack:mainfrom
Zuplyx:issue-3935-sbom-manufacturer
Open

Add SBOM manufacturer during export#6935
Zuplyx wants to merge 2 commits into
DependencyTrack:mainfrom
Zuplyx:issue-3935-sbom-manufacturer

Conversation

@Zuplyx

@Zuplyx Zuplyx commented Aug 10, 2026

Copy link
Copy Markdown

Description

This adds support for the SBOM manufacturer field (author of the SBOM).
If an imported SBOM contains the manufacturer field, it is persisted.
Additionally a new instance setting can be used to provide a default manufacturer, which is used if the imported SBOMs do not contain a manufacturer.

Addressed Issue

fixes #3935
related to #6852

Additional Details

Note that the CycloneDX manufacturer field is only available from v1.6 onward, therefore the manufacturer is not included in the SBOM downloaded via the UI (hardcoded to v1.5).
If requested it would also be possible to enhance this feature with a per-project manufacturer setting, so projects could deviate from the instance default or override the imported SBOM's manufacturer.

Related PRs: DependencyTrack/frontend#1737 DependencyTrack/docs#215

Checklist

  • I have read and understand the contributing guidelines
    - [ ] This PR fixes a defect, and I have provided tests to verify that the fix is effective
  • This PR implements an enhancement, and I have provided tests to verify that it works as intended
  • This PR introduces changes to the database model, and I have updated the migration changelog accordingly
  • This PR introduces new or alters existing behavior, and I have updated the documentation accordingly
    - [ ] This PR is a substantial change (per the ADR criteria), and I have added an ADR under docs/adr/

Persists manufacturer of imported SBOMs.
Adds setting for instance wide default for manufacturer.
Export uses either the saved manufacturer of the import or the instance wide default.

Signed-off-by: Patrick Schmitt <patrick_98@t-online.de>
@owasp-dt-bot

owasp-dt-bot commented Aug 10, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@codacy-production

codacy-production Bot commented Aug 10, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

Comment on lines +874 to +887
/**
* Resolves the organization that manufactured the BOM document itself
* (CycloneDX {@code metadata.manufacturer}), as opposed to the manufacturer
* of the project/subject component described by the BOM.
* <p>
* A manufacturer captured from a previously imported BOM for this project
* takes precedence over the system-wide default configured in Admin > General.
*/
private static OrganizationalEntity resolveBomManufacturer(final Project project, final QueryManager qm) {
if (project != null && project.getMetadata() != null && project.getMetadata().getManufacturer() != null) {
return project.getMetadata().getManufacturer();
}
return manufacturerFromConfig(qm);
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always falling back to a global default is not safe.

This assumes all projects in the portfolio are your own, which in many cases they aren't. For example if you consume BOMs from your vendors, or you monitor other OSS projects, and so on.

Even if all projects were strictly internal, you could still have multiple sub-organizations / departments with different logical business entities, also making a single global default impractical.

Regardless of the global default, import and export of manufacturers data is something we should support. So perhaps it's worth decoupling the two things.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But does it really matter who owns the project? The manufacturer in question here is the manufacturer of the SBOM itself and not the project/component described by the SBOM. In my opinion a global default makes sense in this case, since whoever operates the DependencyTrack instance is de-facto the manufacturer of all SBOMs exported from it.

Alternatively, I could also make the SBOM manufacturer configurable at a project level, maybe in the Identiy tab. This way individual projects could overwrite the global default, without having to alter the SBOMs they import.

Signed-off-by: Patrick Schmitt <patrick_98@t-online.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Populate Manufacturer field in downloaded SBOM's

3 participants