diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ef2e51b..2bbf38ec 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,201 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [v2.1.0](https://github.com/eclipse-tractusx/puris/releases/tag/2.1.0)
+
+The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs
+and understanding the concept changes.
+
+The **need for configuration updates** is **marked bold**.
+
+### Added
+
+* **ERP Adapter**
+ * Added client ([#443](https://github.com/eclipse-tractusx/puris/pull/443))
+ * Added trigger service ([#474](https://github.com/eclipse-tractusx/puris/pull/474))
+ * Added button to frontend ([#504](https://github.com/eclipse-tractusx/puris/pull/504))
+* backend implementation for Days of Supply ([CX-0145](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange)) ([#441](https://github.com/eclipse-tractusx/puris/pull/441))
+* Demand and Capacity Notifications ([CX-0146](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications)) can be sent between partners ([#447](https://github.com/eclipse-tractusx/puris/pull/447), [#451](https://github.com/eclipse-tractusx/puris/pull/451))
+
+### Changed
+
+Fixes
+
+* Fail contract negotiation if non-empty obligations or prohibitions are set ([#509](https://github.com/eclipse-tractusx/puris/pull/509))
+* Use expanded jsonLD when evaluating catalog offers ([#416](https://github.com/eclipse-tractusx/puris/pull/416))
+* Publish cxId to DTR when retrieving Part Type later ([#483](https://github.com/eclipse-tractusx/puris/pull/483))
+
+CI
+
+* Trivy Workflow ([#452](https://github.com/eclipse-tractusx/puris/pull/452))
+* Helm Test to only check for version bump in the end so that version bumps are not enforced anymore ([#450](https://github.com/eclipse-tractusx/puris/pull/450))
+
+Chore
+
+* Updated license information ([#468](https://github.com/eclipse-tractusx/puris/pull/468), [#476](https://github.com/eclipse-tractusx/puris/pull/476))
+* Update of swagger documentation ([#514](https://github.com/eclipse-tractusx/puris/pull/514), [#516](https://github.com/eclipse-tractusx/puris/pull/516))
+* Version Bumps
+ * Infrastructure Components
+ * Tractus-X EDC to 0.7.3 ([#508](https://github.com/eclipse-tractusx/puris/pull/508))
+ * Digital Twin Registry to 0.5.0 ([#496](https://github.com/eclipse-tractusx/puris/pull/496))
+ * Backend Dependencies
+ * spring boot starter parent to 3.3.1 ([#471](https://github.com/eclipse-tractusx/puris/pull/471))
+ * Frontend Dependencies
+ * vite to 5.3.3 ([#481](https://github.com/eclipse-tractusx/puris/pull/481))
+ * postcss to 8.4.39 ([#478](https://github.com/eclipse-tractusx/puris/pull/478))
+ * braces to 3.0.3 ([#453](https://github.com/eclipse-tractusx/puris/pull/453))
+ * typescript-eslint/eslint-plugin to 7.0.0 (7.0.0)
+ * IAM Mock (Local Deployment): certify to 2024.7.4 ([#484](https://github.com/eclipse-tractusx/puris/pull/484))
+ * CI
+ * actions/setup-python to 5.1.1 ([#492](https://github.com/eclipse-tractusx/puris/pull/492))
+ * github/codeql-action to 3.25.10 ([#448](https://github.com/eclipse-tractusx/puris/pull/448))
+ * checkmarx/kics-github-action to 2.1.0 ([#446](https://github.com/eclipse-tractusx/puris/pull/446))
+ * actions/download-artifact to 4.1.7 ([#396](https://github.com/eclipse-tractusx/puris/pull/396))
+ * azure/setup-helm to 4 ([#395](https://github.com/eclipse-tractusx/puris/pull/395))
+
+### Removed
+
+N.A.
+
+### Known Knowns
+
+#### Security
+
+The Backend is currently secured via API Key while the Frontend already uses an API-KEY.
+See [Admin Guide](./docs/admin/Admin_Guide.md) for further information.
+
+#### Upgradeability
+
+As currently no active user was known migrations of data are not yet supported. The chart technically is upgradeable.
+
+#### Data Sovereignty
+
+For productive use the following enhancements are encouraged
+
+* User FrontEnd available: Role Company Admin is able to query catalogue and see negotiations and transfers
+ But company rules / policies need to be configured upfront in backend (via postman) to enable automatic contract
+ negotiations, responsibility lies with Company Admin role
+ --> add section in the User Manual describing this and the (legal) importance and responsibility behind defining these
+ rules
+* Currently only one standard policy per reg. connector / customer instance is supported (more precisely one for DTR,
+ one for all submodels), negotiation happens automatically based on this
+ --> enhance option to select partner and define specific policies (to be planned in context of BPDM Integration)
+ --> UI for specific configuration by dedicated role (e.g. Comp Admin) and more flexible policy configuration (without
+ code changes) is needed
+* As a non-Admin user I do not have ability to view policies in detail --> transparency for users when interacting with
+ and requesting / consuming data via dashboard / views on underlying usage policies to be enhanced
+* ContractReference Constraint or configuration of policies specific to one partner only not implemented -->
+ clarification of potential reference to "PURIS standard contract" and enabling of ContractReference for 24.08.
+* unclear meaning of different stati in negotations --> add view of successfull contract agreeements wrt which data have
+ been closed
+* current logging only done on info level --> enhance logging of policies (currently only available at debug level)
+* in case of non-matching policies (tested in various scenarios) no negotiation takes place -->
+ **enhance visualization or specific Error message to user**
+* no validation of the Schema "profile": "cx-policy:profile2405" (required to ensure interop with other PURIS apps)
+
+#### Styleguide
+
+Overall
+
+* Brief description at the top of each page describing content would be nice for better user experience.
+
+
+Stocks
+
+* user needs better guidance to click on a stock to update it (else error prone to enter one
+ slightly different attribute and Add instead of update)
+* Refresh -- update request has been sent successfully. -> more information regarding data transfer needed for user
+
+Catalog
+
+* No action possible -> unclear to user when and how user will consume an offer
+
+Negotiations
+
+* Add filters for transparency (bpnl, state)
+
+## [v2.0.2](https://github.com/eclipse-tractusx/puris/releases/tag/2.0.2)
+
+The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs
+and understanding the concept changes.
+
+The **need for configuration updates** is **marked bold**.
+
+### Added
+
+* Added backend implementation to CRUD Demand and Capacity
+ Notifications ([#415](https://github.com/eclipse-tractusx/puris/pull/415))
+* Added ERP response interface ([#418](https://github.com/eclipse-tractusx/puris/pull/418))
+
+### Changed
+
+* Fixed check when answering delivery information request from a customer which prevented always to
+ answer ([#435](https://github.com/eclipse-tractusx/puris/pull/435))
+
+### Removed
+
+N.A.
+
+### Known Knowns
+
+#### Security
+
+The Backend is currently secured via API Key while the Frontend already uses an API-KEY.
+See [Admin Guide](./docs/admin/Admin_Guide.md) for further information.
+
+#### Upgradeability
+
+As currently no active user was known migrations of data are not yet supported. The chart technically is upgradeable.
+
+#### Data Sovereignty
+
+For productive use the following enhancements are encouraged
+
+* User FrontEnd available: Role Company Admin is able to query catalogue and see negotiations and transfers
+ But company rules / policies need to be configured upfront in backend (via postman) to enable automatic contract
+ negotiations, responsibility lies with Company Admin role
+ --> add section in the User Manual describing this and the (legal) importance and responsibility behind defining these
+ rules
+* Currently only one standard policy per reg. connector / customer instance is supported (more precisely one for DTR,
+ one for all submodels), negotiation happens automatically based on this
+ --> enhance option to select partner and define specific policies (to be planned in context of BPDM Integration)
+ --> UI for specific configuration by dedicated role (e.g. Comp Admin) and more flexible policy configuration (without
+ code changes) is needed
+* As a non-Admin user I do not have ability to view policies in detail --> transparency for users when interacting with
+ and requesting / consuming data via dashboard / views on underlying usage policies to be enhanced
+* ContractReference Constraint or configuration of policies specific to one partner only not implemented -->
+ clarification of potential reference to "PURIS standard contract" and enabling of ContractReference for 24.08.
+* unclear meaning of different stati in negotations --> add view of successfull contract agreeements wrt which data have
+ been closed
+* current logging only done on info level --> enhance logging of policies (currently only available at debug level)
+* in case of non-matching policies (tested in various scenarios) no negotiation takes place -->
+ **enhance visualization or specific Error message to user**
+* no validation of the Schema "profile": "cx-policy:profile2405" (required to ensure interop with other PURIS apps)
+
+#### Styleguide
+
+Overall
+
+* Brief description at the top of each page describing content would be nice for better user experience.
+
+Dashboard
+
+* Similar for Create Delivery (here SOME entries are reset but warnings stay) (**block**)
+
+Stocks
+
+* user needs better guidance to click on a stock to update it (else error prone to enter one
+ slightly different attribute and Add instead of update)
+* Refresh -- update request has been sent successfully. -> more information regarding data transfer needed for user
+
+Catalog
+
+* No action possible -> unclear to user when and how user will consume an offer
+
+Negotiations
+
+* Add filters for transparency (bpnl, state)
+
## [v2.0.1](https://github.com/eclipse-tractusx/puris/releases/tag/2.0.1)
The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs
diff --git a/README.md b/README.md
index 543db7c4..c0d3ab72 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,19 @@ Beside the dependencies provided in the Helm Chart, the following dependencies h
| [Tractus-X Connector](https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector) | 0.7.3 | 0.7.3 |
| [Digital Twin Registry](https://github.com/eclipse-tractusx/sldt-digital-twin-registry/tree/main/charts/registry) | 0.5.0 | 0.5.0 |
+## Overview of Implemented Standards
+
+The application follows the following Catena-X standards (business-wise) to the following degree:
+
+| Standard | Level of implementation |
+|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
+| [CX-0118 Delivery Information Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0118-ActualDeliveryInformationExchange) | Compliant. |
+| [CX-0120 Short-Term Material Demand Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0120-ShortTermMaterialDemandExchange) | Compliant. |
+| [CX-0121 Planned Production Output Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0121-PlannedProductionOutputExchange) | Compliant. |
+| [CX-0122 Item Stock Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0122-ItemStockExchange) | Compliant. |
+| [CX-0145 Days of Supply Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange) | Missing EDC and Frontend integration. |
+| [CX-0146 Supply Chain Disruption Notifications 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications) | Missing functionality to react and close. |
+
## Known Knows
### Data Sovereignty
diff --git a/backend/pom.xml b/backend/pom.xml
index 744a82df..9ac092b3 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -33,7 +33,7 @@
org.eclipse.tractusx.purispuris-backend
- 2.0.2
+ 2.1.0puris-backendPURIS Backend
diff --git a/charts/puris/Chart.yaml b/charts/puris/Chart.yaml
index de95772b..91911ff6 100644
--- a/charts/puris/Chart.yaml
+++ b/charts/puris/Chart.yaml
@@ -41,4 +41,4 @@ version: 2.7.0
# 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: "2.0.2"
+appVersion: "2.1.0"
diff --git a/charts/puris/README.md b/charts/puris/README.md
index db408c0f..08c9798c 100644
--- a/charts/puris/README.md
+++ b/charts/puris/README.md
@@ -1,6 +1,6 @@
# puris
-![Version: 2.7.0](https://img.shields.io/badge/Version-2.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.2](https://img.shields.io/badge/AppVersion-2.0.2-informational?style=flat-square)
+![Version: 2.7.0](https://img.shields.io/badge/Version-2.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.1.0](https://img.shields.io/badge/AppVersion-2.1.0-informational?style=flat-square)
A helm chart for Kubernetes deployment of PURIS
@@ -16,12 +16,12 @@ To install the chart with the release name `puris`:
```shell
$ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev
-$ helm install puris tractusx-dev/policy-hub
+$ helm install puris tractusx-dev/puris
```
To install the helm chart into your cluster with your values:
```shell
-$ helm install -f your-values.yaml puris tractusx-dev/policy-hub
+$ helm install -f your-values.yaml puris tractusx-dev/puris
```
To use the helm chart as a dependency:
diff --git a/charts/puris/README.md.gotmpl b/charts/puris/README.md.gotmpl
index cfa302ec..5c9ebf11 100644
--- a/charts/puris/README.md.gotmpl
+++ b/charts/puris/README.md.gotmpl
@@ -18,12 +18,12 @@ To install the chart with the release name `puris`:
```shell
$ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev
-$ helm install puris tractusx-dev/policy-hub
+$ helm install puris tractusx-dev/puris
```
To install the helm chart into your cluster with your values:
```shell
-$ helm install -f your-values.yaml puris tractusx-dev/policy-hub
+$ helm install -f your-values.yaml puris tractusx-dev/puris
```
To use the helm chart as a dependency:
diff --git a/docs/admin/Admin_Guide.md b/docs/admin/Admin_Guide.md
index 30ed9716..2a5fee9c 100644
--- a/docs/admin/Admin_Guide.md
+++ b/docs/admin/Admin_Guide.md
@@ -149,6 +149,26 @@ _**ATTENTION**: Usage Purposes are no credentials than can be enforced technical
supported within Catena-X in the [odrl profile](https://github.com/catenax-eV/cx-odrl-profile/blob/main/profile.md)
of the current release._
+## Configure ERP Update
+
+To use an ERP Adapter, you need to configure the information below `backend.puris.erpadapter`:
+
+| Helm | Docker |
+|------------------------------------------|----------------------------------|
+| backend.puris.erpadapter.enabled | PURIS_ERPADAPTER_ENABLED |
+| backend.puris.erpadapter.url | PURIS_ERPADAPTER_URL |
+| backend.puris.erpadapter.authkey | PURIS_ERPADAPTER_AUTHKEY |
+| backend.puris.erpadapter.refreshinterval | PURIS_ERPADAPTER_REFRESHINTERVAL |
+| backend.puris.erpadapter.timelimit | PURIS_ERPADAPTER_TIMELIMIT |
+
+The configuration of the refreshinterval and the timelimit are considered as follows:
+
+- timelimit: whenever an erp update has been scheduled, then it is scheduled for n days. It gets rescheduled for n days
+whenever triggered. Thus, no further update will be done after n days of no trigger.
+- refreshinterval: defines in minutes after which time an update is performed for the scheduled updates.
+
+Refer to the [helm chart's README](../../charts/puris/README.md) for further information.
+
## Rate Limiting using nginx
Rate limiting is by default enabled in the puris frontend served by nginx and can be dynamically configured.
diff --git a/docs/api/openAPI.yaml b/docs/api/openAPI.yaml
index 40d171f9..7710eab6 100644
--- a/docs/api/openAPI.yaml
+++ b/docs/api/openAPI.yaml
@@ -204,6 +204,188 @@ components:
- day
- demand
type: object
+ DemandAndCapacityNotificationDto:
+ additionalProperties: false
+ properties:
+ affectedMaterialNumbers:
+ items:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ maxItems: 50
+ type: array
+ affectedSitesBpnsRecipient:
+ items:
+ maxItems: 50
+ pattern: ^BPNS[0-9a-zA-Z]{12}$
+ type: string
+ maxItems: 50
+ type: array
+ affectedSitesBpnsSender:
+ items:
+ maxItems: 50
+ pattern: ^BPNS[0-9a-zA-Z]{12}$
+ type: string
+ maxItems: 50
+ type: array
+ effect:
+ enum:
+ - demand-reduction
+ - demand-increase
+ - capacity-reduction
+ - capacity-increase
+ maxItems: 50
+ type: string
+ expectedEndDateOfEffect:
+ format: date-time
+ maxItems: 50
+ type: string
+ leadingRootCause:
+ enum:
+ - strike
+ - natural-disaster
+ - production-incident
+ - pandemic-or-epidemic
+ - logistics-disruption
+ - war
+ - other
+ maxItems: 50
+ type: string
+ notificationId:
+ format: uuid
+ maxItems: 50
+ type: string
+ partnerBpnl:
+ maxItems: 50
+ pattern: ^BPNL[0-9a-zA-Z]{12}$
+ type: string
+ relatedNotificationId:
+ format: uuid
+ maxItems: 50
+ type: string
+ reported:
+ type: boolean
+ sourceNotificationId:
+ format: uuid
+ maxItems: 50
+ type: string
+ startDateOfEffect:
+ format: date-time
+ maxItems: 50
+ type: string
+ status:
+ enum:
+ - resolved
+ - open
+ maxItems: 50
+ type: string
+ text:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ uuid:
+ format: uuid
+ maxItems: 50
+ type: string
+ type: object
+ DemandAndCapacityNotificationSamm:
+ additionalProperties: false
+ properties:
+ affectedSitesRecipient:
+ items:
+ maxItems: 50
+ pattern: ^BPNS[0-9a-zA-Z]{12}$
+ type: string
+ maxItems: 50
+ type: array
+ affectedSitesSender:
+ items:
+ maxItems: 50
+ pattern: ^BPNS[0-9a-zA-Z]{12}$
+ type: string
+ maxItems: 50
+ type: array
+ contentChangedAt:
+ format: date-time
+ maxItems: 50
+ type: string
+ effect:
+ enum:
+ - demand-reduction
+ - demand-increase
+ - capacity-reduction
+ - capacity-increase
+ maxItems: 50
+ type: string
+ expectedEndDateOfEffect:
+ format: date-time
+ maxItems: 50
+ type: string
+ leadingRootCause:
+ enum:
+ - strike
+ - natural-disaster
+ - production-incident
+ - pandemic-or-epidemic
+ - logistics-disruption
+ - war
+ - other
+ maxItems: 50
+ type: string
+ materialGlobalAssetId:
+ items:
+ maxItems: 50
+ pattern: (^[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}$)|(^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}$)
+ type: string
+ maxItems: 50
+ type: array
+ materialNumberCustomer:
+ items:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ maxItems: 50
+ type: array
+ materialNumberSupplier:
+ items:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ maxItems: 50
+ type: array
+ notificationId:
+ maxItems: 50
+ pattern: (^[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}$)|(^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}$)
+ type: string
+ relatedNotificationId:
+ maxItems: 50
+ pattern: (^[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}$)|(^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}$)
+ type: string
+ sourceNotificationId:
+ maxItems: 50
+ pattern: (^[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}$)|(^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}$)
+ type: string
+ startDateOfEffect:
+ format: date-time
+ maxItems: 50
+ type: string
+ status:
+ enum:
+ - resolved
+ - open
+ maxItems: 50
+ type: string
+ text:
+ maxItems: 50
+ type: string
+ required:
+ - contentChangedAt
+ - effect
+ - leadingRootCause
+ - notificationId
+ - startDateOfEffect
+ - status
+ type: object
DemandDto:
additionalProperties: false
properties:
@@ -415,6 +597,26 @@ components:
type: object
JsonNode:
type: object
+ Material:
+ additionalProperties: false
+ properties:
+ materialFlag:
+ type: boolean
+ materialNumberCx:
+ maxItems: 50
+ pattern: (^[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}$)|(^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}$)
+ type: string
+ name:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ ownMaterialNumber:
+ maxItems: 50
+ pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
+ type: string
+ productFlag:
+ type: boolean
+ type: object
MaterialDto:
additionalProperties: false
properties:
@@ -977,6 +1179,17 @@ components:
pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$
type: string
type: object
+ SupplyDto:
+ additionalProperties: false
+ properties:
+ date:
+ format: date-time
+ maxItems: 50
+ type: string
+ daysOfSupply:
+ format: double
+ type: number
+ type: object
securitySchemes:
X-API-KEY:
in: header
@@ -984,9 +1197,173 @@ components:
type: apiKey
info:
title: PURIS FOSS Open API
- version: 1.0.0
+ version: 2.1.0
openapi: 3.0.1
paths:
+ /days-of-supply/customer:
+ get:
+ description: Calculate days of supply for customer for given number of days.
+ Filtered by given material number, partner bpnl and site bpns.
+ operationId: calculateCustomerDaysOfSupply
+ parameters:
+ - in: query
+ name: materialNumber
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: siteBpns
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: numberOfDays
+ required: true
+ schema:
+ additionalProperties: false
+ format: int32
+ type: integer
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/SupplyDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Calculate days of supply for customer for given number of days.
+ tags:
+ - supply-controller
+ /days-of-supply/customer/reported:
+ get:
+ description: Get days of supply for customer for given material number and partner
+ bpnl.
+ operationId: getCustomerDaysOfSupply
+ parameters:
+ - in: query
+ name: materialNumber
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/SupplyDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Get days of supply for customer.
+ tags:
+ - supply-controller
+ /days-of-supply/supplier:
+ get:
+ description: Calculate days of supply for supplier for given number of days.
+ Filtered by given material number, partner bpnl and site bpns.
+ operationId: calculateSupplierDaysOfSupply
+ parameters:
+ - in: query
+ name: materialNumber
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: siteBpns
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: numberOfDays
+ required: true
+ schema:
+ additionalProperties: false
+ format: int32
+ type: integer
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/SupplyDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Calculate days of supply for supplier for given number of days.
+ tags:
+ - supply-controller
+ /days-of-supply/supplier/reported:
+ get:
+ description: Get days of supply for supplier for given material number and partner
+ bpnl.
+ operationId: getSupplierDaysOfSupply
+ parameters:
+ - in: query
+ name: materialNumber
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/SupplyDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Get days of supply for supplier.
+ tags:
+ - supply-controller
/delivery:
get:
description: Get all planned deliveries for the given material number. Optionally
@@ -1347,12 +1724,216 @@ paths:
summary: Updates a demand by its UUID
tags:
- demand-controller
- /demand/reported:
+ /demand-and-capacity-notification:
get:
- description: Get all demands of partners for a material number. Optionally the
- partners can be filtered by their bpnl and the demanding site can be filtered
- by its bpns.
- operationId: getAllDemandsForPartner
+ description: Get all own notifications. Optionally the partner can be filtered
+ by its bpnl.
+ operationId: getAllNotifications
+ parameters:
+ - in: query
+ name: partnerBpnl
+ required: false
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Get all own notifications
+ tags:
+ - demand-and-capacity-notification-controller
+ post:
+ operationId: createNotification
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ required: true
+ responses:
+ '201':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Notification was created.
+ '400':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Malformed or invalid request body.
+ '409':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Notification already exists. Use PUT instead.
+ '500':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Internal Server Error.
+ summary: Creates a new notification
+ tags:
+ - demand-and-capacity-notification-controller
+ put:
+ operationId: updateNotification
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ required: true
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Notification was updated.
+ '400':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Malformed or invalid request body.
+ '404':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Notification does not exist.
+ '500':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ additionalProperties: false
+ description: Internal Server Error.
+ summary: Updates a notification by its UUID
+ tags:
+ - demand-and-capacity-notification-controller
+ /demand-and-capacity-notification/reported:
+ get:
+ description: Get all reported notifications. Optionally the partner can be filtered
+ by its bpnl.
+ operationId: getAllReportedNotifications
+ parameters:
+ - in: query
+ name: partnerBpnl
+ required: false
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationDto'
+ maxItems: 50
+ type: array
+ description: OK
+ summary: Get all reported notifications
+ tags:
+ - demand-and-capacity-notification-controller
+ /demand-and-capacity-notification/request:
+ post:
+ operationId: postDemandAndCapacityNotification
+ parameters:
+ - in: header
+ name: edc-bpn
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ required: true
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationSamm'
+ additionalProperties: false
+ description: Ok
+ '400':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationSamm'
+ additionalProperties: false
+ description: Bad Request
+ '500':
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/DemandAndCapacityNotificationSamm'
+ additionalProperties: false
+ description: Internal Server Error
+ summary: This endpoint receives the DemandAndCapacityNotification 2.0.0 requests
+ tags:
+ - demand-and-capacity-notification-request-api-controller
+ /demand-and-capacity-notification/{id}:
+ delete:
+ operationId: deleteNotification
+ parameters:
+ - in: path
+ name: id
+ required: true
+ schema:
+ additionalProperties: false
+ format: uuid
+ maxItems: 50
+ type: string
+ responses:
+ '204':
+ description: Notification was deleted.
+ '400':
+ description: Malformed or invalid request body.
+ '404':
+ description: Notification does not exist.
+ '500':
+ description: Internal Server Error.
+ summary: Deletes a notification by its UUID
+ tags:
+ - demand-and-capacity-notification-controller
+ /demand/reported:
+ get:
+ description: Get all demands of partners for a material number. Optionally the
+ partners can be filtered by their bpnl and the demanding site can be filtered
+ by its bpns.
+ operationId: getAllDemandsForPartner
parameters:
- in: query
name: ownMaterialNumber
@@ -1516,7 +2097,216 @@ paths:
additionalProperties: false
description: OK
tags:
- - edc-controller
+ - edc-controller
+ /erp-adapter:
+ put:
+ description: "This endpoint accepts responses from the ERP adapter. Incoming\
+ \ messages are expected to carry a SAMM of the previously requested type.\
+ \ \n\nCurrently supported: \n\n| response-type | samm-version |\n|---------------|--------------|\n\
+ | ItemStock | 2.0 |"
+ operationId: putMethod
+ parameters:
+ - in: query
+ name: request-id
+ required: true
+ schema:
+ additionalProperties: false
+ format: uuid
+ maxItems: 50
+ type: string
+ - in: query
+ name: bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: response-type
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: samm-version
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - description: Represented as the number of milliseconds since January 1, 1970,
+ 00:00:00 GMT
+ example: 1719295545654
+ in: query
+ name: response-timestamp
+ required: true
+ schema:
+ additionalProperties: false
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ example:
+ direction: INBOUND
+ materialGlobalAssetId: null
+ positions:
+ - allocatedStocks:
+ - isBlocked: false
+ lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00'
+ quantityOnAllocatedStock:
+ unit: unit:piece
+ value: 22.0
+ stockLocationBPNA: BPNA4444444444AA
+ stockLocationBPNS: BPNS4444444444XX
+ orderPositionReference:
+ customerOrderId: C-Nbr-4711
+ customerOrderPositionId: PositionId-01
+ supplierOrderId: M-Nbr-4711
+ - allocatedStocks:
+ - isBlocked: false
+ lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00'
+ quantityOnAllocatedStock:
+ unit: unit:piece
+ value: 66.0
+ stockLocationBPNA: BPNA4444444444AA
+ stockLocationBPNS: BPNS4444444444XX
+ orderPositionReference:
+ customerOrderId: C-Nbr-4711
+ customerOrderPositionId: PositionId-03
+ supplierOrderId: M-Nbr-4711
+ - allocatedStocks:
+ - isBlocked: true
+ lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00'
+ quantityOnAllocatedStock:
+ unit: unit:piece
+ value: 44.0
+ stockLocationBPNA: BPNA4444444444AA
+ stockLocationBPNS: BPNS4444444444XX
+ orderPositionReference:
+ customerOrderId: C-Nbr-4711
+ customerOrderPositionId: PositionId-02
+ supplierOrderId: M-Nbr-4711
+ schema:
+ $ref: '#/components/schemas/JsonNode'
+ additionalProperties: false
+ required: true
+ responses:
+ '201':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: accepted
+ '400':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: bad request
+ '404':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: unknown request-id
+ '409':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: repeated answer for request-id
+ '500':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: internal server error
+ '501':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: unsupported response-type
+ tags:
+ - erp-adapter-controller
+ /erp-adapter/trigger:
+ post:
+ description: 'This endpoint is used to trigger scheduled updates from the ErpAdapter.
+ This is useful if you are expecting a specific request from a partner in the
+ near future and want to make a best-effort attempt to ensure that your PURIS
+ backend has already obtained current data to respond to that expected request,
+ when it arrives. Please note, that calling this endpoint has no significant
+ effect, if a request with the exact same specifics is already currently in
+ place. In that case, a call to this endpoint will only extend the period,
+ after which the scheduled request will be assumed to be irrelevant (see the
+ puris.erpadapter.timelimit property and its documentation for details in this
+ regard). '
+ operationId: scheduleErpUpdate
+ parameters:
+ - in: query
+ name: partner-bpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: own-materialnumber
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ - in: query
+ name: asset-type
+ required: true
+ schema:
+ additionalProperties: false
+ enum:
+ - DTR
+ - ITEM_STOCK_SUBMODEL
+ - PRODUCTION_SUBMODEL
+ - DEMAND_SUBMODEL
+ - DELIVERY_SUBMODEL
+ - NOTIFICATION
+ - PART_TYPE_INFORMATION_SUBMODEL
+ maxItems: 50
+ type: string
+ - in: query
+ name: direction
+ required: false
+ schema:
+ additionalProperties: false
+ enum:
+ - INBOUND
+ - OUTBOUND
+ maxItems: 50
+ type: string
+ responses:
+ '201':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: accepted
+ '400':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ type: object
+ description: bad request
+ tags:
+ - erp-adapter-controller
/health/:
get:
operationId: getHealth
@@ -2223,6 +3013,31 @@ paths:
description: Internal Server Error.
tags:
- partner-controller
+ /partners/{partnerBpnl}/materials:
+ get:
+ description: Returns all materials the specified partner is associated with.
+ operationId: getMaterials_1
+ parameters:
+ - in: path
+ name: partnerBpnl
+ required: true
+ schema:
+ additionalProperties: false
+ maxItems: 50
+ type: string
+ responses:
+ '200':
+ content:
+ '*/*':
+ schema:
+ additionalProperties: false
+ items:
+ $ref: '#/components/schemas/Material'
+ maxItems: 50
+ type: array
+ description: OK
+ tags:
+ - partner-controller
/parttypeinformation/{materialnumber}/{representation}:
get:
description: Endpoint that delivers PartTypeInformation of own products to customer
diff --git a/docs/architecture/03_system_scope_and_context.md b/docs/architecture/03_system_scope_and_context.md
index ee3d940b..c9b1b3f1 100644
--- a/docs/architecture/03_system_scope_and_context.md
+++ b/docs/architecture/03_system_scope_and_context.md
@@ -6,7 +6,9 @@ related to partners. This application scope follows the following information.
## Business Context
PURIS FOSS may be operated in any supply network, but currently will likely be operated in the
-automotive supply network.
+automotive supply network. Different functions within a company operate supply chain functions. They can either work on
+long-term functions (such as demand and capacity management - not handled by this application) or short-term functions
+(like supply reliability - supported by this application).
![Business Context](img/03-business-context.svg)
diff --git a/docs/architecture/04_solution_strategy.md b/docs/architecture/04_solution_strategy.md
index 09158e60..84e196e9 100644
--- a/docs/architecture/04_solution_strategy.md
+++ b/docs/architecture/04_solution_strategy.md
@@ -4,7 +4,7 @@
PURIS FOSS
-- follows the related standardization candidates or even published standards (CX-0112).
+- follows the related standardization candidates or even published standards (see below).
- is developed parallel to the consortial SAFe project.
**Up-to-dateness / real-time**
@@ -21,6 +21,17 @@ PURIS FOSS
- Data Consumers can consume a Data Provider's _Data Asset_.
- Data is exchanged using an asynchronous pull and push mechanism.
+Thus, the application follows the following Catena-X standards (business-wise) to the following degree:
+
+| Standard | Level of implementation |
+|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
+| [CX-0118 Delivery Information Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0118-ActualDeliveryInformationExchange) | Compliant. |
+| [CX-0120 Short-Term Material Demand Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0120-ShortTermMaterialDemandExchange) | Compliant. |
+| [CX-0121 Planned Production Output Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0121-PlannedProductionOutputExchange) | Compliant. |
+| [CX-0122 Item Stock Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0122-ItemStockExchange) | Compliant. |
+| [CX-0145 Days of Supply Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange) | Missing EDC and Frontend integration. |
+| [CX-0146 Supply Chain Disruption Notifications 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications) | Missing functionality to react and close. |
+
**Management of EDC and Digital Twins**
PURIS FOSS
diff --git a/docs/architecture/05_building_block_view.md b/docs/architecture/05_building_block_view.md
index 3f67bf47..b90ff46f 100644
--- a/docs/architecture/05_building_block_view.md
+++ b/docs/architecture/05_building_block_view.md
@@ -30,7 +30,11 @@ The Frontend only handles visualization logic. The remaining logic is handled in
| Stock View | Allows to manually add or update stock information that is allocated to partners. Also latest stock information for partners may be requested (via backend). |
| Dashboard | The dashboard allows to compare material-related demands, production outputs and stocks in a mocked way. Only Stock information is currently implements. |
| Authentication Service | Encapsulates keycloak authentication and session management to be used by the main app. |
-| Access Service | Use to give control the access to views. |
+| ERP Service | Encapsulates Logic to schedule an erp update for data. |
+| Notification View | Allows to send and read notifications. |
+| Catalog View | Allows an ADMIN to lookup a catalog of a registered partner. |
+| Negotiation View | Allows an ADMIN to check past negotiations. |
+| Transfer View | Allows an ADMIN to check past transfers. |
**PURIS FOSS Backend**
@@ -40,6 +44,7 @@ information objects is the same:
- planed production output
- short-term material demand (demand)
- delivery information
+- days of supply
The building block view describes only the responsibilities of the components/ packages.
@@ -51,6 +56,8 @@ The building block view describes only the responsibilities of the components/ p
| MAD | Stores the partner and material related information. They may only be added via REST interfaces. |
| Stock | Stores and handles stock related data. It provides interfaces to create and read stock data. Also it allows to exchange stock information via the EDC. |
| DTR | The DTR component provides the DTR implementations to manage ShellDescriptors. May first need to get a OAuth 2 token for authentication. |
+| ERP Adapter | Allows to ask the SAMM Adapter to get stock information from your ERP / internal system. |
+| Notifications | Allows to send and receive demand and capacity notifications. |
## NOTICE
diff --git a/docs/architecture/06_runtime_view.md b/docs/architecture/06_runtime_view.md
index ab4f3e8c..832ad12c 100644
--- a/docs/architecture/06_runtime_view.md
+++ b/docs/architecture/06_runtime_view.md
@@ -63,6 +63,23 @@ as soon as a MaterialPartnerRelation is changed. The Digital Twin is always recr
![Overview of Digital Twin Creation](img/06-twin-creation.svg)
+## Scenario: Exchange Notifications
+
+The notification feature allows users to inform partners about demand and capacity disruptions. The terms
+`Data Provider` and `Data Consumer` are in this scenario somewhat misleading because:
+
+- The Data Consumer is the message sending party
+- The Data Provider is the message receiving party (providing the endpoint consuming the data)
+
+The endpoint will decide the common scenarios to handle a message containing the notification:
+
+- Create a new notification
+- Update an existing notification previously received including closing it
+
+The following diagram illustrates the exchange (create and update) process for notifications sent to a partner.
+
+![Overview of Notification Exchange](img/06-notification-api-flow-detailed.svg)
+
## Scenario: Interact with Data in the Web-UI
When reloading the UI, the latest data is pulled from the backend. Whenever a partner-related update on the information
diff --git a/docs/architecture/08_concepts.md b/docs/architecture/08_concepts.md
index 32ff587a..07373b35 100644
--- a/docs/architecture/08_concepts.md
+++ b/docs/architecture/08_concepts.md
@@ -107,7 +107,7 @@ which restricts the `specificAssetIds` based on BPNLs.
Two different policies are used depending on the Asset Type:
- Digital Twin Registry: Use Access Policy also as Contract Policy
-- Submodels: Use Contract Policy as defined below
+- Submodels & Notification Endpoint: Use Contract Policy as defined below
_Note: The submodel `PartTypeInformation` is also registered with the same Contract Policy as the other Submodels._
@@ -217,6 +217,34 @@ a submodel is requested, the DTR of a partner is queried.
Whenever a partner is created, all exchanged information APIs that comply to a Catena-X standard are registered as
contract offer for the partner's BPNL.
+## ERP Integration
+
+A first version of the erp integration for item stock is in preparation. It allows the application to schedule a
+periodic update of the specific information. It uses an asynchronous request & response flow in which the request should
+look like the semantic model of interest in which the `materialGlobalAssetId` is ignored.
+
+Currently, the following SAMM information is allowed:
+
+| response-type | samm-version |
+|---------------|--------------|
+| ItemStock | 2.0 |
+
+The update is always triggered for the following information:
+
+- partner
+- material
+- SAMM / response type
+- direction (sometimes needed)
+
+An update is scheduled whenever:
+
+- a partner requested the data
+- the user requested the data in the dashboard
+
+In case no update has been scheduled, the information is not updated. The update will then be performed periodically
+until it has not been updated for a defined time. Please refer to the Admin Guide for more information to configure the
+erp adapter.
+
## Security
Backend APIs are secured by an API Key. The Frontend may be configured to be accessed based on keycloak authentication.
diff --git a/docs/architecture/img/03-business-context.svg.license b/docs/architecture/img/03-business-context.svg.license
new file mode 100644
index 00000000..8e80bca2
--- /dev/null
+++ b/docs/architecture/img/03-business-context.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/03-business-context.svg
diff --git a/docs/architecture/img/03-technical-context.svg.license b/docs/architecture/img/03-technical-context.svg.license
new file mode 100644
index 00000000..d8527524
--- /dev/null
+++ b/docs/architecture/img/03-technical-context.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/03-technical-context.svg
diff --git a/docs/architecture/img/05-level-0.svg.license b/docs/architecture/img/05-level-0.svg.license
new file mode 100644
index 00000000..ca7dc731
--- /dev/null
+++ b/docs/architecture/img/05-level-0.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-0.svg
diff --git a/docs/architecture/img/05-level-1-backend.svg b/docs/architecture/img/05-level-1-backend.svg
index 40116d3c..be8694c8 100755
--- a/docs/architecture/img/05-level-1-backend.svg
+++ b/docs/architecture/img/05-level-1-backend.svg
@@ -1,151 +1,4 @@
-
+
diff --git a/docs/architecture/img/05-level-1-backend.svg.license b/docs/architecture/img/05-level-1-backend.svg.license
new file mode 100644
index 00000000..ab0aec7d
--- /dev/null
+++ b/docs/architecture/img/05-level-1-backend.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-1-backend.svg
diff --git a/docs/architecture/img/05-level-1-frontend.svg b/docs/architecture/img/05-level-1-frontend.svg
index a15499fe..4805a65c 100644
--- a/docs/architecture/img/05-level-1-frontend.svg
+++ b/docs/architecture/img/05-level-1-frontend.svg
@@ -1,114 +1,4 @@
-
+
diff --git a/docs/architecture/img/05-level-1-frontend.svg.license b/docs/architecture/img/05-level-1-frontend.svg.license
new file mode 100644
index 00000000..7d01b347
--- /dev/null
+++ b/docs/architecture/img/05-level-1-frontend.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-1-frontend.svg
diff --git a/docs/architecture/img/06-api-flow-detailed.svg.license b/docs/architecture/img/06-api-flow-detailed.svg.license
new file mode 100644
index 00000000..106e5492
--- /dev/null
+++ b/docs/architecture/img/06-api-flow-detailed.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-api-flow-detailed.svg
diff --git a/docs/architecture/img/06-notification-api-flow-detailed.svg b/docs/architecture/img/06-notification-api-flow-detailed.svg
new file mode 100644
index 00000000..f7c14b7e
--- /dev/null
+++ b/docs/architecture/img/06-notification-api-flow-detailed.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/docs/architecture/img/06-notification-api-flow-detailed.svg.license b/docs/architecture/img/06-notification-api-flow-detailed.svg.license
new file mode 100644
index 00000000..969b640f
--- /dev/null
+++ b/docs/architecture/img/06-notification-api-flow-detailed.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-notification-api-flow-detailed.svg
diff --git a/docs/architecture/img/06-twin-creation.svg.license b/docs/architecture/img/06-twin-creation.svg.license
new file mode 100644
index 00000000..d2dde4a8
--- /dev/null
+++ b/docs/architecture/img/06-twin-creation.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-twin-creation.svg
diff --git a/docs/architecture/img/07-deployment-argo.svg.license b/docs/architecture/img/07-deployment-argo.svg.license
new file mode 100644
index 00000000..1a671fca
--- /dev/null
+++ b/docs/architecture/img/07-deployment-argo.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/07-deployment-argo.svg
diff --git a/docs/architecture/img/07-deployment.svg.license b/docs/architecture/img/07-deployment.svg.license
new file mode 100644
index 00000000..1ce1ee42
--- /dev/null
+++ b/docs/architecture/img/07-deployment.svg.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/07-deployment.svg
diff --git a/docs/architecture/puml/05-level-1-backend.puml b/docs/architecture/puml/05-level-1-backend.puml
index 04d6df19..71adb255 100644
--- a/docs/architecture/puml/05-level-1-backend.puml
+++ b/docs/architecture/puml/05-level-1-backend.puml
@@ -3,23 +3,43 @@ skinparam linetype polyline
skinparam nodesep 150
skinparam ranksep 50
+() mad_interface as "MAD Interface"
+() dtr_interface as "Registry & Discovery Interfaces"
+() oauth as "OAuth2"
+() erp_interface as "ERP SAMM\nAdapter Interface"
+() edc_interface as "EDC Management API"
+() not_interface as "Notification Interface"
+() erp_frontend_interface as "Frontend Trigger Interface"
+() data_interface as "Submodel \n& internal interface"
+
package "<> PURIS FOSS Backend"{
[DTR] as dtr
+ [ERP Adapter] as erp
+ [Stock, Production, Demand,\nDelivery, Days of Supply\nInformation] as stock
[EDC] as edc
- [Stock, Production, Demand,\nDelivery Information] as stock
+ [Notifications] as not
[MAD] as mad
}
-"Registry & Discovery Interfaces" )-- dtr
-"MAD Interface" - mad
-edc -( "EDC Client Interface"
-stock --( "Submodel \n& internal interface"
+erp -left- erp_interface
+erp -left- erp_frontend_interface
+dtr_interface -down- dtr
+oauth )-down- "use for authentication of DTR" dtr
+
+not -up- "use edc for communication" edc
+
+dtr -down- "Register and discover twins\n& submodels" stock
+data_interface -down- stock
+stock -left- erp
+stock -right- "query catalog &\nget data (via edc)" edc
+stock -down- mad
+edc -right-( edc_interface
-dtr -- "Register and discover twins\n& submodels" stock
-stock - "query catalog &\nget data (via edc)" edc
-mad - stock
+mad -- mad_interface
+mad -right- not
+erp -- mad
-"OAuth2" )- "uses for authentication of DTR" dtr
+not -right- not_interface
@enduml
diff --git a/docs/architecture/puml/05-level-1-frontend.puml b/docs/architecture/puml/05-level-1-frontend.puml
index d7598e33..296d0678 100644
--- a/docs/architecture/puml/05-level-1-frontend.puml
+++ b/docs/architecture/puml/05-level-1-frontend.puml
@@ -3,22 +3,49 @@ skinparam linetype polyline
skinparam nodesep 20
skinparam ranksep 50
-package "<> PURIS FOSS Frontend"{
+() erp_frontend_interface as "Frontend Trigger Interface"
+() edc_interface as "EDC Interface"
+() mad_interface as "MAD Interface"
+() edc_interface as "EDC Interface"
+() notifications_interface as "Notification Interface"
- [Stock View] as stock_view
- [Dashboard] as dashboard
- [Authentication Service] as auth_service
+package "<> PURIS FOSS Frontend"{
+ [ERP Service] as erp_service
+ together {
+ [Stock View] as stock_view
+ [Notification View] as notifications_view
+ [Dashboard] as dashboard
+ [Authentication Service] as auth_service
+ }
+ together {
+ [Catalog View] as catalog_view
+ [Negotiations View] as negotiations_view
+ [Transfer View] as transfer_view
+ }
}
"Interfaces for\n- Planned Production Output\n- Short-Term Material Demand\n- Delivery Information" -- dashboard
[Keycloak] as idp
idp - auth_service
-stock_view --( "Stock Interface"
-stock_view --( "MAD interface"
+stock_view ---( "Stock Interface"
+stock_view ---( mad_interface
+
+dashboard ---( "Stock Interface"
+dashboard ---( mad_interface
+notifications_view ---( mad_interface
+notifications_interface )-- notifications_view
+
+catalog_view ---( edc_interface
+catalog_view ---( mad_interface
+negotiations_view ---( edc_interface
+transfer_view ---( edc_interface
+
+erp_service - dashboard
+erp_frontend_interface -up- erp_service
+dashboard -[hidden]right- stock_view
-dashboard --( "Stock Interface"
-dashboard --( "MAD interface"
+auth_service -[hidden]down- erp_service
@enduml
diff --git a/docs/architecture/puml/06-notification-api-flow-detailed.puml b/docs/architecture/puml/06-notification-api-flow-detailed.puml
new file mode 100644
index 00000000..14340df0
--- /dev/null
+++ b/docs/architecture/puml/06-notification-api-flow-detailed.puml
@@ -0,0 +1,65 @@
+@startuml
+autonumber
+skinparam sequenceMessageAlign center
+
+box "Data Consumer"
+participant "Business\nApplication" as app_cons
+participant "EDC\nConsumer" as edc_cons
+end box
+
+box "Data Provider"
+participant "EDC\nProvider" as edc_prov
+participant "Notification Endpoint\nProvider" as not_prov
+end box
+
+=== Send Message to Partner ==
+== Contract Message Endpoint Usage ==
+app_cons -> edc_cons: search for Notification assets at partner
+activate edc_cons
+edc_cons <-> edc_prov: catalog communication
+edc_cons --> app_cons: catalog
+deactivate edc_cons
+
+app_cons -> app_cons: identify Notification Endpoint offer\n(filter by dcat:type, cx:version)
+
+app_cons -> edc_cons: negotiate contract for Notification Endpoint usage
+activate edc_cons
+edc_cons <-> edc_prov: negotiation
+edc_cons --> app_cons: contract agreement (contractAgreementId)
+deactivate edc_cons
+
+app_cons -> edc_cons: initialize transfer
+activate edc_cons
+edc_cons <-> edc_prov: initialize transfer
+edc_cons --> app_cons: transfer completed (transferProcessId)
+deactivate edc_cons
+
+app_cons -> edc_cons: get EDR for transferProcessId
+activate edc_cons
+edc_cons <-> edc_prov: get EDR for transfer
+edc_cons --> app_cons: EDR (refreshed)
+deactivate edc_cons
+
+== Send Demand and Capacity Notification ==
+app_cons -> app_cons: prepare demand and capacity notification message
+
+note over app_cons, edc_cons
+Send notification via EDC
+using EDR for authentication
+end note
+app_cons -> edc_prov: send message in body against endpoint
+note right
+Accept or refuse message / notification.
+Notification may be one of the following:
+- new
+- update of a previously received message or
+- a closure of a previously received message
+end note
+activate edc_prov
+edc_prov -> not_prov: proxy message
+activate not_prov
+not_prov --> edc_prov: result
+deactivate not_prov
+edc_prov --> app_cons: result
+deactivate edc_prov
+@enduml
diff --git a/docs/user/User_Guide.md b/docs/user/User_Guide.md
index 21cf71c2..02e2a1d0 100644
--- a/docs/user/User_Guide.md
+++ b/docs/user/User_Guide.md
@@ -142,6 +142,21 @@ Afterwards, when the user refreshes the page, they will be presented with the up
_**Note:** The update process can take a few seconds._
+#### Scheduling an ERP data update
+
+The data may be updated manually or be updated periodically by the system. Whenever a partner asked for a specific
+information OR the user triggered "SCHEDULE ERP UPDATE", then a periodic update is scheduled. It is automatically
+cancelled after the update has not been triggered for a configured number of days.
+
+This update is always:
+
+- per partner
+- per material
+- per information (currently only stock is supported)
+- per direction (e.g. stock is differentiated into stock as a customer or supplier)
+
+In case of further information (e.g., update intervals), please contact your administrator or consult the Admin Guide.
+
## View and Manage Stocks
This view allows a user to either create material or product stocks and allocate them to a partner. Stocks always need
@@ -188,6 +203,40 @@ _**Note:** Stock information is updated asynchronously. The user may reload the
![Stock View after selecting a Material Stock](img/stock_view_selected_material_stock.png)
+## Demand and Capacity Notifications
+
+_DISCLAIMER: This feature has not yet been finished. Currently, users neither can't react to notifications nor can close
+notifications._
+
+An user may use the page to send notifications to partners or read received notifications. One may chose the direction:
+
+- `OUTGOING` for messages sent to a partner
+- `INCOMING` for messages received from a partner
+
+![Overview of the notification view](img/notification_view.png)
+
+One may get further information by double clicking on a notification in the list.
+
+![Detailed notification after double clicking the entry](img/notification_detail.png)
+
+When triggering the button "SEND NOTIFICATION", a modal dialog is opened allowing a user to compose the demand and
+capacity notification.
+
+![Send notification modal](img/notification_send.png)
+
+After filling the mandatory data (see `*`), the user can send the notification:
+
+- Text
+- Partner (supplier or customer relationship)
+- Leading Root Cause (one as defined by CX-0146 for demand and capacity notification)
+- Status (either `Open` or `Closed`, use close to close disruptions)
+- Effect (either `Increase` or `Decrease` of `Production` or `Demand`)
+- Start Date of Effect
+- End Date of Effect
+- Affected Sites Senders
+- Affected Sites Recipient
+- Affected Material Numbers (only those applicable to the partner)
+
## Catalog
An admin may use the page to query offers available at a partner to check if the partner set up the information exchange
@@ -253,3 +302,12 @@ Per Transfer the following information is listed:
_**Note**: Per data request per partner, there are two Transfers as one contracts the partner's request asset and the
partner contracts the user's response asset._
+
+---
+# NOTICE
+
+This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).
+
+- SPDX-License-Identifier: Apache-2.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/docs/user/User_Guide.md
diff --git a/docs/user/img/catalog_view_list.png b/docs/user/img/catalog_view_list.png
index cd5ffb40..450a764f 100644
Binary files a/docs/user/img/catalog_view_list.png and b/docs/user/img/catalog_view_list.png differ
diff --git a/docs/user/img/catalog_view_list.png.license b/docs/user/img/catalog_view_list.png.license
new file mode 100644
index 00000000..9d606af8
--- /dev/null
+++ b/docs/user/img/catalog_view_list.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/catalog_view_list.png
diff --git a/docs/user/img/dashboard_add_buttons.png.license b/docs/user/img/dashboard_add_buttons.png.license
new file mode 100644
index 00000000..eaa4246b
--- /dev/null
+++ b/docs/user/img/dashboard_add_buttons.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_buttons.png
diff --git a/docs/user/img/dashboard_add_delivery.png.license b/docs/user/img/dashboard_add_delivery.png.license
new file mode 100644
index 00000000..2cce111b
--- /dev/null
+++ b/docs/user/img/dashboard_add_delivery.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_delivery.png
diff --git a/docs/user/img/dashboard_add_demand.png.license b/docs/user/img/dashboard_add_demand.png.license
new file mode 100644
index 00000000..f8707978
--- /dev/null
+++ b/docs/user/img/dashboard_add_demand.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_demand.png
diff --git a/docs/user/img/dashboard_add_production.png.license b/docs/user/img/dashboard_add_production.png.license
new file mode 100644
index 00000000..f431dea5
--- /dev/null
+++ b/docs/user/img/dashboard_add_production.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_production.png
diff --git a/docs/user/img/dashboard_filters.png.license b/docs/user/img/dashboard_filters.png.license
new file mode 100644
index 00000000..51a7ccb1
--- /dev/null
+++ b/docs/user/img/dashboard_filters.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_filters.png
diff --git a/docs/user/img/dashboard_own_site.png.license b/docs/user/img/dashboard_own_site.png.license
new file mode 100644
index 00000000..d10c67b3
--- /dev/null
+++ b/docs/user/img/dashboard_own_site.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_own_site.png
diff --git a/docs/user/img/dashboard_partner_site.png b/docs/user/img/dashboard_partner_site.png
index 983f526e..2dd8be67 100644
Binary files a/docs/user/img/dashboard_partner_site.png and b/docs/user/img/dashboard_partner_site.png differ
diff --git a/docs/user/img/dashboard_partner_site.png.license b/docs/user/img/dashboard_partner_site.png.license
new file mode 100644
index 00000000..9dbf247b
--- /dev/null
+++ b/docs/user/img/dashboard_partner_site.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_partner_site.png
diff --git a/docs/user/img/dashboard_view.png b/docs/user/img/dashboard_view.png
index a635facd..54fd9e57 100644
Binary files a/docs/user/img/dashboard_view.png and b/docs/user/img/dashboard_view.png differ
diff --git a/docs/user/img/dashboard_view.png.license b/docs/user/img/dashboard_view.png.license
new file mode 100644
index 00000000..113b4cc4
--- /dev/null
+++ b/docs/user/img/dashboard_view.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_view.png
diff --git a/docs/user/img/dashboard_view_list.png b/docs/user/img/dashboard_view_list.png
deleted file mode 100644
index 069894c5..00000000
Binary files a/docs/user/img/dashboard_view_list.png and /dev/null differ
diff --git a/docs/user/img/dashboard_view_list.png.license b/docs/user/img/dashboard_view_list.png.license
new file mode 100644
index 00000000..847b2e08
--- /dev/null
+++ b/docs/user/img/dashboard_view_list.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_view_list.png
diff --git a/docs/user/img/negotiation_view_list.png b/docs/user/img/negotiation_view_list.png
new file mode 100644
index 00000000..756af246
Binary files /dev/null and b/docs/user/img/negotiation_view_list.png differ
diff --git a/docs/user/img/negotiations_view_list.png.license b/docs/user/img/negotiations_view_list.png.license
new file mode 100644
index 00000000..0802564a
--- /dev/null
+++ b/docs/user/img/negotiations_view_list.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/negotiations_view_list.png
diff --git a/docs/user/img/notification_detail.png b/docs/user/img/notification_detail.png
new file mode 100644
index 00000000..58eda3f8
Binary files /dev/null and b/docs/user/img/notification_detail.png differ
diff --git a/docs/user/img/notification_send.png b/docs/user/img/notification_send.png
new file mode 100644
index 00000000..9d681753
Binary files /dev/null and b/docs/user/img/notification_send.png differ
diff --git a/docs/user/img/notification_view.png b/docs/user/img/notification_view.png
new file mode 100644
index 00000000..08c7098a
Binary files /dev/null and b/docs/user/img/notification_view.png differ
diff --git a/docs/user/img/stock_view.png.license b/docs/user/img/stock_view.png.license
new file mode 100644
index 00000000..5db5296f
--- /dev/null
+++ b/docs/user/img/stock_view.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view.png
diff --git a/docs/user/img/stock_view_added_material_stock.png.license b/docs/user/img/stock_view_added_material_stock.png.license
new file mode 100644
index 00000000..520cea54
--- /dev/null
+++ b/docs/user/img/stock_view_added_material_stock.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view_added_material_stock.png
diff --git a/docs/user/img/stock_view_selected_material_stock.png.license b/docs/user/img/stock_view_selected_material_stock.png.license
new file mode 100644
index 00000000..fe5d1033
--- /dev/null
+++ b/docs/user/img/stock_view_selected_material_stock.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view_selected_material_stock.png
diff --git a/docs/user/img/transfers_view_list.png b/docs/user/img/transfers_view_list.png
index a6edd53a..56c03681 100644
Binary files a/docs/user/img/transfers_view_list.png and b/docs/user/img/transfers_view_list.png differ
diff --git a/docs/user/img/transfers_view_list.png.license b/docs/user/img/transfers_view_list.png.license
new file mode 100644
index 00000000..ba009a69
--- /dev/null
+++ b/docs/user/img/transfers_view_list.png.license
@@ -0,0 +1,5 @@
+This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
+
+- SPDX-License-Identifier: CC-BY-4.0
+- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
+- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/transfers_view_list.png
diff --git a/frontend/package.json b/frontend/package.json
index 8a5b2ed8..ef972226 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -2,7 +2,7 @@
"name": "puris-frontend",
"description": "Puris frontend",
"license": "Apache-2.0",
- "version": "2.0.2",
+ "version": "2.1.0",
"type": "module",
"scripts": {
"dev": "vite --host",
diff --git a/local/postman/puris-integration-test.postman_collection.json b/local/postman/puris-integration-test.postman_collection.json
index 885af818..160be90a 100644
--- a/local/postman/puris-integration-test.postman_collection.json
+++ b/local/postman/puris-integration-test.postman_collection.json
@@ -3386,7 +3386,7 @@
"",
"pm.test(\"Verify that dtr has been offered (dct:type, cx-common:version)\", function () {",
" const contractOffer = contractOffers.find(function (offer) {",
- " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";",
+ " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";",
" });",
"",
" pm.expect(contractOffer).to.exist;",
@@ -3406,7 +3406,7 @@
"",
" pm.test(\"Verify that \" + sumbodelName + \" Submodel has been offered (dct:type, cx-common:version, aas-semantics:semanticId)\", function () {",
" const contractOffer = contractOffers.find(function (offer) {",
- " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;",
+ " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;",
" });",
"",
" pm.expect(contractOffer).to.exist;",
@@ -3510,7 +3510,7 @@
"",
"pm.test(\"Verify that dtr has been offered (dct:type, cx-common:version)\", function () {",
" const contractOffer = contractOffers.find(function (offer) {",
- " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";",
+ " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";",
" });",
"",
" pm.expect(contractOffer).to.exist;",
@@ -3530,7 +3530,7 @@
"",
" pm.test(\"Verify that \" + sumbodelName + \" Submodel has been offered (dct:type, cx-common:version, aas-semantics:semanticId)\", function () {",
" const contractOffer = contractOffers.find(function (offer) {",
- " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;",
+ " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;",
" });",
"",
" pm.expect(contractOffer).to.exist;",