Er komt ’s nachts een leveranciersbestand binnen. De meeste rijen zien er normaal uit, bij een handvol ontbreken de identificatiecodes en bij één prijskolom is de notatie van de decimalen gewijzigd. Een pijplijn die alleen controleert of het bestand kan worden geopend, zorgt er zonder meer voor dat een gegevensprobleem uitmondt in een probleem voor de webwinkel.
Door mijn werk aan Magento-catalogi ben ik importprocessen gaan beschouwen als productiesoftware. Het belangrijkste resultaat is een betrouwbare wijziging in de catalogus, met voldoende onderbouwing om uit te leggen wat er is gebeurd als een verkoper vraagt naar een ontbrekend product.
Maak een onderscheid tussen het ontvangen van gegevens en het publiceren ervan
Ik geef de voorkeur aan een tussenopslag tussen het bronbestand en de live-catalogus. Bij ontvangst van een bestand zou er een importtaak moeten worden aangemaakt met de naam van de bron, het tijdstip van ontvangst, de checksum en de schemaversie. Zo krijgt het team een identificeerbaar object om te onderzoeken, zonder dat de download van de leverancier opnieuw hoeft te worden uitgevoerd.
In de volgende fase worden waarden genormaliseerd tot een canonieke weergave. Voor valuta, decimaalteken, maateenheden en beschikbaarheidslabels moeten expliciete regels worden vastgesteld. Een leeg voorraadveld moet een welbepaalde betekenis hebben: onbekend, ongewijzigd of nul. Die betekenissen mogen nooit per ongeluk worden bepaald door een typeconversie.
Pas na de normalisatie moet de pijplijn de voorgestelde waarden vergelijken met de huidige toestand van het product. Hierdoor kan er een wijzigingsrapport worden getoond voordat een ongewoon grote update wordt doorgevoerd.
Zorg ervoor dat de validatie aansluit bij de bedrijfsvoering
Een syntactisch geldig getal kan toch een gevaarlijke prijs zijn. Een geldige SKU kan toch naar de verkeerde variant verwijzen. Mijn validatieregels hebben daarom betrekking op verschillende aspecten.
- Identiteit: kan deze rij aan precies één product of variant worden gekoppeld?
- Structuur: zijn de verplichte velden aanwezig en correct ingevuld?
- Betekenis: worden de waarden voor valuta, eenheden en beschikbaarheid herkend?
- Omvang van de wijziging: valt de voorgestelde aanpassing binnen de bandbreedte die het bedrijf verwacht?
- Relaties: zijn er bovenliggende producten, categorieën en variantkenmerken?
Ook voor deze regels moet er actie worden ondernomen. Bij een ongeldige afbeeldings-URL kan de vorige afbeelding op zijn plaats blijven staan. Een dubbelzinnige product-ID moet ervoor zorgen dat er in die rij niets wordt gewijzigd. Een verdachte prijsdaling kan aanleiding geven tot een herziening van de gehele betrokken productfamilie.
Zet de juiste werkeenheid in quarantaine
Het afwijzen van één ongeldige rij kan beter zijn dan het afwijzen van duizenden geldige rijen die hier niets mee te maken hebben. Isolatie op rijniveau is echter niet altijd veilig. Het kan nodig zijn dat een configureerbaar product en de bijbehorende varianten als één geheel worden verplaatst; daarom moet de productfamilie als validatie-eenheid worden gebruikt.
Een quarantaine-record moet de bronrij, genormaliseerde waarden, de regel waaraan niet is voldaan en een begrijpelijke uitleg bevatten. „Validatie mislukt” leidt tot een nieuw onderzoek. „Valuta ontbreekt bij leveranciersprijs 49,95” levert iemand een hersteltaak op.
Dezelfde regel geldt voor ontbrekende rijen. Het ontbreken daarvan mag niet automatisch leiden tot het verwijderen van producten, tenzij in het feedcontract expliciet staat vermeld dat het om een volledige momentopname gaat. Gedeeltelijke feeds en incrementele feeds komen zo vaak voor dat het verwijderen ervan bewust moet gebeuren.
Ontwerp voor een tweede productieronde
Een veilige import kan worden herhaald. Ik gebruik stabiele externe identificatiecodes en vergelijk genormaliseerde waarden voordat ik ze opsla. Het opnieuw afspelen van een ongewijzigde bron zou geen onverwachte wijzigingen in de catalogus mogen opleveren, en bij een mislukte uitvoering zou het proces moeten worden hervat vanaf de opgeslagen voortgang.
Nadat ik updates heb doorgevoerd, controleer ik een voorbeeld via de storefront of de product-API. Het feit dat er gegevens naar de database zijn geschreven, betekent nog niet dat de indexering, de caching en de downstream-feeds al zijn bijgewerkt. Het uitvoeringsrapport moet een onderscheid maken tussen geaccepteerde rijen, gewijzigde producten, afgewezen groepen en werk dat nog in de downstream-processen in behandeling is.
Adobe Commerce beschrijft een validatiestap in zijn standaard importworkflow. Ik beschouw dat als één controlepunt binnen een breder proces. Leverancierscontracten, het opsporen van afwijkingen en herstel maken nog steeds deel uit van de integratie.
De operationele vraag die het importrapport voor mij moet beantwoorden, is eenvoudig: welke producten zijn gewijzigd, waarom zijn ze gewijzigd en hoe kunnen we de vorige toestand herstellen als de bron onjuist was?
Bijgewerkt op 25 september 2026.