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
De verwerking van een notificatie tot commando’s, effecten (verwerkingsstappen? , gevolgen?) en claims is uitgewerkt in onderstaand overzicht. Het ontvangen StUF-bericht betreft een informatierijke notificatie. (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 commandohandler.
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 werkende casus begint dus vanaf het commando.
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 door de notificatieverwerker aangeboden aan het systeem. Op basis van de naam van het commando wordt de bijbehorende commandohandler aangeroepen. In dit geval is dat verwerk_wijziging_tennaamstelling_BRK_context
.
Deze command-handler verzorgt de context transitie. 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:
- Commandohandler
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 commandhandler
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
}
}
}
]
}
]
}
Van commando in de WOZ-context naar effecten binnen het WOZ-register.
Comandohandler 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:
Commandhandler
verwerk_wijziging_tennaamstelling_WOZ_context
ontvangt commandoRegistreer volledige overdracht eigendom WOZ-context
Commandohandler
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.
CommandoHandler
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. - Het inhoud van ieder effect wordt vastgelegd. - De relatie naar commando
Registreer volledige overdracht eigendom WOZ-context
wordt vastgelegd.
Lineage van de verwerking
Het weergeven van de lineage kan worden wordt met de lineage -code gerealiseerd. Hiermee worden alle commands, gevolgen en claims in beeld gebracht die als gevolg van het uitvoeren van een command zijn uitgevoerd. (Zie de Readme van de poc-python repository hoe deze moet worden uitgevoerd).
Pre-condities: Het command-id van het command “verwerk_wijziging_tennaamstelling_BRK_context” (ce3cb94b-6400-4882-aecb-d664eb8394a2) moet opgenomen zijn bij de command-ids in regel 33 van lineage.py en de test test_woz moet succesvol uitgevoerd zijn.
Bij de lineage zijn er drie typen weergave beschikbaar:
- Alleen de rollen en hun waarden.
- Volledige claimexpressies in state-vorm –> Deze weergave is alleen mogelijk als vul_partijen is verwerkt met schema_variant=“structure_state.gql” (regel 27)
- Volledige claimexpressies in event-vorm –> Deze weergave is alleen mogelijk als vul_partijen is verwerkt met schema_variant=“structure_event.gql” (regel 27)
De lineage geeft de context weer tussen command, gevolgen en claims per objecttype. Het is niet mogelijk een leesbare image te presenteren dus het is mogelijk om via de link een weergave op mermaid.live te krijgen. Hier kan overgeschakeld worden naar een full-screen view en er kan ingezoomd worden.
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. )
Lineage-event
In deze weergave worden de volledige claim-expressies in de “event”- 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.