# ADR002_SOURCE_DELIVERY_MODEL

**Status:** Accepted  
**Revision:** V4
WP
## 1. Ziel

Reconcilix verarbeitet Daten aus unterschiedlichen externen Systemen. Ziel dieses ADR ist die Einführung eines fachlichen Modells zur Beschreibung der Herkunft von Daten sowie zur Gruppierung einzelner `SourceValue` zu einer gemeinsamen `SourceDelivery`.

## 2. Problemstellung

Bisher wird jeder `SourceValue` unabhängig betrachtet.

Im praktischen Einsatz werden `SourceValue` jedoch als Bestandteil einer Datenlieferung verarbeitet. Gleichzeitig stammen diese Datenlieferungen aus unterschiedlichen Fachanwendungen und werden über unterschiedliche technische Übertragungswege an Reconcilix übergeben.

Ohne ein entsprechendes Domain Model können insbesondere folgende Fragen nicht beantwortet werden:

- Aus welchem `SourceSystem` stammt eine Datenlieferung?
- Über welchen `DeliveryChannel` wurde sie an Reconcilix übergeben?
- Welche `SourceValue` gehören zu derselben `SourceDelivery`?
- Welche Daten wurden gemeinsam verarbeitet?

## 3. Architekturentscheidung

Reconcilix erweitert das Domain Model um die Domain Objects

- `SourceSystem`
- `SourceDelivery`

und berücksichtigt konzeptionell einen optionalen

- `DeliveryChannel`.

Das Modell lautet:

```text
SourceSystem
    │
    └── SourceDelivery ─── DeliveryChannel [0..1]
            │
            └── SourceValue [1..*]
```

Dabei gelten folgende Regeln:

- Ein `SourceSystem` beschreibt das fachliche Ursprungssystem.
- Eine `SourceDelivery` gehört genau zu einem `SourceSystem`.
- Eine `SourceDelivery` kann optional genau einen `DeliveryChannel` referenzieren.
- Ein `DeliveryChannel` beschreibt den technischen Übertragungsweg einer `SourceDelivery`.
- Eine `SourceDelivery` gruppiert einen oder mehrere `SourceValue`.
- Jeder `SourceValue` gehört genau einer `SourceDelivery`.
- `SourceValue` bleibt ein eigenständiges Aggregate und referenziert genau eine `SourceDelivery`.
- `SourceSystem` und `SourceDelivery` besitzen jeweils eine stabile Identität. Die konkrete Ausgestaltung wird in DM001 und DM002 festgelegt.

## 4. Bedeutung der Domain Objects

### SourceSystem

`SourceSystem` beschreibt das fachliche Ursprungssystem einer Datenlieferung.

Beispiele:

- digiCULT.web
- MuseumsPlus
- Adlib

Ein `SourceSystem` beschreibt weder ein Dateiformat noch eine technische Schnittstelle.

### SourceDelivery

`SourceDelivery` repräsentiert eine konkrete Datenlieferung eines `SourceSystem`.

Sie gruppiert fachlich zusammengehörige `SourceValue` und bildet den organisatorischen Rahmen einer Verarbeitung.

### DeliveryChannel

`DeliveryChannel` beschreibt den technischen Übertragungsweg, über den eine `SourceDelivery` Reconcilix erreicht.

Beispiel:

```text
SourceSystem    = digiCULT.web
DeliveryChannel = OpenRefine Reconciliation API
```

Ein `DeliveryChannel` ist ausdrücklich **kein** `SourceSystem`.

Die konkrete Modellierung von `DeliveryChannel` (Identität, Attribute, Persistenz) ist nicht Bestandteil dieses ADR und wird bei Bedarf in DM001 und DM002 konkretisiert.

## 5. Auswirkungen auf das Domain Model

Die bestehenden Aggregate aus ADR001 bleiben unverändert.

`SourceSystem` und `SourceDelivery` ergänzen das Domain Model oberhalb von `SourceValue`.

`SourceDelivery` gruppiert `SourceValue`, übernimmt jedoch nicht deren vollständigen Lebenszyklus.

Es werden keine bestehenden Aggregate zusammengeführt.

## 6. Out of Scope

Nicht Bestandteil dieses ADR sind:

- konkrete Attribute der Domain Objects
- technische Persistenz
- Importprozesse
- Batch-Verarbeitung
- REST-Schnittstellen
- Versionierung
- Löschstrategien
- detaillierte Ausgestaltung von `DeliveryChannel`

## 7. Folgearbeiten

Dieses ADR bildet die Grundlage für:

- Erweiterung von DM001,
- Erweiterung von DM002,
- Persistenzmodell für `SourceSystem` und `SourceDelivery`,
- Repository-Unterstützung,
- zukünftige Import- und Batchprozesse,
- spätere Ausgestaltung von `DeliveryChannel`.

## 8. Revision History

| Revision | Status | Beschreibung |
|---|---|---|
| V1 | Draft | Initialer Entwurf |
| V2 ED | Draft | Präzisierung der Aggregate-Grenzen und Identitäten |
| V3 ED | Draft | DeliveryChannel konzeptionell ergänzt |
| V3 LA Review | Review | Drei Klarstellungen empfohlen |
| V4 | Accepted | Konsolidierte Fassung nach LA-Review |
