Ga naar hoofdinhoud

Correctie van gevolgen

In dit document wordt beschreven hoe je correctie van gevolgen doet in een betrouwbaar register.

Als we spreken over correcties hebben we het over het corrigeren van fouten met terugwerkende kracht. Bijvoorbeeld: een persoon is verhuisd en achteraf blijkt het verkeerde adres geregistreerd te zijn. Het doel van een correcties in een betrouwbaar register is om dit op zo'n manier te corrigeren, dat na correctie duidelijk is op welk adres deze persoon daadwerkelijk woont vanaf de oorspronkelijke doorgave van verhuizing, én dat duidelijk is dat er in het register een correctie heeft plaatsgevonden en er een periode foutieve informatie geleverd is.

Op verschillende manieren kijken naar correcties

Vanuit de query-kant zijn er meerdere manieren om naar correctie te kijken:

  1. Je kan geïnteresseerd zijn in wat er daadwerkelijk gebeurd is.
    • Je wil simpelweg weten waar de persoon daadwerkelijk naartoe verhuisd is (en wanneer).
  2. Je kan geïnteresseerd zijn in wat er precies fout is gegaan.
    • Welke velden waren er incorrect en wanneer?
  3. Je kan geïnteresseerd zijn in wat er precies gecorrigeerd is.
    • Wat is de exacte mutatie van-naar geweest?

Ten behoeve van het eerste perspectief wil je de gevolgen 'zoals ze hadden moeten zijn' kunnen reconstrueren, zodat je precies weet wat er wanneer daadwerkelijk gebeurd is.

Het eerste perspectief laat dan misschien wel de gevolgen zien 'zoals ze hadden moeten zijn', maar daarmee verdwijnt het zicht op wat er nu eigenlijk gecorrigeerd is. Wat er fout was, is verdwenen en ook niet-gecorrigeerde gegevens zitten in deze collectie. Om te voorzien in het tweede en derde perspectief heb je de behoefte aan expliciteit: welke velden waren fout en met wat zijn deze hersteld?

Om in alle drie deze perspectieven te voorzien dien je aan de ene kant te vertellen welke oorspronkelijke gevolgen fout zijn en doorgehaald dienen te worden en welke gevolgen daarvoor in de plaats komen. Daarmee zijn de 'gevolgen zoals ze hadden moeten zijn' te reconstrueren. Daarnaast dien je expliciet te zijn in welke velden er gecorrigeerd zijn, en waarom.

Vormen van correctie

De aanpak voor correctie combineert specifieke commando's met een generieke achtervang. Dit zorgt voor zowel duidelijkheid als flexibiliteit.

Specifieke correctie

Idealiter wordt bij correctie een specifiek correctiecommando aangeroepen dat leidt tot een specifiek correctiegevolg. Dit correctiegevolg bevat:

  1. Een lijstje van welke gevolgen incorrect waren, en dus voor de geldigheidstijdlijn doorgehaald dienen te worden.
  2. Een specifieke duiding van wat er gecorrigeerd is en waarom.
  3. De gevolgen zoals ze hadden moeten zijn.

Deze correctiewerkwijze geeft je specificiteit: elk correctiecommando is expliciet en duidelijk in zijn intentie en duidelijkheid: zowel wat er fout was als hoe het had moeten zijn is vastgelegd. Op deze manier voorzie je in de behoefte die de drie hierboven genoemde perspectieven vragen.

Generieke correctie (de achtervang)

Correctie kent vele vormen, en het kan een uitdaging zijn om voor elke mogelijke correctieoperatie een commando en gevolg geïmplementeerd te hebben. Om toch flexibiliteit te kunnen bieden in het verwerken van correctie stellen wij dat er ook een generiek correctiecommando en gevolg nodig is. Dit generieke correctiegevolg moet nog steeds een lijstje van incorrecte gevolgen bevatten en beschrijven hoe de gevolgen dan wel hadden moeten zijn. Deze generieke variant kan alleen niet gestructureerd beschrijven wat er precies gecorrigeerd is. Maar deze vorm van correctie biedt je de flexibiliteit die nodig is om alle mogelijke fouten te kunnen corrigeren.

Correctie van correctie

Soms blijkt een eerdere correctie zelf ook niet juist te zijn. In dat geval wordt een tweede (of zelfs derde) correctie uitgevoerd. Bij een tweede correctie worden zowel de oorspronkelijke mutatie als de eerste correctie als onjuist gemarkeerd, en komt een nieuwe correctie voor in de plaats met het juiste gevolg. Door eerdere correctie in zijn geheel door te halen en de correctie in zijn geheel over te doen is het relatief eenvoudig om 'orde te scheppen' in een chaos die ontstaan kan zijn na fout op fout.

Zie dubbele correctie verhuizing voor een voorbeeld waarin een verhuizing eerst fout werd geregistreerd, daarna fout werd gecorrigeerd, en uiteindelijk alsnog correct wordt vastgelegd.

Varianten

Verandering van gegevens

Wanneer identificerende gegevens veranderen (bijvoorbeeld een naam of adres), is een specifiek correctiecommando vereist. Dit zorgt voor duidelijke registratie van wat er veranderd is en waarom.

Zie herstel van eigenaarschap voor een voorbeeld.

Verschuiving van tijdstippen

Wanneer tijdstippen verkeerd zijn geregistreerd (bijvoorbeeld een overdracht die een dag te laat is ingeschreven), moet de tijdlijn worden aangepast. Dit kan leiden tot nieuwe snapshots die tussen bestaande snapshots worden geplaatst.

Zie herstel van tijdstip overdracht en herstel van tijdstip ontstaan WOZ object voor voorbeelden.

Ontbrekende gevolgen achteraf toevoegen

Soms wordt een gevolg gemist dat tussen bestaande gevolgen had moeten staan. Via de combinatie van specifiek commando en subgevolgen kan deze ontbrekende stap achteraf worden toegevoegd.

Zie ontbrekende overdracht toegevoegd voor een voorbeeld.

Gevolgen ongedaan maken

Wanneer een gevolg onterecht is geregistreerd (bijvoorbeeld een emigratie die nooit heeft plaatsgevonden), kan dit gevolg ongedaan worden gemaakt via een correctie. De correctie markeert het onterechte gevolg als vervallen en corrigeert de situatie zoals deze had moeten zijn.

Zie onterechte emigratie voor een voorbeeld waarin een emigratie ongedaan wordt gemaakt en de verhuizing opnieuw wordt afgespeeld om de emigratie te bovenschrijven.