Bounded contexten in het WOZ-domein
De Wet waardering onroerende zaken, WOZ, verplicht gemeenten om voor elk onroerende zaak een waarde vast te stellen en die te communiceren naar eigenaren en gebruikers. Dat klinkt overzichtelijk, maar achter dat ene woord "WOZ" gaan meerdere, wezenlijk verschillende taken schuil: objectregistratie, waardebepaling, belastingheffing en formele besluitvorming. Die taken hebben elk hun eigen taal, hun eigen regels en hun eigen verantwoordelijkheden.
Een klassiek datamodel — zoals de landelijke voorziening LV-WOZ met zijn ca. 60 attributen op één grote tabel wellicht suggereert — behandelt al die taken als één geheel. Dat werkt voor uitwisseling, maar het is een slechte basis voor een register. Je mengt taal door elkaar, koppelt processen aan elkaar die los van elkaar zouden moeten kunnen bewegen, en maakt het moeilijk om de regels per taakgebied zuiver te houden.
In Uit betrouwbare bron kiezen we daarom voor bounded contexten: afgebakende deeldomeinen met elk hun eigen taal, hun eigen model en hun eigen verantwoordelijkheden. De bounded contexten communiceren met elkaar via expliciete grenzen.
De bounded contexten, van upstream naar downstream
WOZ Objectbeheer
Dit is het startpunt. WOZ Objectbeheer registreert en beheert de objecten die worden gewaardeerd: percelen, gebouwen en appartementen. Deze bounded context ontvangt notificaties van externe bronnen — de BRK (Basisregistratie Kadaster) en de BAG (Basisregistraties Adressen en Gebouwen) — en vertaalt die naar het eigen domeinmodel.
Belangrijk: BRK en BAG liggen buiten het domein van de (WOZ afdeling van de) gemeente. Ze spreken hun eigen taal. Een BRK-notificatie meldt een nieuwe tenaamstelling; het WOZ-domein spreekt van een belang. Die vertaling is geen detail — het is een bewuste keuze om de verantwoordelijkheid voor die vertaling op één plek te beleggen. Meer over die plek: zie Contextovergang hieronder.
Waardebepaling
Waardebepaling neemt WOZ-objecten als uitgangspunt en stelt de WOZ-waarde vast. De bounded context heeft zijn eigen taal: taxatiemodellen, referentieobjecten, waardepeildatum, marktwaarde. Die begrippen zijn niet relevant in WOZ Objectbeheer en ook niet in de heffing — ze horen hier.
De vastgestelde waarde is het resultaat waarmee de volgende bounded context aan de slag gaat.
Heffing OZB
Op basis van de vastgestelde WOZ-waarde berekent de bounded context Heffing OZB de verschuldigde onroerendezaakbelasting. Hier gelden belastingtarieven, belastingplichtige subjecten en vrijstellingen. De bounded context is afhankelijk van Waardebepaling, maar weet niets van taxatiemodellen of referentieobjecten — die horen in de vorige bounded context.
Beschikking en aanslag
Dit is de meest "naar buiten gerichte" bounded context: hier wordt het formele besluit genomen en gecommuniceerd richting de burger.
Let op een conceptueel verschil dat in de praktijk vaak wordt samengevoegd:
- De WOZ-beschikking is een bestuursrechtelijk besluit over de vastgestelde waarde. Dit is een besluit in de zin van de Algemene wet bestuursrecht, waartegen bezwaar en beroep openstaan.
- Het aanslagbiljet is een brief aan de burger met de belastingaanslag — en bevat in de praktijk vaak meerdere heffingen naast de OZB (denk aan rioolheffing of afvalstoffenheffing).
Beide worden in gemeentelijke systemen en in de beleving van de burger vaak als één document behandeld, maar conceptueel zijn het twee verschillende dingen met elk hun eigen rechtsgevolgen. Een goede implementatie maakt dat onderscheid expliciet.
Contextovergang
Een contextovergang is de plek waar taal, regels en verantwoordelijkheid overgaan van het ene domein naar het andere.
De meest in het oog springende contextovergang in dit domein is die tussen de externe bronnen (BRK, BAG) en WOZ Objectbeheer. BRK en BAG zijn landelijke basisregistraties; ze vallen buiten het domein van de gemeente. Hun notificaties zijn de aanleiding voor beheer, maar de gemeente vertaalt die naar haar eigen taal en regels.
Die vertaling is niet triviaal. De BRK registreert tenaamstellingen op een kadastraal object; de gemeente registreert belangen op een WOZ-object. De mapping tussen die begrippen is een domeinbeslissing die expliciet gemaakt moet worden — en die op één plek in de code thuishoort, niet verspreid over het systeem.
In de technische literatuur heet dit patroon een Anti-Corruption Layer. In dit project willen we graag benadrukken dat deze overgang van contexten belangrijk is en expliciet ontworpen dient te worden. Daarom gebruiken we de term contextovergang, die beter aansluit bij de vraag die eigenlijk wordt beantwoord: wie is verantwoordelijk voor welke taal, en waar vindt de overgang plaats?
Open vraag: hoort bezwaar bij een bounded context, of is het een eigen bounded context?
Bezwaar is een lastig geval. Een burger kan bezwaar maken tegen de vastgestelde WOZ-waarde, maar ook tegen de beschikking of de aanslag. De bezwaarprocedure heeft zijn eigen taal (bezwaarschrift, hoorzitting, heroverweging, uitspraak), zijn eigen regels (Awb) en zijn eigen tijdlijnen.
De vraag is: waar hoort bezwaar in het domeinmodel thuis?
Suggestie A: bezwaar als onderdeel van de betreffende bounded context
Bezwaar op de waardebepaling hoort bij Waardebepaling. Bezwaar op de beschikking hoort bij Beschikking en aanslag. Het voordeel: de bounded context die het besluit neemt, is ook verantwoordelijk voor de heroverweging van dat besluit. De bounded context blijft samenhangend.
Het nadeel: als de bezwaarprocedure op meerdere plekken wordt geïmplementeerd, loop je het risico dat de regels en de taal voor bezwaar inconsistent worden. Awb-termijnen, ontvangstbevestigingen, hoorzittingen — die zijn voor elk type bezwaar gelijk, ongeacht waar het bezwaar over gaat.
Suggestie B: bezwaar als eigen bounded context
Bezwaar als losstaande bounded context, met zijn eigen model en zijn eigen taal. De procedure, de termijnen en de communicatie rondom bezwaar zijn consistent en losstaand genoeg om apart te modelleren. De bounded context ontvangt een bezwaarschrift, voert de procedure uit en levert een uitspraak — ongeacht of het bezwaar over de waarde, de beschikking of de aanslag gaat.
Het voordeel: de bezwaarprocedure is één keer goed geïmplementeerd. Het nadeel: de bounded context heeft wel verbindingen nodig met de andere bounded contexten (om te weten waarover het bezwaar gaat en om de uitkomst terug te koppelen). Die verbindingen moeten expliciet worden gemaakt.
Welke keuze het beste past, hangt af van hoe de gemeente de bezwaarprocedure in de praktijk heeft ingericht en hoe groot de kans is dat die procedure per type bezwaar verschilt.