Kennisbank
Waarom een dry run voordat een koppeling live gaat?
Een dry run is een run waarin de koppeling de echte gegevens leest, alle regels toepast en niets wegschrijft. Je ziet per artikel of per order wat er zou veranderen, zodat fouten in de matching, de mapping en de regels zichtbaar zijn voordat ze in je webshop of je administratie staan.
Bijgewerkt op
Wat is een dry run?
Een dry run is een run waarin de koppeling alles doet behalve schrijven. Hij leest de gegevens uit de bron, leest de huidige stand in het doel, past elke regel toe en legt vast wat hij zou wijzigen. De webshop en de administratie blijven zoals ze waren.
De uitkomst is een verschillenlijst: per artikel of per order de oude waarde, de nieuwe waarde en de regel die het verschil veroorzaakt. Voor een voorraadkoppeling met 8.000 artikelen ziet die er zo uit:
dry run 03-10-2026 09:45 bron: exact online doel: webshop geschreven: 0
gelezen 8.000
gelijk 7.412
zou wijzigen 561 voorraad 512, leverdatum 38, prijs 11
geen match 27 artikelcode niet gevonden in de webshop
10482 voorraad 88 -> 82 order 20418, 6 stuks gereserveerd
10484 leverdatum 14-10 -> 21-10 inkooporder verzet
10517 prijs 12,50 -> 0,13 daling 99%
00123456 geen match webshop kent 123456
7.412 plus 561 plus 27 is 8.000: elk gelezen artikel staat in precies één groep. De 561 wijzigingen tellen op dezelfde manier op: 512 plus 38 plus 11. Klopt een van die optellingen niet, dan is de run zelf niet af.
Waarom is een testomgeving niet genoeg?
Een testomgeving beantwoordt een andere vraag. In een sandbox test je of de aanroepen technisch werken: de aanmelding, de verplichte velden, de foutcodes. De gegevens die er staan zijn testgegevens of een kopie van een eerder moment.
| Testomgeving | Dry run | |
|---|---|---|
| Gegevens | testdata of een kopie van een eerdere datum | productie, op het moment van de run |
| Schrijft | ja, in de testomgeving | nee, nergens |
| Vindt | fouten in de techniek: aanmelding, verplichte velden, veldlengtes | fouten in de gegevens: codes die niet matchen, formaten, uitschieters |
| Vindt niet | wat er in jouw 8.000 artikelen mis is | wat het doel weigert bij het schrijven |
Welke testomgeving er is, verschilt per systeem. AFAS heeft naast productie een test- en een acceptatieomgeving, elk met een eigen adres: resttest.afas.online en restaccept.afas.online. Bij Business Central horen bij een productieomgeving drie sandboxes zonder meerprijs, en een sandbox kan worden aangemaakt met de gegevens uit productie (documentatie van Microsoft, nagelezen op 3 oktober 2026). Zo'n kopie veroudert vanaf het moment dat hij gemaakt is. Een leveranciersbestand op een SFTP-server heeft geen testversie: het bestand van vandaag is het enige dat er is.
De volgorde is daarom vast. Eerst de testomgeving, waar een fout bij het schrijven geen gevolgen heeft. Daarna de dry run op de echte gegevens.
Welke fouten vind je alleen met echte gegevens?
De fouten die een koppeling na livegang duur maken, zitten zelden in de aanroep. Ze zitten in de gegevens. De verschillenlijst uit het voorbeeld, uitgesplitst:
| Wat de dry run laat zien | Aantal | Oorzaak | Gevolg zonder dry run |
|---|---|---|---|
| Geen match op artikelcode | 27 | 19 codes die bij een import via Excel hun voorloopnullen kwijtraakten, 5 met een spatie achteraan, 3 die niet in de webshop staan | 27 artikelen houden een verouderde voorraad |
| Voorraad naar 0 | 310 van de 512 | de artikelen hebben in het ERP geen voorraadregel voor dit magazijn en de regel leest afwezig als nul | 310 artikelen gaan uit de verkoop |
| Prijs daalt 99% | 1 van de 11 | een bedrag in euro's is als centen gelezen: 12,50 gedeeld door 100 is 0,125, afgerond 0,13 | artikel 10517 staat voor € 0,13 in de webshop |
| Leverdatum in het verleden | 4 van de 38 | de inkooporder in het ERP heeft een ontvangstdatum die voorbij is en nooit is bijgewerkt | vier artikelen tonen een verlopen datum |
Geen van de vier is in een testomgeving te vinden, want ze bestaan alleen in deze administratie en deze webshop. Waar de eerste vandaan komt staat in koppelen op SKU of op EAN. Hoe je afwezigheid in een export of bestand leest staat in CSV en Excel van leveranciers, en de factor 100 in bedragen en btw mappen.
De tweede regel laat zien hoe je een verschillenlijst leest. Van de 512 voorraadwijzigingen gaan er 310 naar nul en zijn er 202 gewone mutaties. 202 op 8.000 artikelen is 2,5%, een normaal beeld voor één dag. 310 artikelen die in één run naar nul gaan is een patroon, geen verkoop. De lijst sorteert daarom op de grootte van de afwijking en groepeert per oorzaak, zodat één fout in een regel als één bevinding verschijnt en niet als 310 losse regels.
Bij orders werkt het op dezelfde manier. Een dry run over de 700 orders van de afgelopen 14 dagen levert bijvoorbeeld 668 orders op die zouden worden aangemaakt en 32 afgekeurde: 17 met een artikel dat het ERP niet kent, 9 zakelijke orders zonder btw-nummer en 6 waarbij de debiteur twee keer gevonden is. 668 plus 17 plus 9 plus 6 is 700.
Hoeveel verzoeken kost een dry run?
Een dry run leest, en lezen telt mee voor de limiet van de API. Exact Online staat 60 verzoeken per minuut en 5.000 per dag per administratie toe. De gewone REST-endpoints geven 60 records per pagina, de sync-endpoints 1.000.
| Route | Rekensom voor 8.000 artikelen | Verzoeken | Aandeel van 5.000 per dag |
|---|---|---|---|
| Gewone endpoint, 60 per pagina | 8.000 gedeeld door 60 is 133,3 | 134 | 2,7% |
| Sync-endpoint, 1.000 per pagina | 8.000 gedeeld door 1.000 | 8 | 0,2% |
Met 60 verzoeken per minuut duurt de eerste route ruim twee minuten. Een dry run is dus goedkoop genoeg om te herhalen: na elke correctie in de bron of in een regel draait hij opnieuw, tot de lijst klopt. Hoe je zo'n som voor je eigen aantallen maakt staat in doorvoer berekenen.
Wat test een dry run niet?
Een dry run schrijft niet, dus het doel krijgt geen kans om iets te weigeren. Drie dingen blijven ongetest.
De validatie van het doel. Een verplicht veld dat leeg is, een bedrijfsnaam die langer is dan het naamveld van de vervoerder toelaat, bijvoorbeeld 35 tekens, een btw-code die in de administratie niet bestaat. Het doel meldt dat pas bij het schrijven.
De limiet op schrijven. 561 wijzigingen die elk één verzoek kosten, duren bij 60 verzoeken per minuut 9 minuten en 21 seconden. Bij 5.610 wijzigingen is dat ruim anderhalf uur, en dan telt mee wat er in die tijd nog meer naar hetzelfde systeem moet.
De tijd tussen lezen en schrijven. De voorraad die de koppeling om 09:45 las, kan om 09:46 door een verkoop zijn veranderd. Shopify heeft daar een controle voor in de aanroep zelf: inventorySetQuantities schrijft alleen als de opgeslagen hoeveelheid gelijk is aan de meegegeven changeFromQuantity, en geeft anders de fout CHANGE_FROM_QUANTITY_STALE terug.
De eerste echte run is daarom klein: één artikelgroep, bijvoorbeeld 50 artikelen. Dat zijn 50 schrijfacties die elk worden teruggelezen en vergeleken met de verschillenlijst. Weigert het doel er 2, dan zijn dat twee regels om aan te passen in plaats van 320 op 8.000 artikelen bij hetzelfde percentage.
Wat komt er na de dry run?
Na de dry run schrijft de koppeling, en hoeveel hij zelfstandig mag schrijven is een instelling per stroom of per leverancier.
| Stand | Wat de koppeling doet | Voorbeeld |
|---|---|---|
| Dry run | rekent alles door en schrijft niets | de eerste run over 8.000 artikelen |
| Goedkeuring | zet wijzigingen klaar en schrijft na akkoord | de eerste bestanden van een nieuwe leverancier |
| Automatisch met drempel | schrijft direct en houdt uitschieters vast | een prijsdaling van meer dan 30% wacht op akkoord |
| Uitsluiting | slaat het artikel over | artikel 10510 met een actieprijs tot 31 oktober |
| Override | houdt een eigen waarde vast | een levertijd die je zelf op 3 werkdagen hebt gezet |
Artikel 10517 uit de verschillenlijst wordt in de derde stand niet geschreven: een daling van 99% ligt boven de drempel van 30% en wacht op akkoord.
De dry run blijft daarna in gebruik. Gaat de buffer van 2 naar 5 stuks, dan rekent de koppeling die regel eerst droog door. Van de 8.000 artikelen hebben er 640 een vrije voorraad van 5 of minder, en 210 daarvan stonden met de oude buffer al op nul. De nieuwe regel haalt dus 430 artikelen extra uit de verkoop. Dat getal wil je kennen voordat de regel aan staat.
Wat betekent dit voor je koppeling?
Een koppeling die wij bouwen draait eerst als dry run op je eigen gegevens. De verschillenlijst staat in het dashboard, en wat erin opvalt lossen we op in de bron of in de regel voordat er iets wordt geschreven. Daarna kies je per stroom of wijzigingen op goedkeuring wachten of direct doorgaan, welke artikelen zijn uitgesloten en welke waarden je zelf vasthoudt. Na elke run staat er per artikel wat er is gewijzigd, van welke waarde naar welke.
Hoe dat per stroom is ingericht staat op dry run en goedkeuring, en het overzicht van alle stromen op koppelingen tussen je webshop en de systemen erachter. Vertel welke systemen je gebruikt, dan hoor je wat een eerste dry run bij jou zou lezen.
Veelgestelde vragen
Wat is het verschil tussen een dry run en een testomgeving?
Een testomgeving is een aparte kopie van een systeem waarin je mag schrijven zonder gevolgen. Een dry run draait tegen de echte systemen en schrijft niet. In de testomgeving zie je of een aanroep technisch werkt, in de dry run zie je wat jouw 8.000 artikelen of 700 orders met de regels doen. Een koppeling gaat door allebei.
Merkt mijn webshop iets van een dry run?
Alleen leesverzoeken. Die tellen wel mee voor de rate limit van het systeem. Het lezen van 8.000 artikelen uit Exact Online in pagina's van 60 kost 134 verzoeken, 2,7% van de 5.000 per dag. Er verandert geen voorraad, geen prijs en geen order.
Hoe lang moet een dry run draaien?
Tot elke soort geval minstens één keer is langsgekomen en elk verschil in de lijst verklaard is. Voor voorraad is dat een run met een volledig leveranciersbestand en een run met een bestand waarin artikelen ontbreken. Voor orders hoort er een order met korting, een buitenlandse klant, een annulering en een creditnota bij. De maat is de lijst met gevallen, niet de kalender.
Wat gebeurt er met de fouten die de dry run vindt?
Elke fout krijgt een van twee oplossingen: de bron wordt gecorrigeerd of de regel wordt aangepast. Een artikelcode die zijn voorloopnullen kwijt is, herstel je in het bestand of de koppeling vult hem aan tot de vaste lengte. Daarna draait de dry run opnieuw, tot de groep zonder match leeg is of alleen artikelen bevat die bewust niet meedoen.
Draait een dry run ook nog nadat de koppeling live is?
Ja. Elke wijziging in een regel gaat eerst droog: een hogere buffer, een nieuwe leverancier, een andere prijslijst. De koppeling rekent de nieuwe regel door over de echte gegevens en toont wat er zou veranderen, terwijl de bestaande regel gewoon blijft schrijven.
Is meedraaien naast een oude koppeling ook een dry run?
Het is dezelfde techniek over een langere periode. De nieuwe koppeling leest dezelfde gegevens als de oude, schrijft niets en vergelijkt zijn uitkomst met wat de oude koppeling deed. Hoe dat verloopt staat in een bestaande koppeling vervangen.
Vertel wat je nodig hebt
Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.
- Je weet de prijs en de doorlooptijd voordat je iets toezegt
- Wij zoeken uit welke koppeling het werk uit handen neemt
- Wij verzorgen de bouw, hosting, bewaking en het onderhoud
- Je team krijgt minder overtypwerk en minder uitzoekwerk