Skip to main content
Version: Next

Development View

DCM kit banner

This page describes the most important parts for the software implementation of the DCM standards. For the full technical specification, please refer to the standard CX-0128 Demand and Capacity Management Data Exchange.

Introduction

This document provides developers with resources to accelerate the development of apps and services.

Capabilities of a DCM application

CX-0128 Demand and Capacity Management Data Exchange describes the following capabilities:

CapabilityCategoryRelated Aspect ModelsRelated APIs
Providing and consuming demand dataCoreWeekBasedMaterialDemandWeekBasedMaterialDemand API
Providing and consuming capacity dataCoreWeekBasedCapacityGroupWeekBasedCapacityGroup API
Comparing demand and capacity dataCoreWeekBasedMaterialDemand
WeekBasedCapacityGroup
N/A
Demand volatility metricsOuter CoreWeekBasedCapacityGroupWeekBasedCapacityGroup API
Simulated delta productionOuter CoreWeekBasedCapacityGroupWeekBasedCapacityGroup API
Load factorsOuter CoreWeekBasedCapacityGroupWeekBasedCapacityGroup API
Digital twinsExtendedWeekBasedMaterialDemand
WeekBasedCapacity Group
DCM Asset Administration Shell API
Request for updateExtendedIdBasedRequestForUpdateIdBasedRequestForUpdate AP
CommentsExtendedIdBasedCommentIdBasedComment API
Supply chain disruption notificationsExtendeddemandAndCapacityNotificationDemandAndCapacityNotification API
  • Core capabilities are mandatory within the standard.
  • Outer core capabilities share APIs and aspect models with core capabilities, but are optional.
  • Extended capabilities introduce aspect models or APIs beyond the core and are optional.

A MVP approach can be followed when developing software, implementing CX-0128, by taking care of core capabilities first, followed by outer core and finishing with extended capabilities.

Roles and rights of a DCM application

CX-0128 Demand and Capacity Management Data Exchange describes the business roles customer and supplier. In addition an admin role might be a sensible addition to any application. Most companies within a supply chain will have need of both business roles. Individual users within a company might need access to both business roles.

RoleCapabilities
Customer- Modify WeekBasedMaterialDemand
- Compare WeekBasedMaterialDemand to WeekBasedCapacityGroup
- Utilize comments
- Utilize supply chain disruption notification
Supplier- Modify WeekBasedCapacityGroup
- Compare WeekBasedMaterialDemand to WeekBasedCapacityGroup
- Link WeekBasedMaterialDemand to WeekBasedCapacityGroup
- Utilize comments
- Utilize supply chain disruption notification
Admin- Configure Request for update

Aspect models utilized by a DCM application

Application Programming Interfaces

APIs as data assets

The data consumer registers one data-asset per API with its own EDC. Those data-assets need a dataAddress with a baseURL pointing to the URI of the API endpoint. The same dataAddress needs to be setup to use the consumers EDC as a proxy, utilizing the different proxy related properties within the dataAddress object.

Asset example

{
"@id": "capacitygroup-prod",
"@type": "Asset",
"properties": {
"http://purl.org/dc/terms/type": {
"@id": "https://w3id.org/catenax/taxonomy#DcmWeekBasedCapacityGroup"
},
"https://w3id.org/catenax/ontology/common#version": "2.0",
"id": "capacitygroup-prod"
},
"dataAddress": {
"@type": "DataAddress",
"proxyPath": "false",
"oauth2:clientId": {{clientID}},
"oauth2:tokenUrl": {{tokenUrl}},
"type": "HttpData",
"proxyMethod": "true",
"oauth2:clientSecretKey": "dcm-api-client-secret",
"oauth2:scope": "roles",
"proxyQueryParams": "true",
"proxyBody": "true",
"baseUrl": "https://myDCMapp.mycompany.com/catx/apis/weekbasedcapacitygroup"
},

Data exchange

The data provider is required to use HTTP POST to call the API in order to transfer the data. The POST request has to contain a messageHeader and can contain multiple information objects, with information objects being the different aspect models. Because one API is dedicated to one aspect models mixing different aspect models into the same payload as information objects will result in a malformed payload.

Payload structure

{
"messageHeader":
<messageHeaderObject>,

"content":{
"informationObject":[
<informationObject>,
<informationObject>
]
}
}

This format ensures that the header, which contains metadata about the message, is kept separate from the content, which includes the actual data being exchanged. The content section can hold multiple informationObject entries. These objects can be one of the following types: WeekBasedMaterialDemand, WeekBasedCapacityGroup, IdBasedComment or IdBasedRequestForUpdate.

The master reference for generating additional file formats and serializations is the RDF turtle file, which is an instance of the Semantic Aspect Meta Model. The RDF turtle file for the messageHeaderObject is defined in a centralized shared aspect model and can be accessed at the following URL:

https://github.com/eclipse-tractusx/sldt-semantic-models/blob/main/io.catenax.shared.message_header/3.0.0/MessageHeaderAspect.ttl

Within the RDF turtle file, you will find detailed descriptions for how to use the message header.

For further information on the APIs and how to use them in order to facilitate data exchange, please refer to CX-0128 Demand and Capacity Management Data Exchange and CX-0018 Dataspace Connectivity

APIs utilized by a DCM application

Testing a DCM application

Having a well organized and documented testing of a DCM application is advantageous not only for the whole development process, but especially because test-runs can be used as proof for required certification of the application.

It is recommended to compartmentalize tests into test-sets from which different user journeys can be built, depending on which specific capabilities are supposed to be tested by the user journey. Below you will find tests, test-sets and user journeys. Please be aware that they do not provide full coverage of the standard and depending on how you build your application you will need to expand on them.

List of Test-Sets

Test-SetDescriptionTests in test-set
Customer: Prepare yourselfPrepares customer for the user journey, by setting up EDC, data assets, wallet, certificates etc.- Setup EDC
- Register APIs as assets
- Check wallet for certificates
- Prepare variables for other tests
- User journey specific preparation
Supplier: Prepare yourselfPrepares supplier for the user journey, by setting up EDC, data assets, wallet, certificates etc.- Setup EDC
- Register APIs as assets
- Check wallet for certificates
- Prepare variables for other tests
- User journey specific preparation
Customer: Create WeekBasedMaterialDemandTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Customer: Provide WeekBasedMaterialDemandTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Supplier: Consume WeekBasedMaterialDemandTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Supplier: Create WeekBasedCapacityGroupTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Supplier: Provide WeekBasedCapacityGroupTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Customer: Consume WeekBasedCapacityGroupTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Customer: Visualize CapacityGroup together with MaterialDemandMinor user acceptance test- Bottleneck calculation
- Surplus calculation
- Zero deviation calculation
- User journey specific calculation
Supplier: Visualize CapacityGroup together with MaterialDemandMinor user acceptance test- Bottleneck calculation
- Surplus calculation
- Zero deviation calculation
- User journey specific calculation
Customer: Create IdBasedRequestForUpdateTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Customer: Provide IdBasedRequestForUpdateTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Supplier: Consume IdBasedRequestForUpdateTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Supplier: Create IdBasedRequestForUpdateTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Supplier: Provide IdBasedRequestForUpdateTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Customer: Consume IdBasedRequestForUpdateTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Customer: Create IdBasedCommentTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Customer: Provide IdBasedCommentTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Supplier: Consume IdBasedCommentTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Supplier: Create IdBasedCommentTests the implementation of the aspect model- Create valid aspect model
- Create invalid aspect model
- Create user journey specific aspect model
Supplier: Provide IdBasedCommentTests communication via EDC- Provide valid payload
- Provide invalid payload
- Provide user journey specific payload
Customer: Consume IdBasedCommentTests the implementation of the API and the aspect model- Consume valid payload
- Consume invalid payload
- Consume user journey specific payload
Customer: Visualize IdBasedComment together with CapacityGroup and MaterialDemandMinor user acceptance test- Comment linked to WeekbasedCapacityGroup
- Comment linked to WeekbasedMaterialGroup
- Comment linked to IdBasedComment
Supplier: Visualize IdBasedComment together with CapacityGroup and MaterialDemandMinor user acceptance test- Comment linked to WeekbasedCapacityGroup
- Comment linked to WeekbasedMaterialGroup
- Comment linked to IdBasedComment

List of User-Journeys

#User JourneyTest-SetsTested Capabilities
1Base journey- Customer: Prepare yourself
- Supplier: Prepare yourself
- Customer: Create WeekBasedMaterialDemand
- Customer: Provide WeekBasedMaterialDemand
- Supplier: Consume WeekBasedMaterialDemand
- Supplier: Create WeekBasedCapacityGroup
- Supplier: Provide WeekBasedCapacityGroup
- Customer: Consume WeekBasedCapacityGroup
- Customer: Visualize CapacityGroup together with MaterialDemand
- Supplier: Visualize CapacityGroup together with MaterialDemand
- Customer: Provide IdBasedRequestForUpdate
- Supplier: Consume IdBasedRequestForUpdate
- Supplier: Provide IdBasedRequestForUpdate
- Customer: Consume IdBasedRequestForUpdate
- Customer: Create IdBasedComment
- Customer: Provide IdBasedComment
- Supplier: Consume IdBasedComment
- Supplier: Create IdBasedComment
- Supplier: Provide IdBasedComment
- Customer: Consume IdBasedComment
- Customer: Visualize IdBasedComment together with CapacityGroup and MaterialDemand
- Supplier: Visualize IdBasedComment together with CapacityGroup and MaterialDemand
- Providing and consuming demand data
- Providing and consuming capacity data
- Comparing demand and capacity data
- Request for update
- Comments
2Demand volatility metrics journey- Customer: Prepare yourself
- Supplier: Prepare yourself
- Customer: Create WeekBasedMaterialDemand
- Customer: Provide WeekBasedMaterialDemand
- Supplier: Consume WeekBasedMaterialDemand
- Supplier: Create WeekBasedCapacityGroup
- Supplier: Provide WeekBasedCapacityGroup
- Customer: Consume WeekBasedCapacityGroup
- Customer: Visualize CapacityGroup together with MaterialDemand
- Supplier: Visualize CapacityGroup together with MaterialDemand
- Providing and consuming demand data
- Providing and consuming capacity data
- Comparing demand and capacity data
- Demand volatility metrics
3Simulated delta production journey- Customer: Prepare yourself
- Supplier: Prepare yourself
- Customer: Create WeekBasedMaterialDemand
- Customer: Provide WeekBasedMaterialDemand
- Supplier: Consume WeekBasedMaterialDemand
- Supplier: Create WeekBasedCapacityGroup
- Supplier: Provide WeekBasedCapacityGroup
- Customer: Consume WeekBasedCapacityGroup
- Customer: Visualize CapacityGroup together with MaterialDemand
- Supplier: Visualize CapacityGroup together with MaterialDemand
- Providing and consuming demand data
- Providing and consuming capacity data
- Comparing demand and capacity data
- Simulated delta production
4Load factors journey- Customer: Prepare yourself
- Supplier: Prepare yourself
- Customer: Create WeekBasedMaterialDemand
- Customer: Provide WeekBasedMaterialDemand
- Supplier: Consume WeekBasedMaterialDemand
- Supplier: Create WeekBasedCapacityGroup
- Supplier: Provide WeekBasedCapacityGroup
- Customer: Consume WeekBasedCapacityGroup
- Customer: Visualize CapacityGroup together with MaterialDemand
- Supplier: Visualize CapacityGroup together with MaterialDemand
- Providing and consuming demand data
- Providing and consuming capacity data
- Comparing demand and capacity data
- Load factors

Base Journey

Notice

This work is licensed under the CC-BY-4.0

  • SPDX-License-Identifier: CC-BY-4.0
  • SPDX-FileCopyrightText: 2023 BASF SE
  • SPDX-FileCopyrightText: 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
  • SPDX-FileCopyrightText: 2024 CatX Service GmbH
  • SPDX-FileCopyrightText: 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V (Fraunhofer)
  • SPDX-FileCopyrightText: 2023 Henkel AG & Co.KGaA
  • SPDX-FileCopyrightText: 2023 Mercedes Benz Group AG
  • SPDX-FileCopyrightText: 2023 SAP SE
  • SPDX-FileCopyrightText: 2023 SupplyOn AG
  • SPDX-FileCopyrightText: 2023 Volkswagen AG
  • SPDX-FileCopyrightText: 2023 ZF Friedrichshafen AG
  • SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation