Overdracht eigendom en/of beperkt recht
Casusbeschrijving
Deze casus betreft het afhandelen van een StUF-bericht dat door het kadaster aangeboden wordt aan de gemeente. Het betreft in dit geval de Overdracht (eigendom en/of beperkt recht) van een Kadastraal Object. Om deze afhandeling voor deze casus behapbaar te houden zijn er enkele uitgangspunten gehanteerd :
- De anticorruption-layer wordt in deze beschrijving buiten beschouwing gelaten.
- Dit betreft de verkoop van Perceel met kadstrale identificatie “20990634170000” in Vlaardingen aan Joraraduy de DisqgCotivao en Aawvgp Jopie Cotivao.
- Er is aan dit perceel 1
WozObject
, met wozObjectNummer “12345678”, gekoppeld. - Het betreffende
WozObject
is al geregistreerd. - Er heeft 1 persoon een geldig
Belang
van het type eigenaar in ditWozObject
- Persoon Joraraduynog de DisqgCotivao is niet geregistreerd als
Partij
- Persoon Aawvgp Jopie Cotivao is geregistreerd als
Partij
StUF-bericht
Het binnenkomende StUF-bericht ziet er als volgt uit :
<Mutatie:aardStukdeel>
<Typen:code>606</Typen:code>
<Typen:waarde>Overdracht (eigendom en/of beperkt recht)</Typen:waarde>
</Mutatie:aardStukdeel>
<Mutatie:brkDatum>2024-10-30</Mutatie:brkDatum>
<Mutatie:volgnummerKadastraalObjectDatum>1</Mutatie:volgnummerKadastraalObjectDatum>
<Mutatie:ingeschrevenStuk>
<Mutatie:AanduidingTerInschrijvingAangebodenStuk>
<Mutatie:stuk>
<Stuk-ref:TerInschrijvingAangebodenStukRef domein="NL.IMKAD.TIAStuk">20241030000102</Stuk-ref:TerInschrijvingAangebodenStukRef>
</Mutatie:stuk>
<Mutatie:deelEnNummer>
<Stuk:deel>13709</Stuk:deel>
<Stuk:nummer>815</Stuk:nummer>
<Stuk:registercode>
<Typen:code>2</Typen:code>
<Typen:waarde>Hyp4</Typen:waarde>
</Stuk:registercode>
<Stuk:soortRegister>
<Typen:code>2</Typen:code>
<Typen:waarde>Onroerende Zaken</Typen:waarde>
</Stuk:soortRegister>
</Mutatie:deelEnNummer>
<Mutatie:tijdstipOndertekening>
<Typen:datum>2024-10-29</Typen:datum>
<Typen:tijd>11:05:00</Typen:tijd>
</Mutatie:tijdstipOndertekening>
</Mutatie:AanduidingTerInschrijvingAangebodenStuk>
</Mutatie:ingeschrevenStuk>
<Mutatie:kadastraalObject>
<Mutatie:AanduidingKadastraalObject>
<Mutatie:kadastraleAanduiding>
<OnroerendeZaak:akrKadastraleGemeenteCode>
<Typen:code>1135</Typen:code>
<Typen:waarde>VDG00</Typen:waarde>
</OnroerendeZaak:akrKadastraleGemeenteCode>
<OnroerendeZaak:kadastraleGemeente>
<Typen:code>1026</Typen:code>
<Typen:waarde>Vlaardingen</Typen:waarde>
</OnroerendeZaak:kadastraleGemeente>
<OnroerendeZaak:sectie>E</OnroerendeZaak:sectie>
<OnroerendeZaak:perceelnummer>1184</OnroerendeZaak:perceelnummer>
</Mutatie:kadastraleAanduiding>
<Mutatie:kadastraalObject>
<OnroerendeZaak-ref:PerceelRef domein="NL.IMKAD.KadastraalObject">20990634170000</OnroerendeZaak-ref:PerceelRef>
</Mutatie:kadastraalObject>
</Mutatie:AanduidingKadastraalObject>
</Mutatie:kadastraalObject>
...
Het volledige bericht is in te zien op Casus-3972-MUTPX02-VDG00E1184-20241030-1.xml.
Dit StUF-bericht wordt beschouwd als een informatierijke notificatie. De verwerking van een notificatie tot commando’s, effecten (verwerkingsstappen? , gevolgen?) en claims is uitgewerkt in onderstaand overzicht. (Klik op de image voor een vergrote weergave)

Van notificatiebericht naar commando
Van het binnenkomende notificatiebericht moet worden vastgesteld dat het een valide notificatiebericht zou kunnen zijn en geen onderdeel is van een DDOS-aanval of input bevat die onmogelijk verwerkbaar zou kunnen zijn. Deze stap is voor deze casus buiten scope. Als het bericht ontvangen is vinden de volgende bewerkingstappen plaats.
Notificatieverwerker ontvangt notificatiebericht voert de volgende stappen uit:
- Controleert op verwerkbaarheid
- Registreert ontvangstmoment, type en inhoud
- Valideert of bericht voldoet aan schema
- Valideert of het bericht semantisch interpreteerbaar is.
- Produceren en registreren van het commando.
- Zet het bericht om in een commando in een intern verwerkbaar formaat.
- Legt middels een context-annotatie de relatie tussen het geproduceerde commando en de notificatie.
- Verzendt commando naar commandoverwerker.
Noot: De Notificatieverwerker is niet geïmplementeerd in het prototype. Het omzetten van XML naar Json is niet nieuw en er is voor gekozen om deze stap over te slaan.
De binnenkomende informatierijke notificatie (StUF-bericht) is handmatig omgezet naar een Json-bestand. De key-value pairs en de structuur zijn gelijk aan die van het StUF-bericht. Dat heeft geleid tot het volgende command, alhoewel dit eigenlijk een tussenresultaat van de notificatieverwerking is.
Command verwerk_wijziging_tennaamstelling_BRK_context
command_str = """
{
"command": {
"commandId": "ce3cb94b-6400-4882-aecb-d664eb8394a2",
"commandType": "verwerk_wijziging_tennaamstelling_BRK_context"
},
"data": {
"aardStukdeel": {
"code": "606",
"waarde": "Overdracht (eigendom en/of beperkt recht)"
},
"ingeschrevenStuk": {
"tijdstipOndertekening": {
"datum": "2025-03-09",
"tijd": "11:05:00"
}
},
"kadastraalObject": {
"perceel": {
"identificatie": "20950118470000"
},
"zakelijkRecht": {
"aard": {
"code": "2",
"waarde": "Eigendom (recht van)"
}
},
"tenaamstelling": [
{
"aandeel": {
"teller": "1",
"noemer": "2"
},
"tenNameVan": {
"natuurlijkPersoon": {
"identificatie": "9896266146",
"woonlocatie": {
"identificatie": "207343",
"nummeraanduiding": {
"identificatie": "0622200000022350",
"huisnummer": "14",
"postcode": "3135KN",
"openbareRuimtenaam": "Merellaan",
"woonplaatsNaam": "Vlaardingen"
}
},
"betreft": {
"geregistreerdPersoon": {
"bsn": "000000012",
"aanduidingNaamgebruik": {
"code": "E",
"waarde": "Eigen geslachtsnaam"
},
"naam": {
"geslachtsnaam": "DisqgCotivao",
"voornamen": "Joraraduy",
"voorvoegselgeslachtsnaam": "de"
},
"indicatieGeheim": "true"
}
}
}
}
},
{
"aandeel": {
"teller": "1",
"noemer": "2"
},
"tenNameVan": {
"natuurlijkPersoon": {
"identificatie": "1474250665",
"woonlocatie": {
"nummeraanduiding": {
"identificatie": "",
"huisnummer": "149",
"postcode": "1841AQ",
"openbareRuimtenaam": "Ueöorii gg akutetec",
"woonplaatsNaam": "Teuooidut"
}
},
"betreft": {
"geregistreerdPersoon": {
"bsn": "000000024",
"aanduidingNaamgebruik": {
"code": "E",
"waarde": "Eigen geslachtsnaam"
},
"naam": {
"geslachtsnaam": "Cotivao",
"voornamen": "Aawvgp Jopie"
},
"indicatieGeheim": "false"
}
}
}
}
}
]
}
}
}
"""
Commando Registreer volledige overdracht eigendom BRK-context
wordt gepersisteerd door claims voor het objecttype “Commando” vast te leggen in het commando-register. (Klik op de image voor een vergrote weergave)

In deze weergave is er voor gekozen om de waarde van de rol content
in te korten, anders zou er geen goede weergave te tonen zijn. Daarnaast is het belangrijk te weten dat de waarde van de rol content
als Base64 is vastgelegd en die inhoud wordt hier onbewerkt getoond (en is dus niet interpreteerbaar door mensen)
Van commando in de BRK-context naar commando in de WOZ-context.
Het commando Registreer volledige overdracht eigendom BRK-context
wordt aangeboden aan het systeem. Op basis van de naam van het commando wordt de bijbehorende commandoverwerker (die dus een deel van de notificatieverwerking invult) aangeroepen. In dit geval is dat verwerk_wijziging_tennaamstelling_BRK_context
.
Deze commandoverwerker verzorgt de context transitie. Deze context-transitie zou eigenlijk in de notificatieverwerker plaats moeten vinden. Deze notificatieverwerkers zijn echter niet als aparte verwerkers geïmplementeerd.
De door het kadaster aangeboden gegevens zijn in context van de BRK (Basisregistratie Kadaster) opgesteld. Daar wordt bijvoorbeeld over percelen en tenaamstellingen gesproken. Van deze gegevens is het van belang dat deze getransformeerd worden naar de context van de WOZ. In dat geval wordt er over WOZObjecten en belangen gesproken. Het komt dus voor dat er andere semantische betekenis (in de WOZ-context) aan gegevens (die uit een BRK-context zijn aangeleverd) worden toegekend. Juist dit besluit wordt gedocumenteerd door alle transities te registreren.
Om dit te bewerkstelliggen vinden de volgende bewerkingsstappen plaats:
- Commandoverwerker
verwerk_wijziging_tennaamstelling_BRK_context
ontvangt en verwerkt het commandoRegistreer volledige overdracht eigendom BRK-context
Registreert ontvangstmoment, type en inhoud
Valideert of bericht voldoet aan schema
Interpreteert inhoud van commando
Registreer volledige overdracht eigendom BRK-context
zet de gegevens om van een BRK-context naar een WOZ-context.
controleert en verifieert of de aangeleverde objecten te vinden zijn in het WOZ-register. Per object wordt de vervolgactie bepaald.
controleert of er een koppeling tussen het aangeleverde
Perceel
en eenWozObject
voorkomt (Dus of er eenWozKoz
voorkomt.)In de primaire view wordt gecontroleerd of de personen voorkomen als partij. Deze controle vindt plaats door te zoeken in de partij-identificator of het bsn voorkomt (geregistreerdPersoon) danwel of de kadaster-identificatie (door kadaster geregistreerde personen) danwel of het vestigingsnummer voorkomt (organisaties).
Als een partij voorkomt wordt de bijbehorende partijId opgehaald en opgenomen in commando
Registreer volledige overdracht eigendom WOZ-context
, zo niet dan wordt er een lege property partijId opgenomen.Alle persoonsgegevens worden opgenomen in het commando.
Alle overige gegevens worden als volgt omgezet:
- tijdstipOndertekening –> overgenomen in geldigVanaf
- aandeel -> breuk wordt getransformeerd naar percentage
- NatuurlijkPersoon.identificatie –> overgenomen in partijIdentificator.objectId
- Overige eigenschappen van PartijIdentificator gevuld op basis van de context van het bericht
- GeregistreerdPersoon.bsn –> overgenomen in partijIdentificator.objectId
- Overige eigenschappen van PartijIdentificator gevuld op basis van de context van het bericht
- woonlocatie –> overgenomen in bezoekadres
- huisnummer en openbareRuimtenaam –> getransformeerd naar adresregel1
- postcode en woonplaats –> getransformeerd naar adresregel2
- geslachtsnaam –> getransformeerd naar achternaam (mede op basis van aanduidingNaamgebruik)
- voorvoegselgeslachtsnaam –> overgenomen in voorvoegselAchternaam
- voornamen –> overgenomen in voornaam
- voorletters –> afgeleid van de voornamen
- indicatieGeheim –> overgenomen in indicatieGeheimhouding
De transitieregels (de vastlegging van de context-transitie van BRK- naar WOZ-context) zien er als onderstaand uit. Er is van drie transities verslag gedaan hier. In een compleet verslag zullen er uiteraard veel meer transitieregels vastgelegd worden. (Klik op de image voor een vergrote weergave)
Commando
Registreer volledige overdracht eigendom WOZ-context
wordt vastgelegd.- Het inhoud van het commando wordt vastgelegd.
- De relatie naar commando
Registreer volledige overdracht eigendom BRK-context
wordt vastgelegd middels een context-annotatie op het commandoRegistreer volledige overdracht eigendom WOZ-context
.
Bij het Commando
Registreer volledige overdracht eigendom BRK-context
wordt vastgelegd dat verwerking plaats heeft gevonden.Het aangemaakte commando wordt vastgelegd en aangeboden aan de commandverwerker
verwerk_overdracht_eigendom_WOZ_context
.
{
"commandoId": "65d4cca1-c304-4adb-846a-627e6c6abf35",
"commandoType": "Volledige overdracht eigendom WozObject WOZ-context",
"geldigVanaf": "2024-10-29T11:05:00.000+00:00",
"wozObject": [
{
"wozObjectnummer": "12345678",
"belang": [
{
"zakelijkRechtEigenaar": {
"aardZakelijkRecht": {
"code": "2",
"waarde": "Eigendom (recht van)"
},
"aandeel": "50"
},
"partij": {
"partijId": "4bec755e-d9de-43fd-8c6b-cca75fd1a41d",
"persoon": {
"partijIdentificator": [
{
"id": "adb44aef-145b-406d-bb81-7dd9cd08597d",
"identificator": {
"objecttype": "NatuurlijkPersoon",
"soortObjectId": "identificatie",
"objectId": "9896266146",
"register": "Basisregistratie Kadaster"
}
},
{
"id": "78fe04d9-97b0-4a33-bfc3-bf7fe15f316b",
"identificator": {
"objecttype": "GeregistreerdPersoon",
"soortObjectId": "burgerservicenummer",
"objectId": "000000012",
"register": "Basisregistratie Kadaster"
}
}
],
"bezoekadres": {
"identificatie": "207343",
"nummeraanduidingId": "0622200000022350",
"adresregel1": "Merellaan 14",
"adresregel2": "3135KN Vlaardingen"
},
"naam": {
"achternaam": "DisqgCotivao",
"voornaam": "Joraraduy",
"voorletters": "J",
"voorvoegselAchternaam": "de"
},
"indicatieGeheimhouding": true
}
}
},
{
"zakelijkRechtEigenaar": {
"aardZakelijkRecht": {
"code": "2",
"waarde": "Eigendom (recht van)"
},
"aandeel": "50"
},
"partij": {
"partijId": "",
"persoon": {
"partijIdentificator": [
{
"id": "adb44aef-145b-406d-bb81-7dd9cd08597d",
"identificator": {
"objecttype": "NatuurlijkPersoon",
"soortObjectId": "identificatie",
"objectId": "1474250665",
"register": "Basisregistratie Kadaster"
}
},
{
"id": "78fe04d9-97b0-4a33-bfc3-bf7fe15f316b",
"identificator": {
"objecttype": "GeregistreerdPersoon",
"soortObjectId": "burgerservicenummer",
"objectId": "000000024",
"register": "Basisregistratie Kadaster"
}
}
],
"bezoekadres": {
"identificatie": "207343",
"nummeraanduidingId": "",
"huisnummer": "149",
"postcode": "1841AQ",
"openbareRuimtenaam": "Ueöorii gg akutetec",
"woonplaatsNaam": "Teuooidut"
},
"naam": {
"achternaam": "Cotivao",
"voornaam": "Aawvgp",
"voorletters": "A"
},
"indicatieGeheim": false
}
}
}
]
}
]
}
Commando Registreer volledige overdracht eigendom WOZ-context
wordt gepersisteerd door claims voor het objecttype “Commando” vast te leggen in het commando-register. (Klik op de image voor een vergrote weergave)

In deze weergave is er voor gekozen om de waarde van de rol content
in te korten, anders zou er geen goede weergave te tonen zijn. Daarnaast is het belangrijk te weten dat de waarde van de rol content
als Base64 is vastgelegd en die inhoud wordt hier onbewerkt getoond (en is dus niet interpreteerbaar door mensen)
Van commando in de WOZ-context naar effecten binnen het WOZ-register.
Comandoverwerker verwerk_overdracht_eigendom_WOZ_context
heeft als doel het commando dat in de WOZ-context is opgesteld te transformeren naar effecten (gevolgen?) die op het WOZ-register impact hebben.
Om deze effecten (gevolgen?) samen stellen vinden de volgende bewerkingsstappen plaats:
Commandverwerker
verwerk_wijziging_tennaamstelling_WOZ_context
ontvangt commandoRegistreer volledige overdracht eigendom WOZ-context
Commandoverwerker
verwerk_wijziging_tennaamstelling_WOZ_context
interpreteert inhoud van commandoRegistreer volledige overdracht eigendom WOZ-context
- Inhoud is (semantisch) niet interpreteerbaar -> registreert semantische error (“Commando is niet interpreteerbaar”)
- Inhoud is (semantisch) interpreteerbaar -> registreert resultaat (“is wel interpreteerbaar”) en verder naar productie commando in de WOZ-context.
Commandoverwerker
verwerk_wijziging_tennaamstelling_WOZ_context
maakt effecten aan die als verwerkingsstappen die aangeboden kunnen worden aan de register-engine.De volgende effecten (gevolgen) worden samengesteld op basis van het commando
Registreer volledige overdracht eigendom WOZ-context
.- Bestaande belangen worden opgezocht op basis van de aangeboden belangen en de geldigheid van deze belangen wordt beëindigd.
- Indien een Partij nog niet bekend is in het WOZ-Register wordt deze partij geregistreerd (inclusief Partij-identificator indien aangeboden).
- De nieuwe belangen worden geregistreerd.
De effecten (gevolgen) worden vastgelegd. - Per effect worden de relevante claims en annotaties geregistreerd. - De relatie naar commando
Registreer volledige overdracht eigendom WOZ-context
wordt vastgelegd.Bij het Commando
Registreer volledige overdracht eigendom WOZ-context
wordt vastgelegd dat verwerking plaats heeft gevonden.
Lineage van de verwerking
De lineage geeft de context weer tussen command, gevolgen en claims per objecttype. Om de lineage te kunnen weergeven is ieder claim (ook annotaties) voorzien van een context-annotatie die verwijst naar het commando of het gevolg dat geleid heeft tot het vastleggen van deze claim. De context wordt in dit overzicht gerepresenteerd door de lijnen tussen de blokjes. Alle individuele context_annotaties van een gegroepeerd object zijn dus geconsolideerd in 1 verbindings-lijn.
De lineage wordt aangemaakt door na het verwerken van het command tweemaal de call_lineage
-module aan te roepen. Deze aanroep is verwerkt in “test_woz_output”. Dit resulteert in de volgende twee weergaven van de lineage:
Lineage-roles
In deze weergave worden alleen de claimroles met hun waarden getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )
Lineage-state
In deze weergave worden de volledige claim-expressies in de “state”- variant getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )

Object-weergave
Dit is een weergave waarbij de claims zijn gegroepeerd op object-niveau content_claims. Daarbij worden ook alle annotaties die zijn geregistreerd getoond. Ook voor deze weergave geldt dat het image ter illustratie is en dat via de link een weergave op mermaid.live getoond kan worden waarbij ingezoomd kan worden. Zie de Readme van de poc-python repository hoe deze moet worden uitgevoerd. De output (content_claims) is vastgelegd in de poc-python/register_woz/content folder.
(Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )
Belangen voordat het commando is verwerkt

Beëindigde Belangen en nieuwe Belangen
Let hierbij op dat de reeds bestaande Belangen een validUntil
annotatie hebben om het einde van de geldigheid van deze Belangen te registreren.
Er is voor gekozen om niet alle claims individueel van een valdUntil
-annotatie te voorzien, maar alleen op de ExistentiePostulerende claim deze annotatie toe te voegen.

Nieuwe Partij n.a.v. overdracht
