Werkplek met meerdere medewerkers en computerschermen in een kantoor
GidsUitgebreide gids14 september · 17:0018 min leestijd

API-uitfasering migreren: van register naar veilige vrijgave

Een leverancier wijzigt je API of authenticatie. Met deze methode inventariseer je de impact, test je oud en nieuw naast elkaar, laat je bewust vrijgeven en houd je een terugvalpad dat met data rekening houdt.

Je krijgt een mail van een leverancier: een endpoint verdwijnt, een token verloopt of een authenticatietype wordt vervangen. De koppeling draait vandaag nog prima. Juist daarom is het riskant om alleen een nieuwe sleutel of versie te bestellen. De fout verschijnt vaak pas als er een order, salarisrun of factuur door de nieuwe route moet.

Een veilige migratie begint bij het koppelingenregister en eindigt bij een mens die het bewijs bekijkt en bewust op vrijgeven klikt. Deze methode werkt voor een API-uitfasering, een authenticatiewijziging en een gebroken endpoint. Exact Online en AFAS zijn herkenbare voorbeelden, maar de beslissingen gelden voor iedere leverancier.

Wat je nodig hebt voordat je begint

Een veilige API-migratie is een gecontroleerde overstap van een oude naar een nieuwe technische route, waarbij je eerst vastlegt welke gegevensstromen geraakt worden, oud en nieuw vergelijkt, een mens laat beslissen en vooraf beschrijft hoe je terugvalt. Het doel is niet dat de nieuwe aanroep werkt, maar dat je bedrijfsproces aantoonbaar hetzelfde blijft werken.

Begin met één migratiedossier per datastroom. Een leverancier of applicatie is te grof. De orderstroom naar je boekhouding kan een andere eigenaar, sleutel en terugvalactie hebben dan de voorraadstroom terug naar je webshop.

De vijf stukken die op tafel moeten liggen

  1. De deadlinekaart. Noteer de leverancier, de oude route, de nieuwe route, de exacte einddatum, de bron van die datum en de datum waarop je opnieuw controleert. Neem ook onzekerheid op. “Leverancier onderzoekt alternatief” is een risico, geen status.
  2. Het register met één regel per datastroom, ook wanneer meerdere stromen dezelfde applicatie raken. Zet bron, doel, richting, ritme, endpoint of connector, authenticatie, eigenaar, leverancier, gegevensklasse, volume, kosten en gevolg van stilstand erbij. Een stroom met eigenaar, account, einddatum en gevolg geeft je de startpositie die een losse lijst met applicaties mist.
  3. Toegang tot testdata. Gebruik een acceptatieomgeving als die bestaat. Anders maak je een afgebakende proefset met herkenbare testrecords. Voor financiële stromen zijn dat minimaal een normale factuur, een creditfactuur, een btw-uitzondering, een gedeeltelijke levering en een mislukte betaling.
  4. Een eigenaar met beslissingsrecht. De ontwikkelaar kan zeggen dat de code werkt. De eigenaar van de factuurstroom beslist of het resultaat boekhoudkundig klopt. Leg ook vast wie tijdens het onderhoudsvenster de terugval mag starten.
  5. Een logboek en een meetpunt. Je hebt per run een tijdstip, route, aantal ontvangen records, aantal verwerkte records, fouten, laatste verwerkte sleutel en uitkomst nodig. Zonder nulmeting is “gelijk aan vroeger” geen controleerbare uitspraak.

Gereedschap dat past bij de klus

Voor een kleine migratie volstaat een gedeeld spreadsheet, een wachtwoordkluis en een testcollectie in Postman. De Postman Collection Runner voert requests in een gekozen volgorde uit, gebruikt omgevingen en testresultaten en kan met datafiles meerdere scenario’s draaien. Dat maakt hem bruikbaar voor een eerste bewijsset, niet voor de bewaking van je productieproces. De documentatie is gecontroleerd op 14 september 2026.

Heeft de koppeling veel uitzonderingen of moet zij iedere nacht draaien, zet de tests in code met bijvoorbeeld pytest en laat GitHub Actions ze bij iedere wijziging uitvoeren. Voor de uitvoering kan n8n Cloud passen als de datastroom overzichtelijk is en de beheerder de workflows kan onderhouden. De prijs van n8n Cloud Starter staat op 20 euro per maand bij jaarbetaling voor 2.500 workflow-uitvoeringen met onbeperkte stappen en vijf gelijktijdige uitvoeringen, gecontroleerd op 14 september 2026. De zelf te hosten Community Edition kost geen licentie, maar de updates, back-ups en storingen komen dan wel bij jou terecht.

Voor iedere nachtelijke of geplande stroom heb je een afwezigheidsalarm nodig. Sentry Cron Monitoring kan geslaagde, mislukte en gemiste check-ins vastleggen en een monitor aan een team of persoon toewijzen. Dat is precies het onderscheid dat je nodig hebt: een foutmelding is niet hetzelfde als een run die nooit begon. De Sentry-documentatie is gecontroleerd op 14 september 2026.

Klaarzetten voordat je de migratie aanraakt
0/8

Classificeer iedere regel als geld, bewijs of gemak. Geld omvat betalingen, bankmutaties, verkoopfacturen en salaris. Bewijs omvat dossiers, uren, orders en contracthistorie. Gemak omvat meldingen, rapportages en lijstjes. Geld krijgt de strengste acceptatie en de kortste alarmtijd. Bij gemak mag een nachtelijke vertraging soms prima zijn. Die keuze bepaalt de rest van je plan.

De concrete stappen: van register naar vrijgave

De route hieronder volgt het principe expand, migrate, contract. Eerst laat je oud en nieuw naast elkaar bestaan, daarna verplaats je de stroom, pas daarna sluit je de oude route. Martin Fowler beschreef dit patroon op 13 mei 2014 voor wijzigingen aan interfaces met meerdere afnemers: expand, migrate en contract maken een onverenigbare wijziging stapsgewijs en testbaar. Gebruik het als werkvolgorde, niet als technisch modewoord.

1. Zet de deadline om in een besluitdatum

Een einddatum is niet je migratiedatum. Trek er tijd vanaf voor een leverancier die niet reageert, een test die faalt en een tweede vrijgave. Bij een kritieke geldstroom plan ik minimaal zes weken ruimte tussen de geplande livegang en de harde deadline. Kies de datum waarop het besluit uiterlijk genomen moet zijn en zet die bij een mens in de agenda.

Exact Online laat zien waarom je meerdere datums nodig hebt. Exact meldt dat een selectie XML-API-topics vanaf januari 2027 wordt uitgefaseerd. Voorbeelden zijn Invoices, Sales Orders, GL Accounts, Deliveries en Stock Positions. Het aparte endpoint XMLDivisions.aspx wordt al op 1 oktober 2026 uitgeschakeld. De officiële pagina’s zijn gecontroleerd op 14 september 2026. De Exact Online XML-route met XMLDownload, XMLUpload en XMLDivisions moet je daarom per datastroom beoordelen, niet in één keer als “de Exact-koppeling”.

Bij AFAS is het verschil tussen aankondiging en planning net zo groot. Bestaande classic tokens kregen in september 2026 een einddatum van 15 februari 2027. De harde grens voor classic tokens is 31 augustus 2027, en app connectoren die zes maanden niet gebruikt zijn kunnen eerder worden geblokkeerd. AFAS schrijft dat je het authenticatietype van een bestaande app connector niet kunt wijzigen. Vanaf Profit 9 is AFAS voornemens een bestaande connector naar Hybride of OAuth te laten omzetten met behoud van gekoppelde connectoren en IP-restricties. Controleer je eigen updatedatum, want “Profit 9 komt eraan” is geen bevestigde migratiedatum. De AFAS-inventarisatie met filter op classic token en onderhoud door klant geeft je de velden die je moet overnemen.

2. Maak van iedere registerregel een change record

Kopieer de bestaande regel naar een migratiedossier en voeg deze velden toe:

  • oude endpoint, token of connector;
  • nieuwe endpoint, OAuth-flow of versie;
  • eigenaar van de bedrijfsuitkomst;
  • eigenaar van de technische wijziging;
  • gebruikte records en identifiers;
  • datum van de laatste geslaagde oude run;
  • acceptatiecriteria;
  • terugvaltrigger en terugvalactie;
  • status van leverancier, test, vrijgave en nazorg.

Schrijf de gevolgen als gedrag. “API-call faalt” zegt weinig. “Verkoopfacturen van dinsdag blijven als concept staan” geeft de eigenaar een manier om te controleren of het probleem echt opgelost is. Voeg een uitzonderingsqueue toe. Elke onbekende mapping, ontbrekende toestemming, onverwachte status of afwijkend record gaat daarheen met een eigenaar en een volgende actie. Een queue zonder eigenaar is alleen uitgestelde paniek.

3. Breng de impact en het eigenaarschap hard in kaart

Bepaal wat er gebeurt na één uur, één werkdag en één week stilstand. Een webshoporder die niet naar het magazijn gaat, kost direct voorraadvertrouwen. Een salarisexport die een dag later komt, vraagt een andere planning. Een weekrapport dat ontbreekt, kan wachten.

Noteer ook de richting. Leest de nieuwe route alleen mee, dan kun je vaak veilig schaduwdraaien. Schrijft hij facturen, voorraad of betalingen, dan mag je oud en nieuw niet blind tegelijk laten schrijven. Wijs per veld één leidend systeem aan. De migratie is niet geslaagd als beide routes een ander adres terugschrijven en de laatste schrijver wint.

4. Leg de nulmeting en proefset vast

Maak een kopie van de huidige uitkomst voordat je iets wijzigt. Voor een batch zijn dat aantallen per dag, bedragen per btw-code, eerste en laatste sleutel, gemiddelde duur en foutaantallen. Voor een eventstroom zijn het event-id’s, object-id’s en volgordegevallen. Voor een rapportage zijn het totalen per periode en een paar bekende uitschieters.

De proefset moet randgevallen bevatten. Gebruik bij een orderstroom een normale order, een order met korting, een gedeeltelijke levering, een retour, een annulering en een order waarvan de klant al bestaat. Gebruik bij een financiële stroom een creditfactuur, een onbekende grootboekrekening en een dubbele aanbieding. Zet vóór de eerste run op papier welke verschillen aanvaardbaar zijn. Voor geld is het meestal nul onverklaarde verschillen. Voor een melding kan het berichtformaat gelijk zijn zonder dat het tijdstip exact gelijk hoeft te blijven.

5. Bouw de nieuwe route naast de oude

Maak een aparte testconfiguratie, credential en logstroom. Vermeng test en productie niet in dezelfde Postman-omgeving of n8n-workflow. Zet secrets in de kluis, nooit in een ticket, screenshot, gedeeld document of broncode.

Bij AFAS noteer je de bestaande gebruikersgroep, gebruiker, GetConnectoren, UpdateConnectoren, IP-restricties en certificaten voordat je een OAuth-connector aanmaakt. AFAS laat bij het aanmaken het client id en client secret één keer zien. Het secret kun je later niet teruglezen en ook niet wijzigen. Leg beide direct veilig vast en genereer bij verlies een nieuw secret, want het oude vervalt dan.

Kies bij OAuth samen met de leverancier de flow die bij het proces hoort. Een nachtelijke machinekoppeling vraagt doorgaans om client credentials. Een portaal waarin medewerkers onder hun eigen identiteit handelen vraagt een authorization code flow. Laat de leverancier vastleggen welke gebruiker, scope en filterautorisatie de nieuwe route krijgt. Een token dat kan inloggen maar minder records mag zien, lijkt technisch gezond en kan toch stille gaten maken. De actuele OAuth Security Best Current Practice van de IETF dateert uit januari 2025 en vraagt onder meer om strikte redirect URI-matching en bescherming tegen CSRF. Gebruik die beveiligingsregels als ondergrens, ook als een leverancier een eenvoudige wizard aanbiedt.

6. Test in lagen en bewaar het bewijs

Een groene login is testlaag nul. Loop minimaal deze lagen af:

  1. Authenticatie: lukt de token- of OAuth-aanvraag, verloopt het access token correct en staat de klok goed?
  2. Autorisatie: ziet de nieuwe identiteit exact de administraties, velden en connectoren die nodig zijn, en niets extra’s?
  3. Contract: accepteren request en response dezelfde velden, statussen, paginering, foutcodes en datums?
  4. Functioneel: komt een record van bron naar doel en terug waar dat hoort?
  5. Randgevallen: werken correctie, retour, annulering, ontbrekende relatie, dubbele aanbieding en gedeeltelijke fout?
  6. Volume: houdt de route zich op een drukke dag aan de limieten, met meer dan de twintig testrecords uit de proefset?
  7. Herstel: wat gebeurt er na een time-out, 401, 403, 404, 429, lege pagina of afgebroken batch?

Postman is praktisch voor de eerste zes verzoeken en een verzameling herhaalbare controles. De Collection Runner kan requests in volgorde uitvoeren, gegevens uit een bestand gebruiken en resultaten per request bewaren. Voor code zet je dezelfde gevallen in pytest en laat je ze in een testomgeving draaien bij iedere release. Bewaar het resultaat met versie, datum, gebruikte testdata en naam van de beoordelaar. Een screenshot met “200 OK” is geen testbewijs.

7. Laat oud en nieuw gecontroleerd parallel lopen

Parallel draaien betekent niet automatisch dubbel schrijven. Kies per stroom één van drie patronen:

  • Schaduwlezen: oud schrijft naar productie, nieuw leest dezelfde bron en schrijft alleen een vergelijking weg. Dit is de veiligste start voor een nieuwe uitleesroute.
  • Gesplitste eigenaar: een beperkte administratie, klantgroep of datumreeks gaat naar nieuw. De rest blijft op oud. Dit werkt alleen als je de grens kunt herkennen en later terug kunt vinden.
  • Tijdelijke dubbele schrijfroute: beide schrijven, maar alleen als de doelkant idempotentie en een terugverwijderbare teststatus ondersteunt. Voor facturen en betalingen kies ik dit zelden.

Een beperkte administratie of klantgroep is een praktische canary: Google SRE beschrijft canarying als een kleine subset naast een controlegroep, met monitoring voordat je verder uitrolt.

Vergelijk per run meer dan HTTP-statussen. Vergelijk aantal records, sommen, sleutels, statussen, fouttypen en doorlooptijd. Zet een verschil in de uitzonderingsqueue, met oorzaak en besluit. Stripe adviseert event-id’s te volgen omdat gebeurtenissen niet gegarandeerd in volgorde aankomen en dezelfde gebeurtenis opnieuw kan worden afgeleverd. Voor een schrijfactie gebruik je een idempotentiesleutel. Stripe bewaart voor eenzelfde sleutel het eerste resultaat en geeft dat resultaat bij een herhaling terug, inclusief foutstatus. De documentatie is gecontroleerd op 14 september 2026.

8. Maak een menselijke vrijgavekaart

De vrijgavekaart bevat precies de informatie waarop iemand “ja”, “nee” of “nog niet” kan zeggen:

  • alle kritieke testgevallen geslaagd;
  • nul onverklaarde verschillen in geldstromen;
  • aantallen en totalen gelijk in de parallelle periode;
  • geen ontbrekende of dubbele sleutels;
  • nieuwe identiteit heeft aantoonbaar de juiste rechten;
  • monitoring meldt succes én afwezigheid van succes;
  • leverancier, technische eigenaar en bedrijfseigenaar zijn bereikbaar;
  • terugval is één keer geoefend;
  • openstaande uitzonderingen hebben een besluit, geen lege status.

Laat de bedrijfseigenaar tekenen of expliciet goedkeuren. Een ontwikkelaar kan de migratie technisch afronden, maar mag een verschil in factuurtotalen niet zelfstandig als “waarschijnlijk normaal” aanmerken.

9. Knip om, bewaak en sluit pas later af

Plan de omschakeling op een rustig moment waarop de juiste mensen bereikbaar zijn. AWS beschrijft voor een cutover achtereenvolgens een innamefreeze, back-up, laatste synchronisatie, routeringswijziging en test. Die volgorde van freeze, laatste sync, routering en controle is bruikbaar voor een koppeling, ook als er geen DNS-wijziging is. De AWS- en Google SRE-richtlijnen zijn gecontroleerd op 14 september 2026. Je “routering” kan dan een feature flag, workflow-activatie of nieuwe credential zijn.

Leg vóór de omschakeling vast:

  • laatste oude run en laatste oude sleutel;
  • tijdstip waarop nieuwe verwerking start;
  • welke invoer tijdelijk wordt bevroren;
  • wie de eerste drie uitkomsten controleert;
  • wanneer de go/no-go herhaald wordt;
  • welke melding de terugval activeert.

Houd de oude credential, workflow of connector geblokkeerd maar herstelbaar. Verwijderen maakt een incident moeilijker te onderzoeken. Meet na vijftien minuten, na één volledige cyclus en na één werkdag. Sluit pas af als de oude route geen verkeer meer ontvangt, de nieuwe route de normale telling haalt en alle uitzonderingen een eigenaar hebben.

Waar migraties in de praktijk stil stuklopen

Een API-migratie breekt zelden op de eerste login. Zij breekt op de rand waar techniek en bedrijfsproces elkaar raken.

Je test alleen de gelukkige route. Een normale order gaat door, dus de release krijgt groen licht. De retour of creditfactuur blijft daarna in de oude queue staan. Voeg vooraf minimaal één record toe dat bewust moet worden afgewezen en één record dat opnieuw wordt aangeboden.

Je laat oud en nieuw allebei schrijven. Dat lijkt een nette parallelle controle, maar twee facturen zijn geen vergelijking. Gebruik schaduwlezen of splits de eigenaar. Schrijven beide routes toch, dan moet de doelkant een stabiele sleutel controleren vóór de bijwerking plaatsvindt.

De nieuwe token heeft minder rechten. De verbinding is groen, maar de nieuwe gebruiker ziet één administratie niet of krijgt geen UpdateConnector. Vergelijk autorisaties en aantallen per administratie. Controleer ook de HTTP-status.

Een filter verschuift je dataset. De oude route haalde alle records op, de nieuwe route filtert op updated_at of een andere tijdzone. Een record op de grens valt uit de batch. Gebruik een overlapvenster en een koppeltabel. Reconciliatie moet de ontbrekende sleutel vinden.

De leverancier zegt “live” terwijl oud nog belt. Een nieuwe versie kan naast de oude versie bestaan. Vraag na livegang om het nieuwe versienummer, de eerste succesvolle run en een logregel. Controleer in het bronplatform zelf of het oude endpoint minder of geen verkeer toont.

Je behandelt een ontbrekende run als een rustige dag. Bij een batch zonder output lijkt alles normaal. Sentry kan gemiste en mislukte check-ins onderscheiden en aan een eigenaar toewijzen, gecontroleerd op 14 september 2026. Stel het verwachte interval in met een marge en alarmeer op afwezigheid. Een foutmelding is een tweede alarm.

Je zet een rollback gelijk aan een URL terugzetten. Na een succesvolle nieuwe schrijfactie is de oude omgeving mogelijk achter. AWS adviseert een expliciete rollbackstrategie, checkpoints en één beslisser. Bij gewijzigde data moet je eerst bepalen welke nieuwe records al bestaan, welke grens als laatste betrouwbaar geldt en hoe je ze corrigeert. Teruggaan zonder datagrens maakt dubbelen waarschijnlijk.

Je sorteert events op tijdstip. Stripe zegt dat webhookevents niet gegarandeerd in de volgorde van ontstaan worden afgeleverd. Shopify gebruikt voor webhooks een delivery-id om dubbele afleveringen te herkennen en adviseert periodieke reconciliatie omdat afleveringen kunnen worden gemist. De documentatie van beide platforms is gecontroleerd op 14 september 2026. Gebruik een event-id, bronversie of updated_at, en herstel gemiste records met een controlejob.

Je bewaart testgeheimen in bewijs. Een Postman-export met client secret of een screenshot van een token reist snel door mail en tickets. Masker secrets, gebruik een kluis en laat een tweede persoon controleren welke waarden in logboeken mogen staan. Bij OAuth is het secret geen testdata.

Je kiest een datum zonder support. De rustigste nacht is waardeloos als de leverancier, boekhouder of operationsmanager niet bereikbaar is. AWS benadrukt dat het cutovermoment ook rekening moet houden met de beschikbaarheid en voorbereiding van stakeholders. Zet de telefoonnummers in de vrijgavekaart, niet in een persoonlijk adresboek.

Je sluit de uitzondering af met een gok. “Waarschijnlijk opgelost” is geen status. Zet de rij op opgelost met de test-id, logregel of besluit van de eigenaar. Alles zonder bewijs blijft open.

Het beslis-kader: welke migratieroute past?

De keuze draait om vijf vragen:

  1. Hoe groot is de schade? Geld en bewijs vragen een echte vrijgave. Gemak kan met een lichtere test.
  2. Hoe standaard is de stroom? Alleen bekende velden en één richting passen vaak in een native koppeling of no-code workflow. Uitzonderingen, meerdere administraties en terugboekingen duwen naar maatwerk.
  3. Wie beheert de oplossing? Een n8n-workflow zonder eigenaar is geen goedkope oplossing. Hij is een toekomstige storing.
  4. Kun je veilig naast elkaar draaien? Schaduwlezen is eenvoudiger dan dubbele schrijfacties. Als de bron geen testomgeving of replaymogelijkheid heeft, moet de onderhoudsperiode kleiner en de controle strenger.
  5. Hoeveel buffer blijft er over? Een leverancier met een geteste release en een datum vóór jouw besluitdatum is een andere route dan een leverancier die “ergens dit kwartaal” zegt.

Mijn beslisregels zijn eenvoudig. Kies Leverancier beheerde migratie als de stroom standaard is, de leverancier een concrete datum vóór jouw buffer heeft en hij testbewijs kan leveren. Kies Kant-en-klaar of no-code met testbewijs als de logica klein is, de route weinig uitzonderingen heeft en iemand de workflow kan onderhouden. Kies Maatwerk migratie met menselijke vrijgave als de stroom geld draagt, meerdere systemen raakt, een terugval na nieuwe schrijfacties nodig heeft of geen partij meer heeft die verantwoordelijkheid neemt. Kies Uitfaseren van een overbodige stroom als het proces niet meer bestaat, maar pauzeer eerst en observeer minimaal één normale cyclus.

De kosten bestaan uit meer dan de nieuwe licentie. Een n8n Cloud Starter-plan staat op 20 euro per maand bij jaarbetaling voor 2.500 volledige workflow-uitvoeringen en onbeperkte stappen, volgens de actuele prijspagina van 14 september 2026. De echte rekening zit bij een kritieke koppeling in testdata, logging, uitzonderingsafhandeling en de persoon die na zes maanden nog weet hoe de workflow werkt. Voor een kleine melding is dat overkill. Voor een order- of factuurstroom is het meestal de ondergrens.

Welke route past bij jouw API-migratie?

Wat gebeurt er als deze datastroom één werkdag stilvalt?

De keuzehulp is een snelle route door het kader, geen vervanging van je dossier. Als twee antwoorden tegelijk waar zijn, kies je de strengste route. Een geldstroom met één veld minder is nog steeds een geldstroom.

Uitgewerkt voorbeeld: een handelsbedrijf met twaalf datastromen

Dit is een rekenvoorbeeld, geen klantverhaal. Een handelsbedrijf heeft 45 medewerkers, drie Exact Online-administraties, een WMS, een Shopify-webshop en AFAS Profit voor HR. De organisatie denkt zes koppelingen te hebben. Het register telt twaalf datastromen:

  • orders van Shopify naar het WMS;
  • voorraadstanden van het WMS naar Shopify;
  • verkoopfacturen van het WMS naar Exact Online;
  • inkoopfacturen uit een scanpakket naar Exact Online;
  • bankmutaties naar Exact Online;
  • uren naar AFAS;
  • salarisjournaal uit AFAS naar Exact Online;
  • verlofstatus naar een planningspakket;
  • klantupdates naar CRM;
  • rapportage uit Exact naar Power BI;
  • kwartaalexport naar de accountant;
  • meldingen naar Teams.

De eerste middag levert drie risico’s op. Het WMS gebruikt bij twee administraties XMLDownload voor Stock Positions en XMLUpload voor Sales Orders. Die routes vallen onder de Exact-wijziging met januari 2027 als deadline. Een oud rapportagescript gebruikt XMLDivisions.aspx om iedere maandag de administratielijst op te halen. Dat moet vóór 1 oktober 2026 worden aangepast of vervangen. De salarisstroom naar AFAS gebruikt een classic token met 15 februari 2027 als eerste einddatum. De andere negen stromen hebben geen directe deadline, maar krijgen wel een eigenaar en alarm.

Week 1: dossier en nulmeting

De operationsmanager wordt eigenaar van orders en voorraad. De financieel manager tekent voor facturen en bankmutaties. HR tekent voor uren en salaris. De technische beheerder krijgt de taak om routes, tokens en logs te wijzigen, maar mag geen financiële uitkomst goedkeuren.

De nulmeting loopt zeven werkdagen. Orders: 1.240 records, 1.238 succesvol verwerkt, twee handmatig gecorrigeerd. Voorraad: 4.850 SKU’s, 37 afwijkingen door voorraadcorrecties. Facturen: 1.106 verkoopregels, een totaalbedrag per btw-code en drie creditfacturen. Dit zijn interne meetwaarden van het rekenvoorbeeld, geen algemene marktdata.

De testset bevat 30 orders. Daarin zitten vijf retouren, twee gedeeltelijke leveringen, drie orders met korting en één order die bewust tweemaal wordt aangeboden. Voor de AFAS-stroom zijn tien urenregels, één correctie en één gebruiker zonder recht op een bepaalde administratie nodig. De vrijgavekaart schrijft nul dubbele orders voor, nul onverklaarde verschillen in factuurtotalen en een expliciete verklaring voor iedere voorraadcorrectie.

Week 2: parallelle route en uitzonderingen

De leverancier van het WMS levert een REST-versie. De oude route blijft schrijven, de nieuwe route draait in schaduwmodus. De nieuwe versie leest dezelfde orderinput maar zet geen verkooporder weg. Zij schrijft per order een vergelijkingsregel met ordernummer, regelsom, btw-bedrag en verwachte Exact-status.

Op dag twee blijkt dat één retour in de nieuwe route als normale order wordt gezien. De HTTP-status is 200, maar de bedrijfsuitkomst is fout. De regel gaat naar de uitzonderingsqueue. De leverancier past de mapping aan, de testset draait opnieuw en de fout blijft als regressietest bestaan.

Het AFAS-team maakt in de acceptatieomgeving een OAuth app connector aan met dezelfde gebruikersgroep en connectoren als de classic route. Het client secret gaat direct naar de kluis. De technische test slaagt, maar de eerste GetConnector geeft 8 van de 10 testregels terug. De filterautorisatie op één administratie ontbrak. Dat is precies waarom een groene OAuth-login niet genoeg is. De autorisatie wordt gecorrigeerd, de telling wordt opnieuw gecontroleerd en de oude connector blijft actief.

Het rapportagescript wordt niet gemigreerd naar een brede nieuwe connector. De drie bekende administratiecodes worden in een beheerde configuratie gezet. Het script gebruikt daarna de REST-route voor de lijst administraties. De datum van 1 oktober 2026 is daarmee niet opgelost door een wachtwoord te vervangen, maar door een afhankelijkheid te verwijderen.

Week 3: vrijgave en terugvalrepetitie

Na vijf werkdagen schaduwdraaien zijn 1.240 ordervergelijkingen gelijk. Eén voorraadverschil blijkt een handmatige correctie in het WMS te zijn en krijgt een eigenaar. De factuurtotalen zijn gelijk per btw-code. De AFAS-test geeft dezelfde twaalf records terug als de oude route. De monitor meldt iedere geslaagde run en maakt bewust een gemiste run zichtbaar tijdens een repetitie.

De vrijgave gebeurt op zondag om 10:00, niet om middernacht. De supportcontacten zijn bereikbaar en de financieel manager kan de eerste facturen controleren. Om 09:45 wordt de oude route gepauzeerd, wordt de laatste sleutel opgeslagen en wordt invoer voor vijftien minuten bevroren. Om 10:00 start de nieuwe route. Om 10:15 controleert de operationsmanager drie orders, de financieel manager een factuur en HR de urenregels.

De terugvalrepetitie gebruikt een opzettelijk foutieve autorisatie. De nieuwe route stopt, de laatste verwerkte sleutel wordt vastgelegd, de oude route wordt hervat en de queue wordt gecontroleerd op dubbele aanbieding. De oefening bewijst niet dat elk incident opgelost is. Zij bewijst dat de organisatie weet wie stopt, wie beslist en welke grens als betrouwbaar geldt.

Na één volledige werkdag zijn de tellingen gelijk. De oude credentials worden niet verwijderd maar geblokkeerd. Na vier weken zonder oud verkeer wordt de oude route uitgefaseerd en wordt het migratiedossier gearchiveerd met testbewijs, vrijgavebesluit, openstaande uitzonderingen en de datum van de volgende controle.

De uitkomst is geen magische overstap. Het is een gecontroleerde reeks kleine besluiten. De fout in de retourmapping, de ontbrekende AFAS-filterautorisatie en de vergeten XMLDivisions-afhankelijkheid kwamen vóór de deadline boven water, toen terugval nog eenvoudig was.

Vergelijkingstabel: kopen, configureren of bouwen

De route moet passen bij de gegevensstroom, de gevolgen van stilstand en de beschikbare beheerder. De bedragen en productdetails hieronder zijn gecontroleerd op 14 september 2026.

RouteKostenordeSterk puntBreekpuntTerugval en beheer
Leverancier beheert de omzettingVaak inbegrepen in onderhoud of een vaste wijzigingsprijs, plus jouw testtijdKennis van de eigen connector en releaseGeen datum, geen testbewijs of geen bereikbaar aanspreekpuntVraag om bewijs, houd de oude route herstelbaar en wijs zelf een eigenaar aan
Native koppelingMeestal inbegrepen bij het pakket, maar weinig invloed op mapping en ritmeWeinig eigen techniek bij standaardveldenRetouren, meerdere administraties en uitzonderingenAlleen veilig als de leverancier een oude versie kan behouden en jij kunt reconciliëren
n8n Cloud of self-hostedStarter 20 euro per maand bij jaarbetaling voor 2.500 volledige uitvoeringen; Community Edition is zelf te hostenEigen logica, wachtrijen en veel API-aanroepen in één workflowBeheer, secrets, updates en complexe financiële uitzonderingenMaak een aparte oude en nieuwe workflow, log elke sleutel en laat iemand eigenaar blijven
Postman plus pytest en CILage licentiekosten, wel ontwikkelurenHerhaalbaar testbewijs vóór iedere releaseGeen productiequeue, geen bedrijfsmonitoring en geen vervanging voor reconciliatieSterk als bewijslaag; uitvoering en terugval moeten elders zijn
Maatwerk migratieserviceHogere bouwsom, plus hosting en onderhoudVolledige controle over idempotentie, uitzonderingsqueue, parallelle run en terugvalgrensMeer ontwerpwerk vooraf en een echte beheerafspraak nodigBeste route voor geldstromen, meerdere systemen of een ontbrekende leverancier
Uitfaseren van een overbodige stroomGeen bouwkosten, wel een observatieperiodeMinder tokens, minder risico en minder onderhoudJe weet pas zeker dat hij overbodig is na een normale cyclusEerst pauzeren, dertig dagen observeren, dan verwijderen met besluit en datum

Een kant-en-klaar product is dus niet automatisch veiliger. Het is veiliger wanneer de route standaard is, de eigenaar bekend is en het product een testbare en herstelbare wijziging aanbiedt. Maatwerk is geen vrijbrief voor complexiteit. Het is passend als de gevolgen van een fout groter zijn dan de extra bouw- en beheerlast.

Een rollbackplan is compleet wanneer drie vragen een concreet antwoord hebben: wat stopt er, welke data zijn al verwerkt en wie beslist over herstel of doorwerken? AWS noemt vooraf gedefinieerde checkpoints, een rollbackstrategie en één beslisser als vaste onderdelen. In de AWS-richtlijn over rollback, gepubliceerd op 24 maart 2026, staat ook de waarschuwing dat terugvallen na nieuwe transacties een dataprobleem is, geen simpele routewissel. Gebruik die grens in je vrijgavekaart.

De eerste controle na livegang is niet “staat de nieuwe versie aan?”. Het is “komt de bedrijfsuitkomst nog aantoonbaar overeen?”. Stripe adviseert idempotente schrijfacties voor veilige herhaling. Shopify adviseert naast webhookverwerking een periodieke reconciliatie omdat afleveringen kunnen ontbreken. Die twee regels maken het verschil tussen een koppeling die vandaag werkt en een koppeling die je over een halfjaar nog vertrouwt.

Een leveranciersdeadline is daarmee geen los technisch onderhoudsmoment. Hij is een aanleiding om eigenaarschap, testbewijs en herstelbaarheid op orde te brengen. Als je die drie vastlegt vóór je de oude route sluit, wordt een API-wijziging een beheerst besluit in plaats van een stille onderbreking.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

Maak je migratie beheersbaar

Ik breng je koppelingen, eigenaren en deadlines in kaart, ontwerp de parallelle test en leg met je team vast wanneer je vrijgeeft of terugvalt. Van leveranciergesprek tot monitoring lever ik het migratieplan end-to-end op.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Genoemde integraties

Dit artikel noemt deze tools. Ik koppel ze op maat aan je eigen systemen.

Gerelateerde artikelen

Exact, Visma en Neno verschuiven de boekhouding naar de AI-laag
Signaal
8 min

13 sep 08:44

Exact, Visma en Neno verschuiven de boekhouding naar de AI-laag

Exact, Visma en Neno bouwen ieder een andere route van boekhouding naar AI-agent. De gemene deler zit niet in het taalmodel, maar in de financiële bron: wie die beheert, bepaalt straks toegang, actie en menselijke controle.

Koppelingen bewaken: hoe je een stilgevallen koppeling merkt voordat je klant belt
Gids
Uitgebreide gids14 min

3 aug 09:00

Koppelingen bewaken: hoe je een stilgevallen koppeling merkt voordat je klant belt

Een koppeling die stilvalt geeft geen foutmelding maar een leegte, en die kost per dag orders, facturen en voorraad. Zo richt je hartslag, herhaalpogingen, een dode brievenbus en een nachtelijke telling in.

Welke koppelingen draaien er in jouw bedrijf? Het register dat je in een middag aanlegt
Gids
Uitgebreide gids14 min

8 sep 09:00

Welke koppelingen draaien er in jouw bedrijf? Het register dat je in een middag aanlegt

Vijf tot vijftien koppelingen draaien er, en van geen enkele weet je op wiens account hij staat of wanneer hij verloopt. Zo loop je in een middag de vijf sporen af en leg je het register aan.

AFAS laat classic tokens verlopen op 15 februari 2027: zo weet je welke koppeling van jou omvalt
Gids
Uitgebreide gids14 min

7 sep 09:00

AFAS laat classic tokens verlopen op 15 februari 2027: zo weet je welke koppeling van jou omvalt

Iedereen noemt 31 augustus 2027, maar de classic tokens die vandaag in jouw AFAS Profit-omgeving draaien stoppen op 15 februari. Zo vind je in een middag welke koppeling erop zit en wat je per regel doet.

Prijsindexatie doorvoeren: zo staat na 1 januari elke klant op het nieuwe tarief
Gids
Uitgebreide gids13 min

11 aug 17:00

Prijsindexatie doorvoeren: zo staat na 1 januari elke klant op het nieuwe tarief

De brief is verstuurd, maar staat iedereen ook echt op het nieuwe tarief? Een werkstroom die per klant, abonnement, contract en prijslijst nagaat welk bedrag er na de ingangsdatum op de factuur belandt.

Klantorders uit e-mail en PDF automatisch in je ordersysteem krijgen
Gids
Uitgebreide gids14 min

2 aug 17:00

Klantorders uit e-mail en PDF automatisch in je ordersysteem krijgen

Van een PDF-bijlage in je mailbox naar gevalideerde orderregels in je ERP, zonder overtypen. De vertaaltabel voor klantartikelnummers, de zeven controles op volgorde, de uitzonderingenwachtrij en een eerlijk kader tussen portaal, parser en maatwerk.