# ADR-0001: Anti-Corruption Layer op elke registergrens - **Status:** accepted - **Datum:** 2026-06-13 - **Deciders:** Lab Circle (Build, Lead Link) - **Vervangt / vervangen door:** — ## Context De applicatie bevraagt meerdere registers: BRP, NHR/KVK, en ZGW via OpenZaak. Hun vocabulaires en schema's verschillen van elkaar en van ons domein. Zij veranderen ook zelf mee met de FDS-standaarden. Lekt registervocabulaire het domeinmodel in, dan werkt elke wijziging aan de registerzijde door in de bedrijfslogica. Het domein wordt dan een lappendeken van vreemde begrippen in plaats van ubiquitous language. ## Besluit Elk register is bereikbaar via een Anti-Corruption Layer: **één adapter per register**, die een **port** vervult die het domein definieert. Adapters doen alleen vertalen en velden versmallen. Zij bevatten geen bedrijfslogica. Het domein spreekt `Persoon` en `Organisatie`, en nooit veldnamen uit BRP of NHR. ## Gevolgen **Positief:** verloop in registers en FDS-standaarden blijft bij de adapter. Het domein blijft stabiel en testbaar. Adapters zijn onafhankelijk vervangbaar, en dat is precies wat de FSC-wissel uit ADR-0002 goedkoop maakt. Het patroon generaliseert naar een herbruikbare ACL-template per register, een Foundations-kandidaat. **Negatief en kosten:** één vertaalmap per register om te schrijven en te onderhouden, plus een extra indirectie die engineers moeten respecteren in plaats van omzeilen. **Vervolgwerk:** extraheer de ACL-template zodra de tweede adapter bestaat (slice 3). ## Overwogen alternatieven - **Registers direct aanroepen uit de applicatieservices** — afgewezen: dit koppelt bedrijfscode aan registerschema's en aan versies van FDS-standaarden. - **Eén generieke registeradapter** — afgewezen: registers verschillen genoeg dat een generieke abstractie zou gaan lekken of opzwellen. Adapters per register zijn duidelijker.