Skip to the content.
  1. Introduction
  2. System context and domain model
  3. Architecture drivers
  4. System decomposition
  5. Quality concepts
  6. Further notes

System decomposition

Structure

The figure below features the Data Intermediation Platform composed of two elements: the Platform Core and the DPC. On the left side, a human actor represents a data provider; on the right side, an external third-party system and its user compose the data consumer. The data provider sends data assets to, and the data provider gets data assets from, the platform core. That means that the flow of the data assets happens via the core platform and does not belong to the scope of the DPC (note the data asset flow area in the figure). The DPC contributes to the data flow, though, for the information about grants is managed by the DPC. Therefore, the platform core must check the DPC for grant information before forwarding data assets to a data consumer.

first decomposition

Layers

Internally, the compositing components of the DPC are organized into three layers:

first decomposition

DPC’s internal components

The next figure further decomposes the DPC component and features the external and internal dependencies among components in the ecosystem. In this representation, we colored the components Participant Service, Log Service, Notification Service, and Grant Service matching the corresponding areas in the domain model.

first decomposition

There are two components in the interface layer:

The service layer contains four components:

diagram grant service

diagram notification service

diagram notification service

Behavior

This section contains behavioral diagrams depicting the interaction among DPC components, the Platform Core, data consumers, and data providers when performing key actions.

Create data update request

This interaction is depicted in four steps:

  1. A data provider requests the platform owner to update personal data.
  2. The platform pulls the request notification.
  3. The platform modifies the data as requested.
  4. The data provider is notified about the update of their data.

These steps are enumerated in the sequence diagram below.

sequence diagram 1

A note on logs: Events relevant to the DPC can happen inside and outside the DPC. For example, consider a grant authorization flow: As the data involved is managed via the DPC (grant requests, approvals, revocations, etc.), all logs concerning the grant authorization flow can be created internally (e.g., Grant Service calls the Log Service whenever necessary). When it comes to modification of personal data (to refer to the same example used in the diagram), this happens outside the DPC: the Platform Core is responsible for storing data providers’ personal data. Therefore, in these cases, the Platform Core must inform the DPC via its API component. Another prominent example of a relevant event outside the DPC is the data asset flow (whose occurrence must be informed by the Platform Core)

Getting notified: Participants send notifications to each other, where each notification comprises two participants: a sender (or originator) and a recipient (or destination). When the notification involves a data provider and a data consumer, both participants interact with the DPC via the UI component. Therefore, these participants can see their new notifications on screen by accessing the DPC’s user interface. However, there are more possibilities when the notification involves the platform owner (e.g., the data provider requests the platform owner to update their data). Certain predefined types of notifications can be processed by the Platform Core automatically, whereas generic requests may require human intervention. When a notification is created by the Platform Core, the sender calls an operation exposed by the API to create the notification in the DPC; when a notification is created by another participant, the Platform Core must pull the notification from the DPC, which can be done via an operation exposed by the API. Concrete implementations of the pulling can vary, depending on the concrete architecture and requirements of the concrete platform. The sequence diagram below features an optional callback function through which the DPC could inform the Platform Core about a new notification, which could be employed in scenarios involving time-sensitive messages.

Checking participants: Any time a write operation involving participants (such as creating a notification from participant A to participant B), the DPC must ensure the participant is valid. Remember that the DPC is not responsible for maintaining the ecosystem participants: This is done by the Platform Core, where data providers and data consumers register to join the platform. For we do not want to add a dependency to Platform Core into the DPC, DPC components can get information about participants with the help of Participant Service. In the interaction of the figure above, Notification Service checks the validity of the participants by calling Participant Service. (More on the quality concept for adaptability can be found in Quality Concepts.

Asynchronous calls: Note that when a write operation is triggered by the Platform Core, the API component asynchronously calls the service layer. This ensures that the Platform Core, which is external to the DPC, is not impacted by the time performance of internal DPC operations.

Create incident notification

This interaction is depicted in two steps:

  1. Data consumer creates an incident report notification to data providers.
  2. Data provider is informed about the incident.

These steps are enumerated in the sequence diagram below.

sequence diagram 2

A note on recipients: In this example, the data consumer wants to notify all data providers about an incident involving a data leak of emails. When the data consumer creates the incident notification in the DPC, it does not inform who will receive the notification. The Notification Service obtains this information in the Grant Service and creates one incident notification for each affected data provider.

Create (and approve) grant request

This interaction is depicted in two steps:

  1. Data consumer creates a grant request.
  2. Data provider approves the grant request.

These steps are enumerated in the sequence diagram below.

sequence diagram 3

Data asset flow

Although the actual data asset flow happens in the Platform Core (and therefore is out of the scope of the DPC), the data asset flow is a relevant event in such an ecosystem and the DPC contributes to it by providing the Platform Core with information about the existence of valid grants for the requested data flow. The interaction is illustrated in the sequence diagram below, which assumes that the Data Consumer System gets data assets by accessing an operation exposed by the Platform Core.

sequence diagram 4

Logging the data flow: It is important to note that when the Grant Service is queried about the existence of grants for data flow, this action is logged. Assuming that the Platform Core verifies the grants each time before allowing a data asset to flow, these logs indicate that a data flow intent has been initiated within the platform. However, to maintain a record of the actual data flow, the DPC must provide an API that the Platform Core can use to notify the DPC when a data flow has taken place, as the Platform Core manages the data asset flow.


3. Architecture drivers 5. Quality concepts