Ga naar hoofdinhoud

Gevolgenjournaal

Betekenis en doel

Het gevolgenjournaal is een volledige en onveranderlijke vastlegging van alle gevolgen die binnen een register werden geproduceerd, in de volgorde waarin die gevolgen ontstonden. De naam is ontleend aan het scheepsjournaal, waarin door nauwkeurige waarnemers volledig, chronologisch, zonder weglating én zonder oordeel wordt genoteerd wat is waargenomen.

Het gevolgenjournaal richt zich uitsluitend op het nauwkeurig vastleggen van wat er is gebeurd: observaties, besluiten en registraties. Afnemers en hun informatiebehoeften spelen daarin geen rol. Het principe is: negeer de afnemer. Dit uitgangspunt geldt zo sterk mogelijk, maar de gevolgen vormen wel de grondstof op basis waarvan de informatiebehoefte van afnemers - voor zover realistisch en redelijk - moet worden ingevuld.

Gevolgen leggen zonder oordeel vast wat er is waargenomen of besloten. Ze drukken daarmee de intentie van een observatie of besluit uit – niet het effect ervan op de toestand van het register. Gevolgen zijn temporeel atomair: ze gebeuren op één moment, en hebben (dus) geen duur. Geboortes, verhuizingen of huwelijken markeren geen toestand, maar beschrijven de verandering die van de ene toestand leidt naar de volgende. Gevolgen zijn daarmee een voorbeeld van wat transitional modeling of overgangsmodellering wordt genoemd.

Vraagstuk: gevolgen feitelijk of administratief formuleren?

Gevolgen kunnen we op twee manieren formuleren:

  1. Feitelijk, beschouwd vanuit de werkelijkheid waarop dat handelen betrekking heeft - ongeacht de wijze waarop het administratief is verwerkt of vastgelegd. Bijvoorbeeld "persoon p1 geboren".
  2. Administratief, beschouwd vanuit de administratieve context waarbinnen dat handelen heeft plaatsgevonden - dat wil zeggen: de registratie, vastlegging of formalisering van een feitelijk gevolg binnen een specifiek overheidsproces. Bijvoorbeeld: "geboorte persoon p1 geregistreerd".

Welke van de twee we kiezen heeft effect op de aandachtsgebieden geldigheid en zekerheid. Zie de toelichting onder de corresponderende koppen.

Aandachtsgebieden in het gevolgenjournaal

De eerder genoemde aandachtsgebieden hebben impact dan wel invulling in het gevolgenjournaal:

Terugmelden

Terugmelden gebeurt door afnemers op een projectie die onderdeel is van de leveringenstaat, en dus níet op een gevolg in het gevolgenjournaal.

Onderzoeken

Onderzoek(en) naar aanleiding van een terugmelding gebeuren buiten het register. Zo'n onderzoek zelf leidt dus niet tot nieuwe gevolgen in het gevolgenjournaal. Wel kan uit onderzoek blijken dat bij vermoedelijk onjuiste gevolgen binnen het register indicaties van verminderde zekerheid over de juistheid moeten worden aangebracht.

Deze indicaties kunnen in eerste instantie aangebracht worden op gegevens in de leveringenstaat (waar een terugmelding op gedaan is), maar kunnen (bijvoorbeeld lopende het onderzoek) verplaatst worden naar indicaties op gevolgen (die dientengevolge alle leveringenstaten raken waar het geïndiceerde gegeven gebruikt wordt). Een dergelijke indicatie kan ook als basis dienen van correctie.

Corrigeren

Het gevolgenjournaal is append only: gevolgen worden alleen toegevoegd, nooit overschreven of verwijderd. Correctie betekent dus altijd het toevoegen van een nieuw gevolg dat een of meerdere eerdere gevolgen ongedaan maakt of herziet.

Bij of na correctie zijn er twee fundamentele vragen aan de orde:

  1. Hoe had het moeten zijn; of: Hoe had mijn gevolgenjournaal moeten zijn?
  2. Wat is er (precies) gecorrigeerd en waarom?

Om beide vragen te kunnen beantwoorden dient een correctiegevolg idealiter dan ook 3 dingen te bevatten:

  1. Welke gevolgen worden gecorrigeerd?
  2. Hoe had de gevolgentijdlijn eruit moeten zien voor deze periode.
  3. De exacte hersteloperatie en context

Bij voorkeur gebeurt dat in de taal van de bounded context; een gevolg als "emigratie p1 herroepen" maakt de bedoeling direct duidelijk. Deze aanpak heeft echter een praktische beperking: het is niet goed mogelijk om vooraf alle situaties te voorzien waarin correctie nodig kan zijn. Bovendien vereist ieder domeinspecifiek correctiegevolg dat de bijbehorende bedrijfsregels worden bepaald en geconfigureerd, wat bij een laag correctievolume onevenredig veel ontwerplast met zich meebrengt.

Daarom kan het soms nodig zijn generieke correctiegevolgen te introduceren die domeingevolgen 'passeren' en direct inwerken op de begrippen uit de leveringenstand, zoals bijvoorbeeld "verblijfsadres p1 gecorrigeerd". Belangrijk is dat zulke correcties altijd in het gevolgenjournaal worden opgenomen en transactioneel worden afgehandeld, zodat het journaal consistent blijft.

In het uitzonderlijke geval dat niet meer te reconstrueren is hoe een bepaalde toestand is ontstaan, maar wel bekend is hoe die eruit zou moeten zien, kan het nodig zijn op basis daarvan een nieuwe historie op te bouwen. Dit soort ingrijpende correcties moet zoveel mogelijk beperkt blijven omdat daarop nauwelijks (al dan niet geautomatiseerde) integriteitscontrole mogelijk is en op basis daarvan moeilijk geleverd kan worden.

Verwerkingsverantwoording

Op basis van het onderscheid tussen proces en resultaat willen we het register niet de wereld van procesuitvoering in trekken. Maar we willen afnemers wel in staat stellen door het register geleverde gegevens op onder andere betekenis, kwaliteit en juistheid te beoordelen. Verwerkingsverantwoording is daardoor binnen het gevolgenjournaal een belangrijk aandachtsgebied.

Aanleiding

De aanleiding beschrijft wat de productie van een gevolg in gang heeft gezet. In veel gevallen is dat een eerder in de keten geproduceerd gevolg. Of meer precies: een levering, afkomstig uit een voorliggende bounded context, die als signaal is ontvangen en binnen de 'eigen' bounded context aanleiding gaf tot handelen. Als zo'n voorliggend gevolg ontbreekt, is de aanleiding gelegen buiten de overheidscontext, bijvoorbeeld in een handeling of melding van een burger of bedrijf.

Vragen bij het vastleggen van aanleiding in het gevolgenjournaal

  1. Wat slaan we op? Tenminste een verwijzing naar het voorliggende gevolg of de externe aanleiding, inclusief de partij die verantwoordelijk was voor productie van die aanleiding. Omdat hierbij grenzen tussen bounded contexten worden overgestoken, moeten contextoverstijgende afspraken worden gemaakt over vorm, inhoud en uitwisseling van deze verwijzing.
  2. Wat doen we met bijlagen? Aanleidingen kunnen gepaard gaan met ondersteunende documenten, zoals een aanvraagformulier of een bijgevoegd bewijs. Deze bijlagen zijn niet altijd op een volledig gevolg van toepassing. Een te complexe koppelstructuur tussen bijlagen en gegevens is moeilijk te begrijpen en te onderhouden. De vraag is of zulke complexiteit altijd noodzakelijk is, of dat een eenvoudiger benadering (aparte documentopslag waarnaar voor aanleiding verwezen kan worden) volstaat.

Legitimering

Voor ieder gevolg wordt een zo gedetailleerd mogelijke verwijzing naar het wettelijk of beleidskader dat diende als grondslag voor de productie daarvan vastgelegd.

Verklaring

Voor ieder gevolg wordt vastgelegd hoe het legitimerende kader in de betreffende situatie is toegepast. Deze verklaring omvat ten minste:

  • een verwijzing naar de gevolgde procedures of - bij geautomatiseerde verwerking - de versie van het gebruikte algoritme;
  • de ambtenaar of organisatieafdeling die verantwoordelijk was voor de productie van het gevolg, en
  • indien van toepassing: de motivatie waarom op basis van discretionaire bevoegdheid van een norm is afgeweken.

Registratiecontext

Voor ieder gevolg wordt het moment van vastlegging in het gevolgenjournaal vastgelegd.

Geldigheid

Als we kijken naar temporele concepten die bij gegevensopslag een rol spelen, kunnen we in het gevolg een specifieke vorm van een event herkennen. Zo'n event wordt beschreven als een ogenblikkelijk feit, ofwel iets dat in één moment plaatsvindt.

Dit temporeel atomaire karakter maakt dat het gevolg geen (geldigheids)duur heeft. In plaats daarvan kent het één door het domein bepaald moment, dat samenvalt met het moment waarop het gevolg in de echte wereld een verandering tot stand bracht. Dit moment noemen we "gebeurd op".

In veel gevallen (maar niet alle, zie toelichting hieronder) kan van het gebeurd op-moment bij een gevolg een geldig vanaf-moment in een projectie worden afgeleid. Ervan uitgaande dat we het moment van geboorte beschouwen als startpunt voor een geldige inschrijving, kan bijvoorbeeld van het gevolg persoon p1 geboren | gebeurd op 18-07-1985 de volgende projectie worden afgeleid:

persoongeldig vanaf
p118-07-1985

Impact van feitelijk of administratief formuleren op aandachtsgebied geldigheid

  • Bij feitelijke formulering is het 'gebeurd op'-moment een logisch startpunt voor geldigheidsperiode(s) in leveringen, terwijl
  • bij administratieve forumlering weliswaar sprake blijft van een domeindatum, maar het 'gebeurd op'-moment meer neigt naar het karakter van een 'geregistreerd op'-moment.

Zekerheid

Of bij een gevolg twijfel over de feitelijke juistheid mogelijk of zinvol is, hangt af van de wijze waarop het gevolg is geformuleerd (zie toelichting hieronder). Voor zover dit wel mogelijk en zinvol is, maakt het register het mogelijk een zekerheidsindicatie vast te leggen, en biedt het gebruikers de mogelijkheid om hierop te reageren: door een regel situationeel te overrulen, door de verwerkingsengine onzekerheid te laten signaleren, of door bedrijfsregels expliciet te laten omgaan met onzekerheid.

Impact van feitelijk of administratief formuleren op aandachtsgebied zekerheid

  • Bij feitelijke formulering beschrijft het gevolg iets wat buiten de context van het register is gebeurd. Deze gebeurtenis kan feitelijk waar, maar ook feitelijk onwaar blijken te zijn. Als we gevolgen feitelijk modelleren, lijkt het dus nodig om aan de juistheid van een gevolg te kunnen twijfelen door daaraan zekerheidskenmerken te verbinden, terwijl
  • bij administratieve formulering het gevolg gaat over iets dat door registratie van gevolg zelf feitelijk waar wordt - de geboorteregistratie ontstaat immers door registratie van het bijbehorende gevolg. In dit geval ontstaat de feitelijke juistheid door registratie van het gevolg zelf, en lijkt het niet zinvol om aan de juistheid van een gevolg te kunnen twijfelen.

Onttrekking

Iedere onttrekking begint in een gevolg, tenzij de fout uitsluitend zat in de wijze waarop leveringen uit het gevolgenjournaal werden afgeleid (zie leveringenstaat).

Los van de mate waarin een onttrekkingsgevolg aansluit bij de taal van de bounded context (zie corrigeren) beschrijft zo'n gevolg altijd de onttrekkingscontext. Die maakt achteraf reconstrueerbaar waarom en wanneer een gevolg niet langer beschikbaar is en omvat tenminste:

  • een verwijzing naar het onjuiste, te onttrekken gevolg;
  • het tijdstip waarop tot onttrekking is besloten ('gebeurd op');
  • de reden voor de onttrekking, en
  • een verwijzing naar het onderzoeksdossier waarin meer informatie over de aanleiding voor onttrekking terug te vinden is.

Als een onttrekking betrekking heeft op identiteitdragende kenmerken van een gevolg of levering, wordt het volledige gevolg of de volledige levering onttrokken. Bij niet-identiteitshoudende kenmerken kan onttrekking beperkt blijven tot die kenmerken, mits de implementatie dit technisch toelaat.

Ontwerpafwegingen voor het gevolgenjournaal

In het ontwerpen van gevolgen in het gevolgenjournaal zijn een aantal afwegingen van belang. Welke het zwaarst wegen, verschilt per domein. De onderstaande afwegingen bieden houvast bij het maken van weloverwogen keuzes.

  • Intentie: Gevolgen dienen de intentie van de observatie, het besluit of de vastlegging uit te drukken
  • Negeer de afnemer als het gaat om vorm en omvang: Het domein bepaalt onafhankelijk van afnemerbehoeften de vorm en omvang van gevolgen die binnen de bounded context worden geproduceerd
  • Respecteer de afnemer als het gaat om inhoud: Alle gevolgen die een bounded context produceert samen, moeten voldoende informatie leveren om (redelijke en realistische) afnemersbehoefte aan informatie vanuit de bounded context in te kunnen vullen
  • Herkenbaar voor de business: Gevolgen worden gedefinieerd op basis van functionele (business)behoefte. Dit betekent dat ieder gevolg in het gevolgenjournaal een relatie heeft met een besluit of andere betekenisvolle gebeurtenis uit de business
  • Hergebruik: Gevolgen kunnen als bouwsteen worden hergebruikt binnen omvangrijkere gevolgen, zonder dat ze daarmee hun zelfstandig bestaansrecht verliezen

Vraagstuk: gevolgen feitelijk of administratief formuleren?

Om de intentie zo scherp mogelijk uit te drukken, stellen we de volgende richting voor:

  1. Administratief voor fysieke waarnemingen: Gevolgen van fysieke waarnemingen of fysieke gebeurtenissen worden vanuit een register als administratieve gevolgen verwoord. Een gevolg "geboorte persoon p1 geregistreerd" prevaleren we boven "persoon p1 geboren". De persoon is namelijk ook geboren als dat niet in de registratie als gevolg is vastgelegd
  2. Feitelijk voor registratieve beslissingen: Gevolgen die inherent, vaak juridische, consequenties hebben doordát deze zijn vastgelegd, kunnen als feitelijk worden uitgedrukt. Met "parkeervergunning pg1 vastgesteld" vastgelegd gevolg, ís deze parkeervergunning vastgesteld / besloten. Uiteraard kan een "bewijs voor parkeervergunning uitgegeven" volgen als een fysiek bewijs is uitgegeven

Feitelijk versus administratief

Bij het modelleren van gevolgen kunnen onder andere de volgende constructen worden ingezet:

  • Naamgeving van de gevolgen drukt zoveel mogelijk de intentie en context uit, bijvoorbeeld in GeboorteGeregistreerd, NaamGewijzigdNaarAanleidingVanAdoptie, WozObjectOntstaatNaarAanleidingVanPerceelsplitsing

  • Typering als attribuut van een gevolg kan additioneel gebruikt worden, bijvoorbeeld door een enumeratie in het veld typeGevolg op te nemen

  • Hergebruik/decompositie/interfacing: een gevolg kan kenbaar maken dat het een bepaald type wijziging omvat, zodat afnemers daarop kunnen aansluiten zonder de specifieke aanleiding te hoeven kennen. Een verhuizing en een adoptie leiden allebei tot een adreswijziging - door beide gevolgen een gemeenschappelijk "adreswijziging"-contract te laten vervullen, kunnen afnemers die alleen de adreswijziging nodig hebben op beide reageren.

    In object-georiënteerde talen wordt dit gerealiseerd via interface of abstract class (inheritance en composition); in functionele talen via een trait. Het concept is ook herkenbaar in UML.

Voorbeeld – adoptie in de BRP

Een adoptie brengt doorgaans drie wijzigingen tegelijk met zich mee: een naamswijziging, een adreswijziging en een wijziging van gezag. Elk van die drie kan echter ook zelfstandig voorkomen – door een eigen naamskeuze, een verhuizing, of een rechterlijke uitspraak die niets met adoptie te maken heeft.

Door gevolgen als AdoptieGeregistreerdNaRechterlijkeBeschikking en VerhuizingGeregistreerd allebei de interface AdresGewijzigd te laten implementeren, kunnen afnemers die alleen de adreswijziging nodig hebben op beide reageren – zonder de onderliggende aanleiding te hoeven kennen. In het BRP-stelsel speelt ook een autorisatiereden mee: afnemers zonder adoptie-autorisatie mogen PersoonGeadopteerd niet ontvangen, maar wel AdresGewijzigd.

interface NaamGewijzigd {
val nieuweGeslachtsnaam: String
}

interface AdresGewijzigd {
val nieuwAdres: Adres
}

interface GezagGewijzigd {
val nieuweOuders: List<Persoon>
}

data class AdoptieGeregistreerdNaRechterlijkeBeschikking(
override val nieuweGeslachtsnaam: String,
override val nieuwAdres: Adres,
override val nieuweOuders: List<Persoon>,
// ...
) : NaamGewijzigd, AdresGewijzigd, GezagGewijzigd

data class VerhuizingGeregistreerd(
override val nieuwAdres: Adres,
// ...
) : AdresGewijzigd