# 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: <br>

* 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;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dienstverleningsplatform.gitbook.io/platform-generieke-dienstverlening-public/best-practices/een-eigenaar-van-een-zaak.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
