diff --git a/CHANGELOG.md b/CHANGELOG.md index 0adbfc20e3..ab99511b9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [4.3.0] - 2023-12-08 +### Added +- Added support for `hasAlternatives` property in SingleLevelBomAsBuilt aspect + +### Changed +- Updated edc dependencies to 0.2.1 +- Update deprecated field `providerUrl` to `counterPartyAddress` in EDC catalog request +- Update ESS EDC notification creation asset endpoint to v3 + ## [4.2.0] - 2023-11-28 ### Changed - Changed default behaviour of IRS - when aspects list is not provided or empty in request body, IRS will not collect any submodel now (previously default aspects were collected). @@ -468,7 +478,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Unresolved - **Select Aspects you need** You are able to select the needed aspects for which you want to collect the correct endpoint information. -[Unreleased]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.2.0...HEAD +[Unreleased]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.3.0...HEAD +[4.3.0]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.2.0...4.3.0 [4.2.0]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.1.0...4.2.0 [4.1.0]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.0.2...4.1.0 [4.0.2]: https://github.com/eclipse-tractusx/item-relationship-service/compare/4.0.1...4.0.2 diff --git a/COMPATIBILITY_MATRIX.md b/COMPATIBILITY_MATRIX.md new file mode 100644 index 0000000000..9f80503b13 --- /dev/null +++ b/COMPATIBILITY_MATRIX.md @@ -0,0 +1,31 @@ +# Compatibility matrix IRS + +Full changelog of IRS: [changelog](CHANGELOG.md) + +## [4.2.0] - 2023-11-28 +| Dependency | Version | Helm | Comments | +|---------------------------|------------------------------|------------|-----------------| +| EDC | 0.5.3 | 0.5.3 | | +| EDC PostgresSQL | 15.1.0-debian-11-r12 | 12.1.6 | Optional | +| MIW | 0.1.0 | 0.1.0 | REST connection | +| Semantics Hub | 0.1.29 | v0.2.11-M1 | REST connection | +| DTR | 0.3.14-M1 | 0.3.22 | REST connection | +| Minio | RELEASE.2022-11-11T03-44-20Z | 5.0.1 | | +| SingleLevelBomAsBuilt | 2.0.0 | - | Model version | +| SingleLevelBomAsPlanned | 2.0.0 | - | Model version | +| SingleLevelBomAsSpecified | 1.0.0 | - | Model version | +| SingleLevelUsageAsBuilt | 2.0.0 | - | Model version | + +## [4.1.0] - 2023-11-15 +| Dependency | Version | Helm | Comments | +|---------------------------|------------------------------|------------|-----------------| +| EDC | 0.5.3 | 0.5.3 | | +| EDC PostgresSQL | 15.1.0-debian-11-r12 | 12.1.6 | Optional | +| MIW | 0.1.0 | 0.1.0 | REST connection | +| Semantics Hub | 0.1.29 | v0.2.11-M1 | REST connection | +| DTR | 0.3.14-M1 | 0.3.22 | REST connection | +| Minio | RELEASE.2022-11-11T03-44-20Z | 5.0.1 | | +| SingleLevelBomAsBuilt | 2.0.0 | - | Model version | +| SingleLevelBomAsPlanned | 2.0.0 | - | Model version | +| SingleLevelBomAsSpecified | 1.0.0 | - | Model version | +| SingleLevelUsageAsBuilt | 2.0.0 | - | Model version | \ No newline at end of file diff --git a/DEPENDENCIES b/DEPENDENCIES index c2b13a7574..e4fcebe9dc 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -152,9 +152,9 @@ maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.101.Final, Apache-2 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.25.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.opentelemetry/opentelemetry-api/1.27.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.opentelemetry/opentelemetry-api/1.29.0, Apache-2.0, approved, #10088 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.25.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.opentelemetry/opentelemetry-context/1.27.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.opentelemetry/opentelemetry-context/1.29.0, Apache-2.0, approved, #10090 maven/mavencentral/io.pebbletemplates/pebble/3.2.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient_common/0.16.0, Apache-2.0, approved, clearlydefined @@ -224,7 +224,7 @@ maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.16, Apache-2.0 maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.16, Apache-2.0, approved, #6997 maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.16, Apache-2.0, approved, #7920 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.aspectj/aspectjweaver/1.9.20.1, EPL-1.0, approved, tools.aspectj +maven/mavencentral/org.aspectj/aspectjweaver/1.9.20.1, Apache-2.0 AND BSD-3-Clause AND EPL-1.0 AND BSD-3-Clause AND Apache-1.1, approved, #7695 maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 @@ -234,52 +234,53 @@ maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.33.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.37.0, MIT, approved, clearlydefined -maven/mavencentral/org.eclipse.edc/aggregate-service-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.1.3, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aggregate-service-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.2.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.2.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty @@ -334,23 +335,14 @@ maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.4, EPL-2.0 OR GPL-2.0-only with maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/osgi-resource-locator/1.0.3, CDDL-1.0, approved, CQ10889 -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish/jakarta.json/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.graalvm.js/js/21.2.0, UPL-1.0 AND (MPL-2.0 AND LicenseRef-MIT-style) AND (BSD-3-Clause AND UPL-1.0) AND (GPL-2.0-only WITH Classpath-exception-2.0 AND UPL-1.0) AND (UPL-1.0 AND LicenseRef-Permission-Notice), approved, #10176 @@ -361,7 +353,6 @@ maven/mavencentral/org.hamcrest/hamcrest-core/2.2, BSD-3-Clause, approved, clear maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hdrhistogram/HdrHistogram/2.1.12, BSD-2-Clause OR LicenseRef-Public-Domain, approved, CQ13192 maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.javassist/javassist/3.29.0-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 maven/mavencentral/org.javassist/javassist/3.29.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 maven/mavencentral/org.jboss.logging/jboss-logging/3.4.3.Final, Apache-2.0, approved, CQ21255 maven/mavencentral/org.jboss.logging/jboss-logging/3.5.3.Final, Apache-2.0, approved, #9471 diff --git a/DataChainKit.md b/DataChainKit.md index a5f937f13b..8ed6308b74 100644 --- a/DataChainKit.md +++ b/DataChainKit.md @@ -16,14 +16,14 @@ The Item Relationship Service (IRS) is the first reference application of the Da ### Requirements The IRS needs to be deployed with the following components in the same environment: -- [Eclipse Dataspace Connector](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector) +- [Eclipse Dataspace Connector](https://github.com/eclipse-tractusx/tractusx-edc) -The Service interacts with the Catena-X [Digital Twin Registry](https://catena-x.net/en/angebote/digitaler-zwilling) and is built upon the Catena-X Semantic Models which are stored in the [Semantic Hub](https://catena-x.net/en/angebote/digitaler-zwilling). +The Service interacts with the Catena-X [Digital Twin Registry](https://github.com/eclipse-tractusx/sldt-digital-twin-registry) and is built upon the Catena-X Semantic Models which are stored in the [Semantic Hub](https://github.com/eclipse-tractusx/sldt-semantic-hub). ### Tools and documentation - 🖥 Item Relationship Service Video -- 📄 [Item Relationship Service Product Page](https://catena-x.net/en/angebote/item-relationship-service) +- 📄 [Item Relationship Service Product Page](https://catena-x.net/en/offers-standards/item-relationship-service) - 📄 [Item Relationship Service Documentation](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/README.md) - 📄 [IRS REST API Documentation](https://eclipse-tractusx.github.io/item-relationship-service/docs/api-specification/api-specification.html) - 📄 Catena-X Kit's diff --git a/Dockerfile b/Dockerfile index f50190a4ff..7d605a7861 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ # * SPDX-License-Identifier: Apache-2.0 # Dependencies -FROM maven:3-openjdk-18-slim AS maven +FROM maven:3-eclipse-temurin-17-alpine AS maven ARG BUILD_TARGET=irs-api WORKDIR /build @@ -49,7 +49,7 @@ RUN --mount=type=cache,target=/root/.m2 mvn -B clean package -pl :$BUILD_TARGET # Copy the jar and build image -FROM eclipse-temurin:20-jre-alpine AS irs-api +FROM eclipse-temurin:17-jre-alpine AS irs-api ARG UID=10000 ARG GID=3000 diff --git a/INSTALL.md b/INSTALL.md index e56ca69744..0dd04e0ead 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -10,11 +10,11 @@ Everything else needs to be provided externally. ## Data Chain Kit You can use the Data Chain Kit to deploy the whole demo scenario with all participating components. -Instructions can be found here: [Data Chain Kit](https://eclipse-tractusx.github.io/docs/kits/Data%20Chain%20Kit/Operation%20View/). +Instructions can be found here: [Data Chain Kit](https://eclipse-tractusx.github.io/docs-kits/kits/Data%20Chain%20Kit/Operation%20View). ## Installation -The IRS Helm repository can be found here: [https://eclipse-tractusx.github.io/item-relationship-service/index.yaml](https://eclipse-tractusx.github.io/docs/kits/Data%20Chain%20Kit/Operation%20View/) +The IRS Helm repository can be found here: [index.yaml](https://eclipse-tractusx.github.io/item-relationship-service/index.yaml) Use the latest release of the "irs-helm" chart. It contains all required dependencies. @@ -44,10 +44,10 @@ Or create a new Helm chart and use the IRS as a dependency. dependencies: - name: irs-helm repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 3.x.x - - name: irs-edc-consumer # optional - repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 1.x.x + version: 6.x.x + - name: tractusx-connector + repository: https://eclipse-tractusx.github.io/tractusx-edc + version: 0.5.x ``` Then provide your configuration as the values.yaml of that chart. @@ -62,4 +62,4 @@ A detailed instruction on how to configure the IRS and EDC can be found here: [A IRS provides a local setup which can be deployed to kubernetes. This setup includes all third-party services which IRS uses and interacts with. -Instructions can be found here [README.md](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/local/deployment/full-irs/README.md). \ No newline at end of file +Instructions can be found here [README.md](README.md). \ No newline at end of file diff --git a/README.md b/README.md index 3fc6f1f816..9cbea8fe45 100644 --- a/README.md +++ b/README.md @@ -12,26 +12,28 @@ [![OWASP Dependency Check](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/owasp.yml/badge.svg)](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/owasp.yml) [![Spotbugs](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/spotbugs.yml/badge.svg)](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/spotbugs.yml) [![Eclipse-dash](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/eclipse-dash.yml/badge.svg)](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/eclipse-dash.yml) -[![Tavern IRS API test](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/tavern.yml/badge.svg)](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/tavern.yml) +[![Tavern IRS API test](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/tavern.yml/badge.svg)](https://github.com/eclipse-tractusx/item-relationship-service/actions/workflows/tavern.yml) ## What is the IRS? -Within the [Catena-X network](https://catena-x.net/), the so-called Item Relationship Service (IRS) forms an essential +Within the [Catena-X network](https://catena-x.net/), the so-called Item Relationship Service (IRS) forms an essential foundation for various services and products. Within the Catena-X use cases, the IRS serves to increase business value. -For example, the IRS provides functionalities to serve requirements, such as occasion-based Traceability, -from the Supply Chain Act. In doing so, IDSA and Gaia-X principles, such as data interoperability and sovereignty, are -maintained on the Catena-X network and access to dispersed data is enabled. Data chains are established as a common asset. - -With the help of the IRS, data chains are to be provided ad-hoc across n-tiers within the Catena-X network. -To realize these data chains, the IRS relies on data models of the Traceability use case and provides the federated -data chains to customers or applications. Furthermore, the target picture of the IRS includes the enablement of new +For example, the IRS provides functionalities to serve requirements, such as occasion-based Traceability, +from the Supply Chain Act. In doing so, IDSA and Gaia-X principles, such as data interoperability and sovereignty, are +maintained on the Catena-X network and access to dispersed data is enabled. Data chains are established as a common +asset. + +With the help of the IRS, data chains are to be provided ad-hoc across n-tiers within the Catena-X network. +To realize these data chains, the IRS relies on data models of the Traceability use case and provides the federated +data chains to customers or applications. Furthermore, the target picture of the IRS includes the enablement of new business areas by means of data chains along the value chain in the automotive industry. ## Usage ### Local deployment -The following subsection provides instructions for running the infrastructure on docker-compose and the application in the IDE. +The following subsection provides instructions for running the infrastructure on docker-compose and the application in +the IDE. #### Docker-compose + IDE @@ -47,10 +49,12 @@ The following subsection provides instructions for running the infrastructure on ### Helm deployment -see [INSTALL.md](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/INSTALL.md) +see [INSTALL.md](INSTALL.md) ### Sample calls +#### IRS + Start a job for a globalAssetId: ```bash @@ -71,17 +75,47 @@ curl -X 'POST' \ ``` Retrieve the job results by using the jobId returned by the previous call: + ```bash curl -X 'GET' 'http://localhost:8080/irs/jobs/' -H 'accept: application/json' -H 'Authorization: Bearer ' ``` +#### Environmental and Social Standards (ESS) + +Start an ESS investigation for a globalAssetId and Incident BPNS. + +```bash +curl -X 'POST' \ + 'http://localhost:8080/ess/bpn/investigations' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -H 'Authorization: Bearer ' \ + -d '{ + "key": { + "globalAssetId": "urn:uuid:3d61ada2-1a50-42a0-b411-40a932dd56cc", + "bpn": "BPNL00ARBITRARY6" + }, + "incidentBPNSs": [ + "BPNS00ARBITRARY7" + ], + "bomLifecycle": "asPlanned" + }' +``` + +Retrieve the investigation results by using the jobId returned by the previous call: + +```bash +curl -X 'GET' 'http://localhost:8080/ess/bpn/investigations/' -H 'accept: application/json' -H 'Authorization: Bearer ' +``` + ## Documentation - [Item Relationship Service Documentation](https://eclipse-tractusx.github.io/item-relationship-service/docs/) ## Licenses -For used licenses, please see the [NOTICE](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/NOTICE.md). +For used licenses, please see +the [NOTICE](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/NOTICE.md). ## Notice for Docker image @@ -94,14 +128,19 @@ Eclipse Tractus-X product(s) installed within the image: - GitHub: https://github.com/eclipse-tractusx/item-relationship-service - Project home: https://projects.eclipse.org/projects/automotive.tractusx - Dockerfile: https://github.com/eclipse-tractusx/item-relationship-service/blob/main/Dockerfile -- Project license: [Apache License, Version 2.0](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/LICENSE) +- Project + license: [Apache License, Version 2.0](https://github.com/eclipse-tractusx/item-relationship-service/blob/main/LICENSE) **Used base image** -- [eclipse-temurin:20-jre-alpine](https://github.com/adoptium/containers) -- Official Eclipse Temurin DockerHub page: https://hub.docker.com/_/eclipse-temurin -- Eclipse Temurin Project: https://projects.eclipse.org/projects/adoptium.temurin -- Additional information about the Eclipse Temurin images: https://github.com/docker-library/repo-info/tree/master/repos/eclipse-temurin -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). +- [eclipse-temurin:17-jre-alpine](https://github.com/adoptium/containers) +- Official Eclipse Temurin DockerHub page: https://hub.docker.com/_/eclipse-temurin +- Eclipse Temurin Project: https://projects.eclipse.org/projects/adoptium.temurin +- Additional information about the Eclipse Temurin + images: https://github.com/docker-library/repo-info/tree/master/repos/eclipse-temurin + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc +from the base distribution, along with any direct or indirect dependencies of the primary software being contained). -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies +with any relevant licenses for all software contained within. diff --git a/charts/irs-helm/CHANGELOG.md b/charts/irs-helm/CHANGELOG.md index 98013d8920..b5e3fac343 100644 --- a/charts/irs-helm/CHANGELOG.md +++ b/charts/irs-helm/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [6.12.0] - 2023-12-08 +### Changed +- Changed configuration from `ess.managementPath` to options for each endpoint `ess.assetsPath` `ess.policydefinitionsPath` `ess.contractdefinitionsPath`. E.g. `ess.assetsPath: /management/v3/assets` +- Rename property `edc.provider.host` to `ess.edc.host` + ## [6.11.0] - 2023-11-28 ### Fixed - Fixed templating for `management.health.dependencies` diff --git a/charts/irs-helm/Chart.yaml b/charts/irs-helm/Chart.yaml index fbb9ae21a8..04ae3c7555 100644 --- a/charts/irs-helm/Chart.yaml +++ b/charts/irs-helm/Chart.yaml @@ -35,12 +35,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 6.11.0 +version: 6.12.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "4.2.0" +appVersion: "4.3.0" dependencies: - name: common repository: https://charts.bitnami.com/bitnami diff --git a/charts/irs-helm/templates/configmap-spring-app-config.yaml b/charts/irs-helm/templates/configmap-spring-app-config.yaml index 5c56bec786..27997d38ee 100644 --- a/charts/irs-helm/templates/configmap-spring-app-config.yaml +++ b/charts/irs-helm/templates/configmap-spring-app-config.yaml @@ -118,8 +118,10 @@ data: cacheTTL: {{ .Values.edc.connectorEndpointService.cacheTTL | quote }} ess: localBpn: {{ tpl (.Values.bpn | default "") . | quote }} - localEdcEndpoint: {{ tpl (.Values.edc.provider.host | default "") . | quote }} - managementPath: {{ tpl (.Values.ess.managementPath | default "/management/v2") . | quote }} + localEdcEndpoint: {{ tpl (.Values.ess.edc.host | default "") . | quote }} + assetsPath: {{ tpl (.Values.ess.assetsPath | default "/management/v3/assets") . | quote }} + policydefinitionsPath: {{ tpl (.Values.ess.policydefinitionsPath | default "/management/v2/policydefinitions") . | quote }} + contractdefinitionsPath: {{ tpl (.Values.ess.contractdefinitionsPath | default "/management/v2/contractdefinitions") . | quote }} irs: url: {{ tpl (.Values.irsUrl | default "") . | quote }} discovery: diff --git a/charts/irs-helm/values.yaml b/charts/irs-helm/values.yaml index dc7a632736..8defb60b46 100644 --- a/charts/irs-helm/values.yaml +++ b/charts/irs-helm/values.yaml @@ -159,8 +159,6 @@ portal: clientId: # clientSecret: # edc: - provider: - host: # EDC Provider Host URL controlplane: endpoint: data: "" # @@ -208,9 +206,13 @@ discovery: oAuthClientId: portal # ID of the OAuth2 client registration to use, see config spring.security.oauth2.client ess: + edc: + host: # EDC base URL - used for creation of EDC assets for ESS notifications and as sender EDC for sent notifications mockEdcResult: # Map of BPNs and YES/NO strings - this configures the ESS mock response in case it called to investigate a BPN mockRecursiveEdcAsset: # List of BPNs for which the special, mocked notification asset should be used - managementPath: "/management/v2" # EDC management API path - used for notification asset creation + assetsPath: /management/v3/assets # EDC management API "assets" path - used for notification asset creation + policydefinitionsPath: /management/v2/policydefinitions # EDC management API "policydefinitions" path - used for notification policy definition creation + contractdefinitionsPath: /management/v2/contractdefinitions # EDC management API "contractdefinitions" path - used for notification contract definitions creation oauth: resourceClaim: "resource_access" # Name of the JWT claim for roles diff --git a/docs/concept/#212-Update-of-aspect-model-SingleLevelBomAsBuilt-2_0_0/#212-Update-SingleLevelBomAsBuilt-2-0-0.md b/docs/concept/#212-Update-of-aspect-model-SingleLevelBomAsBuilt-2_0_0/#212-Update-SingleLevelBomAsBuilt-2-0-0.md index 86c805bb9a..b2f4a4389a 100644 --- a/docs/concept/#212-Update-of-aspect-model-SingleLevelBomAsBuilt-2_0_0/#212-Update-SingleLevelBomAsBuilt-2-0-0.md +++ b/docs/concept/#212-Update-of-aspect-model-SingleLevelBomAsBuilt-2_0_0/#212-Update-SingleLevelBomAsBuilt-2-0-0.md @@ -65,7 +65,6 @@ Description of the main property 'SingleLevelBomAsBuild' was adapted to the new "assembledOn": "2022-02-03T14:48:54.709Z", "childCatenaXId": "urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9", "lastModifiedOn": "2022-02-03T14:48:54.709Z", - "lifecycleContext": "<>", // If there is a change of BomLifecycle "quantity": {...}, "hasAlternatives": "true" // == hasAlternatives } @@ -75,7 +74,6 @@ Description of the main property 'SingleLevelBomAsBuild' was adapted to the new | Change | Description | |------------------|----------------------------------------------------------------------------------------------------| -| lifecycleContext | Lifecycle context is adjusted to asPlanned or asBuilt in relation in case of a switch | | hasAlternatives | Reflects the state of property hasAlternative of item in SingleLevelBomAsBuilt chldItems structure | ## SingleLevelBomAsBuilt childItems contains asBuilt aspects hasAlternatives=false @@ -95,15 +93,15 @@ flowchart LR SingleLevelBomAsBuilt --> s1 s1 --> SerialPart s1 --> SingleLevelBomAsBuilt2 - SingleLevelBomAsBuilt2(SingleLevelBomAsBuilt) --> s4((AAS C-X 2 \n hasAlternatives=false)) + SingleLevelBomAsBuilt2[SingleLevelBomAsBuilt] --> s4((AAS C-X 2 \n hasAlternatives=false)) s4 --> SerialPart3(SerialPart) - s4 --> SingleLevelBomAsBuilt5(SingleLevelBomAsBuilt2.0.0) + s4 --> SingleLevelBomAsBuilt5[SingleLevelBomAsBuilt2.0.0] SingleLevelBomAsBuilt2 --> s5((AAS C-X 3 \n hasAlternatives=false)) s5 --> SerialPart2(SerialPart) - s5 --> SingleLevelBomAsBuilt4(SingleLevelBomAsBuilt2.0.0) + s5 --> SingleLevelBomAsBuilt7[SingleLevelBomAsBuilt2.0.0] ``` -## SingleLevelBomAsBuilt childItems contains asPlanned aspects hasAlternatives=false +## SingleLevelBomAsBuilt childItems contains asPlanned aspects hasAlternatives=true 1. IRS traversal using SingleLevelBomAsBuilt 2. Traversal Aspect: SingleLevelBomAsBuilt @@ -142,7 +140,7 @@ flowchart LR title: SingleLevelBomAsBuilt2 childItems contains asPlanned aspects hasAlternatives=false --- flowchart LR - s1((AAS C-X 1 \n hasAlternatives=true)) + s1((AAS C-X 1 \n hasAlternatives=false)) s2((AAS C-X 2 \n hasAlternatives=true)) s3((AAS C-X 3 \n hasAlternatives=true)) SingleLevelBomAsBuilt[SingleLevelBomAsBuilt2.0.0] @@ -158,7 +156,7 @@ flowchart LR s3 --> stop2{stop processing} s1 --> SingleLevelBomAsBuilt3[SingleLevelBomAsBuilt] - s1 --> p3[SerialPart] + s1 --> p3(SerialPart) SingleLevelBomAsBuilt3 --> s4((AAS C-X 4)) classDef asPlanned fill: #9f6,stroke: #333, stroke-width: 2px; @@ -183,11 +181,11 @@ title: SingleLevelBomAsBuilt2 childItems contains combination of hasAlternatives --- flowchart LR s1((AAS C-X 1 \n hasAlternatives=false)) - s2((AAS C-X 2 \n hasAlternatives=true \n Batch #1)) - s3((AAS C-X 3 \n hasAlternatives=true \n Batch #2)) + s2((AAS C-X 2 \n hasAlternatives=true)) + s3((AAS C-X 3 \n hasAlternatives=true)) SingleLevelBomAsBuilt[SingleLevelBomAsBuilt2.0.0] - aas((AAS OEM)) --> SingleLevelBomAsBuilt + aas((AAS OEM)) --> SingleLevelBomAsBuilt[SingleLevelBomAsBuilt] SingleLevelBomAsBuilt --> s1 SingleLevelBomAsBuilt --> s2 SingleLevelBomAsBuilt --> s3 @@ -196,8 +194,8 @@ flowchart LR s3 --> SingleLevelBomAsBuilt5[SingleLevelBomAsBuilt] s1 --> SerialPart3(SerialPart) - s2 --> SerialPart4(SerialPart) - s3 --> SerialPart5(SerialPart) + s2 --> Batch1(Batch) + s3 --> Batch2(Batch) SingleLevelBomAsBuilt3 --> AAS5((AAS)) SingleLevelBomAsBuilt4 --> AAS6((AAS)) diff --git a/docs/src/api/irs-api.yaml b/docs/src/api/irs-api.yaml index 12a1af8880..1a7849be24 100644 --- a/docs/src/api/irs-api.yaml +++ b/docs/src/api/irs-api.yaml @@ -1068,6 +1068,7 @@ components: linkedItem: assembledOn: 2022-02-03T14:48:54.709Z childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9 + hasAlternatives: false lastModifiedOn: 2022-02-03T14:48:54.709Z lifecycleContext: asBuilt quantity: @@ -1187,6 +1188,7 @@ components: linkedItem: assembledOn: 2022-02-03T14:48:54.709Z childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9 + hasAlternatives: false lastModifiedOn: 2022-02-03T14:48:54.709Z lifecycleContext: asBuilt quantity: @@ -1375,6 +1377,7 @@ components: linkedItem: assembledOn: 2022-02-03T14:48:54.709Z childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9 + hasAlternatives: false lastModifiedOn: 2022-02-03T14:48:54.709Z lifecycleContext: asBuilt quantity: @@ -2105,20 +2108,24 @@ components: maxLength: 45 minLength: 45 pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" + hasAlternatives: + type: boolean + description: Expresses whether the part is built-in or whether it is one + of several options. lastModifiedOn: type: string - example: 2022-02-03T14:48:54.709Z format: date-time description: Last datetime item was modified. + example: 2022-02-03T14:48:54.709Z lifecycleContext: type: string - example: asBuilt description: The lifecycle context in which the child part was assembled into the parent part. enum: - asBuilt - asPlanned - asSpecified + example: asBuilt quantity: $ref: '#/components/schemas/Quantity' MeasurementUnit: diff --git a/docs/src/docs/administration/administration-guide.adoc b/docs/src/docs/administration/administration-guide.adoc index 186242a7a7..18f6ab4890 100644 --- a/docs/src/docs/administration/administration-guide.adoc +++ b/docs/src/docs/administration/administration-guide.adoc @@ -7,9 +7,9 @@ include::installation.adoc[leveloffset=+1] include::configuration.adoc[leveloffset=+1] include::troubleshooting.adoc[leveloffset=+1] -## NOTICE +== NOTICE -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). +This work is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache-2.0]. - SPDX-License-Identifier: Apache-2.0 - SPDX-FileCopyrightText: 2021, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) diff --git a/docs/src/docs/administration/installation.adoc b/docs/src/docs/administration/installation.adoc index 152c0e550b..6eec2c1f73 100644 --- a/docs/src/docs/administration/installation.adoc +++ b/docs/src/docs/administration/installation.adoc @@ -6,7 +6,7 @@ https://eclipse-tractusx.github.io/item-relationship-service/index.yaml Use the latest release of the "irs-helm" chart. It contains all required dependencies. -If you also want to set up your own EDC consumer, use the "irs-edc-consumer" chart. +If you also want to set up your own EDC consumer, use the https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector[tractusx-connector] chart. Supply the required configuration properties (see chapter xref:configuration.adoc#_configuration[Configuration]) in a values.yaml file or override the settings directly. @@ -31,10 +31,10 @@ Create a new Helm chart and use the IRS as a dependency. dependencies: - name: irs-helm repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 5.x.x - - name: irs-edc-consumer # optional - repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 1.x.x + version: 6.x.x + - name: tractusx-connector # optional + repository: https://eclipse-tractusx.github.io/tractusx-edc + version: 0.5.x ---- diff --git a/docs/src/docs/arc42/building-block-view/level-2.adoc b/docs/src/docs/arc42/building-block-view/level-2.adoc index e538a91875..ed4ba92255 100644 --- a/docs/src/docs/arc42/building-block-view/level-2.adoc +++ b/docs/src/docs/arc42/building-block-view/level-2.adoc @@ -35,7 +35,7 @@ include::../../../uml-diagrams/building-block-view/level-2-int.puml[] == RecursiveJobHandler -The *RecursiveJobHandler* component provide the logic to build jobs with recursive logic to retrieve items over the complete C-X network and assembles the partial results into a single item graph result. +The *RecursiveJobHandler* component provide the logic to build jobs recursively to retrieve items over the complete C-X network and assembles the partial results into a single item graph result. === Component diagram diff --git a/docs/src/docs/arc42/building-block-view/whitebox-overall.adoc b/docs/src/docs/arc42/building-block-view/whitebox-overall.adoc index e72cf6b2e2..f8b5043a83 100644 --- a/docs/src/docs/arc42/building-block-view/whitebox-overall.adoc +++ b/docs/src/docs/arc42/building-block-view/whitebox-overall.adoc @@ -96,6 +96,9 @@ include::../../../uml-diagrams/building-block-view/whitebox_overall_decentral.pu | 16 | *IRS* accessing the *decentral DigitalTwinRegistry* on Tier Level using the *EDC* + +| 17 +| In case of the use-case Environmental and Social Standards, *IRS* sends notifications to the *IRS-ESS* instance running at the data provider using the *EDC*. |=== diff --git a/docs/src/docs/arc42/full.adoc b/docs/src/docs/arc42/full.adoc index 330350a68f..db4a4f8ab9 100644 --- a/docs/src/docs/arc42/full.adoc +++ b/docs/src/docs/arc42/full.adoc @@ -12,9 +12,9 @@ include::cross-cutting/full.adoc[leveloffset=+1] include::quality/index.adoc[leveloffset=+1] include::glossary.adoc[leveloffset=+1] -## NOTICE +== NOTICE -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). +This work is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache-2.0]. - SPDX-License-Identifier: Apache-2.0 - SPDX-FileCopyrightText: 2021, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) diff --git a/docs/src/docs/arc42/index.adoc b/docs/src/docs/arc42/index.adoc index 2e51c5f33a..4bdc00ce39 100644 --- a/docs/src/docs/arc42/index.adoc +++ b/docs/src/docs/arc42/index.adoc @@ -11,9 +11,9 @@ - xref:quality/index.adoc[Quality requirements] - xref:glossary.adoc[Glossary] -## NOTICE +== NOTICE -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). +This work is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache-2.0]. - SPDX-License-Identifier: Apache-2.0 - SPDX-FileCopyrightText: 2021, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) diff --git a/docs/src/docs/arc42/introduction-goals/requirements.adoc b/docs/src/docs/arc42/introduction-goals/requirements.adoc index 10a6496a1a..141c95eeb8 100644 --- a/docs/src/docs/arc42/introduction-goals/requirements.adoc +++ b/docs/src/docs/arc42/introduction-goals/requirements.adoc @@ -14,4 +14,5 @@ The IRS is a: - functionality of IRS provider will be handled by providers submodel servers - federated IRS service - 'asBuild' BoM of serialized components -- provides endpoints for submodel-descriptors \ No newline at end of file +- provides endpoints for submodel-descriptors +- start recursive Environmental and Social Standard investigations throughout the network based on the "asPlanned" lifecycle diff --git a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-1.adoc b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-1.adoc index 2ee41c83f2..d0ddca85f3 100644 --- a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-1.adoc +++ b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-1.adoc @@ -4,7 +4,7 @@ This section describes what happens when user creates an ess order. == Register an Ess-Investigation-Order -[plantuml,target=submodel-processing,format=svg] +[plantuml, target=ess-topdown-order, format=svg] .... include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/3_ess_top_down_sequence-RegisterEssInvestigationOrder.puml[] .... diff --git a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-2.adoc b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-2.adoc index 7f469ac102..311a0be698 100644 --- a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-2.adoc +++ b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down-scenario-2.adoc @@ -1,10 +1,10 @@ -= Scenario 1: Register an Ess-Investigation-Job += Scenario 2: Register an Ess-Investigation-Job This section describes what happens when user creates an ess job. == Register an Ess-Investigation Job -[plantuml,target=submodel-processing,format=svg] +[plantuml, target=ess-topdown-order-job, format=svg] .... include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/4_ess_top_down_sequence_RegisterEssInvestigationJob.puml[] .... diff --git a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down.adoc b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down.adoc index d2ab5e630d..091e7e98f8 100644 --- a/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down.adoc +++ b/docs/src/docs/arc42/runtime-view/ess-top-down/ess-top-down.adoc @@ -14,7 +14,7 @@ The BoM as planned aspect models consists of three aspect models: == Overall flow -[plantuml,target=submodel-processing,format=svg] +[plantuml, target=ess-top-down, format=svg] .... include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/0-ess-top-down-sequence.puml[] .... @@ -49,7 +49,7 @@ Note: ESS supplier responses are involved in each step of the process. == Flow on company level -[plantuml,target=submodel-processing,format=svg] +[plantuml, target=ess-top-down-highlevel, format=svg] .... include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/1_ess-top-down-sequence-highlevel.puml[] .... @@ -92,11 +92,35 @@ The response of each direct supplier may contain the following results; In case at least one "YES" is received, the process step 3 ends +[cols="6,1,1,1"] +|=== +|Case |YES |NO |UNKNOWN +|All assets on all nodes does not contain assets with incidentBPNs |x | | +|At least one node contains assets with incidentBPNs | |x | +|At least one node does not contain PartSiteInformationAsPlanned aspect OR for at least one node PartSiteInformationAsPlanned aspect is not accessible | | |x +|At least one node contains PartSiteInformationAsPlanned with missing BPNS | | |x +|At least one child node does not exist or is not accessible | | |x +|=== + +[cols="1,1,1,2,5"] +|=== +| State 1 | State 2 | State n | Result State | Description +| YES | NO | UNKOWN | YES | If any part is impacted then whole Supply is impactes +| YES | NO | NO | YES | Yes if any BPN is impacted even if all are not impacted. +| NO | UNKNOW | NO | UNKNOW | Unknown if no Yes and at leat one bpn is unknown state. +| NO | NO | NO | NO | No if complete SupplyChain is not impacted +|=== + +[plantuml, target=ess_top_down_sequence-result, format=svg] +.... +include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/5_ess_top_down_sequence_determine_result.puml[] +.... + == Application Functionality Overview === Register an Ess-Investigation-Order -[plantuml,target=submodel-processing,format=svg] +[plantuml, target=ess-top-down-highlevel, format=svg] .... include::../../../../uml-diagrams/runtime-view/use-case-ess-top-down/1_ess-top-down-sequence-highlevel.puml[] .... diff --git a/docs/src/docs/arc42/runtime-view/full.adoc b/docs/src/docs/arc42/runtime-view/full.adoc index 21aa1e6b2b..2237751caf 100644 --- a/docs/src/docs/arc42/runtime-view/full.adoc +++ b/docs/src/docs/arc42/runtime-view/full.adoc @@ -1,10 +1,8 @@ = Runtime view - - == IRS Iterative -This section covers the main processes of the IRS and explains how data is transferred and processed when a job is executed. +This section describes the iterative flow, the main processes of the IRS, and explains how data is transferred and processed when a job is executed. include::irs-iterative/irs-iterative.adoc[leveloffset=+1] include::irs-iterative/scenario-1.adoc[leveloffset=+1] @@ -17,8 +15,6 @@ include::irs-iterative/scenario-4.adoc[leveloffset=+1] This section covers the main processes of the IRS in a recursive scenario in a network. This recursive scenario is illustrated using the various use cases realized in the scenario. - include::ess-top-down/ess-top-down.adoc[leveloffset=+1] include::ess-top-down/ess-top-down-scenario-1.adoc[leveloffset=+1] include::ess-top-down/ess-top-down-scenario-2.adoc[leveloffset=+1] -include::ess-top-down/ess-top-down-scenario-3.adoc[leveloffset=+1] diff --git a/docs/src/docs/arc42/runtime-view/index.adoc b/docs/src/docs/arc42/runtime-view/index.adoc index 09f232725a..5a1d5235ff 100644 --- a/docs/src/docs/arc42/runtime-view/index.adoc +++ b/docs/src/docs/arc42/runtime-view/index.adoc @@ -1,27 +1,23 @@ = Runtime view -This section covers the main processes of the IRS and explains how data is transferred and processed when a job is executed. - -Please see the subpages for the relevant scenarios: - == IRS Iterative +This section describes the iterative flow, the main processes of the IRS, and explains how data is transferred and processed when a job is executed. + - xref:irs-iterative/irs-iterative.adoc[Overall] - xref:irs-iterative/scenario-1.adoc[Scenario 1: Create Job] - xref:irs-iterative/scenario-2.adoc[Scenario 2: Job Execution] - xref:irs-iterative/scenario-3.adoc[Scenario 3: Request for JobResponse] - xref:irs-iterative/scenario-4.adoc[Scenario 4: Cancel job execution] - - == IRS Recursive This section covers the main processes of the IRS in a recursive scenario in a network. This recursive scenario is illustrated using the various use cases realized in the scenario. -=== Use Case: ESS (Environmental and Social Standards) Top-Down approach - -include::ess-top-down/ess-top-down.adoc[leveloffset=+1] +- xref:ess-top-down/ess-top-down.adoc[Use Case: ESS (Environmental and Social Standards) Top-Down approach] +- xref:ess-top-down/ess-top-down-scenario-1.adoc[Scenario 1: Register an Ess-Investigation-Order] +- xref:ess-top-down/ess-top-down-scenario-2.adoc[Scenario 2: Register an Ess-Investigation-Job] diff --git a/docs/src/docs/arc42/runtime-view/irs-iterative/irs-iterative.adoc b/docs/src/docs/arc42/runtime-view/irs-iterative/irs-iterative.adoc index 5b21ab0bb7..ba7fe41999 100644 --- a/docs/src/docs/arc42/runtime-view/irs-iterative/irs-iterative.adoc +++ b/docs/src/docs/arc42/runtime-view/irs-iterative/irs-iterative.adoc @@ -1,7 +1,3 @@ -= IRS iterative - -This section describes the iterative flow of the IRS - [plantuml, target=overall, format=svg] .... include::../../../../uml-diagrams/runtime-view/api-call-asynchrous-sequence.puml[] diff --git a/docs/src/docs/arc42/scope-context/technical-context.adoc b/docs/src/docs/arc42/scope-context/technical-context.adoc index c19adcb104..32c778f07d 100644 --- a/docs/src/docs/arc42/scope-context/technical-context.adoc +++ b/docs/src/docs/arc42/scope-context/technical-context.adoc @@ -31,21 +31,19 @@ The integrated EDC client in the IRS is responsible for creating restful request ==== Traversal Aspect |=== -|Name | Description | -|SingelLevelBomAsBuilt|The aspect provides the child parts (one structural level down) which the given object assembles.| 1.1.0 -|SingelLevelUsageAsBuilt | The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. Could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as-built lifecycle phase, i.e. a batch or a serialized part. | [X.X.X]| +| Name | Description | +| SingleLevelBomAsBuilt | The single-level bill of material represents one sub-level of an assembly and does not include any lower-level subassemblies. The as-built lifecycle references all child items as manufactured by the manufacturer referencing only child items in an as-built lifecycle themselves, unless parts can only be tracked by an part ID. If it's unclear which item has been built-in into the parent item, all potential parts must be listed. This is the case when, e.g. the same item is supplied by two suppliers and the item is only tracked by a customer part ID during assembly, these items can not be differentiated from each other. | 2.0.0 +| SingleLevelUsageAsBuilt | The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. Could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as-built lifecycle phase, i.e. a batch or a serialized part. | 2.0.0 |=== ==== Semantic Model |=== -|Name | Description | Version range -|SerialPart | A serialized part is an instantiation of a (design-) part, where the particular instantiation can be uniquely identified by means of a serial numbers or a similar identifier (e.g. VAN) or a combination of multiple identifiers (e.g. combination of manufacturer, date and number) | [1.0,0, 1.1.0] -|SingelLevelBomAsBuilt|The aspect provides the child parts (one structural level down) which the given object assembles.| [1.0.0,1.1.0] -|SingelLevelUsageAsBuilt| The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. Could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as-built lifecycle phase, i.e. a batch or a serialized part. | [1.0.0,1.0.1] -|Batch|A batch is a quantity of (semi-) finished products or (raw) material product that have been produced under the same circumstances (e.g. same production location), as specified groups or amounts, within a certain time frame. Every batch can differ in the number or amount of products. Different batches can have varied specifications, e.g., different colors. A batch is identified via a Batch ID.| [1.0.0,2.0.0] -|JustInSequencePart| A just-in-sequence part is an instantiation of a (design-) part, where the particular instantiation can be uniquely identified by means of a combination of several IDs related to a just-in-sequence process | [1.0.0] -|TractionBatteryCode| The traction battery code is an identification code for any automotive traction battery, ultracapacitor and other reachargeble energy storage device. It allows to carry information as required by the National Standard of the People's Republic of China according to GB/T 34014-2017 published by the Standardization Administration of China (SAC).| 1.0.0 +| Name | Description | Version range +| SerialPart | A serialized part is an instantiation of a (design-) part, where the particular instantiation can be uniquely identified by means of a serial numbers or a similar identifier (e.g. VAN) or a combination of multiple identifiers (e.g. combination of manufacturer, date and number) | [1.0,0, 1.1.0] +| Batch | A batch is a quantity of (semi-) finished products or (raw) material product that have been produced under the same circumstances (e.g. same production location), as specified groups or amounts, within a certain time frame. Every batch can differ in the number or amount of products. Different batches can have varied specifications, e.g., different colors. A batch is identified via a Batch ID.| [1.0.0, 2.0.0] +| JustInSequencePart | A just-in-sequence part is an instantiation of a (design-) part, where the particular instantiation can be uniquely identified by means of a combination of several IDs related to a just-in-sequence process | 1.0.0 +| TractionBatteryCode | The traction battery code is an identification code for any automotive traction battery, ultracapacitor and other reachargeble energy storage device. It allows to carry information as required by the National Standard of the People's Republic of China according to GB/T 34014-2017 published by the Standardization Administration of China (SAC).| 1.0.0 |=== === Overview asPlanned @@ -53,30 +51,29 @@ The integrated EDC client in the IRS is responsible for creating restful request ==== Traversal Aspect |=== -|Name | Description | -|SingelLevelBomAsPlanned | The single-level Bill of Material represents one sub-level of an assembly and does not include any lower-level subassemblies. In as planned lifecycle state all variants are covered (\"120% BoM\"). If multiple versions of child parts exist that can be assembled into the same parent part, all versions of the child part are included in the BoM. If there are multiple suppliers for the same child part, each supplier has an entry for their child part in the BoM.| 1.1.0 -|SingelLevelUsageAsPlanned | The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. This could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as planned lifecycle phase. If multiple versions of parent parts exist that the child part can be assembled into, all versions of the parent part are included in the usage list. | 1.1.0 +| Name | Description | +| SingleLevelBomAsPlanned | The single-level Bill of Material represents one sub-level of an assembly and does not include any lower-level subassemblies. In as planned lifecycle state all variants are covered (\"120% BoM\"). If multiple versions of child parts exist that can be assembled into the same parent part, all versions of the child part are included in the BoM. If there are multiple suppliers for the same child part, each supplier has an entry for their child part in the BoM.| 2.0.0 +| SingleLevelUsageAsPlanned | The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. This could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as planned lifecycle phase. If multiple versions of parent parts exist that the child part can be assembled into, all versions of the parent part are included in the usage list. | Not supported |=== ==== Semantic Model |=== -|Name | Description | -|PartAsPlanned | A Part as Planned represents an item in the Catena-X Bill of Material (BOM) in As-Planned lifecycle status in a specific version.| [ , ] -|PartSiteInformationAsPlanned|The aspect provides site related information for a given as planned item (i.e. a part type or part instance that is uniquely identifiable within Catena-X via its Catena-X ID). A site is a delimited geographical area where a legal entity does business. In the \"as planned\" lifecycle context all potentially related sites are listed including all sites where e.g. production of this part (type) is planned.| 1.0.0 -|SingelLevelUsageAsPlanned | The aspect provides the information in which parent part(s)/product(s) the given item is assembled in. This could be a 1:1 relationship in terms of a e.g. a brake component or 1:n for e.g. coatings. The given item as well as the parent item must refer to an object from as planned lifecycle phase. If multiple versions of parent parts exist that the child part can be assembled into, all versions of the parent part are included in the usage list.| [1.0.0,1.1.0] +| Name | Description | +| PartAsPlanned | A Part as Planned represents an item in the Catena-X Bill of Material (BOM) in As-Planned lifecycle status in a specific version. | [1.0,0, 1.0.1] +| PartSiteInformationAsPlanned |The aspect provides site related information for a given as planned item (i.e. a part type or part instance that is uniquely identifiable within Catena-X via its Catena-X ID). A site is a delimited geographical area where a legal entity does business. In the \"as planned\" lifecycle context all potentially related sites are listed including all sites where e.g. production of this part (type) is planned. | 1.0.0 |=== === Overview asSpecified ==== Traversal Aspect |=== -|Name | Description | -|SingelLevelBomAsSpecified| The SingleLevelBomAsSpecified defines the view of the OEM or producer of the whole product, e.g. the OEM of a vehicle. It is free of any supplier-related information and specifies the promised and guaranteed content of the whole product to the end customer. This “top-down” view is in contrast to the “bottom-up” view of the SingleLevelBoMAsPlanned, though several sub-aspects are shared. The BomAsSpecified is merely one aspect, which is attached to the twin of the whole product and itself does neither introduce further twins nor reference them. Instead it merely comprises all functional information required by dismantlers, workshops or requestors for used parts to search for and to make a match on the market place. | 2.0.0 +| Name | Description | +| SingleLevelBomAsSpecified | The SingleLevelBomAsSpecified defines the view of the OEM or producer of the whole product, e.g. the OEM of a vehicle. It is free of any supplier-related information and specifies the promised and guaranteed content of the whole product to the end customer. This “top-down” view is in contrast to the “bottom-up” view of the SingleLevelBoMAsPlanned, though several sub-aspects are shared. The BomAsSpecified is merely one aspect, which is attached to the twin of the whole product and itself does neither introduce further twins nor reference them. Instead it merely comprises all functional information required by dismantlers, workshops or requestors for used parts to search for and to make a match on the market place. | 1.0.0 |=== ==== Semantic Model |=== -|Name | Description | -|SingelLevelBomAsSpecified| The SingleLevelBomAsSpecified defines the view of the OEM or producer of the whole product, e.g. the OEM of a vehicle. It is free of any supplier-related information and specifies the promised and guaranteed content of the whole product to the end customer. This “top-down” view is in contrast to the “bottom-up” view of the SingleLevelBoMAsPlanned, though several sub-aspects are shared. The BomAsSpecified is merely one aspect, which is attached to the twin of the whole product and itself does neither introduce further twins nor reference them. Instead it merely comprises all functional information required by dismantlers, workshops or requestors for used parts to search for and to make a match on the market place. | [1.0.0,2.0.0] +| Name | Description | +| PartAsSpecified | The aspect model PartAsSpecified belongs to the Part Catalogue. A PartAsSpecified represents a certain OEM catalog part on part number level. Providing a digital representation of the part as specified by the OEM. The link to the serialized part is done via the partId, this can only be done if the respective DT was provided by the supplier within the value chain. | [1.0.0, 1.0.1, 2.0.0] |=== \ No newline at end of file diff --git a/docs/src/docs/index.adoc b/docs/src/docs/index.adoc index 1efb94519c..42ba1b47a3 100644 --- a/docs/src/docs/index.adoc +++ b/docs/src/docs/index.adoc @@ -10,9 +10,9 @@ xref:api-specification/api-specification.adoc[OpenApi specification] - xref:arc42/index.adoc[Single chapters] - xref:arc42/full.adoc[Full document] -## NOTICE +== NOTICE -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). +This work is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache-2.0]. - SPDX-License-Identifier: Apache-2.0 - SPDX-FileCopyrightText: 2021, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) diff --git a/docs/src/uml-diagrams/building-block-view/whitebox_overall_decentral.puml b/docs/src/uml-diagrams/building-block-view/whitebox_overall_decentral.puml index fb52eccddd..4181023169 100644 --- a/docs/src/uml-diagrams/building-block-view/whitebox_overall_decentral.puml +++ b/docs/src/uml-diagrams/building-block-view/whitebox_overall_decentral.puml @@ -19,7 +19,8 @@ package [**OEM**] <> as consumer { component [**EDC (Provider)**] <> as EDCProviderOEM component [**SubmodelServer**] <> as SubmodelServerOEM component [**decentral Digital Twin Registry**] <> as DT_REG_OEM - } + component [**IRS-ESS**] <> as EssOEM + } } @@ -37,6 +38,7 @@ package [**N-Tier**] <> as provider { component [**EDC (Provider)**] <> as EDCProvider component [**SubmodelServer**] <> as SubmodelServer component [**decentral Digital Twin Registry**] <> as DT_REG + component [**IRS-ESS**] <> as EssProvider } actor IrsApiConsumer @@ -47,6 +49,7 @@ IAM_IRS <..> Portal_IdP : **[03]** EDCProviderOEM <-> SubmodelServerOEM : **[04]** EDCProviderOEM <--> DT_REG_OEM : **[05]** +EDCProviderOEM <--> EssOEM : **[17]** miw <..> EDCProviderOEM : **[12]** IRS <.d.> EDC : **[06]** @@ -63,6 +66,7 @@ EDC <..> EDCProviderOEM : **[13]** miw <..> EDCProvider : **[14]** EDCProvider <--> SubmodelServer : **[15]** EDCProvider <--> DT_REG : **[16]** +EDCProvider <-> EssProvider : **[17]** miw -[hidden]d- IAM_IRS miw -[hidden]r- discovery_finder diff --git a/docs/src/uml-diagrams/deployment-view/level-0-dev.puml b/docs/src/uml-diagrams/deployment-view/level-0-dev.puml index f3ed29d642..90536e65a7 100644 --- a/docs/src/uml-diagrams/deployment-view/level-0-dev.puml +++ b/docs/src/uml-diagrams/deployment-view/level-0-dev.puml @@ -11,17 +11,17 @@ node "Kubernetes Cluster" as k8s { component IRS component Minio - component "Decentral Registry" as dtr + component "Decentral Digital Twin Registry" as dtr component "EDC Consumer" as consumer component "EDC Provider" as provider - component "DAPS" as daps + component "Managed Identity Wallet" as miw collections "Submodel Provider" as submodel IRS --> Minio IRS -> consumer - consumer --> daps - provider --> daps + consumer --> miw + provider --> miw consumer <--> provider provider --- submodel provider --- dtr diff --git a/docs/src/uml-diagrams/runtime-view/use-case-ess-top-down/5_ess_top_down_sequence_determine_result.puml b/docs/src/uml-diagrams/runtime-view/use-case-ess-top-down/5_ess_top_down_sequence_determine_result.puml new file mode 100644 index 0000000000..409d66a25d --- /dev/null +++ b/docs/src/uml-diagrams/runtime-view/use-case-ess-top-down/5_ess_top_down_sequence_determine_result.puml @@ -0,0 +1,27 @@ +@startuml +skinparam monochrome true +skinparam shadowing false +skinparam defaultFontName "Architects daughter" + +start +if (Twin is available in DTR) then (No) + :Unknown; + stop +else (Yes) +if (Twins has PartSiteInformationAsPlanned) then (No) + :Unknown; + stop +else (Yes) +if (PartSiteInformation contains BPNS) then (No) + :Unknown; + stop +else (Yes) +if (PartSiteInformation contains incident BPNS) then (No) + :No; + stop +else (Yes) + :Yes; + stop +endif + +@enduml \ No newline at end of file diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/ess/service/EdcRegistration.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/ess/service/EdcRegistration.java index 286bbd597d..83c77727b9 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/ess/service/EdcRegistration.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/ess/service/EdcRegistration.java @@ -56,20 +56,26 @@ public class EdcRegistration { private final String essBaseUrl; private final String apiKeyHeader; private final String apiKeySecret; - private final String managementPath; + private final String assetsPath; + private final String policydefinitionsPath; + private final String contractdefinitionsPath; public EdcRegistration(@Qualifier("noErrorRestTemplate") final RestTemplate restTemplate, @Value("${ess.localEdcEndpoint}") final String edcProviderUrl, @Value("${ess.irs.url}") final String essBaseUrl, @Value("${irs-edc-client.controlplane.api-key.header}") final String apiKeyHeader, @Value("${irs-edc-client.controlplane.api-key.secret}") final String apiKeySecret, - @Value("${ess.managementPath}") final String managementPath) { + @Value("${ess.assetsPath}") final String assetsPath, + @Value("${ess.policydefinitionsPath}") final String policydefinitionsPath, + @Value("${ess.contractdefinitionsPath}") final String contractdefinitionsPath) { this.restTemplate = restTemplate; this.edcProviderUrl = edcProviderUrl; this.essBaseUrl = essBaseUrl; this.apiKeyHeader = apiKeyHeader; this.apiKeySecret = apiKeySecret; - this.managementPath = managementPath; + this.assetsPath = assetsPath; + this.policydefinitionsPath = policydefinitionsPath; + this.contractdefinitionsPath = contractdefinitionsPath; } @EventListener(ApplicationReadyEvent.class) @@ -107,14 +113,12 @@ private void registerAsset(final String assetId, final String notificationType, final var body = """ { "@context": {}, - "asset": { - "@id": "%s", - "properties": { - "description": "ESS notification endpoint", - "contenttype": "application/json", - "notificationtype":"%s", - "notificationmethod": "receive" - } + "@id": "%s", + "properties": { + "description": "ESS notification endpoint", + "contenttype": "application/json", + "notificationtype":"%s", + "notificationmethod": "receive" }, "dataAddress": { "baseUrl": "%s", @@ -124,7 +128,7 @@ private void registerAsset(final String assetId, final String notificationType, } } """.formatted(assetId, notificationType, essBaseUrl + path); - final var entity = restTemplate.exchange(edcProviderUrl + managementPath + "/assets", HttpMethod.POST, + final var entity = restTemplate.exchange(edcProviderUrl + assetsPath, HttpMethod.POST, toEntity(body), String.class); if (entity.getStatusCode().is2xxSuccessful()) { @@ -165,7 +169,7 @@ private void registerPolicy(final String policyId) { } } """.formatted(policyId); - final var entity = restTemplate.exchange(edcProviderUrl + managementPath + "/policydefinitions", + final var entity = restTemplate.exchange(edcProviderUrl + policydefinitionsPath, HttpMethod.POST, toEntity(body), String.class); if (entity.getStatusCode().is2xxSuccessful()) { @@ -190,7 +194,7 @@ private void registerContractDefinition(final String contractId, final String as } """.formatted(contractId, contractId, assetId); - final var entity = restTemplate.exchange(edcProviderUrl + managementPath + "/contractdefinitions", + final var entity = restTemplate.exchange(edcProviderUrl + contractdefinitionsPath, HttpMethod.POST, toEntity(body), String.class); if (entity.getStatusCode().is2xxSuccessful()) { log.info("Notification contract definition registered successfully."); @@ -215,7 +219,7 @@ private HttpHeaders headers() { private boolean assetIsNotRegisteredYet(final String assetId) { if (restTemplate != null && StringUtils.isNotBlank(edcProviderUrl)) { - final var url = edcProviderUrl + managementPath + "/assets/request"; + final var url = edcProviderUrl + assetsPath + "/request"; log.info("Requesting asset from EDC provider with url {}", url); final String filter = """ { diff --git a/irs-api/src/main/java/org/eclipse/tractusx/irs/services/timeouts/CancelBatchProcessingService.java b/irs-api/src/main/java/org/eclipse/tractusx/irs/services/timeouts/CancelBatchProcessingService.java index 6873067ccd..5f2a19afe0 100644 --- a/irs-api/src/main/java/org/eclipse/tractusx/irs/services/timeouts/CancelBatchProcessingService.java +++ b/irs-api/src/main/java/org/eclipse/tractusx/irs/services/timeouts/CancelBatchProcessingService.java @@ -24,6 +24,7 @@ package org.eclipse.tractusx.irs.services.timeouts; import java.util.List; +import java.util.Objects; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -62,7 +63,12 @@ public void cancelNotFinishedJobsInBatch(final UUID batchId) { log.info("Start scheduled timeout process for batchId: {}", batchId.toString()); batchStore.find(batchId).ifPresent(batch -> { if (isBatchNotCompleted(batch.getBatchState())) { - cancelNotFinishedJobs(batch.getJobProgressList().stream().map(JobProgress::getJobId).toList()); + final List jobIds = batch.getJobProgressList() + .stream() + .map(JobProgress::getJobId) + .filter(Objects::nonNull) + .toList(); + cancelNotFinishedJobs(jobIds); } }); } @@ -75,7 +81,12 @@ public void cancelNotFinishedJobsInBatchOrder(final UUID batchOrderId) { .toList(); batches.forEach(batch -> { if (isBatchNotCompleted(batch.getBatchState())) { - cancelNotFinishedJobs(batch.getJobProgressList().stream().map(JobProgress::getJobId).toList()); + final List jobIds = batch.getJobProgressList() + .stream() + .map(JobProgress::getJobId) + .filter(Objects::nonNull) + .toList(); + cancelNotFinishedJobs(jobIds); } }); } diff --git a/irs-api/src/main/resources/application.yml b/irs-api/src/main/resources/application.yml index cc5bf4150f..a8efe4562c 100644 --- a/irs-api/src/main/resources/application.yml +++ b/irs-api/src/main/resources/application.yml @@ -222,8 +222,10 @@ bpdm: # ESS Module specific properties ess: localBpn: ${ESS_LOCAL_BPN:} # BPN value of product - used during EDC notification communication - localEdcEndpoint: ${EDC_PROVIDER_URL:} # EDC Provider Url - used during EDC notification communication - managementPath: ${EDC_MANAGEMENT_PATH:/management/v2} # EDC management API path - used for notification asset creation + localEdcEndpoint: ${ESS_EDC_URL:} # EDC base URL - used for creation of EDC assets for ESS notifications and as sender EDC for sent notifications + assetsPath: ${EDC_MANAGEMENT_PATH:/management/v3/assets} # EDC management API "assets" path - used for notification asset creation + policydefinitionsPath: ${EDC_MANAGEMENT_PATH:/management/v2/policydefinitions} # EDC management API "policydefinitions" path - used for notification policy definition creation + contractdefinitionsPath: ${EDC_MANAGEMENT_PATH:/management/v2/contractdefinitions} # EDC management API "contractdefinitions" path - used for notification contract definitions creation irs: url: "${IRS_URL:}" # IRS Url to connect with discovery: diff --git a/irs-api/src/test/java/org/eclipse/tractusx/irs/ess/service/EdcRegistrationTest.java b/irs-api/src/test/java/org/eclipse/tractusx/irs/ess/service/EdcRegistrationTest.java index ee40262de7..4f9d19ca78 100644 --- a/irs-api/src/test/java/org/eclipse/tractusx/irs/ess/service/EdcRegistrationTest.java +++ b/irs-api/src/test/java/org/eclipse/tractusx/irs/ess/service/EdcRegistrationTest.java @@ -48,13 +48,17 @@ class EdcRegistrationTest { @Mock private RestTemplate restTemplate; private String edcUrl; - private String managementPath; + private String assetsPath; + private String policydefinitionsPath; + private String contractdefinitionsPath; @BeforeEach void setUp() { edcUrl = "http://localhost"; - managementPath = "/path"; - testee = new EdcRegistration(restTemplate, edcUrl, "", "", "", managementPath); + assetsPath = "/assets"; + policydefinitionsPath = "/policydefinitions"; + contractdefinitionsPath = "/contractdefinitions"; + testee = new EdcRegistration(restTemplate, edcUrl, "", "", "", assetsPath, policydefinitionsPath, contractdefinitionsPath); } @Test @@ -64,31 +68,31 @@ void shouldRegisterAssets_whenGetRequestReturnsNoResults() { testee.registerEdcAsset(); - verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + managementPath + "/assets/request"), + verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + assetsPath + "/request"), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + managementPath + "/assets"), + verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + assetsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + managementPath + "/policydefinitions"), + verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + policydefinitionsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + managementPath + "/contractdefinitions"), + verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + contractdefinitionsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); } @Test void shouldNotRegisterAssets_whenGetRequestReturnsResults() { - when(restTemplate.exchange(Mockito.eq(edcUrl + managementPath + "/assets/request"), + when(restTemplate.exchange(Mockito.eq(edcUrl + assetsPath + "/request"), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class))).thenReturn( ResponseEntity.ok().body("[{}]")); testee.registerEdcAsset(); - verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + managementPath + "/assets/request"), + verify(restTemplate, times(3)).exchange(Mockito.eq(edcUrl + assetsPath + "/request"), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + managementPath + "/assets"), + verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + assetsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + managementPath + "/policydefinitions"), + verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + policydefinitionsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); - verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + managementPath + "/contractdefinitions"), + verify(restTemplate, never()).exchange(Mockito.eq(edcUrl + contractdefinitionsPath), Mockito.eq(HttpMethod.POST), any(), Mockito.eq(String.class)); } diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/EdcControlPlaneClient.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/EdcControlPlaneClient.java index b6b3378973..236db963ea 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/EdcControlPlaneClient.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/EdcControlPlaneClient.java @@ -111,7 +111,7 @@ private CatalogRequest buildCatalogRequest(final int offset, final String provid querySpec.limit(limit); } return CatalogRequest.Builder.newInstance() - .providerUrl(providerUrl) + .counterPartyAddress(providerUrl) .protocol(DATASPACE_PROTOCOL_HTTP) .querySpec(querySpec.build()) .build(); @@ -121,7 +121,7 @@ private CatalogRequest buildCatalogRequest(final int offset, final String provid final String value) { final QuerySpec querySpec = QuerySpec.Builder.newInstance().filter(new Criterion(key, "=", value)).build(); final var catalogRequest = CatalogRequest.Builder.newInstance() - .providerUrl(providerConnectorUrl) + .counterPartyAddress(providerConnectorUrl) .protocol(DATASPACE_PROTOCOL_HTTP) .querySpec(querySpec) .build(); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsBuilt.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsBuilt.java index deb5bc5f10..c817c06ec4 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsBuilt.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsBuilt.java @@ -73,11 +73,13 @@ public List asRelationships() { private ZonedDateTime lastModifiedOn; private String catenaXId; private String businessPartner; + private boolean hasAlternatives; public Relationship toRelationship(final String catenaXId) { final LinkedItem.LinkedItemBuilder linkedItem = LinkedItem.builder() .childCatenaXId(GlobalAssetIdentification.of(this.catenaXId)) .lifecycleContext(BomLifecycle.AS_BUILT) + .hasAlternatives(this.hasAlternatives) .assembledOn(this.createdOn) .lastModifiedOn(this.lastModifiedOn); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsPlanned.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsPlanned.java index 6dcee321c3..13afacce1a 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsPlanned.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsPlanned.java @@ -78,6 +78,7 @@ public Relationship toRelationship(final String catenaXId) { final LinkedItem.LinkedItemBuilder linkedItem = LinkedItem.builder() .childCatenaXId(GlobalAssetIdentification.of(this.catenaXId)) .lifecycleContext(BomLifecycle.AS_PLANNED) + .hasAlternatives(Boolean.FALSE) .assembledOn(this.createdOn) .lastModifiedOn(this.lastModifiedOn); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsSpecified.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsSpecified.java index 459068c70e..6be41bb36d 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsSpecified.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelBomAsSpecified.java @@ -79,6 +79,7 @@ public Relationship toRelationship(final String catenaXId) { final LinkedItem.LinkedItemBuilder linkedItem = LinkedItem.builder() .childCatenaXId(GlobalAssetIdentification.of(this.childCatenaXId)) .lifecycleContext(BomLifecycle.AS_SPECIFIED) + .hasAlternatives(Boolean.FALSE) .assembledOn(childPart.getCreatedOn()) .lastModifiedOn(childPart.getLastModifiedOn()); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelUsageAsBuilt.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelUsageAsBuilt.java index 0dbb5359e0..4e642da885 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelUsageAsBuilt.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/SingleLevelUsageAsBuilt.java @@ -96,6 +96,7 @@ public Relationship toRelationship(final String catenaXId, final String business final LinkedItem.LinkedItemBuilder linkedItem = LinkedItem.builder() .childCatenaXId(GlobalAssetIdentification.of(catenaXId)) .lifecycleContext(BomLifecycle.AS_BUILT) + .hasAlternatives(Boolean.FALSE) .assembledOn(this.createdOn) .lastModifiedOn(this.lastModifiedOn); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformer.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformer.java index 32cc9d0967..b48ad6ea50 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformer.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformer.java @@ -35,33 +35,33 @@ import jakarta.json.JsonReader; import org.eclipse.edc.catalog.spi.Catalog; import org.eclipse.edc.catalog.spi.CatalogRequest; -import org.eclipse.edc.connector.core.transform.TransformerContextImpl; -import org.eclipse.edc.connector.core.transform.TypeTransformerRegistryImpl; +import org.eclipse.edc.core.transform.TransformerContextImpl; +import org.eclipse.edc.core.transform.TypeTransformerRegistryImpl; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromAssetTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromCatalogTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromCriterionTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromDataAddressTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromDataServiceTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromDatasetTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromDistributionTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromPolicyTransformer; +import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromQuerySpecTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToActionTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToAssetTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToCatalogTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToConstraintTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToCriterionTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToDataServiceTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToDatasetTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToDistributionTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToDutyTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToOperatorTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToPermissionTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToPolicyTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToProhibitionTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonObjectToQuerySpecTransformer; +import org.eclipse.edc.core.transform.transformer.to.JsonValueToGenericTypeTransformer; import org.eclipse.edc.jsonld.TitaniumJsonLd; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromAssetTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromCatalogTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromCriterionTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromDataServiceTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromDatasetTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromDistributionTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromPolicyTransformer; -import org.eclipse.edc.jsonld.transformer.from.JsonObjectFromQuerySpecTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToActionTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToAssetTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToCatalogTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToConstraintTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToCriterionTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToDataServiceTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToDatasetTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToDistributionTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToDutyTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToOperatorTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToPermissionTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToPolicyTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToProhibitionTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonObjectToQuerySpecTransformer; -import org.eclipse.edc.jsonld.transformer.to.JsonValueToGenericTypeTransformer; -import org.eclipse.edc.protocol.dsp.transferprocess.transformer.type.from.JsonObjectFromDataAddressTransformer; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.transform.spi.TypeTransformerRegistry; import org.eclipse.tractusx.irs.edc.client.model.ContractOfferDescription; @@ -84,7 +84,8 @@ public class EdcTransformer { private final TitaniumJsonLd titaniumJsonLd; private final TransformerContextImpl transformerContext; - public EdcTransformer(@Qualifier("jsonLdObjectMapper") final ObjectMapper objectMapper, final TitaniumJsonLd titaniumJsonLd) { + public EdcTransformer(@Qualifier("jsonLdObjectMapper") final ObjectMapper objectMapper, + final TitaniumJsonLd titaniumJsonLd) { this.titaniumJsonLd = titaniumJsonLd; final JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(Map.of()); diff --git a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/JsonObjectFromCatalogRequestTransformer.java b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/JsonObjectFromCatalogRequestTransformer.java index 0c3ee35ba7..357f72672b 100644 --- a/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/JsonObjectFromCatalogRequestTransformer.java +++ b/irs-edc-client/src/main/java/org/eclipse/tractusx/irs/edc/client/transformer/JsonObjectFromCatalogRequestTransformer.java @@ -50,11 +50,11 @@ public JsonObjectFromCatalogRequestTransformer(final JsonBuilderFactory jsonFact public @Nullable JsonObject transform(@NotNull final CatalogRequest dto, @NotNull final TransformerContext context) { final JsonObjectBuilder builder = this.jsonFactory.createObjectBuilder(); - builder.add(JsonLdKeywords.TYPE, CatalogRequest.EDC_CATALOG_REQUEST_TYPE) - .add(CatalogRequest.EDC_CATALOG_REQUEST_PROVIDER_URL, dto.getProviderUrl()) - .add(CatalogRequest.EDC_CATALOG_REQUEST_PROTOCOL, dto.getProtocol()); + builder.add(JsonLdKeywords.TYPE, CatalogRequest.CATALOG_REQUEST_TYPE) + .add(CatalogRequest.CATALOG_REQUEST_COUNTER_PARTY_ADDRESS, dto.getCounterPartyAddress()) + .add(CatalogRequest.CATALOG_REQUEST_PROTOCOL, dto.getProtocol()); Optional.ofNullable(dto.getQuerySpec()) - .ifPresent(s -> builder.add(CatalogRequest.EDC_CATALOG_REQUEST_QUERY_SPEC, + .ifPresent(s -> builder.add(CatalogRequest.CATALOG_REQUEST_QUERY_SPEC, context.transform(dto.getQuerySpec(), JsonObject.class))); return builder.build(); diff --git a/irs-edc-client/src/test/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformerTest.java b/irs-edc-client/src/test/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformerTest.java index ea10f4936c..6f95901fd8 100644 --- a/irs-edc-client/src/test/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformerTest.java +++ b/irs-edc-client/src/test/java/org/eclipse/tractusx/irs/edc/client/transformer/EdcTransformerTest.java @@ -329,7 +329,7 @@ void shouldSerializeCatalogRequestToJsonObject() { final String providerConnector = "https://provider.edc/api/v1/dsp"; final String protocol = "dataspace-protocol-http"; final CatalogRequest catalogRequest = CatalogRequest.Builder.newInstance() - .providerUrl(providerConnector) + .counterPartyAddress(providerConnector) .protocol(protocol) .build(); final JsonObject requestJson = edcTransformer.transformCatalogRequestToJson(catalogRequest); diff --git a/irs-models/src/main/java/org/eclipse/tractusx/irs/component/LinkedItem.java b/irs-models/src/main/java/org/eclipse/tractusx/irs/component/LinkedItem.java index 4427cd7586..e89c76106e 100644 --- a/irs-models/src/main/java/org/eclipse/tractusx/irs/component/LinkedItem.java +++ b/irs-models/src/main/java/org/eclipse/tractusx/irs/component/LinkedItem.java @@ -61,4 +61,7 @@ public class LinkedItem { @JsonUnwrapped private GlobalAssetIdentification childCatenaXId; + @Schema(description = "Expresses whether the part is built-in or whether it is one of several options.", implementation = Boolean.class) + private boolean hasAlternatives; + } diff --git a/irs-models/src/main/java/org/eclipse/tractusx/irs/data/CxTestDataContainer.java b/irs-models/src/main/java/org/eclipse/tractusx/irs/data/CxTestDataContainer.java index 36a0d197f4..6426c78b68 100644 --- a/irs-models/src/main/java/org/eclipse/tractusx/irs/data/CxTestDataContainer.java +++ b/irs-models/src/main/java/org/eclipse/tractusx/irs/data/CxTestDataContainer.java @@ -58,7 +58,7 @@ public static class CxTestData { public static final String SINGLE_LEVEL_BOM_AS_BUILT_ASPECT_TYPE = "urn:bamm:io.catenax.single_level_bom_as_built:2.0.0#SingleLevelBomAsBuilt"; public static final String SINGLE_LEVEL_USAGE_BUILT_ASPECT_TYPE = "urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#SingleLevelUsageAsBuilt"; public static final String SINGLE_LEVEL_BOM_AS_SPECIFIED_ASPECT_TYPE = "urn:bamm:io.catenax.single_level_bom_as_specified:1.0.0#SingleLevelBomAsSpecified"; - public static final String PART_AS_PLANNED_ASPECT_TYPE = "urn:bamm:io.catenax.part_as_planned:1.0.0#PartAsPlanned"; + public static final String PART_AS_PLANNED_ASPECT_TYPE = "urn:bamm:io.catenax.part_as_planned:1.0.1#PartAsPlanned"; public static final String SINGLE_LEVEL_BOM_AS_PLANNED_ASPECT_TYPE = "urn:bamm:io.catenax.single_level_bom_as_planned:2.0.0#SingleLevelBomAsPlanned"; public static final String BATCH_ASPECT_TYPE = "urn:bamm:io.catenax.batch:2.0.0#Batch"; public static final String MATERIAL_FOR_RECYCLING_ASPECT_TYPE = "urn:bamm:io.catenax.material_for_recycling:1.1.0#MaterialForRecycling"; diff --git a/irs-models/src/main/resources/test_data/CX_Testdata.json b/irs-models/src/main/resources/test_data/CX_Testdata.json index 171d6e774f..0f2b22a773 100644 --- a/irs-models/src/main/resources/test_data/CX_Testdata.json +++ b/irs-models/src/main/resources/test_data/CX_Testdata.json @@ -331371,7 +331371,18 @@ "businessPartner" : "BPNL00000003B0Q0", "createdOn" : "2022-02-03T14:48:54.709Z", "lastModifiedOn" : "2022-02-03T14:48:54.709Z" - } ] + }, +{ + "catenaXId" : "urn:uuid:72ec2897-4e20-475c-a28b-019cf5b42a18", + "quantity" : { + "quantityNumber" : 2.5, + "measurementUnit" : "unit:litre" + }, + "hasAlternatives" : true, + "businessPartner" : "BPNL00000003CNKC", + "createdOn" : "2022-02-03T14:48:54.709Z", + "lastModifiedOn" : "2022-02-03T14:48:54.709Z" + } ] } ], "urn:bamm:io.catenax.battery.product_description:1.0.1#ProductDescription" : [ { "minimalStateOfHealth" : { diff --git a/local/demo/requirements.txt b/local/demo/requirements.txt index 5187afb459..e8e68a271b 100644 --- a/local/demo/requirements.txt +++ b/local/demo/requirements.txt @@ -1,4 +1,4 @@ -requests~=2.27.1 +requests~=2.31.0 requests_oauthlib~=1.3.1 oauthlib~=3.2.2 PyJWT~=2.6.0 diff --git a/local/testing/testdata/requirements.txt b/local/testing/testdata/requirements.txt index 78235c35f2..0227f3c31b 100644 --- a/local/testing/testdata/requirements.txt +++ b/local/testing/testdata/requirements.txt @@ -1 +1 @@ -requests~=2.27.1 \ No newline at end of file +requests~=2.31.0 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 92b2e88386..94fe3611df 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ 2.0 1.7 2.2.16 - 0.1.3 + 0.2.1 3.5.0 1.76 3.2.0