Hver eneste forhandler vi møter, har den samme historien: nettbutikken solgte tre enheter av noe lageret hadde null av, en sint kunde-e-post fulgte, og noen erklærte integrasjonen «ødelagt». Som regel er den ikke det. Den gjør nøyaktig det den er designet for å gjøre - synkronisere lagerbeholdning hvert 15. minutt - og det er designet som er problemet.
Oversalg er et spørsmål om konsistens
Lagersynkronisering befinner seg på et spekter mellom to kostnader:
- Synkroniser for sjelden, og du selger det du ikke har.
- Reserver i sanntid, og du betaler for det - i ERP-API-belastning, i ventetid ved utsjekk, og i teknisk kompleksitet.
Feilen er å velge ett punkt på det spekteret for hele katalogen. En forhandler med 40 000 SKU-er har kanskje 200 som noensinne kommer i nærheten av oversalg - hurtigselgere, kampanjevarer, utsalg av siste enhet. De fortjener sanntidsreservasjon ved utsjekk. De andre 39 800 er det fullt tilstrekkelig å betjene med en batch-flyt hvert 15. minutt.
Tre-nivå-modellen vi leverer
- Batch-nivå - standarden. Lagernivåer flyter ERP → nettbutikk på et fast skjema. Billig, robust, fint for alt med god lagerdybde.
- Terskelnivå - når beholdningen faller under en konfigurerbar grense, blir SKU-en automatisk forfremmet til hendelsesdrevne oppdateringer.
- Reservasjonsnivå - utsjekk legger inn en fast reservasjon i ERP-en før ordren bekreftes. Forbeholdt et lite antall SKU-er der et oversalg koster mer enn API-kallene.
Forfremmelsen mellom nivåene er automatisk og datadrevet - integrasjonen overvåker sin egen feilrate og justerer seg selv. Seks måneder etter at dette ble levert til et baltisk handelskonsern, gikk oversalg fra en ukentlig hendelseskanal til to tilfeller i kvartalet, og begge viste seg å være lagerbeholdninger rettet for hånd på lageret - en registreringsfeil ved kilden, ikke en feil i synkroniseringen.
Design integrasjonen rundt kostnaden av å ta feil, så følger arkitekturen av seg selv.