# Eén eigenaar van één Zaak

**Auteur**: Rutger Haagsma | **Status**: In voorbereiding

## Aanleiding

Het scheiden van de data van de componenten maakt het technisch mogelijk om meerdere componenten in de business logica-laag te laten werken met dezelfde data. Dat kan bijvoorbeeld op: \\

* Objecten in de Objecten API.&#x20;
* Objecten in een Domeinregistratie.&#x20;
* Klanten in OpenKlant.&#x20;
* Zaken in OpenZaak.&#x20;

## Constatering

Het komt voor dat meerdere componenten willen werken met dezelfde dataset. Mede daarvoor is de datalaag gescheiden van de business logica-laag. Zo kunnen meerdere componenten vanuit meerdere domeinen toegang krijgen tot Objecten en Klanten. Indien dit gebeurt via handelingsgedreven API's is de transationele integriteit gewaarborgd.&#x20;

Bij de afhandeling van Zaken door meer dan één component ontstaan problemen, indien meerdere componenten direct wijzingen aanbrengen in de datalaag zonder elkaar daarover te informeren. Voorbeeld:\
&#x20;

* Zaakafhandelcomponent A stelt voor Zaak I een factuurbedrag vast van EUR 100. Deze wordt vastgelegd in het zaakdetailobject, waarna een factuur wordt aangemaakt van EUR 100.&#x20;
* Klantcontact centrum component B wijzigt het factuurbedrag in Zaak I naar NIHIL, nadat daarover contact is geweest met de klant.&#x20;

Nu is de situatie ontstaan dat het proces van facturatie verder wordt afgewikkeld met de factuur van EUR 100, terwijl in het Zaakdetailobject een bedrag vastligt van NIHIL.  &#x20;

## Gevolg

Inconsistentie in de datalaag.&#x20;

## Principes

* **De Zaak wordt aangemaakt door het component dat de Zaak behandeld.**
* De Zaak wordt afgehandeld door 1 (zaakafhandel)component.&#x20;
* Indien er vanuit een ander component wijzigingen gevraagd zijn op de lopende zaak, vindt dit plaats via communicatie tussen componenten.&#x20;
* Elke component heeft - voor zover rechten dat toelaten - leesrechten op de (status van) de zaak in de datalaag.&#x20;
* **Als de Zaak wordt afgesloten, wordt het eigendom van de Zaak overgedragen aan informatiebeheer. Daarmee vervalt**&#x20;

## Tips

* **Het gebruik van CloudEvents dwingt decoupling af. Gebruik Events waar mogelijk.**&#x20;
