# minbzk/operatiebrp architecture

> Architecture diagram of the GitHub repository minbzk/operatiebrp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/minbzk/operatiebrp
- Repository: https://github.com/minbzk/operatiebrp

## Overview

Operatie BRP is a published codebase for the planned central Dutch population register. The clearest sampled user workflow is a SOAP bevraging: validate XML, parse and enrich the request, dispatch by service type, then return XML. The tree also shows parallel delivery, selection, bijhouding, beheer, and domain-model capabilities. Edges reflect the sampled implementations and explicit interfaces; unsampled subsystems are represented only where their paths are supported, so their internal wiring is not inferred.

Main entry points: [`02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java`](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java) (Bevraging endpoint), [`02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-vrijbericht/src/main/java/nl/bzk/brp/delivery/vrijbericht/VrijBerichtWebService.java`](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-vrijbericht/src/main/java/nl/bzk/brp/delivery/vrijbericht/VrijBerichtWebService.java) (Vrijbericht endpoint), [`02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-stuf/src/main/java/nl/bzk/brp/delivery/stuf/StufWebService.java`](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-stuf/src/main/java/nl/bzk/brp/delivery/stuf/StufWebService.java) (StUF endpoint), [`02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/java/nl/bzk/brp/bijhouding/ws/BerichtAuthenticatieInfoService.java`](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/java/nl/bzk/brp/bijhouding/ws/BerichtAuthenticatieInfoService.java) (Bijhouding OIN)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_delivery["Delivery services"]
  node_bevraging["Bevraging endpoint"]
  node_schema["XML validation"]
  node_bevragingparse["Bevraging parsing<br/>[java]"]
  node_bevragingdispatch["Dienst dispatch"]
  node_persoonsselectie["Persoon selecteren"]
  node_elementconversie["Elementconversie"]
  node_vrijbericht["Vrijbericht endpoint"]
  node_stuf["StUF endpoint"]
  node_bijhoudingauth["Bijhouding OIN"]
end

subgraph group_domain["BRP domain"]
  node_registry["BRP entities<br/>[Persoon.java]"]
  node_historie["Historie afleiding"]
end

subgraph group_selection["Selection"]
  node_selectietaak["Selectiefragment taak"]
  node_selectiefragment["Persoonfragment maken"]
end

subgraph group_beheer["Beheer and utilities"]
  node_beheerui["Selectiebeheer UI<br/>[app.routing.ts]"]
  node_querycost["Querykosten bewaken"]
  node_objectkeys["Object-sleutels"]
end

node_client(("Service client"))
node_postgres[("PostgreSQL")]

node_client -->|"sends XML"| node_bevraging
node_bevraging -->|"validates"| node_schema
node_bevraging -->|"parses request"| node_bevragingparse
node_bevraging -->|"dispatches by dienst"| node_bevragingdispatch
node_bevraging -->|"returns XML"| node_client
node_client -->|"sends request"| node_vrijbericht
node_vrijbericht -->|"validates"| node_schema
node_client -->|"sends request"| node_stuf
node_stuf -->|"validates"| node_schema
node_bijhoudingauth -->|"reads HTTP headers"| node_client
node_selectietaak --> node_selectiefragment
node_querycost -->|"checks query plan"| node_postgres

click node_bevraging "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java"
click node_bevragingparse "https://github.com/minbzk/operatiebrp/tree/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java"
click node_bevragingdispatch "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java"
click node_persoonsselectie "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/algemeen/BevragingSelecteerPersoonService.java"
click node_elementconversie "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/detailspersoon/ConverteerBevragingElementenService.java"
click node_vrijbericht "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-vrijbericht/src/main/java/nl/bzk/brp/delivery/vrijbericht/VrijBerichtWebService.java"
click node_stuf "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-stuf/src/main/java/nl/bzk/brp/delivery/stuf/StufWebService.java"
click node_bijhoudingauth "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/java/nl/bzk/brp/bijhouding/ws/BerichtAuthenticatieInfoService.java"
click node_registry "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/entity/Persoon.java"
click node_historie "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/alaag/ALaagAfleidingsUtil.java"
click node_selectietaak "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/schrijver/SelectieFragmentSchrijfTaakVerwerkerService.java"
click node_selectiefragment "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/verwerker/SelectieMaakFragmentBerichtService.java"
click node_beheerui "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/beheer-selectie/beheer-ng2/src/app/app.routing.ts"
click node_querycost "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/beheer/beheer-api/src/main/java/nl/bzk/brp/beheer/webapp/configuratie/jpa/CustomSimpleQuerycostJpaRepository.java"
click node_objectkeys "https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-services-objectsleutel/src/main/java/nl/bzk/algemeenbrp/services/objectsleutel/ObjectSleutelService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bevraging,node_schema,node_bevragingparse,node_bevragingdispatch,node_persoonsselectie,node_elementconversie,node_vrijbericht,node_stuf,node_bijhoudingauth,node_client toneBlue
class node_registry,node_historie,node_postgres toneAmber
class node_selectietaak,node_selectiefragment toneMint
class node_beheerui,node_querycost,node_objectkeys toneRose
```

## Components

### Delivery services

- [Bevraging endpoint](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java`
- **XML validation**
- [Bevraging parsing](https://github.com/minbzk/operatiebrp/tree/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java`
- [Dienst dispatch](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/src/main/java/nl/bzk/brp/delivery/bevraging/BevragingWebService.java`
- [Persoon selecteren](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/algemeen/BevragingSelecteerPersoonService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/algemeen/BevragingSelecteerPersoonService.java`
- [Elementconversie](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/detailspersoon/ConverteerBevragingElementenService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-bevraging/src/main/java/nl/bzk/brp/service/bevraging/detailspersoon/ConverteerBevragingElementenService.java`
- [Vrijbericht endpoint](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-vrijbericht/src/main/java/nl/bzk/brp/delivery/vrijbericht/VrijBerichtWebService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-vrijbericht/src/main/java/nl/bzk/brp/delivery/vrijbericht/VrijBerichtWebService.java`
- [StUF endpoint](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-stuf/src/main/java/nl/bzk/brp/delivery/stuf/StufWebService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-stuf/src/main/java/nl/bzk/brp/delivery/stuf/StufWebService.java`
- [Bijhouding OIN](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/java/nl/bzk/brp/bijhouding/ws/BerichtAuthenticatieInfoService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/java/nl/bzk/brp/bijhouding/ws/BerichtAuthenticatieInfoService.java`

### BRP domain

- [BRP entities](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/entity/Persoon.java): `02 Software/01 Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/entity/Persoon.java`
- [Historie afleiding](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/alaag/ALaagAfleidingsUtil.java): `02 Software/01 Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/alaag/ALaagAfleidingsUtil.java`

### Selection

- [Selectiefragment taak](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/schrijver/SelectieFragmentSchrijfTaakVerwerkerService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/schrijver/SelectieFragmentSchrijfTaakVerwerkerService.java`
- [Persoonfragment maken](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/verwerker/SelectieMaakFragmentBerichtService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-service/brp-service-selectie/src/main/java/nl/bzk/brp/service/selectie/verwerker/SelectieMaakFragmentBerichtService.java`

### Beheer and utilities

- [Selectiebeheer UI](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/beheer-selectie/beheer-ng2/src/app/app.routing.ts): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/beheer-selectie/beheer-ng2/src/app/app.routing.ts`
- [Querykosten bewaken](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/brp/beheer/beheer-api/src/main/java/nl/bzk/brp/beheer/webapp/configuratie/jpa/CustomSimpleQuerycostJpaRepository.java): `02 Software/01 Broncode/operatiebrp-code-145.3/brp/beheer/beheer-api/src/main/java/nl/bzk/brp/beheer/webapp/configuratie/jpa/CustomSimpleQuerycostJpaRepository.java`
- [Object-sleutels](https://github.com/minbzk/operatiebrp/blob/master/02%20Software/01%20Broncode/operatiebrp-code-145.3/algemeen/alg-services-objectsleutel/src/main/java/nl/bzk/algemeenbrp/services/objectsleutel/ObjectSleutelService.java): `02 Software/01 Broncode/operatiebrp-code-145.3/algemeen/alg-services-objectsleutel/src/main/java/nl/bzk/algemeenbrp/services/objectsleutel/ObjectSleutelService.java`

### Other components

- **Service client**
- **PostgreSQL**

## Connections

- Service client → Bevraging endpoint: sends XML
- Bevraging endpoint → XML validation: validates
- Bevraging endpoint → Bevraging parsing: parses request
- Bevraging endpoint → Dienst dispatch: dispatches by dienst
- Bevraging endpoint → Service client: returns XML
- Service client → Vrijbericht endpoint: sends request
- Vrijbericht endpoint → XML validation: validates
- Service client → StUF endpoint: sends request
- StUF endpoint → XML validation: validates
- Bijhouding OIN → Service client: reads HTTP headers
- Selectiefragment taak → Persoonfragment maken
- Querykosten bewaken → PostgreSQL: checks query plan
