Skip to content

[REFACTOR]: Role-based organizationalEntities (manufacturers, suppliers, etc) into extensible objects #718

Closed

Description

@stevespringett

A lot of discussion in the HBOM working group about different types of roles an entity may play, and which need to be captured in an HBOM.

Based on these discussions, the idea is to replace the dedicated "manufacturer", "supplier" and similar properties that take on a role, with a generic "entities" property which supports both organizationalEntity and organizationalContact along with a "role" property.

Much like the lifecycles objects, you can use the enums or can define your own.

Activity

  1. added this to the 2.0 milestone on Nov 12, 2025
  2. stevespringett commented on Jan 15, 2026

    @stevespringett
    MemberAuthor

    Proposed Change: Unified Entity-Role System

    Summary

    This proposal introduces a unified entities array to replace the various scattered role-specific properties throughout the CycloneDX specification (e.g. authors, manufacturer, supplier, custodians, stewards, owners, licensor, licensee, purchaser, etc.).

    Each entity:

    • Represents either a person or an organization (mutually exclusive)
    • Has one or more roles from a predefined taxonomy or custom role definitions
    • Supports an optional priority to establish preference order when multiple entities share the same role
    • Can be a complete object or a reference (bom-ref) to a previously defined entity

    Predefined Roles (27)

    assembler, author, manufacturer, supplier, distributor, repackager, publisher, maintainer, contributor, licensor, licensee, purchaser, owner, custodian, steward, asserter, reviewer, annotator, signatory, committer, auditor, integrator, operator, qualityControl, securityContact, supportContact, legalContact

    Custom roles may also be defined using a name and description.

    Usage

    The entities array replaces every instance that relies upon role-specific properties today (e.g. authors, manufacturer, supplier, custodians, stewards, owners, etc.) throughout the specification.

    "entities": [
      {
        "bom-ref": "entity-bom-author",
        "person": {
          "name": "Alice Example",
          "email": "alice.example@example.com"
        },
        "roles": ["author"]
      },
      {
        "bom-ref": "entity-bom-manufacturer",
        "organization": {
          "name": "Acme Inc",
          "url": ["https://www.example.com"]
        },
        "roles": ["manufacturer"]
      }
    ]

    Benefits

    • Consolidation: Eliminates redundant patterns across the specification
    • Flexibility: Entities can hold multiple roles simultaneously
    • Extensibility: Custom roles accommodate domain-specific needs without schema changes
    • Priority ordering: Supports complex supply chain scenarios with multiple ranked suppliers or other parties
    • Referenceability: Entities can be defined once and referenced elsewhere, reducing duplication

    Example

    {
      "$schema": "https://cyclonedx.org/schema/bom-2.0.schema.json",
      "specFormat": "CycloneDX",
      "specVersion": "2.0",
      "version": 1,
      "serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79",
      "metadata": {
        "timestamp": "2025-01-15T10:30:00Z",
        "entities": [
          {
            "bom-ref": "entity-bom-author",
            "person": {
              "bom-ref": "person-alice",
              "name": "Alice Example",
              "email": "alice.example@example.com",
              "phone": "800-555-1212"
            },
            "roles": ["author"]
          },
          {
            "bom-ref": "entity-bom-manufacturer",
            "organization": {
              "bom-ref": "org-acme",
              "name": "Acme Inc",
              "url": ["https://www.example.com"]
            },
            "roles": ["manufacturer"]
          }
        ]
      },
      "components": [
        {
          "type": "device",
          "bom-ref": "component-sensor-module",
          "name": "AcmeSense 3000",
          "version": "2.1.0",
          "description": "Multi-spectrum environmental sensor module with integrated signal processing unit.",
          "entities": [
            {
              "bom-ref": "entity-component-manufacturer",
              "organization": {
                "bom-ref": "org-acme-hardware",
                "name": "Acme Hardware Division",
                "url": ["https://hardware.example.com"]
              },
              "roles": ["manufacturer", "assembler"]
            },
            {
              "bom-ref": "entity-component-supplier-primary",
              "organization": {
                "bom-ref": "org-widgets-supply",
                "name": "Widgets Supply Co",
                "url": ["https://widgets-supply.example.net"],
                "contact": [
                  {
                    "name": "Sales Department",
                    "email": "sales@widgets-supply.example.net",
                    "phone": "800-555-2424"
                  }
                ]
              },
              "roles": ["supplier"],
              "priority": 1
            },
            {
              "bom-ref": "entity-component-supplier-secondary",
              "organization": {
                "bom-ref": "org-globalparts",
                "name": "GlobalParts International",
                "url": ["https://globalparts.example.org"],
                "contact": [
                  {
                    "name": "Customer Service",
                    "email": "orders@globalparts.example.org",
                    "phone": "800-555-3636"
                  }
                ]
              },
              "roles": ["supplier"],
              "priority": 2
            }
          ]
        }
      ]
    }

    Example Walkthrough

    Metadata Section

    The metadata.entities array defines two entities associated with the BOM itself:

    1. Alice Example (Person)

      • Role: author
      • Represents the individual who created this BOM document
    2. Acme Inc (Organization)

      • Role: manufacturer
      • Represents the organization that manufactured the product described by this BOM

    Components Section

    The example includes a single hardware component, a sensor module, with its own entities array defining three parties:

    1. Acme Hardware Division (Organization)

      • Roles: manufacturer, assembler
      • The organization that both manufactures and assembles the sensor module
      • Demonstrates that a single entity can fulfil multiple roles
    2. Widgets Supply Co (Organization)

      • Role: supplier
      • Priority: 1 (primary)
      • The preferred supplier for this component
    3. GlobalParts International (Organization)

      • Role: supplier
      • Priority: 2 (secondary)
      • The alternate supplier, used if the primary is unavailable

    Priority in Practice

    The priority property establishes preference order among entities sharing the same role. In this example:

    Supplier Priority Meaning
    Widgets Supply Co 1 Primary supplier — first choice
    GlobalParts International 2 Secondary supplier — fallback option

    This pattern is common in hardware supply chains where procurement teams maintain approved vendor lists with primary and alternate sources. Lower priority values indicate higher preference.


    Draft PR is #776 currently containing only the entities definition in the common schema.

    Note: If this proposal is accepted, work on refactoring the schema to implement the unified entity-role system will commence. No further schema changes will be made prior to acceptance.

  3. stevespringett commented on Feb 5, 2026

    @stevespringett
    MemberAuthor

    cc: @bhess

  4. stevespringett commented on May 14, 2026

    @stevespringett
    MemberAuthor

    The proposed example outlined in this ticket (#718 (comment)) is obsolete and was rejected by TC54. Please refer to #930 for the new design, which is much more extensible, is unified, and addresses the requirements outlined in this ticket, while also providing an abstract capability useful in threat modeling and use case development. It also addresses the concerns raised by TC54.

  5. jkowalleck commented on May 15, 2026

    @jkowalleck
    Member
  6. added a commit that references this issue on Jun 28, 2026
    aae4886
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions