Skip to main content

Supplier Guide: Battery Pass Data Sharing with Henkel

This guide explains how suppliers can prepare, publish, and exchange Battery Pass data with Henkel using the Catena-X dataspace.

This guide keeps the same technical requirements as the original documentation but presents them in a clearer and more supplier-friendly way.

1. Introduction

Batteries are important for the transition to clean energy and for the circular economy. The European Union has introduced the Batteries Regulation (EU 2023/1542) to make sure that batteries placed on the EU market are sustainable, safe, and circular across their full life cycle. This includes raw material sourcing, manufacturing, use, collection, reuse, and recycling.

The Battery Pass use case supports these regulatory objectives by enabling standardised battery passport information to be exchanged between business partners. For suppliers, this means preparing the required data in the agreed structure and making it available through the Catena-X dataspace so that Henkel can consume it securely.

The European Commission provides further information about the EU Batteries Regulation and related policies here:

2. Business Process

This use case describes how Battery Pass data is shared from a data provider to a data consumer. In this document, the supplier is usually the data provider, and Henkel is usually the data consumer. The process covers five main activities: publishing the relevant data asset, defining access and usage policies, negotiating the data contract, enabling data access, and exchanging feedback notifications after the data has been processed.

3. Definitions & Terminology

This section explains the technical terms used in the Catena-X dataspace and in the Battery Pass data exchange process.

EDC (Eclipse Dataspace Connector)

The Eclipse Dataspace Connector (EDC) is the software component used to exchange data securely between participants in a dataspace. It allows a supplier to make data available to Henkel while keeping control over access and usage conditions.

The EDC is responsible for:

  • Exposing assets to other participants

  • Enforcing access and usage policies

  • Managing contract negotiations and agreements

  • Handling data transfer between provider and consumer

Submodel

A Submodel is a structured data set that describes one specific aspect of a Digital Twin. It follows an Aspect Model and the Asset Administration Shell (AAS) standard.

In the Battery Pass context, submodels are used to structure information such as:

  • Product identification

  • Material composition

  • Hazardous substances

  • Product Carbon Footprint data

Asset

An Asset is the data resource that a participant makes available in the dataspace. For the supplier, this means creating an asset that exposes the relevant Battery Pass submodel through the connector so that Henkel can discover and access it under the agreed conditions.

Digital Twin (Asset Administration Shell - AAS)

A Digital Twin, implemented as an Asset Administration Shell (AAS), is the standardised digital representation of a physical or business asset. It can contain several submodels, each describing a different aspect of the asset during its life cycle.

Digital Twin Registry (DTR)

The Digital Twin Registry (DTR) is a Catena-X service that acts as a directory for Digital Twins. It stores metadata and references to asset data so that authorised partners can discover and access Digital Twins securely across the Catena-X ecosystem.

Aspect Model

An Aspect Model defines the structure, meaning, and expected format of the data in a submodel. It ensures that all Catena-X participants interpret and exchange the data in the same way.

Policies

A Policy defines the rules for accessing and using a data asset. Policies determine who may access the data, under which conditions, and for which purpose. Two policy types are used:

  1. Access Policy

  2. Usage Policy

  • Access Policy: defines who is allowed to access the asset or submodel.

  • Usage Policy: defines how the data may be used after access has been granted.

Contract Definition

A Contract Definition connects an asset with the relevant access and usage policies. It defines the terms under which the data asset can be shared.

Contract Negotiation

Contract Negotiation is the process in which the data consumer and data provider agree on the access conditions for a data asset, based on the defined policies.

Contract Agreement

A Contract Agreement is the final agreement between the parties. Once it is in place, the data transfer can take place according to the agreed conditions.

Transfer Process

The Transfer Process is the technical process used to exchange data between the provider and the consumer after the contract agreement has been established.

Catalog

A Catalog is the list of assets exposed by a provider. The consumer queries the catalog to find the data asset that should be accessed.

Digital Twin Event API

The Digital Twin Event API is used to send and receive event-based updates related to Digital Twins. In this process, it supports notifications such as submodel updates and feedback messages.

4. System Overview

4.1 Components Used

The Battery Pass implementation uses several technical components. The table below explains their role in practical terms for suppliers.

  • The EDC Connector is used to expose and consume data assets, manage contract negotiations, and handle data transfer between partners.

  • The Digital Twin (AAS) is used to represent the battery as a digital object, containing all relevant data in structured form.

  • Submodels are used to store specific data, such as the Product Carbon Footprint (PCF), following the defined aspect model.

  • Assets are created to make submodels available for sharing via the connector.

  • Policies and Contracts are used to define and enforce access and usage conditions for shared data.

  • A Message Broker solution (for example: Azure Service Bus, AWS SQS, Apache Kafka etc, or any other notification system) is required by Henkel to receive notifications from Henkel after Battery Pass data has been shared.

Please note that the Message Broker is a Henkel-specific requirement. It is not defined by the Catena-X standards or the Battery Pass use case, and it is not needed for Catena-X conformity or certification. Data exchange itself continues to run through the Eclipse Dataspace Connector (EDC) as specified by Catena-X.

The supplier is responsible for providing, hosting and securing the message broker.

  • The Digital Twin Event API together with a Message Broker is used to send and receive notifications related to updates (e.g., submodel changes).

4.2 Architecture for Battery Pass Implementation

The supplier, acting as the data provider, prepares the Battery Pass data by creating the required Battery Pass submodel and exposing it as an asset through the EDC connector. The supplier also defines the required access policies, usage policies, and contract definitions so that Henkel can access and use the data only under the agreed conditions. The submodel is linked to a Digital Twin, implemented as an Asset Administration Shell (AAS), which provides the standardised structure for the asset data.

After the data is prepared, the provider sends a notification to Henkel to indicate that the data is available. The provider also exposes a notification asset that points to a message broker solution. This enables notifications to be exchanged between the participants.

Henkel, acting as the data consumer, retrieves the data by querying the provider catalogue, negotiating the contract, and establishing the contract agreement. Once the contract negotiation is completed successfully, Henkel starts the data transfer process to access the shared Battery Pass data.

After Henkel has processed the received data, Henkel sends a feedback notification to the provider. This feedback indicates the processing result, such as whether the data was processed successfully or whether an issue occurred.

This process enables controlled, secure, and traceable exchange of Battery Pass data while preserving data sovereignty for both the supplier and Henkel.

5. Data Provisioning

This section explains how the provider publishes Battery Pass data so that Henkel can consume it. The technical steps remain the same: create the required assets, define the access and usage policies, create the contract definition, create the submodel asset, and register the Digital Twin.

5.1 Set up the dDTR in the EDC

Create the dDTR asset in the EDC. This makes the Digital Twin Registry endpoint available as an asset that can be discovered and accessed through the connector.

Method: POST
Endpoint: {{EDC_URL}}/management/v3/assets

{
"@context": {
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"cx-common": "https://w3id.org/catenax/ontology/common#",
"cx-taxo": "https://w3id.org/catenax/taxonomy#",
"dct": "http://purl.org/dc/terms/"},
"@id": "dtr-asset",
"properties": {
"dct:type": {
"@id": "cx-taxo:DigitalTwinRegistry"},
"cx-common:version": "3.0"},
"privateProperties": {},
"dataAddress": {
"@type": "DataAddress",
"type": "HttpData",
"baseUrl": "{{dtr_url}},
"proxyQueryParams": "true",
"proxyPath": "true",
"proxyMethod": "false"}}
  • {{dtr_url}} specifies the DTR API endpoint URL. Replace this placeholder with the URL of your Digital Twin Registry API endpoint.

Expected Sample response:

5.2 Create the contract definition for the dDTR

  1. Create the access policy for the dDTR. This policy defines which business partner is allowed to access the Digital Twin Registry asset.

The Policy definitions here are only compatible for Jupiter EDCs (version 0.10.x and older). Find more information about new policy definitions and EDC Migration in Section 8: Schema Structure Changes in CX-Saturn.

Method: POST

Endpoint: {{EDC_URL}}/management/v3/policydefinitions

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"tx": "https://w3id.org/tractusx/v0.0.1/ns/",
"tx-auth": "https://w3id.org/tractusx/auth/",
"cx-policy": "https://w3id.org/catenax/policy/",
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@id": "{{ACCESS_POLICY_ID}}",
"@type": "PolicyDefinition",
"policy": {
"@type": "odrl:Set",
"odrl:permission": {
"odrl:action": {
"@id": "odrl:use"
},
"odrl:constraint": {
"odrl:and": [
{
"odrl:leftOperand": {
"@id": "cx-policy:Membership"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "active"
},
{
"odrl:leftOperand": {
"@id": "cx-policy:BusinessPartnerNumber"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "{{POLICY_BPN}}"
}
]
}
},
"odrl:prohibition": [],
"odrl:obligation": []
}
}
  • {{ACCESS_POLICY_ID}} is the identifier of the access policy. It can be a numeric value or a text string, but it must be unique and reused consistently in later steps.

  • {{POLICY_BPN}} is the Business Partner Number (BPN) of the partner that is allowed to access the asset under this policy.

Expected Sample response:

2. Create the usage policy for the dDTR. This policy defines how the Digital Twin Registry data may be used after access has been granted.

Method: POST

Endpoint: {{EDC_URL}}/management/v3/policydefinitions

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"cx-policy": "https://w3id.org/catenax/policy/",
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@id": "{{USAGE_POLICY_ID}}",
"policy": {
"@type": "odrl:Set",
"odrl:permission": {
"odrl:action": {
"@id": "odrl:use"
},
"odrl:constraint": {
"odrl:and": [
{
"odrl:leftOperand": {
"@id": "cx-policy:FrameworkAgreement"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "DataExchangeGovernance:1.0"
},
{
"odrl:leftOperand": {
"@id": "cx-policy:UsagePurpose"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "cx.core.digitalTwinRegistry:1"
}
]
}}}}
  • {{USAGE_POLICY_ID}} is the identifier of the usage policy. It can be a numeric value or a text string, but it must be unique and reused consistently in the contract definition.

Expected Sample response:

3. Create the contract definition for the dDTR. This connects the dDTR asset with the access policy and usage policy created in the previous steps.

Method: POST

Endpoint: {{EDC_URL}}/management/v3/contractdefinitions

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "ContractDefinition",
"@id": "{{CONTRACT_DEFINITION_ID}}",
"accessPolicyId": "{{ACCESS_POLICY_ID}}",
"contractPolicyId": "{{USAGE_POLICY_ID}}",
"assetsSelector": [
{
"operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"operator": "=",
"operandRight": "{{ASSET_ID}}"
}
]
}
  • {{CONTRACT_DEFINITION_ID}} is the unique identifier of the contract definition.

  • {{ACCESS_POLICY_ID}} is the identifier of the access policy created earlier. This value must exactly match the Access Policy ID used during access policy creation.

  • {{USAGE_POLICY_ID}} is the identifier of the usage policy created earlier. This value must exactly match the Usage Policy ID used during usage policy creation.

  • {{ASSET_ID}} is the identifier of the asset created earlier. This value must exactly match the Asset ID used during asset creation.

Expected Sample response:

5.3 Battery Pass Data Model Properties

The table below lists the Battery Pass data fields that need to be provided in the Battery Pass submodel. Suppliers should use this table as a practical checklist when preparing data for Henkel. The technical field names, JSON paths, data types, and mandatory indicators must be followed exactly so that the data can be processed automatically.

Each row describes one data field. The field name is the business name of the value, while the JSON path shows where that value must appear in the technical data structure. Mandatory fields must always be provided. Optional fields should be completed when the information is available, especially where they support compliance, traceability, or Product Carbon Footprint transparency.

Section

Field Name

JSON Path

Requirement

Data Type

Description

Example Value

Nameplate

URIOfTheProduct

nameplate.URIOfTheProduct

Mandatory

String

Unique identifier of the supplied product. Material key, article number or product URI.

1234567

Nameplate

ManufacturerIdentifier

nameplate.ManufacturerIdentifier

Mandatory

String

Unique manufacturer identifier (preferred: BPNL).

BPNL000000000GUC

Nameplate

ManufacturerName

nameplate.ManufacturerName

Mandatory

String

Legal manufacturer name.

Henkel AG & Co. KGaA

Nameplate

SerialNumber

nameplate.SerialNumber

Optional

String

Serial number of an individual item.

SN-0012345

Nameplate

DateOfManufacture

nameplate.DateOfManufacture

Optional

Date

Manufacturing date.

2026-01-01 00:00:00

Nameplate

DateOfPuttingIntoService

nameplate.DateOfPuttingIntoService

Optional

Date

Date product entered service.

2026-03-01 00:00:00

Nameplate

LifeCycleStage

nameplate.LifeCycleStage

Optional

String

Lifecycle stage of the supplied item.

Manufactured

Nameplate

OperatorIdentifier

nameplate.OperatorIdentifier

Optional

String

Operator identifier.

BPNL0000000ABC

Nameplate

UniqueFacilityIdentifier

nameplate.UniqueFacilityIdentifier

Optional

String

Manufacturing site identifier (preferred: BPNS).

BPNS000000123ABC

Nameplate

AddressInformation

nameplate.AddressInformation

Optional

Object

Address of manufacturing site.

{"Country":"DE"}

Nameplate

Markings

nameplate.Markings

Optional

Array(String)

Regulatory markings.

["CE"]

Nameplate

EUDeclarationOfConformity

nameplate.EUDeclarationOfConformity

Optional

Array(String)

References to conformity documents in Handover Documentation.

["DOC-001"]

Nameplate

ResultsOfTestReportsProvingCompliance

nameplate.ResultsOfTestReportsProvingCompliance

Optional

Array(String)

References to compliance test reports.

["TEST-001"]

Material Composition

ShortName

materialComposition.BatteryChemistry.ShortName

Optional

String

Short chemistry name.

NMC

Material Composition

ClearName

materialComposition.BatteryChemistry.ClearName

Optional

String

Long chemistry description.

Lithium nickel manganese cobalt oxide

Material Composition

BatteryMaterialIdentifier

materialComposition.BatteryMaterials[].BatteryMaterialIdentifier

Mandatory

String

CAS number or equivalent material identifier.

64742-48-9

Material Composition

BatteryMaterialName

materialComposition.BatteryMaterials[].BatteryMaterialName

Mandatory

String

Name of the material.

Graphite

Material Composition

BatteryMaterialMass

materialComposition.BatteryMaterials[].BatteryMaterialMass

Optional

Number

Material mass (kg).

1.5

Material Composition

IsCriticalRawMaterial

materialComposition.BatteryMaterials[].IsCriticalRawMaterial

Mandatory

Boolean

Indicates whether the material is a Critical Raw Material.

true

Material Composition

HazardousSubstanceClass

materialComposition.HazardousSubstances[].HazardousSubstanceClass

Optional

Array(String)

CLP hazard classes incl. Category.

["EyeDamageOrIrritation Category 2"]

Material Composition

HazardousSubstanceName

materialComposition.HazardousSubstances[].HazardousSubstanceName

Mandatory

String

Hazardous substance name.

Ammonia, aqueous solution

Material Composition

HazardousSubstanceIdentifier

materialComposition.HazardousSubstances[].HazardousSubstanceIdentifier

Mandatory

String

CAS number or equivalent identifier.

1336-21-6

Material Composition

HazardousSubstanceConcentration

materialComposition.HazardousSubstances[].HazardousSubstanceConcentration

Optional

Number

Substance concentration.

46.02

Material Composition

HazardousSubstanceConcentrationUoM

materialComposition.HazardousSubstances[].HazardousSubstanceConcentrationUoM

Optional

String

Substance concentration Unit of measure.

ppm

Material Composition

HazardousSubstanceImpact

materialComposition.HazardousSubstances[].hazardousSubstanceImpact

Optional

Array(String)

Hazard statements (H-statements).

["H314","H400"]

Material Composition

HazardousSubstanceLocation

materialComposition.HazardousSubstances[].hazardousSubstanceLocation

Optional

String

Location of substance within product.

Everywhere

PCF (Catena-X)

SpecVersion

productCarbonFootprint.scopeOfPcfForm.specVersion

Mandatory

String

Catena-X PCF data model version.

urn:io.catenax.pcf:datamodel:version:9.0.0

PCF (Catena-X)

PartialFullPcf

productCarbonFootprint.scopeOfPcfForm.partialFullPcf

Mandatory

String

Scope of PCF declaration.

Cradle-to-gate

PCF (Catena-X)

CompanyName

productCarbonFootprint.companyAndProductInformation.companyInformation.companyName

Mandatory

String

Reporting company.

Henkel AG & Co. KGaA

PCF (Catena-X)

CompanyIds

productCarbonFootprint.companyAndProductInformation.companyInformation.companyIds[]

Mandatory

Array(String)

Company identifiers.

["BPNL000000000GUC"]

PCF (Catena-X)

ProductNameCompany

productCarbonFootprint.companyAndProductInformation.productInformation.productNameCompany

Mandatory

String

Commercial product name.

SUPERPERFORMANCE SURFACE COATING 1000KG

PCF (Catena-X)

ProductIds

productCarbonFootprint.companyAndProductInformation.productInformation.productIds[]

Mandatory

Array(String)

Product identifiers.

["1234567"]

PCF (Catena-X)

DeclaredUnitOfMeasurement

productCarbonFootprint.companyAndProductInformation.productInformation.declaredUnitOfMeasurement

Mandatory

String

Reference unit for PCF.

kilogram

PCF (Catena-X)

DeclaredUnitAmount

productCarbonFootprint.companyAndProductInformation.productInformation.declaredUnitAmount

Mandatory

Number

Quantity of declared unit.

1

PCF (Catena-X)

ProductMassPerDeclaredUnit

productCarbonFootprint.companyAndProductInformation.productInformation.productMassPerDeclaredUnit

Mandatory

Number

Product mass per declared unit.

1.0

PCF (Catena-X)

ProductClassifications

productCarbonFootprint.companyAndProductInformation.productInformation.productClassifications

Optional

Array(String)

Product classifications (GTIN, CN Code, CAS etc.).

["urn:gtin:04012345678901"]

PCF (Catena-X)

ProductDescription

productCarbonFootprint.companyAndProductInformation.productInformation.productDescription

Optional

String

Additional product description.

Water-based graphite coating

PCF (Catena-X)

PrimaryDataShare

productCarbonFootprint.pcfAssessmentAndMethodology.dataSourcesAndQuality.primaryDataShare

Optional

Number (%)

Share of primary data used.

85

PCF (Catena-X)

SecondaryEmissionFactorSources

productCarbonFootprint.pcfAssessmentAndMethodology.dataSourcesAndQuality.secondaryEmissionFactorSources

Optional

Array(String)

Secondary data sources used.

["ecoinvent 3.11"]

PCF (Catena-X)

TechnologicalDQR

productCarbonFootprint.pcfAssessmentAndMethodology.dataSourcesAndQuality.technologicalDQR

Optional

Number

Technological Data Quality Rating.

2

PCF (Catena-X)

TemporalDQR

productCarbonFootprint.pcfAssessmentAndMethodology.dataSourcesAndQuality.temporalDQR

Optional

Number

Temporal Data Quality Rating.

2

PCF (Catena-X)

GeographicalDQR

productCarbonFootprint.pcfAssessmentAndMethodology.dataSourcesAndQuality.geographicalDQR

Optional

Number

Geographical Data Quality Rating.

2

PCF (Catena-X)

CcsTechnologicalCO2CaptureIncluded

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.technology.ccsTechnologicalCO2CaptureIncluded

Optional

Boolean

Indicates application of CCS/BECCS.

false

PCF (Catena-X)

BoundaryProcessesDescription

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.technology.boundaryProcessesDescription

Optional

String

Description of relevant boundary processes.

Electricity consumption included

PCF (Catena-X)

Id

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.idAndVersion.id

Mandatory

String

Unique PCF identifier.

1234567

PCF (Catena-X)

Version

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.idAndVersion.version

Mandatory

Integer

Version number of PCF.

0

PCF (Catena-X)

Status

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.idAndVersion.status

Mandatory

String

Status of PCF declaration.

Active

PCF (Catena-X)

RetroOrProspectivePcfType

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.idAndVersion.retroOrProspectivePcfType

Optional

String

Retrospective or prospective PCF.

Retrospective PCF

PCF (Catena-X)

PrecedingPfIds

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.idAndVersion.precedingPfIds

Optional

Array(String)

References to previous PCFs.

["uuid-1"]

PCF (Catena-X)

ExemptedEmissionsPercent

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.boundarySpecifications.exemptedEmissionsPercent

Mandatory

Number (%)

Cut-off percentage.

0.0

PCF (Catena-X)

ExemptedEmissionsDescription

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.boundarySpecifications.exemptedEmissionsDescription

Optional

String

Explanation of exclusions.

No exemptions

PCF (Catena-X)

GeographyRegionOrSubregion

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.geography.geographyRegionOrSubregion

Mandatory

String

Region.

Global

PCF (Catena-X)

GeographyCountrySubdivision

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.geography.geographyCountrySubdivision

Optional

String

ISO country subdivision.

DE-NW

PCF (Catena-X)

GeographyCountry

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.geography.geographyCountry

Optional

String

ISO country code.

DE

PCF (Catena-X)

ReferencePeriodStart

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.time.referencePeriodStart

Mandatory

DateTime

Start of reporting period.

2025-05-29T00:00:00Z

PCF (Catena-X)

ReferencePeriodEnd

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.time.referencePeriodEnd

Mandatory

DateTime

End of reporting period.

2026-05-29T00:00:00Z

PCF (Catena-X)

Created

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.time.created

Mandatory

DateTime

Creation timestamp.

2026-06-29T10:42:46Z

PCF (Catena-X)

ValidityPeriodStart

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.time.validityPeriodStart

Optional

DateTime

Validity start.

2026-06-29T10:42:46Z

PCF (Catena-X)

ValidityPeriodEnd

productCarbonFootprint.pcfAssessmentAndMethodology.pcfAssessmentInformation.time.validityPeriodEnd

Mandatory

DateTime

Validity end.

2027-06-29T00:00:00Z

PCF (Catena-X)

ProgramCertificationShare

productCarbonFootprint.pcfAssessmentAndMethodology.verificationAndCertificationShares.programCertificationShare

Optional

Number (%)

Share certified under a PCF program.

80

PCF (Catena-X)

ProductVerificationShare3rdParty

productCarbonFootprint.pcfAssessmentAndMethodology.verificationAndCertificationShares.productVerificationShare3rdParty

Optional

Number (%)

Third-party verification share.

100

PCF (Catena-X)

ProductVerificationShare2ndParty

productCarbonFootprint.pcfAssessmentAndMethodology.verificationAndCertificationShares.productVerificationShare2ndParty

Optional

Number (%)

Second-party verification share.

0

PCF (Catena-X)

ProductVerificationShare1stParty

productCarbonFootprint.pcfAssessmentAndMethodology.verificationAndCertificationShares.productVerificationShare1stParty

Optional

Number (%)

First-party verification share.

0

PCF (Catena-X)

MassBalancingUsed

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.massBalancingInformation.massBalancingUsed

Optional

Boolean

Indicates usage of mass balancing.

false

PCF (Catena-X)

FreeAttributionInMassBalancing

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.massBalancingInformation.freeAttributionInMassBalancing

Optional

String

Attribution method.

not applicable

PCF (Catena-X)

MassBalancingCertificateScheme

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.massBalancingInformation.massBalancingCertificateScheme

Optional

String

Certification scheme.

ISCC+

PCF (Catena-X)

CrossSectoralStandards

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.standards.crossSectoralStandards

Mandatory

Array(String)

Standards used.

["ISO 14067"]

PCF (Catena-X)

ProductOrSectorSpecificRules

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.standards.productOrSectorSpecificRules

Mandatory

Array(String)

Product or sector specific rules.

["TfS PCF Guideline"]

PCF (Catena-X)

IpccCharacterizationFactors

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.gwpCharacterizationFactorDetails.ipccCharacterizationFactors

Mandatory

String

IPCC report version.

AR6

PCF (Catena-X)

AllocationWasteIncineration

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.allocationInForeground.allocationWasteIncineration

Mandatory

String

Waste incineration allocation method.

Cut-off

PCF (Catena-X)

AllocationRulesDescription

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.allocationInForeground.allocationRulesDescription

Optional

String

Allocation methodology description.

Mass allocation for production and logistics emissions

PCF (Catena-X)

AllocationRecycledCarbon

productCarbonFootprint.pcfAssessmentAndMethodology.pcfMethodology.allocationInForeground.allocationRecycledCarbon

Optional

String

Recycling allocation approach.

cut-off

PCF (Catena-X)

Comment

productCarbonFootprint.general.comment

Optional

String

Free text comment.

Product-specific assumptions documented

PCF (Catena-X)

PcfLegalStatement

productCarbonFootprint.general.pcfLegalStatement

Optional

String

Legal disclaimer.

This PCF is provided for information purposes only

PCF (Catena-X)

CarbonContentTotal

productCarbonFootprint.carbonContent.carbonContentTotal

Optional

Number

Total carbon content.

0.52

PCF (Catena-X)

FossilCarbonContent

productCarbonFootprint.carbonContent.fossilCarbonContent

Optional

Number

Fossil carbon content.

0.10

PCF (Catena-X)

BiogenicCarbonContent

productCarbonFootprint.carbonContent.biogenicCarbonContent

Optional

Number

Biogenic carbon content.

0.05

PCF (Catena-X)

PackagingBiogenicCarbonContent

productCarbonFootprint.carbonContent.packagingBiogenicCarbonContent

Optional

Number

Biogenic carbon content in packaging.

0.01

PCF (Catena-X)

RecycledCarbonContent

productCarbonFootprint.carbonContent.recycledCarbonContent

Optional

Number

Recycled carbon content.

0.02

PCF (Catena-X)

PcfIncludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.pcfIncludingBiogenicUptake

Mandatory

Number

Production-stage PCF incl. biogenic uptake.

1.24

PCF (Catena-X)

PcfExcludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.pcfExcludingBiogenicUptake

Mandatory

Number

Production-stage PCF excl. biogenic uptake.

1.24

PCF (Catena-X)

FossilGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.fossilGhgEmissions

Optional

Number

Fossil GHG emissions.

1.20

PCF (Catena-X)

BiogenicNonCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.biogenicNonCO2Emissions

Optional

Number

Biogenic non-CO₂ emissions.

0.0

PCF (Catena-X)

BiogenicCO2Uptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.biogenicCO2Uptake

Optional

Number

Biogenic CO₂ uptake.

0.0

PCF (Catena-X)

LandUseChangeGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.landUseChangeGhgEmissions

Optional

Number

Land use change emissions.

0.0

PCF (Catena-X)

LandManagementBiogenicCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.landManagementBiogenicCO2Emissions

Optional

Number

Land management emissions.

0.0

PCF (Catena-X)

PackagingLandManagementBiogenicCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.packagingLandManagementBiogenicCO2Emissions

Optional

Number

Packaging land management emissions.

0.0

PCF (Catena-X)

LandManagementBiogenicCO2Removals

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.landManagementBiogenicCO2Removals

Optional

Number

Land management removals.

0.0

PCF (Catena-X)

AircraftGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.productionStage.aircraftGhgEmissions

Optional

Number

Aviation emissions.

0.0

PCF (Catena-X)

DistributionStageIncluded

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageIncluded

Mandatory

Boolean

Distribution emissions included.

true

PCF (Catena-X)

DistributionStagePcfIncludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStagePcfIncludingBiogenicUptake

Optional

Number

Distribution PCF incl. biogenic uptake.

0.08

PCF (Catena-X)

DistributionStagePcfExcludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStagePcfExcludingBiogenicUptake

Optional

Number

Distribution PCF excl. biogenic uptake.

0.06

PCF (Catena-X)

DistributionStageFossilGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageFossilGhgEmissions

Optional

Number

Distribution fossil emissions.

0.06

PCF (Catena-X)

DistributionStageBiogenicNonCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageBiogenicNonCO2Emissions

Optional

Number

Distribution biogenic non-CO₂.

0.0

PCF (Catena-X)

DistributionStageBiogenicCO2Uptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageBiogenicCO2Uptake

Optional

Number

Distribution biogenic uptake.

0.0

PCF (Catena-X)

DistributionStageLandUseChangeGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageLandUseChangeGhgEmissions

Optional

Number

Distribution LUC emissions.

0.0

PCF (Catena-X)

DistributionStageLandManagementBiogenicCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageLandManagementBiogenicCO2Emissions

Optional

Number

Distribution land management emissions.

0.0

PCF (Catena-X)

DistributionStageLandManagementBiogenicCO2Removals

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageLandManagementBiogenicCO2Removals

Optional

Number

Distribution land management removals.

0.0

PCF (Catena-X)

DistributionStageAircraftGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.distributionStage.distributionStageAircraftGhgEmissions

Optional

Number

Distribution aviation emissions.

0.0

PCF (Catena-X)

PackagingEmissionsIncluded

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingEmissionsIncluded

Mandatory

Boolean

Packaging emissions included.

true

PCF (Catena-X)

PackagingPcfIncludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingPcfIncludingBiogenicUptake

Optional

Number

Packaging PCF incl. uptake.

0.02

PCF (Catena-X)

PackagingPcfExcludingBiogenicUptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingPcfExcludingBiogenicUptake

Optional

Number

Packaging PCF excl. uptake.

0.02

PCF (Catena-X)

PackagingFossilGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingFossilGhgEmissions

Optional

Number

Packaging fossil emissions.

0.01

PCF (Catena-X)

PackagingBiogenicNonCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingBiogenicNonCO2Emissions

Optional

Number

Packaging biogenic non-CO₂.

0.0

PCF (Catena-X)

PackagingBiogenicCO2Uptake

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingBiogenicCO2Uptake

Optional

Number

Packaging CO₂ uptake.

0.0

PCF (Catena-X)

PackagingLandUseChangeGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingLandUseChangeGhgEmissions

Optional

Number

Packaging LUC emissions.

0.0

PCF (Catena-X)

PackagingLandManagementBiogenicCO2Emissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingLandManagementBiogenicCO2Emissions

Optional

Number

Packaging land management emissions.

0.0

PCF (Catena-X)

PackagingLandManagementBiogenicCO2Removals

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingLandManagementBiogenicCO2Removals

Optional

Number

Packaging land management removals.

0.0

PCF (Catena-X)

PackagingAircraftGhgEmissions

productCarbonFootprint.productLifeCycleStagesAndEmissions.packagingStage.packagingAircraftGhgEmissions

Optional

Number

Packaging aviation emissions.

0.0

PCF (Catena-X)

AttestationType

productCarbonFootprint.attestationOfConformance.attestationType

Optional

String

Type of conformity attestation.

PCF Verification

PCF (Catena-X)

StandardName

productCarbonFootprint.attestationOfConformance.standardName

Optional

String

Standard against which verification was performed.

Catena-X Product Carbon Footprint Rulebook v9

PCF (Catena-X)

AttestationStandard

productCarbonFootprint.attestationOfConformance.attestationStandard

Optional

String

Verification framework applied.

PCF Verification Framework V2

PCF (Catena-X)

AttestationOfConformanceId

productCarbonFootprint.attestationOfConformance.attestationOfConformanceId

Optional

String

Unique identifier of the attestation.

4a7c4482-8431-4c31-a895-70341d2a1376

PCF (Catena-X)

ProviderName

productCarbonFootprint.attestationOfConformance.providerName

Optional

String

Name of certifying body.

TÜV Rheinland

PCF (Catena-X)

AttestationOfConformanceLink

productCarbonFootprint.attestationOfConformance.attestationOfConformanceLink

Optional

URL

Link to certificate or attestation.

PCF (Catena-X)

ProviderId

productCarbonFootprint.attestationOfConformance.providerId

Optional

String

Identifier of certifying body.

BPNL0000000AXXXX

PCF (Catena-X)

CompletedAt

productCarbonFootprint.attestationOfConformance.completedAt

Optional

DateTime

Date attestation was completed.

2026-06-30T00:00:00Z

Circularity

RecycledMaterial

circularity.RecycledContentInformation[].RecycledMaterial

Mandatory

String

Material for which recycled content is reported.

Nickel

Circularity

PreConsumerShare

circularity.RecycledContentInformation[].PreConsumerShare

Mandatory

Number (%)

Share from pre-consumer recycled sources.

20

Circularity

PostConsumerShare

circularity.RecycledContentInformation[].PostConsumerShare

Mandatory

Number (%)

Share from post-consumer recycled sources.

15

Circularity

RenewableContent

circularity.RenewableContent

Optional

Number (%)

Renewable material content share.

8.0

Circularity

SafetyInstructions

circularity.SafetyMeasures.SafetyInstructions[]

Optional

Array(String)

References to safety documents.

["DOC-SDS-001"]

Circularity

ExtinguishingAgents

circularity.SafetyMeasures.ExtinguishingAgents[]

Optional

Array(String)

Suitable extinguishing agents.

["CO2","ABC Powder"]

Handover Documentation

Domain

handoverDocumentation.Documents[].DocumentIds[].Domain

Mandatory

String

Document domain.

Henkel

Handover Documentation

Identifier

handoverDocumentation.Documents[].DocumentIds[].Identifier

Mandatory

String

Document identifier.

DOC-SDS-001

Handover Documentation

IsPrimary

handoverDocumentation.Documents[].DocumentIds[].IsPrimary

Mandatory

Boolean

Primary document identifier flag.

true

Handover Documentation

ClassId

handoverDocumentation.Documents[].DocumentClassifications[].ClassId

Mandatory

String

VDI2770 class identifier.

02-02

Handover Documentation

ClassName

handoverDocumentation.Documents[].DocumentClassifications[].ClassName

Mandatory

String

Document class name.

Safety Data Sheet

Handover Documentation

System

handoverDocumentation.Documents[].DocumentClassifications[].System

Mandatory

String

Classification system.

VDI2770

Handover Documentation

Language

handoverDocumentation.Documents[].DocumentVersions[].Language[]

Mandatory

Array(String)

Document language.

["en"]

Handover Documentation

Version

handoverDocumentation.Documents[].DocumentVersions[].Version

Optional

String

Version number.

1.0

Handover Documentation

Title

handoverDocumentation.Documents[].DocumentVersions[].Title

Mandatory

String

Document title.

Safety Data Sheet

Handover Documentation

Subtitle

handoverDocumentation.Documents[].DocumentVersions[].Subtitle

Optional

String

Document subtitle.

European Version

Handover Documentation

Description

handoverDocumentation.Documents[].DocumentVersions[].Description

Optional

String

Document description.

Product SDS

Handover Documentation

Link

handoverDocumentation.Documents[].DocumentVersions[].DigitalFiles[].Link

Mandatory

URL

File location.

Handover Documentation

MimeType

handoverDocumentation.Documents[].DocumentVersions[].DigitalFiles[].MimeType

Mandatory

String

MIME type.

application/pdf

More information about the latest version of the Catena-X Battery Pass aspect model schema can be found here.

5.4 Create Submodel

This step creates the Battery Pass submodel for the relevant product or component. The submodel is the structured data package that contains the Battery Pass information suppliers must provide to Henkel. Suppliers must prepare the Battery Pass data in JSON format and submit it through the following API endpoint:

Method: POST
Endpoint: {{dashboard_backend}}/api/v4/aas/{{component_id}}/submodels

The JSON schema below shows the required structure for the Battery Pass data model. Suppliers should use this schema as the technical template and replace the sample values with their own product, material, hazardous substance, Product Carbon Footprint, circularity, safety, and documentation data.

Do not change the JSON field names, nesting structure, or technical paths. Only the values should be completed or replaced with supplier-specific information.

The JSON includes the following main data areas:

  • Nameplate: product identification, manufacturer information, lifecycle status, markings, and conformity documentation.

  • Material Composition: battery chemistry, materials, Critical Raw Material indication, hazardous substances, concentration values, hazard classifications, and substance location.

  • Product Carbon Footprint: company and product information, assessment methodology, data quality indicators, declared unit, lifecycle stage emissions, and Product Carbon Footprint values excluding biogenic uptake where applicable.

  • Circularity: recycled content, renewable content, safety instructions, and extinguishing agents.

  • Handover Documentation: document identifiers, classifications, versions, languages, titles, descriptions, and digital file references.

The placeholders in the request must be completed as follows:

  • {{dashboard_backend}} is the backend URL of the supplier’s dashboard or technical environment.

  • {{component_id}} is the identifier of the component or product for which the submodel is being created.

  • {{DigitalTwinId}} is the unique identifier of the Digital Twin. Use the same Digital Twin ID that is used in the submodel. The value must be provided in UUIDv4 format.

  • {{submodel_id}} is the unique identifier of the submodel. The value must be provided in UUIDv4 format.

  • {{company_name}} is the legal name of the supplier company.

  • {{sourceId}} can be any string value used by the supplier for internal reference purposes.

{{dashboard_backend}} (pre-prod)

{{dashboard_backend}} (prod)

{{component_id}}

EDC Component ID

Here is a sample submodel JSON below. Before using the sample JSON, suppliers should verify that all placeholders have been replaced with the relevant values provided above and that the JSON syntax is valid in their technical environment.

{
"submodel_id": "{{submodel_id}}",
"digitalTwinId": "{{DigitalTwinId}}",
"owner": "{{company_name}}",
"sourceId": "{{sourceId}}",
"data": {

"nameplate": {
"URIOfTheProduct": "PRODUCT-000001",
"SerialNumber": null,
"ManufacturerIdentifier": "BPNL000000000GUC",
"ManufacturerName": "Henkel AG & Co. KGaA",
"DateOfManufacture": null,
"DateOfPuttingIntoService": null,
"LifeCycleStage": null,
"OperatorIdentifier": null,
"UniqueFacilityIdentifier": null,
"AddressInformation": null,
"Markings": null,
"EUDeclarationOfConformity": null,
"ResultsOfTestReportsProvingCompliance": null
},
"materialComposition": {
"BatteryChemistry": {
"ShortName": null,
"ClearName": null
},
"BatteryMaterials": [
{
"BatteryMaterialIdentifier": "12-34-0",
"BatteryMaterialName": "Example Material 01",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "1234-56-7",
"BatteryMaterialName": "Example Material 02",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "2345-67-8",
"BatteryMaterialName": "Example Material 03",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "3456-78-9",
"BatteryMaterialName": "Example Material 04",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "4567-89-0",
"BatteryMaterialName": "Example Material 05",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "5678-90-1",
"BatteryMaterialName": "Example Material 06",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "6789-01-2",
"BatteryMaterialName": "Example Material 07",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "7890-12-3",
"BatteryMaterialName": "Example Material 08",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "8901-23-4",
"BatteryMaterialName": "Example Material 09",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
},
{
"BatteryMaterialIdentifier": "9012-34-5",
"BatteryMaterialName": "Example Material 10",
"BatteryMaterialMass": null,
"IsCriticalRawMaterial": false
}
],
"HazardousSubstances": [
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 1"
],
"HazardousSubstanceName": "Example Substance 01",
"HazardousSubstanceIdentifier": "11-11-1",
"HazardousSubstanceConcentration": 65.0,
"HazardousSubstanceConcentrationUoM": "ppm",
"hazardousSubstanceImpact": [
"H101"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 2"
],
"HazardousSubstanceName": "Example Substance 02",
"HazardousSubstanceIdentifier": "22-22-2",
"HazardousSubstanceConcentration": 47.68,
"HazardousSubstanceConcentrationUoM": "ppm",
"hazardousSubstanceImpact": [
"H102"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 3",
"ExampleHazardClass Category 4",
"ExampleHazardClass Category 5"
],
"HazardousSubstanceName": "Example Substance 03",
"HazardousSubstanceIdentifier": "3333-33-3",
"HazardousSubstanceConcentration": 1.0498,
"HazardousSubstanceConcentrationUoM": "%",
"hazardousSubstanceImpact": [
"H103",
"H104",
"H105"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 6",
"ExampleHazardClass Category 7",
"ExampleHazardClass Category 8",
"ExampleHazardClass Category 9",
"ExampleHazardClass Category 10"
],
"HazardousSubstanceName": "Example Substance 04",
"HazardousSubstanceIdentifier": "4444-44-4",
"HazardousSubstanceConcentration": 2.25,
"HazardousSubstanceConcentrationUoM": "ppb",
"hazardousSubstanceImpact": [
"H106",
"H107",
"H108",
"H109",
"H110"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 11",
"ExampleHazardClass Category 12",
"ExampleHazardClass Category 13",
"ExampleHazardClass Category 14",
"ExampleHazardClass Category 15",
"ExampleHazardClass Category 16"
],
"HazardousSubstanceName": "Example Substance 05",
"HazardousSubstanceIdentifier": "5555-55-5",
"HazardousSubstanceConcentration": 3.55,
"HazardousSubstanceConcentrationUoM": "ppb",
"hazardousSubstanceImpact": [
"H111",
"H112",
"H113",
"H114",
"H115",
"H116"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 17"
],
"HazardousSubstanceName": "Example Substance 06",
"HazardousSubstanceIdentifier": "6666-66-6",
"HazardousSubstanceConcentration": 1.715,
"HazardousSubstanceConcentrationUoM": "%",
"hazardousSubstanceImpact": [
"H117"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 18",
"ExampleHazardClass Category 19",
"ExampleHazardClass Category 20",
"ExampleHazardClass Category 21",
"ExampleHazardClass Category 22"
],
"HazardousSubstanceName": "Example Substance 07",
"HazardousSubstanceIdentifier": "7777-77-7",
"HazardousSubstanceConcentration": 1.337,
"HazardousSubstanceConcentrationUoM": "%",
"hazardousSubstanceImpact": [
"H118",
"H119",
"H120",
"H121",
"H122"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 23",
"ExampleHazardClass Category 24",
"ExampleHazardClass Category 25",
"ExampleHazardClass Category 26",
"ExampleHazardClass Category 27",
"ExampleHazardClass Category 28"
],
"HazardousSubstanceName": "Example Substance 08",
"HazardousSubstanceIdentifier": "8888-88-8",
"HazardousSubstanceConcentration": 19.0926,
"HazardousSubstanceConcentrationUoM": "ppm",
"hazardousSubstanceImpact": [
"H123",
"H124",
"H125",
"H126",
"H127",
"H128"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 29",
"ExampleHazardClass Category 30",
"ExampleHazardClass Category 31"
],
"HazardousSubstanceName": "Example Substance 09",
"HazardousSubstanceIdentifier": "9999-99-9",
"HazardousSubstanceConcentration": 26.05,
"HazardousSubstanceConcentrationUoM": "ppb",
"hazardousSubstanceImpact": [
"H129",
"H130",
"H131"
],
"hazardousSubstanceLocation": "Everywhere"
},
{
"HazardousSubstanceClass": [
"ExampleHazardClass Category 32",
"ExampleHazardClass Category 33",
"ExampleHazardClass Category 34"
],
"HazardousSubstanceName": "Example Substance 10",
"HazardousSubstanceIdentifier": "12345-67-8",
"HazardousSubstanceConcentration": 648.45,
"HazardousSubstanceConcentrationUoM": "ppb",
"hazardousSubstanceImpact": [
"H132",
"H133",
"H134"
],
"hazardousSubstanceLocation": "Everywhere"
}
]
},
"productCarbonFootprint": {
"scopeOfPcfForm": {
"specVersion":"urn:io.catenax.pcf:datamodel:version:9.0.0",
"partialFullPcf": "Cradle-to-gate"
},
"companyAndProductInformation": {
"companyInformation": {
"companyName": "Henkel AG & Co. KGaA",
"companyIds": [
"BPNL000000000GUC"
]
},
"productInformation": {
"productNameCompany": "Example Battery Component Material",
"productIds": [
"PRODUCT-000001"
],
"declaredUnitOfMeasurement": null,
"declaredUnitAmount": null,
"productMassPerDeclaredUnit": null,
"productClassifications": null,
"productDescription": "Demonstration dataset for customer workshops"
}
},
"pcfAssessmentAndMethodology": {
"dataSourcesAndQuality": {
"primaryDataShare": null,
"secondaryEmissionFactorSources": null,
"technologicalDQR": null,
"temporalDQR": null,
"geographicalDQR": null
},
"pcfAssessmentInformation": {
"technology": {
"ccsTechnologicalCO2CaptureIncluded": null,
"boundaryProcessesDescription": null
},
"idAndVersion": {
"id": "PCF-DEMO-000001",
"version": "1",
"status": "Active",
"retroOrProspectivePcfType": null,
"precedingPfIds": null
},
"boundarySpecifications": {
"exemptedEmissionsPercent": 0.0,
"exemptedEmissionsDescription": null
},
"geography": {
"geographyRegionOrSubregion": "Global",
"geographyCountrySubdivision": "Global",
"geographyCountry": null
},
"time": {
"referencePeriodStart": "2025-01-01T00:00:00.000Z",
"referencePeriodEnd": "2025-12-31T00:00:00.000Z",
"created": "2026-01-15T00:00:00.000Z",
"validityPeriodEnd": "2026-12-31T00:00:00.000Z",
"validityPeriodStart": "2026-01-15T00:00:00.000Z"
}
},
"verificationAndCertificationShares": {
"programCertificationShare": null,
"productVerificationShare3rdParty": null,
"productVerificationShare2ndParty": null,
"productVerificationShare1stParty": null
},
"pcfMethodology": {
"massBalancingInformation": {
"massBalancingUsed": null,
"freeAttributionInMassBalancing": null,
"massBalancingCertificateScheme": null
},
"standards": {
"crossSectoralStandards": [],
"productOrSectorSpecificRules": []
},
"gwpCharacterizationFactorDetails": {
"ipccCharacterizationFactors": null
},
"allocationInForeground": {
"allocationWasteIncineration": "Cut-off",
"allocationRulesDescription": "Example allocation methodology",
"allocationRecycledCarbon": null
}
}
},
"general": {
"comment": "Example dataset for customer demonstration purposes only",
"pcfLegalStatement": null
},
"carbonContent": {
"carbonContentTotal": null,
"fossilCarbonContent": null,
"biogenicCarbonContent": null,
"packagingBiogenicCarbonContent": null,
"recycledCarbonContent": null
},
"productLifeCycleStagesAndEmissions": {
"productionStage": {
"pcfIncludingBiogenicUptake": null,
"pcfExcludingBiogenicUptake": 1.24,
"fossilGhgEmissions": null,
"biogenicNonCO2Emissions": 0.0,
"biogenicCO2Uptake": null,
"landUseChangeGhgEmissions": null,
"landManagementBiogenicCO2Emissions": null,
"packagingLandManagementBiogenicCO2Emissions": null,
"landManagementBiogenicCO2Removals": null,
"aircraftGhgEmissions": null
},
"distributionStage": {
"distributionStageIncluded": true,
"distributionStagePcfIncludingBiogenicUptake": null,
"distributionStagePcfExcludingBiogenicUptake": 0.06,
"distributionStageFossilGhgEmissions": null,
"distributionStageBiogenicNonCO2Emissions": null,
"distributionStageBiogenicCO2Uptake": null,
"distributionStageLandUseChangeGhgEmissions": null,
"distributionStageLandManagementBiogenicCO2Emissions": null,
"distributionStageLandManagementBiogenicCO2Removals": null,
"distributionStageAircraftGhgEmissions": null
},
"packagingStage": {
"packagingEmissionsIncluded": true,
"packagingPcfIncludingBiogenicUptake": null,
"packagingPcfExcludingBiogenicUptake": null,
"packagingFossilGhgEmissions": null,
"packagingBiogenicNonCO2Emissions": null,
"packagingBiogenicCO2Uptake": null,
"packagingLandUseChangeGhgEmissions": null,
"packagingLandManagementBiogenicCO2Emissions": null,
"packagingLandManagementBiogenicCO2Removals": null,
"packagingAircraftGhgEmissions": null
}
},
"attestationOfConformance": null
},
"circularity": {
"RecycledContentInformation": [
{
"RecycledMaterial": "Nickel",
"PreConsumerShare": 18.5,
"PostConsumerShare": 4.2
}
],
"RenewableContent": 12.0,
"SafetyMeasures": {
"SafetyInstructions": null,
"ExtinguishingAgents": null
}
},
"handoverDocumentation": {
"Documents": [
{
"DocumentIds": [
{
"Domain": "DEMO",
"Identifier": "DOC-DEMO-001",
"IsPrimary": true
}
],
"DocumentClassifications": [
{
"ClassId": "02-02",
"ClassName": "Safety Data Sheet",
"System": "VDI2770"
}
],
"DocumentVersions": [
{
"Language": [
"en"
],
"Version": "1.0",
"Title": "Example Safety Data Sheet",
"Subtitle": null,
"Description": "Demonstration document",
"DigitalFiles": [
{
"Link": "https://example.com/document.pdf",
"MimeType": "application/pdf"
}
]
}
]
}
]
}
}
}
  • {{DigitalTwinId}}-Unique identifier of the Digital Twin. Use the same Digital Twin ID used in the submodel. The value must be provided in UUIDv4 format.

  • {{submodel_Id}}-Unique identifier of the submodel. The value must be provided in UUIDv4 format.

  • {{company_name}}-Name of your company

  • {{sourceId}}- Use any string value for reference purposes.

After the request is submitted successfully, the expected sample response confirms that the Battery Pass submodel has been created.

Expected Sample response:

5.5 Create Submodel Asset- Battery Pass

After the Battery Pass submodel has been created, it must be published as an asset in the EDC. This allows Henkel to discover and access the Battery Pass submodel through the Catena-X dataspace.

Use the following API endpoint to create the Battery Pass submodel asset:

Method:POST

Endpoint: {{EDC_URL}}/management/v3/assets

The asset definition links the EDC asset to the Battery Pass submodel endpoint. It identifies the asset as a Catena-X submodel and includes the semantic identifier for the Battery Pass model.

Suppliers should keep the JSON structure, field names, and technical properties unchanged. Only the placeholder values should be replaced with supplier-specific identifiers and endpoint URLs.

The placeholders in the request must be completed as follows:

  • {{EDC_URL}} is the base URL of the supplier’s EDC management API.

  • {{ASSET_ID}} is the identifier of the asset. It can be a string or a UUID. Using UUIDv4 is recommended to ensure uniqueness.

  • {{submodel_url}} is the endpoint URL of the Battery Pass submodel that will be referenced in the asset definition.

The following technical properties should remain unchanged unless Henkel or the implementation partner confirms otherwise:

  • dct:type identifies the asset as a Catena-X submodel.

  • cx-common:version defines the Catena-X version used for the asset.

  • aas-semantics:semanticId identifies the Battery Pass semantic model.

  • dataAddress points to the submodel endpoint and defines the required proxy settings.

After the request is submitted successfully, the expected sample response confirms that the Battery Pass submodel asset has been created in the EDC.

{
"@context": {
"dct": "http://purl.org/dc/terms/",
"cx-common": "https://w3id.org/catenax/ontology/common#",
"cx-taxo": "https://w3id.org/catenax/taxonomy#",
"aas-semantics": "https://admin-shell.io/aas/3/0/HasSemantics/"
},
"@type": "Asset",
"@id": "{{ASSET_ID}}",
"properties": {
"dct:type": {
"@id": "cx-taxo:Submodel"
},
"cx-common:version": "3.0",
"aas-semantics:semanticId": {
"@id": " urn:io.catenax.battery.battery_pass:6.1.0"
}
},
"dataAddress": {
"@type": "DataAddress",
"type": "HttpData",
"baseUrl": "{{submodel_url}}",
"proxyMethod": "true",
"proxyBody": "true",
"proxyPath": "false",
"proxyQueryParams": "false"
}
}
  • {{ASSET_ID}} is the identifier of the asset. It can be specified as a string or a UUID. Using UUIDv4 is recommended to ensure uniqueness.

  • {{submodel_url}} is the endpoint URL of the Battery Pass submodel that is referenced in the asset definition.

Expected Sample response:

5.6 Create Contract definition

This section defines the access and usage conditions for the Battery Pass submodel asset. These policies control who may access the asset and how the data may be used after access has been granted.

For the Battery Pass submodel asset, suppliers must create three items in the EDC:

  • an access policy for the submodel asset;

  • a usage policy for the submodel asset; and

  • a contract definition that links the asset to both policies.

Together, these steps allow Henkel to discover the asset, negotiate the contract, and access the Battery Pass submodel under the agreed Catena-X policy conditions.

The Policy definitions here are only compatible for Jupiter EDCs (version 0.10.x and older). Find more information about new policy definitions and EDC Migration in Section 8: Schema Structure Changes in CX-Saturn.

Access policy for Submodel Asset

The access policy defines which business partner is allowed to access the Battery Pass submodel asset. In this example, access is limited to an active Catena-X member with the specified Business Partner Number.

Use the following API endpoint to create the access policy:

Method: POST
Endpoint: {{EDC_URL}}/management/v3/policydefinitions

Suppliers should keep the JSON structure and policy logic unchanged. Only the placeholder values should be replaced.

The placeholders in the request must be completed as follows:

  • {{EDC_URL}} is the base URL of the supplier’s EDC management API.

  • {{ACCESS_POLICY_ID}} is the identifier of the access policy. It can be specified as a numeric value or a string, but it must be unique and reused consistently in later steps.

  • {{POLICY_BPN}} is the Business Partner Number (BPN) of the business partner that will be granted access under the policy.

The access policy checks two conditions:

  • the partner must have an active Catena-X membership; and

  • the partner’s BPN must match the BPN defined in {{POLICY_BPN}}.

{
"@id": "{{ACCESS_POLICY_ID}}",
"@type": "PolicyDefinition",
"policy": {
"@type": "odrl:Set",
"odrl:permission": {
"odrl:action": {
"@id": "odrl:use"
},
"odrl:constraint": {
"odrl:and": [
{
"odrl:leftOperand": {
"@id": "cx-policy:Membership"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "active"
},
{
"odrl:leftOperand": {
"@id": "cx-policy:BusinessPartnerNumber"

},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "{{POLICY_BPN}}"
}
]
}
},
"odrl:prohibition": [],
"odrl:obligation": []
},
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"tx": "https://w3id.org/tractusx/v0.0.1/ns/",
"tx-auth": "https://w3id.org/tractusx/auth/",
"cx-policy": "https://w3id.org/catenax/policy/",
"odrl": "http://www.w3.org/ns/odrl/2/"
}
}
  • {{ACCESS_POLICY_ID}}-– Identifier of the access policy. Can be specified as a numeric value or a string.

  • {{POLICY_BPN}}- Business Partner Number (BPN) of the business partner that will be granted access under the policy

After the request is submitted successfully, the expected sample response confirms that the access policy has been created.

Expected Sample response:

Usage policy for Submodel Asset

The usage policy defines how the Battery Pass submodel data may be used after access has been granted. This ensures that the data is exchanged under the required Catena-X governance and usage-purpose conditions.

Use the following API endpoint to create the usage policy:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/policydefinitions

Suppliers should keep the JSON structure and policy conditions unchanged. Only the placeholder value should be replaced.

The placeholder in the request must be completed as follows:

  • {{USAGE_POLICY_ID}} is the identifier of the usage policy. It can be specified as a numeric value or a string, but it must be unique and reused consistently in the contract definition.

The usage policy checks two conditions:

  • the framework agreement must be DataExchangeGovernance:1.0; and

  • the usage purpose must be cx.circular.dpp:1.

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"cx-policy": "https://w3id.org/catenax/policy/",
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"@id": "{{USAGE_POLICY_ID}}",
"policy": {
"@type": "odrl:Set",
"odrl:permission": {
"odrl:action": {
"@id": "odrl:use"
},
"odrl:constraint": {
"odrl:and": [
{
"odrl:leftOperand": {
"@id": "cx-policy:FrameworkAgreement"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "DataExchangeGovernance:1.0"
},
{
"odrl:leftOperand": {
"@id": "cx-policy:UsagePurpose"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "cx.circular.dpp:1"
}
]
}
}
}
}
  • {{USAGE_POLICY_ID}}- Identifier of the usage policy. Can be specified as a numeric value or a string.

After the request is submitted successfully, the expected sample response confirms that the usage policy has been created.

Expected Sample response:

Create Contract Definition for Submodel Asset

The contract definition links the Battery Pass submodel asset to the access policy and usage policy created in the previous steps. This makes the asset available for contract negotiation through the EDC.

Use the following API endpoint to create the contract definition:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/contractdefinitions

Suppliers should keep the JSON structure unchanged and only replace the placeholder values with the correct identifiers.

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "ContractDefinition",
"@id": "{{CONTRACT_DEFINITION_ID}}",
"accessPolicyId": "{{ACCESS_POLICY_ID}}",
"contractPolicyId": "{{USAGE_POLICY_ID}}",
"assetsSelector": [
{
"operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"operator": "=",
"operandRight": "{{ASSET_ID}}"
}] }

The placeholders in the request must be completed as follows:

  • {{CONTRACT_DEFINITION_ID}} is the identifier of the contract definition. It can be specified as any unique value.

  • {{ACCESS_POLICY_ID}} is the identifier of the access policy created in the previous step. This value must exactly match the Access Policy ID used during access policy creation.

  • {{USAGE_POLICY_ID}} is the identifier of the usage policy created in the previous step. This value must exactly match the Usage Policy ID used during usage policy creation.

  • {{ASSET_ID}} is the identifier of the Battery Pass submodel asset created in section 5.5. This value must exactly match the Asset ID used during asset creation.

After the request is submitted successfully, the expected sample response confirms that the contract definition has been created.

Expected Sample response:

5.7 Create Digital Twin

This step creates the Digital Twin shell descriptor for the product or component. The Digital Twin acts as the digital representation of the supplied part and links the part identifiers, supplier information, lifecycle phase, and Battery Pass submodel in the Digital Twin Registry.

Use the following API endpoint to create the Digital Twin shell descriptor:

Method: POST

Endpoint: {{dashboard_backend }}/api/expert/v1/dtr/{{component_id}}/shell-descriptors

The JSON below registers the Digital Twin and connects it to the Battery Pass submodel created in the previous steps. Suppliers should keep the JSON structure, field names, and technical paths unchanged. Only the placeholder values should be replaced with supplier-specific identifiers and endpoint information.

The Digital Twin descriptor contains the following main information

  • Description: a short description of the shell descriptor.

  • Digital Twin identifiers: the Digital Twin ID, Catena-X ID, and short ID.

  • Specific asset IDs: business and technical identifiers used to identify the part, such as customer part ID, part instance ID, manufacturer part ID, intrinsic ID, and manufacturer ID.

  • Lifecycle phase: the lifecycle status of the asset, such as AsBuilt.

  • Submodel descriptor: the technical link to the Battery Pass submodel that was created earlier.

  • EDC endpoint information: the EDC endpoint and DSP information needed to access the submodel through the dataspace.

{{dashboard_backend}} (pre-prod)

{{dashboard_backend}} (prod)

{{component_id}}

EDC Component ID


​

{
"description": [
{
"language": "en",
"text": "Battery Passport shell descriptor"
}
],
"idShort": "Battery_{{PartInstanceId}}",
"id": "{{DigitalTwinId}}",
"globalAssetId":"{{Catena-XId}}",
"specificAssetIds": [{
"name": "customerPartId",
"value": "{{customerPartId}}",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}”
}
]
}
},
{

"name": "partInstanceId",
"value": "{{PartInstanceId}}",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}"
}
]
}
},
{

"name": "manufacturerPartId",
"value": "{{manufacturerPartId}}",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}"
}
]
}
},
{

"name": "digitalTwinType",
"value": "PartType",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}"
}
]
}
},
{

"name": "intrinsicId",
"value": "{{intrinsicId}}",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}"
}
]
}
},
{

"name": "manufacturerId",
"value": "{{manufacturerId}}",
"externalSubjectId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "{{Partner_BPNL}}"
}
]
}
}
{
"name": "assetLifecyclePhase",
"value": "AsBuilt"
}
],
"submodelDescriptors": [
{
"endpoints": [
{
"interface": "SUBMODEL-3.0",
"protocolInformation": {
"href": "{{edc-url-without-api/v1/dsp}}/submodel",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "DSP",
"subprotocolBody": "id={{asset_id}};dspEndpoint={{edc_url}}",
"subprotocolBodyEncoding": "plain",
"securityAttributes": [
{
"type": "NONE",
"key": "NONE",
"value": "NONE"
}
]
}
}
],
"idShort": "batteryPass",
"id": "{{submodel_id}}",
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "Submodel",
"value": "urn:bamm:io.catenax.battery.battery_pass:6.0.1#BatteryPass"
} ]} }]}

The placeholders in the request must be completed as follows:

  • {{dashboard_backend}} is the backend URL of the supplier’s dashboard or technical environment.

  • {{component_id}} is the identifier of the component or product for which the Digital Twin is being created.

  • {{PartInstanceId}} is the serial number of the part, as specified by the manufacturer. This may be applied to the part as a barcode, DMC, or similar identifier.

  • {{DigitalTwinId}} is the unique identifier of the Digital Twin. Use the same Digital Twin ID used in the submodel. The value must be provided in UUIDv4 format.

  • {{Catena-XId}} is the unique Catena-X identifier. The value must be provided in UUIDv4 format.

  • {{customerPartId}} is the customer’s part or catalogue ID. This property is optional.

  • {{intrinsicId}} is the unified technical key used to search for the Digital Twin of a part. In this case, the partInstanceId can be used as the intrinsic ID.

  • {{manufacturerPartId}} is the manufacturer’s part or catalogue ID.

  • {{Partner_BPNL}} is the Business Partner Number of the business partner referenced in the asset identifier.

  • {{manufacturerId}} is the supplier’s Business Partner Number, usually provided as a BPNL.

  • {{edc_url}} is the endpoint URL of the supplier’s EDC. Example: https://data-exchange-connector-edc.dataspaceos.svc.cofinity-x.com/api/v1/dsp

  • {{edc-url-without-api/v1/dsp}} is the supplier’s EDC endpoint URL without the /api/v1/dsp path at the end. Example: https://data-exchange-connector-edc.dataspaceos.svc.cofinity-x.com

  • {{submodel_id}} is the identifier of the Battery Pass submodel created earlier.

  • {{asset_id}} is the ID of the Battery Pass submodel asset created earlier.

After the request is submitted successfully, the expected sample response confirms that the Digital Twin shell descriptor has been created and linked to the Battery Pass submodel.

Expected Sample response:

6. Send and Receive Notifications

This section describes the processes for sending and receiving notifications between partners

6.1 Notification Process Flow

After the Battery Pass data has been created, published, and made available through the Catena-X dataspace, notifications are used to inform Henkel that relevant data is available or has been updated.

The notification process supports the exchange between the supplier and Henkel by allowing status updates, data availability messages, and feedback notifications to be sent through the agreed Catena-X and EDC-based process.

For the following notification steps, suppliers will need the correct Henkel EDC endpoint and Business Partner Number for the relevant environment.

Henkel environment details

Beta environment

Production environment

Suppliers should use the Beta environment for testing and validation, and the Production environment only once the technical setup has been confirmed for productive data exchange.

6.2 Send Notifications

This section explains how suppliers send notifications to Henkel after Battery Pass data has been prepared or updated.

The notification allows Henkel to identify that data is available and to start the required discovery, contract negotiation, and data access steps through the EDC.

6.2.1 Architecture to Send Notifications

This section describes the architecture and process for sending notifications from suppliers to Henkel.

In this process, the supplier acts as the notification sender and Henkel acts as the notification receiver. The supplier uses its EDC to access the relevant Henkel notification asset and sends the notification through the agreed endpoint. The notification informs Henkel that Battery Pass data is available, updated, or ready for processing.

At a high level, the process includes the following steps:

  • Search Henkel’s catalogue to find the notification asset.

  • Start the EDR negotiation process for the notification asset.

  • Retrieve the EDR information needed to access the endpoint.

  • Use the transfer process details to obtain the required access information.

  • Push the notification message to Henkel.

Suppliers should follow the API steps in the sections below exactly and replace only the placeholder values with the correct environment, partner, and asset-specific information.

6.2.2 Catalog Search

This step searches the provider’s EDC catalog to find the notification asset that is used for Digital Twin event notifications. In this process, the supplier searches Henkel’s catalog so that the relevant notification asset can be identified before the EDR negotiation step.

Use the following API endpoint to request the catalog:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/catalog/request

The request uses the provider’s protocol endpoint and BPNL to query the correct EDC catalogue. The filter expression limits the search result to assets with the type DigitalTwinEventAPI, which is the asset type used for notification exchange.

Suppliers should keep the JSON structure and filter criteria unchanged. Only the placeholder values should be replaced with the correct endpoint and BPNL.

{
"@context": {
"dct": "http://purl.org/dc/terms/",
"edc": "https://w3id.org/edc/v0.0.1/ns/"
},
"protocol": "dataspace-protocol-http",
"counterPartyAddress": "{{PROVIDER_PROTOCOL_URL}}",
"counterPartyId": "{{PROVIDER_BPNL}}",
"additionalScopes": "org.eclipse.edc.vc.type:DataExchangeGovernanceCredential:read",
"querySpec": {
"@type": "QuerySpec",
"edc:offset": 0,
"edc:limit": 500,
"edc:filterExpression": [{
"@type": "Criterion",
"operandLeft": "'http://purl.org/dc/terms/type'.'@id'",
"edc:operator": "=",
"edc:operandRight": "https://w3id.org/catenax/taxonomy#DigitalTwinEventAPI"
}

]
}
}
  • {{PROVIDER_PROTOCOL_URL}} is the protocol endpoint URL of the provider’s Eclipse Dataspace Connector. Use the EDC endpoint URL provided by Henkel or the relevant business partner.

  • {{PROVIDER_BPNL}} is the Business Partner Number of the provider. Use the BPNL provided by Henkel or the relevant business partner.

Expected Sample response:

6.2.3 Initiate EDR Negotiation

This step starts the EDR negotiation for the notification asset identified in the catalogue search. The EDR negotiation is required before the supplier can access the endpoint used to send notifications to Henkel.

Use the following API endpoint to initiate the EDR negotiation:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/edrs

The request uses the provider’s EDC protocol endpoint, BPNL, policy ID, and asset ID from the catalogue search response. Suppliers should keep the JSON structure and policy conditions unchanged. Only the placeholder values should be replaced.

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"tx": "https://w3id.org/tractusx/v0.0.1/ns/",
"tx-auth": "https://w3id.org/tractusx/auth/",
"cx-policy": "https://w3id.org/catenax/policy/",
"odrl": "http://www.w3.org/ns/odrl/2/"
},
"counterPartyAddress": "{{PROVIDER_PROTOCOL_URL}}",
"counterPartyId": "{{PROVIDER_BPNL}}",
"protocol": "dataspace-protocol-http",
"policy": {
"@id": "{{POLICY_ID}}",
"@type": "odrl:Offer",
"odrl:permission": {
"odrl:action": {
"@id": "odrl:use"
},
"odrl:constraint": {
"odrl:and": [
{
"odrl:leftOperand": {
"@id": "cx-policy:FrameworkAgreement"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "DataExchangeGovernance:1.0"
},
{
"odrl:leftOperand": {
"@id": "cx-policy:UsagePurpose"
},
"odrl:operator": {
"@id": "odrl:eq"
},
"odrl:rightOperand": "cx.circular.dpp:1"
}
]
}
},
"odrl:prohibition": [],
"odrl:obligation": [],
"odrl:assigner": {
"@id": "{{PROVIDER_BPNL}}"
},
"odrl:target": {
"@id": "{{ASSET_ID}}"
}
}
}

The placeholders in the request must be completed as follows:

  • {{EDC_URL}} is the base URL of the supplier’s EDC management API.

  • {{PROVIDER_PROTOCOL_URL}} is the protocol endpoint URL of the provider’s Eclipse Dataspace Connector. Use the EDC endpoint URL provided by Henkel or the relevant business partner.

  • {{PROVIDER_BPNL}} is the Business Partner Number of the provider. Use the BPN provided by Henkel or the relevant business partner.

  • {{POLICY_ID}} is the policy ID copied from the catalogue search response.

  • {{ASSET_ID}} is the asset ID obtained from the catalogue search response. Use the same asset ID returned for the DigitalTwinEventAPI asset.

After the request is submitted successfully, the expected sample response confirms that the EDR negotiation has been initiated.

Expected Sample response:

6.2.4 Query Cached EDRs

This step checks the cached EDR information for the contract negotiation created in the previous step. The query uses the contract negotiation ID to retrieve the related transfer process information.

Use the following API endpoint to query the cached EDRs:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/edrs/request

The request filters the cached EDRs by the contract negotiation ID returned from the Initiate EDR Negotiation step. Suppliers should keep the JSON structure unchanged and only replace the placeholder value.

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "QuerySpec",
"filterExpression": [
{
"operandLeft": "contractNegotiationId",
"operator": "=",
"operandRight": "{{negotiation_id}}"
}
]
}

The placeholder in the request must be completed as follows:

  • {{negotiation_id}} is the contract negotiation ID received from the previous step. Use the same negotiation ID returned by the Initiate EDR Negotiation request.

After the request is submitted successfully, the expected sample response should return the cached EDR information, including the transfer process ID needed for the next step.

Expected Sample response:

6.2.5 Get EDR with Transfer Process ID

This step retrieves the EDR data address using the transfer process ID from the cached EDR response. The response provides the access information required to send the notification.

Use the following API endpoint to get the EDR data address:

Method:GET

Endpoint: {{EDC_URL}}/management/v3/edrs/{{transferProcessId}}/dataaddress?auto_refresh=true

Since this is a GET request, the request body must be empty.

The placeholders in the request must be completed as follows:

  • {{EDC_URL}} is the base URL of the supplier’s EDC management API.

  • {{transferProcessId}} is the transfer process ID from the response in the previous step.

After the request is submitted successfully, the expected sample response should return the data address details needed to access the notification endpoint.

Expected Sample response:

6.2.6 Push Notification

This step sends the notification message to Henkel. The notification informs Henkel that the supplier has created or updated the relevant Battery Pass technical objects, such as the submodel, submodel asset, and Digital Twin.

Use the EDC endpoint returned in the previous step to push the notification:

Method: POST

Endpoint: {{EDC_endpoint}}- Use the EDC endpoint of the consumer from the previous step (Get EDR with Transfer Process ID)

Notification format to be used:

The notification message must follow the format below. Suppliers should keep the overall JSON structure unchanged and only replace the placeholder values with their own identifiers, BPNL values, timestamps, and endpoint information.

The notification contains two main parts:

  • Header: message ID, context, timestamp, sender and receiver BPNL, feedback URL, and version.

  • Content: notification text and the list of events being reported to Henkel.

The list of events tells Henkel which technical objects were created or updated. In this sample, the notification reports the creation of the Battery Pass submodel, the EDC asset, and the Digital Twin.

{
"header": {
"messageId": "{{messageId}}",
"context": "IndustryCore-DigitalTwinEventAPI-SubmodelUpdate:3.0.0",
"sentDateTime": "{{sentDateTime}}",
"senderBpn": "{{manufacturerBPNL}}",
"receiverBpn": "{{Partner_BPNL}}",
"senderFeedbackUrl": "{{EDC_URL}}",
"version": "3.0.0"
},
"content": {
"information": "Created Submodel, Asset, Digital Twins for Battery Pass",
"listOfEvents": [
{
"eventType": "CreateSubmodel",
"catenaXId": "{{Submodel_id}}"
},
{
"eventType": "CreateAsset",
"catenaXId": "{{AssetID}}"
},
{
"eventType": "CreateDigitalTwin",
"catenaXId": "{{DigitalTwinId}}"
}

]
}
}

The placeholders in the request must be completed as follows:

  • {{EDC_endpoint}} is the endpoint returned from the previous EDR data address step. This is the endpoint used to send the notification.

  • {{messageId}} is the unique identifier of the message. The value must be provided in UUIDv4 format.

  • {{sentDateTime}} is the date and time when the message was sent. The value must be provided in ISO 8601 date-time format.

  • {{manufacturerBPNL}} is the supplier’s BPNL.

  • {{Partner_BPNL}} is the Business Partner Number of the partner receiving the notification.

  • {{EDC_URL}} is the supplier’s EDC endpoint URL used to receive feedback and communication messages.

  • {{Submodel_id}} is the same submodel ID that was generated during the submodel creation process.

  • {{AssetID}} is the same asset ID that was generated during the submodel asset creation process.

  • {{DigitalTwinId}} is the same Digital Twin ID that was generated during the Digital Twin creation process.

After the request is submitted successfully, the expected sample response confirms that the notification has been sent.

6.3 Receive Notifications

This section explains how suppliers can receive feedback notifications from Henkel after Henkel has processed the notification sent by the supplier.

Feedback notifications allow the supplier to understand whether the notification was processed successfully or whether an issue occurred. This supports follow-up, troubleshooting, and confirmation that the Battery Pass data exchange process has completed as expected.

OEM-specific requirement: message broker for data-availability notifications

In addition to the Catena-X and Battery Pass requirements described in this document, Henkel requires each supplier to operate a system for receiving notifications from Henkel such as a message broker (for example Azure Service Bus, AWS SQS, or Apache Kafka) after Battery Pass data has been shared.

Please note that this is a Henkel-specific requirement. It is not defined by the Catena-X standards or the Battery Pass use case, and it is not needed for Catena-X conformity or certification. Data exchange itself continues to run through the Eclipse Dataspace Connector (EDC) as specified by Catena-X.

The supplier is responsible for providing, hosting and securing the message broker. Henkel will provide the connection details, message format and onboarding steps separately.

6.3.1 Architecture To Receive Notifications

This section describes the architecture and process for receiving feedback notifications from Henkel.

In this process, Henkel acts as the feedback notification sender and the supplier acts as the receiver. The supplier must expose a notification asset through its EDC so that Henkel can send feedback messages after processing the notification.

At a high level, the process includes the following steps:

  • The supplier creates an asset for receiving feedback notifications.

  • The supplier defines the access and usage conditions for this notification asset.

  • Henkel discovers and accesses the notification asset through the EDC.

  • Henkel sends a feedback notification to the supplier.

The supplier processes the feedback notification in its own technical environment.

6.3.2 Asset to receive feedback notifications

This step creates the asset that Henkel can use to send feedback notifications to the supplier.Use the following API endpoint to create the feedback notification asset:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/assets

The asset must be configured as a DigitalTwinEventAPI asset. This allows Henkel to identify it as the endpoint for Digital Twin event-related feedback notifications.

The dataAddress section is implementation-specific and depends on the messaging technology used by the supplier. Suppliers may use Azure Service Bus, AWS SQS, Kafka, or another supported transport mechanism. Suppliers should align this section with their own messaging and authentication setup before implementation.

The sample below shows one possible implementation using Azure Service Bus. Suppliers should keep the asset type, taxonomy reference, version, and content type aligned with the sample. The values inside dataAddress.properties must be adapted to the supplier’s own messaging and authentication setup.

{
"@id": "DigitalTwinEventAPI",
"properties": {
"name": " DigitalTwinEventAPI ",
"http://purl.org/dc/terms/type": {
"@id": "https://w3id.org/catenax/taxonomy#DigitalTwinEventAPI"
},
"https://w3id.org/catenax/ontology/common#version": "3.0",
"contentType": "application/json",
"id": "DigitalTwinEventAPI"
},
"dataAddress": {
"type": "HttpData",
"properties": {
"proxyPath": "false",
"oauth2:clientId": "xxxx",
"oauth2:tokenUrl": "xxxx",
"type": "HttpData",
"proxyMethod": "true",
"oauth2:clientSecret": "xxxx",
"oauth2:scope": "xxxxx",
"proxyQueryParams": "true",
"proxyBody": "true",
"baseUrl": "xxxxx"
}
}
}

6.3.3 Contract Definition for Feedback Notification Asset

This step defines the contract conditions for the feedback notification asset. The contract definition makes the notification asset available for access through the EDC under the agreed policy conditions.

The feedback notification asset can use the same policy approach as the Battery Pass submodel asset:

  • Access policy: the notification API asset can use the same access policy as the submodel asset.

  • Usage policy: the notification API asset can use the same usage policy as the submodel asset.

  • Contract definition: the contract definition links the feedback notification asset to the relevant access and usage policies.

Suppliers should keep the JSON structure unchanged and only replace the placeholder values with the correct identifiers.

{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "ContractDefinition",
"@id": "{{CONTRACT_DEFINITION_ID}}",
"accessPolicyId": "{{ACCESS_POLICY_ID}}",
"contractPolicyId": "{{USAGE_POLICY_ID}}",
"assetsSelector": [
{
"operandLeft": "https://w3id.org/edc/v0.0.1/ns/id",
"operator": "=",
"operandRight": "{{ASSET_ID}}"
}
] }

The placeholders in the request must be completed as follows:

  • {{CONTRACT_DEFINITION_ID}} is the identifier of the contract definition. It can be specified as any unique value.

  • {{ACCESS_POLICY_ID}} is the identifier of the access policy used for the feedback notification asset.

  • {{USAGE_POLICY_ID}} is the identifier of the usage policy used for the feedback notification asset.

  • {{ASSET_ID}} is the identifier of the feedback notification asset created in the previous step. This value must exactly match the asset ID used during asset creation.

After the request is submitted successfully, the expected sample response confirms that the contract definition for the feedback notification asset has been created.

6.3.4 Sample data set for Receiving notification

This section provides a sample feedback notification that may be returned by the receiving party after the notification request has been processed.

The feedback notification tells the sender whether the event was processed successfully or whether errors occurred. Each item in the response refers to a specific Catena-X ID and provides a processing status.

The response contains two main parts:

  • Header: message ID, context, timestamp, sender BPN, receiver BPN, and version.

  • Content: list of processed items, including the Catena-X ID, processing status, and status message.

The status value indicates the processing result:

  • OK means the event was processed successfully.

  • ERROR means the event was processed with errors and may require follow-up.

Sample feedback notification returned by the recipient after successful processing of the notification request.

{
"header": {
"messageId": "urn:uuid:83738f3d-9441-4e53-bc7d-6092385d188f",
"context": "IndustryCore-DigitalTwinEventAPI-Feedback:3.0.0",
"sentDateTime": "2024-07-05T08:13:33.20733Z",
"senderBpn": "BPNL000000000YYY",
"receiverBpn": "BPNL00000000XXXX",
"version": "3.0.0"
},
"content": {
"listOfItems": [
{
"catenaXId": "urn:uuid:d32d3b55-d222-41e9-8d19-554af53124dd",
"status": "OK",
"statusMessage": "Event was processed successfully."
},
{
"catenaXId": "urn:uuid:d32d3b55-d222-41e9-8d19-554af53124dd",
"status": "ERROR",
"statusMessage": "Event was processed with errors."
}
]
}

Note: The sample below shows two possible status outcomes. In a real response, the actual status will depend on the processing result for the submitted notification.

7. General Tests

This section explains how suppliers can test their EDC setup before exchanging Battery Pass data with Henkel.

7.1 Test your EDC with the Public Asset

To verify that the supplier’s EDC is working correctly, Cofinity-X provides a public test asset with open access and usage policies. Suppliers can use this public offer to test contract negotiation and data exchange before connecting to Henkel-specific assets.

Suppliers should use the appropriate endpoint for their environment.

Endpoint

BPN

BPNLCOFINITYEZFA

Asset ID

4caffb96-681e-4d4b-8353-628412d7192f

Endpoint

BPN

BPNLCOFINITYEZFA

Asset ID

ebc4f4c5-8657-4a62-9003-fd45208cb89c

Suppliers should complete this test successfully before proceeding with productive Battery Pass data exchange.

8. Schema Structure Changes in CX-Saturn (0.11.x and 0.12.x)

Catena-X publishes its standards in coordinated releases. The original version of this guide was written for the CX-Jupiter release (versions 0.10.x and older). CX-Saturn went live on 25 November 2025 and changes several of the technical structures used in Sections 5 and 6. With the go-live of CX-Neptune (0.13.x), planned for 24 November 2026, Jupiter will be deprecated.

This section is not relevant if the supplier and Henkel will continue to use the older EDC versions (0.10.x and older).

This section summarizes how the request bodies and data structures in this guide change with CX-Saturn, i.e. version 0.11.x and 0.12.x.

8.1 Policy Definitions

Policies change the most between the two releases. Saturn EDCs (0.11.x to 0.12.x) are backward compatible, so an existing setup does not break when the EDC is upgraded.

Hence, this section is only relevant if the supplier will be exchanging data with Henkel Saturn EDC (0.11.x and 0.12.x). The supplier must then use policies in the CX-Saturn format shown below.

The endpoint for creating policies does not change:

Method: POST

Endpoint: {{EDC_URL}}/management/v3/policydefinitions

8.1.1 Access Policy (CX-Saturn)

This is the CX-Saturn equivalent of the access policies in Sections 5.2 and 5.6. It can also be used for the feedback notification asset in Section 6.3.3.

{
"@context": [
"https://w3id.org/catenax/2025/9/policy/odrl.jsonld",
"https://w3id.org/catenax/2025/9/policy/context.jsonld",
{
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
}
],
"@type": "PolicyDefinition",
"@id": "{{ACCESS_POLICY_ID}}",
"policy": {
"@type": "Set",
"permission": [
{
"action": "access",
"constraint": {
"and": [
{
"leftOperand": "Membership",
"operator": "eq",
"rightOperand": "active"
},
{
"leftOperand": "BusinessPartnerNumber",
"operator": "isAnyOf",
"rightOperand": "{{POLICY_BPN}}"
}
]
}
}
]
}
}

Compared with the Jupiter version, note the following differences:

  • The @context now references the Catena-X policy profile instead of defining the cx-policy and odrl prefixes.

  • The action is access instead of odrl:use.

  • BusinessPartnerNumber uses the operator isAnyOf, and {{POLICY_BPN}} is placed inside a list. Several BPNLs can be listed if more than one partner should see the offer.

8.1.2 Usage Policy (CX-Saturn)

This is the CX-Saturn equivalent of the usage policy for the Battery Pass submodel asset in Section 5.6 and for the feedback notification asset in Section 6.3.3. For the dDTR usage policy in Section 5.2, use the same structure with the UsagePurpose cx.core.digitalTwinRegistry:1.

{
"@context": [
"https://w3id.org/catenax/2025/9/policy/odrl.jsonld",
"https://w3id.org/catenax/2025/9/policy/context.jsonld",
{
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
}
],
"@type": "PolicyDefinition",
"@id": "{{USAGE_POLICY_ID}}",
"policy": {
"@type": "Set",
"permission": [
{
"action": "use",
"constraint": {
"and": [
{
"leftOperand": "FrameworkAgreement",
"operator": "eq",
"rightOperand": "DataExchangeGovernance:1.0"
},
{
"leftOperand": "UsagePurpose",
"operator": "isAnyOf",
"rightOperand": "cx.circular.dpp:1"
}
]
}
}
]
}
}

Contract definitions keep the structure shown in Section 5.2. Only the referenced accessPolicyId and contractPolicyId change to the IDs of the new Saturn policies.

8.2 Catalog Request and EDR Negotiation

When a supplier sends a notification to Henkel (Section 6.2), the catalog request and the EDR negotiation must use DSP 2025-1.

This section is only relevant if both the supplier and Henkel are using a Saturn EDC (0.11.x and newer). Further information will be communicated once Henkel upgrades their own EDC to a Saturn version.

In the catalog request in Section 6.2.2, only three parameters change; the querySpec filter for DigitalTwinEventAPI stays the same:

{
"@context": [
{
"@vocab":"https://w3id.org/edc/v0.0.1/ns/"
}
],
"@type": "CatalogRequest",
"counterPartyId": "{{PROVIDER_DID}}",
"counterPartyAddress": "{{PROVIDER_DSP_URL}}",
"protocol": "dataspace-protocol-http:2025-1",
"additionalScopes": "org.eclipse.edc.vc.type:DataExchangeGovernanceCredential:read",
"querySpec": {
"@type": "QuerySpec",
"offset": 0,
"limit": 500,
"filterExpression": [{
"operandLeft": "'http://purl.org/dc/terms/type'.'@id'",
"operator": "=",
"operandRight": "https://w3id.org/catenax/taxonomy#DigitalTwinEventAPI"
}
]
}
}
  • {{PROVIDER_DSP_URL}} is the DSP 2025-1 endpoint of Henkel’s Saturn connector

  • {{PROVIDER_DID}} is Henkel’s DID.

  • These details will be provided once Henkel upgrades their EDC to a Saturn version.

The EDR negotiation in Section 6.2.3 changes as follows:

{
"@context": [
"https://w3id.org/catenax/2025/9/policy/context.jsonld",
"https://w3id.org/dspace/2025/1/odrl-profile.jsonld",
{
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
}
],
"@type": "ContractRequest",
"counterPartyAddress": "{{PROVIDER_DSP_URL}}",
"protocol": "dataspace-protocol-http:2025-1",
"policy": {
"@id": "{{POLICY_ID}}",
"@type": "Offer",
"assigner": "{{PROVIDER_DID}}",
"permission": [
{
"action": "use",
"constraint": {
"and": [
{
"leftOperand": "FrameworkAgreement",
"operator": "eq",
"rightOperand": "DataExchangeGovernance:1.0"
},
{
"leftOperand": "UsagePurpose",
"operator": "isAnyOf",
"rightOperand": "cx.circular.dpp:1"
}
]
}
}
],
"prohibition": [],
"obligation": [],
"target": "{{ASSET_ID}}"
},
"callbackAddresses": []
}
  • {{POLICY_ID}} is the @id of the offer in the hasPolicy field of the catalogue response.

  • {{ASSET_ID}} is the ID of Henkel’s DigitalTwinEventAPI asset from the catalogue response.

  • The permission block must be an exact copy of the offer returned in the catalogue. If Henkel’s offer contains different constraints from those shown above, copy them as returned.

The subsequent steps, querying cached EDRs (6.2.4), retrieving the data address (6.2.5) and pushing the notification (6.2.6), are unchanged.

8.4 Assets and Data Models

Battery Pass semantic ID

The semantic ID must be written in exactly the same way in the submodel asset (Section 5.5) and in the submodel descriptor of the Digital Twin (Section 5.7). Use the following value in both places, without leading spaces:

urn:samm:io.catenax.battery.battery_pass:6.1.0#BatteryPass

Feedback notification asset

It needs a second contract definition that references the Saturn policies.

8.5 Migration Guide: CX-Jupiter to CX-Saturn

It is strongly recommended that EDCs be upgraded to at least Saturn version (0.11.x or 0.12.x) by 24 November 2026, because Jupiter versions are being deprecated.

In order to upgrade your EDC, follow the steps contained in this guide.

With the release of Neptune, further updates of this guide are expected.

9. Problem and Incident Management

If suppliers experience issues while using the Dataspace OS solution for this use case, they should contact the Cofinity-X Service Desk.

Service Desk Portal: https://servicedesk.jira.cofinity-x.com/
​Email: [email protected]

When reporting an issue, suppliers should provide the following information:

  • a brief description of the problem;

  • the environment used, such as Beta, Pre-Production, or Production;

  • the relevant API endpoint or process step;

  • error messages, if available;

  • screenshots, if available;

  • the time and date when the issue occurred; and

  • any relevant request or response IDs, if available.

This information helps the support team investigate and resolve the issue more efficiently.

All reported incidents are handled according to their impact and priority. Suppliers will receive updates on the progress and resolution of their tickets as soon as possible.

Did this answer your question?