Een steekproef van vijfentwintig posten zegt iets over die vijfentwintig posten. Het bronsysteem heeft intussen van elke order, factuur of zaak vastgelegd wie wat deed, wanneer en in welke volgorde. DIVE, de process-mining-app van Audirium, reconstrueert uit die vastlegging hoe het proces werkelijk liep, legt dat naast het ontwerp en toetst de volledige populatie op acht controles. Het resultaat is een auditbevinding met het bewijsspoor eraan vast, en pas in tweede instantie een procesplaat.
In het kort
Wat DIVE is, in drie regels.
DIVE is process mining voor internal audit. U laadt een export uit een bronsysteem (ERP, zaaksysteem, servicedesk) en DIVE reconstrueert daaruit welke stappen er zijn gezet, in welke volgorde, hoe lang ze duurden en door wie. Tot zover doet elk process-mining-platform hetzelfde.
Het verschil zit in de laatste stap. DIVE legt de gereconstrueerde praktijk naast het proces zoals het is getekend, inclusief de controls die daar per stap aan hangen, en maakt van het verschil een toets die aan een derde is uit te leggen. De uitkomst luidt dan: deze stap draagt de control Kredietcheck en is in 591 van de 10.000 gevallen overgeslagen. Met de populatie, de dekking en de gebruikte regel erbij, zodat een reviewer het kan narekenen.
Wat er op het bureau van de auditor landt
Vijf plekken waar de deelwaarneming tekortschiet, en één waar de volledige populatie u juist op het verkeerde been zet.
De steekproef mist precies de uitzondering
Een control die in 591 van de 10.000 gevallen is omzeild, komt in een trekking van veertig dossiers meestal niet boven. Een bankrekening die kort vóór een betaling wijzigt al helemaal niet: dat patroon is met een deelwaarneming vrijwel niet te vinden, en op de volledige populatie een kwestie van seconden.
Getoetst op rechten, niet op wat er gebeurde
Een rechtenanalyse laat zien wie mág. Zij ziet niet wie het via een noodaccount, rolstapeling of vervanging feitelijk deed. Juist die routes zijn de interessante.
Vorige maand is geen bewijs voor deze maand
Wordt de mandaatgrens tussentijds aangepast, dan schuift de uitkomst van maart stilzwijgend mee naar de nieuwe definitie. Zonder versiebeheer op de toets zelf is niet meer te zeggen waartegen er toen is getoetst.
Het event-log moet eerst worden opgediept
Drie velden zijn verplicht: een case-id, een activiteit en een tijdstip mét tijd. Een grootboekexport met alleen een boekstukdatum is niet genoeg, want dan is de volgorde binnen een dag onbepaald. Wat elk Nederlands bronsysteem wel en niet levert, staat verderop.
Een administratie met gaten is zelf een bevinding
Ontbrekende case-id's, onleesbare tijdstempels, duplicaten, batchboekingen, zaken met één enkele stap. Een export waarin 8% van de regels geen case-id heeft, verdient een eigen zin in het rapport, niet een stilzwijgende correctie.
Niet elke afwijking is een fout
Een offerte die getekend teruggaat ter aanpassing is herstelwerk, geen omzeilde control. Raakt een signaal meer dan 80% van de zaken, dan is het de norm en geen afwijking. Maakt de tool dat onderscheid niet, dan levert een toets op de volledige populatie ook de volledige populatie aan ruis op.
Dat laatste is de reden dat een grotere dekking niet vanzelf meer zekerheid oplevert. Een lijst met vierduizend treffers is geen werkplan, en een treffer die een reviewer niet kan navertellen is in een dossier minder waard dan een steekproef die dat wel kan. De vraag is dus tweeledig: hoe u van vijfentwintig naar alles komt, en hoe u daarna van alles terug naar de twintig zaken komt die er werkelijk toe doen, zonder dat er onderweg iets uit het dossier verdwijnt.
Het principe: de toets als vastgelegd gegeven
Een verkennende analyse is een knop: u wijst een kolom aan, u krijgt een uitkomst, en na het sluiten van het scherm is er niets bewaard. Voor een verkenning is dat precies goed. Voor de vraag welke controls heb ik dit kwartaal op de volledige populatie getoetst, en met welke grenswaarde is het te weinig.
Een controletest in DIVE is daarom een record: een naam, een soort, de parameters, een verwijzing naar de control in het normenkader, een gewicht van 1 tot 5, en een versienummer. Elke uitvoering laat een testrun achter met de populatieomvang, hoeveel daarvan te beoordelen was, de dekking, de vingerafdruk van de bronkolommen en een bevroren kopie van de definitie zoals die op dat moment gold. Past u een grenswaarde aan, dan telt de versie op en blijft de uitkomst van maart aan de definitie van maart hangen. Verandert u alleen de naam, dan telt hij niet op, want dat verschuift de uitkomst niet.
Populatie en dekking zijn niet hetzelfde. Naast de populatie staat overal het deel van de zaken waarover de toets een oordeel kón vormen. Bij een drempeltoets valt een zaak zonder leesbaar bedrag daarbuiten, bij functiescheiding een zaak zonder vastgelegde uitvoerder. Dat verschil stil weglaten zou de dekking mooier maken dan ze is, en juist dat getal is waarmee "wij hebben alles getoetst" staat of valt.
Hetzelfde principe loopt door de rest van de app. Een treffer is een indicator en geen bevinding; DIVE dwingt de volgorde af: eerst bevestigen tegen het brondocument of afvoeren als foutpositief, pas daarna kan er een bevinding van worden gemaakt. Een verkenning (wat gebeurt er met de uitkomst als de norm ergens anders lag) krijgt een eigen kaart met een gestreepte rand en het merk verkenning, geen uitgevoerde toets, legt geen uitvoering vast en zet geen enkele treffer in de werkvoorraad. In een auditdossier is dat het verschil tussen een bevinding en een gedachte-experiment.
Het model eronder
Zes lagen. Elke laag rekent op de vorige, en niets wordt achteraf overgetypt.
De rekenmotor is DuckDB met de event-log als Parquet-bestand; de rekenkern is zelf gebouwd, zonder externe process-mining-bibliotheek. Een procesgraaf over vijf miljoen events kost ongeveer een derde seconde. Data staat per organisatie gescheiden, zoals bij elke app in de suite.
Wat de auditor eruit haalt
Wat u in het rapport zet, en wat u erbij moet zeggen.
De toets die het verschil laat zien
Stamgegeven vóór betaling vindt een stamgegeven dat binnen N dagen vóór een betaling wijzigt, in dezelfde zaak. Daarnaast: functiescheiding, duplicaten op een of meer attributen, een bedrag boven de mandaatgrens zonder fiatteringsstap, boekingen buiten kantooruren of na de periodeafsluiting, ontbrekende nummers in een reeks, de aansluiting op een controletotaal, en Benford, hier als uitzonderingen boven de 95%-grens en nadrukkelijk als attentiesignaal, niet als bewijs.
Een score die u kunt navertellen
Elke uitzondering krijgt 0 tot 100 punten uit vier componenten: financieel belang (tot 40), mate van afwijking binnen de eigen soort (tot 25), herhaling bij dezelfde betrokkene (tot 15) en het gewicht van de control (tot 20). Elke component staat in woorden bij de treffer, want in het wederhoor moet u kunnen uitleggen waarom deze uitzondering boven die andere staat.
Control omzeild, in aantal en in beeld
Tegen het diagram meldt DIVE drie soorten afwijking: een overgeslagen stap die een control draagt (met naam, type en eigenaar van die control), een overgang die in de data voorkomt maar niet is getekend, en een getekende overgang die in de data niet voorkomt. Het ruimtelijke beeld legt de tekening plat en hangt de werkelijke paden erboven: een boog die over een poort heen gaat, is letterlijk een omzeilde control.
Niet gemeten is niet nul
Twee exports naast elkaar, met eerst een vergelijkbaarheidstoets: overlappende perioden, een fors verschillende lengte, een gat ertussen, andere bronkolommen. Een functiescheidingsregel die in de tweede ronde niet is teruggezet blijft leeg, met de aanwijzing om het recept toe te passen. Onderaan het verloop over alle ronden, want twee punten zijn een verschil en pas een lijn laat zien of een verbetering standhoudt.
Wat als de norm anders lag
De gevoeligheidsanalyse rekent dezelfde toets door op een reeks grenzen rond de vastgestelde norm, zodat u ziet of een bevinding aan de norm hangt of daar los van staat. De droogloop laat een nieuwe definitie eerst zien wat hij oplevert, inclusief hoeveel van die treffers het team al eerder als geen bevinding beoordeelde. Steekproefprecisie zet attribute sampling en monetary unit sampling naast elkaar, met de scheefheid van de populatie als reden voor het advies. Alle vier dragen het merk verkenning en tellen niet mee als uitgevoerde toets.
Een steekproef die een reviewer kan herhalen
Ook op een volledige populatie wilt u een aantal gevallen in het bronsysteem nakijken. DIVE trekt aselect of monetair, uit alle zaken of uit de treffers, en legt de seed vast in het dossier. Met dezelfde seed, populatie en methode krijgt een reviewer exact dezelfde zaken terug.
De auditcomité-samenvatting levert het onderzoek in de vorm waarin het op een vergaderagenda kan: wat is onderzocht, wat is aangetroffen, waarop is getoetst en waarop niet, wat eraan gebeurt, en het verschil met de vorige ronde. Elke zin volgt uit een getal en een vaste drempel; er gaat geen data naar een taalmodel, ook niet om er mooiere zinnen van te maken. Het voorbehoud is een eigen sectie en geen voetnoot: analyses die niet gedraaid zijn, een dekking onder de honderd procent (met de zin dat die zaken ongetoetst zijn gebleven), een actieve afbakening, records die bij de import afvielen.
Wat de bronsystemen leveren
Elke CSV of Excel werkt, maar niet elk systeem legt genoeg vast voor process mining. De stand van zaken voor Nederlandse praktijksystemen, uit de documentatie:
| Systeem | Bruikbaar | Toelichting |
|---|---|---|
| Gemeentelijke zaaksystemen (ZGW) | ja | De VNG-standaard kent een audittrail met gebruiker, actie en tijdstip per zaak. Sommige installaties draaien nog op de oudere ZDS-standaard. |
| Dynamics 365 Business Central | ja | Audit-systeemvelden op elke tabel plus de Change Log met gebruiker, datum en tijd. |
| TOPdesk | ja | Progress trail per incident of change. |
| AFAS Profit | waarschijnlijk | GetConnectors zijn flexibel genoeg; of workflowstappen tijd én medewerker bevatten, is per omgeving te bepalen. |
| Exact Online, Twinfield | beperkt | Alleen aanmaak- en wijzigingsmomenten per record, geen statushistorie. Eén event per boeking. |
| SAP | via extract | CDHDR/CDPOS is de rijkste auditbron die er is, maar levert een extract, geen koppeling. |
Hoe het in de praktijk loopt
Van export tot bevinding, en van bevinding tot de volgende export.
Export inlezen
Sleep de export naar binnen. DIVE stelt de kolommen voor op naam en toont per mogelijk datumformaat het parse-percentage en het datumbereik op de echte waarden; u bevestigt. Dit is de plek waar process-mining-analyses het vaakst stilletjes misgaan, dus hier is het expliciet.
Datakwaliteit beoordelen
Vóór er iets wordt berekend ziet u wat er niet klopt: ontbrekende case-id's, onleesbare tijdstempels, duplicaten, batchboekingen, zaken met één stap. Dat rapport gaat mee het dossier in. Beslis hier of de export bruikbaar is en wat u erover in het rapport zet.
Analyseren en afbakenen
Procesontdekking, varianten, doorlooptijd, functiescheiding en overdrachten op de volledige populatie. Baken af met de filterstapel; wat u intikt is een concept tot u het vastlegt, zodat u kunt uitproberen zonder dat er een dossierregel ontstaat waar u nooit een conclusie op baseert.
Toetsen tegen het ontwerp
Koppel een diagram uit Flowmap. DIVE stelt op naamgelijkenis voor welke log-activiteit bij welke processtap hoort; die koppeling bevestigt u zelf, want een verkeerde koppeling levert een keurig ogende maar onjuiste bevinding op. Daarna: omzeilde controls, ongetekende paden, dode paden.
Controletesten vastleggen en draaien
Leg per control een toets vast met parameters, gewicht en verwijzing naar het normenkader, eventueel na een droogloop. Elke uitvoering is een testrun met populatie, dekking en bevroren definitie. Draait u opnieuw, dan verdwijnen alleen de nog niet beoordeelde treffers; wat u al afvinkte blijft.
Valideren, bevinding, actie
Bevestig een treffer tegen het brondocument, via een deeplink naar het record in uw bronsysteem (DIVE bewaart dan geen enkel document) of een gekoppeld stuk. Pas daarna wordt het een bevinding, met bewijsspoor, en krijgt ze acties met eigenaar en termijn.
Vastleggen als recept
Staat de analyse zoals u hem volgende keer weer wilt, leg de parameters dan vast bij het bronsysteem. De export van volgende maand wordt herkend aan de vingerafdruk van de kolomnamen. Toepassen gaat nooit blind: eerst een droogloop met per onderdeel past, past gedeeltelijk of kan niet, en wat niet kan wordt in het uitvoerverslag benoemd. Een periodefilter gaat bewust niet mee.
Praktisch
De vragen die meestal als tweede komen.
- Gehost in de Europese Unie. Op eigen servers bij Hetzner in Neurenberg, Duitsland. Data staat per organisatie gescheiden opgeslagen.
- Geen klantgegeven verlaat de server. Er gaat geen celwaarde, zaak, bedrag of naam uit deze app naar een externe dienst of naar een taalmodel. Geen enkel cijfer, oordeel of conclusie komt uit een model: de analyses, scores en dekkingspercentages rekenen op vaste regels en geven op dezelfde data morgen dezelfde uitkomst.
- Privacy by design. Het uitvoerder-veld wordt bij import gepseudonimiseerd met een salt per dataset, de koppeling terug wordt niet bewaard, en wat u niet toewijst wordt niet opgeslagen. Is voor het wederhoor een identiteit nodig, dan gaat die vraag naar de beheerder van het bronsysteem; DIVE legt het verzoek vast. Een event-log met een uitvoerder-veld raakt de medezeggenschap; de app is zo gebouwd dat dat gesprek makkelijker wordt, niet moeilijker.
- Herleidbaar tot GIAS-standaard 14.1. Informatie is pas toereikend als een deskundige derde het werk kan herhalen en tot dezelfde conclusie komt. Het auditdossier exporteert precies dat: kolomtoewijzing, datakwaliteitsrapport, de beoordeling van elke treffer, de seed van elke steekproef en de hash van de bronexport.
- Grote exports. Tot 10 GB per bestand, hervatbaar, met een schijfruimtetoets vooraf. Een log van tientallen miljoenen events wordt één keer doorgerekend en daarna uit de bewaarde uitkomsten gelezen.
- Nederlands en Engels. De schil is tweetalig en volgt uw voorkeur in de hele suite. Uw eigen inhoud (activiteitnamen, bevindingsteksten) blijft zoals u hem invoert; enkele door de server gevormde zinnen, zoals filterbeschrijvingen, staan op dit moment nog alleen in het Nederlands.
Waar het nu staat. DIVE staat sinds augustus 2026 in beta: in gebruik met echte data, door een beperkte groep organisaties met een rol op de app, en nog niet algemeen beschikbaar. De kern (inlezen, analyse, naleving, de acht controletoetsen, dossier en recepten) staat; de verkenningen zijn van eind augustus 2026 en dus jonger. Dat zeg ik liever vooraf dan dat u het onderweg ontdekt. Wat er bewust níet in zit: task mining op werkplekniveau, voorspelling van de restduur van lopende zaken, en een AI-assistent die vragen beantwoordt of conceptbevindingen schrijft. Voor dat laatste geldt een aparte afweging die nog niet is gemaakt, en zolang die uitblijft, komt er geen enkel cijfer uit een model.