sovity / edc-ce

sovity Community Edition EDC
https://sovity.de/en/connect-to-data-space-en/
Apache License 2.0
54 stars 13 forks source link

[ProviderConfirmationPolicy] Allow data provider to explicitly confirm data requests on DSP:ContractOfferRequests as #605

Open AbdullahMuk opened 10 months ago

AbdullahMuk commented 10 months ago

Feature

Description (Problem to be solved and requirements to satisfy)

As a data provider I want to actively approve a consumer's request to consume my asset, because I want to have extended control over the consumption of my data. The confirmation shall happen after a consumer requested a contract offer. I shall be able to see trustable information from the Authority Portal about the requestor to derive a carefully considered decision.

Hint: The connector restricted policy does not help in this case, as it requires to know, who shall consume my data at date of creation.

Overview of Features

Benefits

Stakeholders

References

Solution Design

Affected Areas and Components

General Requirements

Out of scope

Processes

End-user UX via UI

  1. The user creates a data offer and is asked on the Contract Definition Creation Dialog, if the offering shall always be manually accepted.
  2. The consumer identifies a data offer via the built-in catalog or broker. In both cases it is visible, via an icon in the overview and as well in the details, that the offer requires approval of the provider. As consumer I request a contract for choosen data offer. I can see on the Dashboard the status of pending sent requests (e.g. 3 requests pending) and see my requests also in Contracts section.
  3. On a request, the provider can see organization details of the requestor and can accept or decline the request. In addition I can see on the Dashboard the status of pending decisions to make (e.g. 2 decisions necessary) and see these requests also on Contracts page.

Developer UX via API

Product Increments / Releases

1) Proof of Concept

2) Minimal viable Product

3) Later Stage

Work Breakdown

### Connector UI
- [ ] The catalog page needs to correctly indicate negotiation statuses even after refreshing. 
- [ ] The data offer detail dialog needs to correctly indicate negotiation statuses even after refreshing.
- [ ] Split up Contract Agreement Page into consuming and providing pages.
- [ ] New Page: Consuming Contracts Page
  - [ ] Main page shows consuming contracts.
  - [ ] In another tab failed negotiations are shown.
  - [ ] In another tab running/Pending negotiations are shown.
  - [ ] Running/pending negotiations have an indicator if they require "provider interaction", i.e. if policy ProviderConfirmationPolicy is used in the negotiation.
  - [ ] Negotiations have an UiAsset and a UiPolicy for all details regarding the consumed data offer. Here we also run into the issue of no asset metadata being persisted on the consumer side. We would go the same solution as the transfer history page and default to an asset with just the ID.
- [ ] New Page: Providing Contracts Page
  - [ ] Main page shows providing contracts.
  - [ ] In another tab running negotiations are shown.
  - [ ] In another tab failed negotiations are shown.
  - [ ] On main page a section exists where running negotiations are shown that require user action.
  - [ ] In details view all necessary information about the requestor are shown. In addition the user can accept and reject the negotiation.
  - [ ] Negotiations have an UiAsset and a UiPolicy for all details regarding the consumed data offer. 
- [ ] On the dashboard we show a new Field with "pending negotiation requests", that is very noticeable and contains a quick link to the providing contracts page if non-zero.
- [ ] Implement checkbox on Contract Creation Dialog and combine existing policy with selected ones properly (open for better solutions)
### EDC-CE / API Wrapper
- [ ] Extension uses Access to AP DB to fetch necessary data
- [ ] Connector would need to know where the broker is (he could keep track with a custom db row or in memory): Implement by setting the URL of the Broker manually.
- [ ] Sending C2C Messages is a question of:
  - [ ] `sendMessage(String endpoint, SovityMessage myMessage)`
  - [ ] `registerHandler(String messageType, (claims) -> {})`
- [ ] both are in the EDC CE: the crawler and the EDC
- [ ] Implement default existing policy "ProviderConfirmationPolicy" created on startup. The policy is always bound to the scope of contract negotiation, not to catalog requests.
- [ ] Define API Changes: Dashboard, Negotiation Actions, Contract Requests that need user action
- [ ] Implement new Dashboard KPI
- [ ] Implement Negotiation Actions: Approve, Reject
- [ ] Implement Negotiation Action: List of Contract Requests which need user action
- [ ] Implement "Participant Information Service Extension"
  - [ ] Enrich list of Contract Requests with validated information
  - [ ] Enrich Contracts endpoint with validated consumer details
- [ ] Add another API Wrapper endpoint for Contract Details which adds all organization details of the counter-party consumer/provider. 
### Authority Portal
- [ ] Adjust data offers tiles at catalog page to indicate at least via an icon that the offer contains a PrivderConfirmationPolicy
- [ ] Adjust data offers details popup to indicate at least via an icon that the offer contains a PrivderConfirmationPolicy

Architecture

image

richardtreier commented 10 months ago

Notes regarding estimation: grafik

ip312 commented 1 month ago

Additional requirement from here:

AbdullahMuk commented 4 weeks ago

Additional requirement from here:

  • In the MDS 2.3. we add in the asset description an additional field "Data Provider" (name to be discussed), to reflect the special situation for the Mobilithek (three roles: 1) connector hoster and MDS participant; 2) Mobilithek participant; 3) data owner)
  • In the MDS 2.3. we will present the second role in the Asset headline together with the first role (to be designed)

Given that we need clear separation of scope, this comment is not relevant for this issue but for https://github.com/sovity/PMO-Software/issues/1436.