AMS01:00
AMS01:00
AMS01:00

Online verfügbar, im Laden seit gestern ausverkauft: warum Ihr Bestand zwischen Systemen nie stimmt

Teammitglied von Flatline Agency vor einem Backsteingebäude

Von Robin Laseur

Whitepaper anfordern

Mit Ihrer Anmeldung stimmen Sie unserer Datenschutzerklärung zu

IN DIESEM ARTIKEL

Bestand zwischen Systemen nicht synchron? Es fehlt ein führendes System, kein schnellerer Sync. Warum Zahlen abweichen und wo jede gängige Lösung scheitert.

Bestand zwischen Systemen nicht synchron? Es fehlt ein führendes System, kein schnellerer Sync. Warum Zahlen abweichen und wo jede gängige Lösung scheitert.

Bestand zwischen Systemen nicht synchron? Es fehlt ein führendes System, kein schnellerer Sync. Warum Zahlen abweichen und wo jede gängige Lösung scheitert.

Vier Systeme mit unterschiedlichem Bestand für ein Produkt: Website 3, Verkaufsfläche 0, Lager 2 und Finanzen 4

Die Website zeigt drei verfügbare Stück. Im Laden ging das letzte gestern Nachmittag über den Tresen. Der Lagerexport von heute Morgen sagt zwei. Die Buchhaltung sieht im Finanzsystem eine vierte Zahl, und niemand im Raum kann sagen, welche stimmt. Die meisten Teams halten das für ein Problem bei der Dateneingabe und stellen jemanden ein, der die Zahlen sauber hält. Doch wenn der Bestand zwischen Systemen nicht synchron ist, liegt das selten an der Dateneingabe. Es liegt daran, dass jedes System seine eigene Kopie des Bestands führt und keines davon je zu dem System bestimmt wurde, das entscheidet. Schnellere Synchronisation ändert, wie schnell die Kopien auseinanderlaufen. Sie ändert nichts daran, dass sie auseinanderlaufen.

Um diesen Unterschied dreht sich der ganze Artikel. Sobald Sie Bestand als eine Zahl sehen, die mehrere Systeme jeweils nach eigenen Regeln berechnen, wirkt die tägliche Abweichung nicht mehr wie Nachlässigkeit. Sie ist dann genau das, was diese Architektur zwangsläufig hervorbringt. Wir gehen den Mechanismus hier von Anfang bis Ende durch, auch an den Stellen, an denen die üblichen Lösungen unbemerkt versagen. So können Sie einschätzen, welche davon in Ihrem Setup tatsächlich tragen und welche nur die Uhr zurückstellen, bis Sie wieder mehr verkaufen, als Sie haben.

Verfügbarer Bestand als Formel: physisch minus zugesagt und nicht verfügbar, mit Retouren und Reservierungen ohne Sync

Was „nicht synchron“ eigentlich bedeutet

Ein nicht synchroner Bestand heißt: Zwei oder mehr Plattformen führen im selben Moment unterschiedliche Mengen für dasselbe Produkt, weil jede ihren eigenen Datensatz pflegt und nach eigenem Zeitplan aktualisiert. Die Abweichung ist kein Fehler in einem einzelnen Tool. Sie ist die vorhersehbare Folge davon, dass mehrere Tools jeweils ihre eigene Kopie der Zahl für richtig halten, ohne einen gemeinsamen Datensatz, nach dem sich alle richten.

Das Wort „verfügbar“ verdeckt den Großteil des Problems. In der Praxis ist eine verkaufbare Menge fast nie eine reine physische Zählung. In Shopify zum Beispiel ist der vorrätige Bestand die physische Gesamtmenge, und verfügbar ist, was nach Abzug zugesagter und nicht verfügbarer Einheiten übrig bleibt. Verfügbar ist ein berechneter Wert, keine Tatsache, die Sie am Regal ablesen. Stellen Sie nun vier Systeme nebeneinander. Jedes berechnet seine eigene Version von „verfügbar“, aus seiner eigenen Sicht darauf, was zugesagt, reserviert, beschädigt oder unterwegs ist. Sie konnten nie auf dieselbe Zahl kommen, weil sie nicht dasselbe messen. Jedes rechnet mit einer leicht anderen Formel auf leicht anderen Eingaben.

Eine Single Source of Truth, also ein führendes System, ist das eine System, das für eine bestimmte Information den maßgeblichen Wert hält. Alle anderen Systeme lesen daraus, statt eine konkurrierende Kopie zu führen. Wenn es heißt, ein Unternehmen habe „kein führendes System für den Bestand“, ist genau das gemeint: Mehrere Systeme glauben jeweils ihrer eigenen Zahl, und das Unternehmen hat nie entschieden, welche gilt. Behalten Sie diese Definition im Kopf. Jede der folgenden Ursachen führt darauf zurück.

Ursache eins: Jedes System führt seine eigene Zählung

Beginnen wir dort, wo die Zahlen tatsächlich liegen. Eine wachsende Marke betreibt meist einen Onlineshop, ein Kassensystem, ein Lager- oder 3PL-System und eine Buchhaltungs- oder ERP-Plattform. Jedes davon erfasst Bestand, weil jedes ihn für seine Aufgabe braucht. Der Shop muss wissen, was er verkaufen kann. Das Lager muss kommissionieren und verpacken. Die Buchhaltung muss den Bestand bewerten. Keines dieser Systeme wurde dafür gebaut, vorher ein anderes um Erlaubnis zu fragen.

Ein einziger Verkauf berührt also mehrere Datensätze, die sich unabhängig voneinander aktualisieren. Ein Kunde kauft online. Der Shop verschiebt die Einheit von verfügbar zu zugesagt und senkt die verkaufbare Menge. Das Lagersystem erfährt davon erst, wenn eine Synchronisation oder ein Scan es meldet. Die Buchhaltung erfährt es erst, wenn ein Auftragsexport läuft, oft über Nacht. Minuten- oder stundenlang halten drei Systeme drei vertretbare Zahlen, und alle drei sind in sich korrekt. Die Abweichung ist kein Fehler. Sie ist die Verzögerung zwischen Datensätzen, die bewusst unabhängig voneinander angelegt wurden.

Über mehrere Kanäle hinweg verschärft sich das. Verkaufen Sie gleichzeitig im eigenen Shop und auf einem Marktplatz, greifen beide auf denselben physischen Bestand zu, während jeder Kanal seine eigene Zählung führt. Bei normalem Traffic ist die Lücke so klein, dass man sie ignorieren kann. Während einer Aktion oder eines Launches kommen Bestellungen schneller herein als jedes Sync-Intervall, und beide Kanäle verkaufen weiter auf eine Zahl, die längst aufgebraucht ist. Das ist der klassische Überverkauf, und bei der Ursache lohnt sich Genauigkeit. Die Kanäle hatten durchaus Kontakt. Sie sprachen nur mit Verzögerung miteinander, und die Nachfrage war schneller als diese Verzögerung.

Der Hebel ist hier nicht „häufiger synchronisieren“. Er liegt in der Entscheidung, welches System die echte Zahl halten darf, damit die anderen aufhören, ihre eigene durchzusetzen. Dazu kommen wir noch. Zuerst gehören zwei weitere Ursachen auf den Tisch, denn wer nur diese behebt, bleibt angreifbar.

Batch- versus eventbasierte Bestandssync: schneller verkleinert die Lücke, doch zwei Kopien können beide Ja sagen

Ursache zwei: „Synchron“ heißt nur „beim letzten Sync abgeglichen“

Die meisten Integrationen übertragen Bestand nach Zeitplan. Alle fünfzehn Minuten, jede Stunde oder über Nacht läuft ein Job, der die aktuellen Mengen zwischen den Systemen kopiert. Zwischen zwei Läufen sind die Systeme nicht synchron. Sie halten fest, worauf sie sich beim letzten Lauf geeinigt haben, während die Realität längst weiter ist. „Synchron“ ist eine Momentaufnahme, kein Live-Zustand. So lange die Lücke dauert, so lange tragen Sie das Risiko.

Die übliche Antwort lautet: Intervall verkürzen oder auf ereignisgesteuerte Updates umstellen, bei denen eine Änderung in einem System sofort eine Nachricht an die anderen auslöst. Shopify unterstützt das über Webhooks, die ein Update senden, sobald sich der Bestand oder eine Bestellung ändert. Das ist ein echter Fortschritt gegenüber zeitgesteuertem Polling. Der Wechsel von Batch zu ereignisgesteuert verkleinert das Zeitfenster, in dem Systeme voneinander abweichen, und bei vielen Marken verschwindet damit die alltägliche Version des Problems. Die Richtung stimmt.

Hier hört die Lösung allerdings unbemerkt auf, vollständig zu sein, und genau diesen Teil lassen kürzere Ratgeber aus. Auch ereignisgesteuerte Synchronisation hat ein Zeitfenster, nur ein kleines. Eine Nachricht kann durch ein API-Rate-Limit verzögert, durch einen Timeout verworfen oder in einer Retry-Warteschlange festgehalten werden, und zwar genau während der Lastspitze, in der eine stimmende Zahl am meisten zählt. Zwei Systeme können dieselbe Einheit in den wenigen Sekunden abbuchen, bevor die Nachricht ankommt. Auch die Art des Scheiterns ändert sich. Beim Batch-Sync rechnen Sie mit Verzögerung und planen darum herum. Bei ereignisgesteuerter Synchronisation gehen Sie davon aus, dass alles live stimmt, und werden kalt erwischt, wenn eine Nachricht still verloren geht und ein Kanal Bestand verkauft, der längst weg ist. Schneller ist besser. Schneller ist aber nicht dasselbe wie maßgeblich. Eine schnellere Kopie bleibt eine Kopie, und zwei Kopien können beide Ja sagen.

Ursache drei: Der Bestand ändert sich dort, wo der Sync nie hinsieht

Selbst eine schnelle, zuverlässige Integration synchronisiert nur die Ereignisse, die sie beobachtet. Bestand bewegt sich aber auch auf Wegen außerhalb des sauberen Pfads „eins verkauft, eins abziehen“. Jeder dieser Wege öffnet eine Lücke, die kein Sync-Intervall schließt, weil der Sync nie angewiesen wurde, dort hinzusehen.

Retouren sind das deutlichste Beispiel. Ein Kunde schickt einen Artikel zurück. Physisch ist er wieder da, verkaufbar wird er aber erst, wenn jemand ihn prüft, entscheidet, dass er wieder verkauft werden kann, und ihm im richtigen System den richtigen Status gibt. Bis dahin zählt ein System ihn als vorrätig, während ein anderes ihn noch als weg behandelt. Die Einheit existiert. Die Systeme sind sich uneinig, ob sie verkauft werden kann, und beide haben gute Gründe.

Reservierungen und Bestellentwürfe erzeugen dieselbe Spaltung von der anderen Seite. Wenn ein Mitarbeiter Ware für einen Kunden zurücklegt, eine Vorbestellungs-App Einheiten reserviert oder ein Bestellentwurf angelegt wird, ist dieser Bestand vergeben, ohne verkauft zu sein. In Shopify wandern diese Einheiten in den Status zugesagt oder nicht verfügbar. Die verkaufbare Menge sinkt also, obwohl nichts versendet wurde. Ein System, das nur abgeschlossene Bestellungen beobachtet, sieht die Reservierung nie und bietet weiter Bestand an, der bereits versprochen ist.

Dann ist da noch der Standort. Sobald Sie Bestand an mehr als einem Ort lagern, wird aus „wie viele haben wir“ die Frage „wie viele, und wo“. Eine Bestellung wird einem bestimmten Fulfillment-Standort zugeordnet, nicht dem Gesamtbestand des Unternehmens. Eine Einheit kann also physisch im Gebäude liegen und für einen bestimmten Kanal trotzdem nicht verkaufbar sein, weil sie woanders zugewiesen ist. Nehmen Sie Teillieferungen, Umlagerungen unterwegs und Bestand hinzu, der wegen Beschädigung oder Qualitätskontrolle als nicht verfügbar markiert ist. Dann haben Sie eine Reihe völlig legitimer Bewegungen, die ein naiver Sync auf eine einzige Zahl reduziert, die er unmöglich ehrlich halten kann. Auf dieser Ebene sammeln sich Bestandsabweichungen zwischen Kanälen unbemerkt an, und deshalb hilft eine Nachzählung heute, morgen aber schon nicht mehr.

Übersicht mit einem führenden System pro Domäne für physischen und verkaufbaren Bestand, andere Systeme nur lesend

Der eigentliche Engpass: Kein System wurde je zum führenden bestimmt

Nimmt man die drei Ursachen zusammen, wird der eigentliche Engpass sichtbar. Es ist nicht die Sync-Geschwindigkeit. Es ist, dass mehrere Systeme jeweils eine Zahl halten, die als maßgeblich gilt, und keines über den anderen steht. Es gibt kein führendes System. Wenn zwei Datensätze voneinander abweichen, entscheidet nichts in der Architektur, wer recht hat. Also entscheidet das Unternehmen, von Hand, immer wieder, meist nachdem ein Kunde die Lücke schon gefunden hat.

Deshalb fühlt sich eine Nachzählung produktiv an und ändert doch nichts. Nach der Zählung stimmen alle Systeme kurz überein. Dann ziehen die nächste Retoure, die nächste Reservierung und die nächste Bestellung, die während einer Sync-Verzögerung eingeht, sie wieder auseinander, weil die Ursache für das Auseinanderdriften noch immer da ist. Sie haben das Symptom behoben und die Ursache unberührt gelassen. Die Uhr beginnt von vorn. Das Problem war nie, dass die Zahlen falsch waren. Das Problem war, dass das Unternehmen keine Regel hatte, welche Zahl gilt, und so blieben alle im Rennen.

Ein führendes System festzulegen ist eine Architekturentscheidung, kein Softwarekauf. Und die meisten Stacks haben diese Entscheidung nie wirklich getroffen. Kaufen Sie eine Sync-App, ohne sie zu treffen, lösen Sie den Konflikt nicht. Sie automatisieren ihn. Dann haben Sie einen schnelleren Mechanismus, um die Zahl zu verbreiten, die zufällig zuletzt aktualisiert wurde, und das ist nicht dasselbe wie die Zahl, die stimmt.

Wo Eingreifen wirklich etwas bewirkt

Den größten Hebel hat genau der Schritt, den Nachzählung und schnellerer Sync beide auslassen: Legen Sie fest, welches System die maßgebliche Bestandszahl besitzt, und lassen Sie alle anderen Systeme daraus lesen, statt eine konkurrierende Kopie zu führen. Das bedeutet „Single Source of Truth“ in der Praxis. Es ist zuerst eine Frage der Zuständigkeit und erst danach eine technische.

Einige Prinzipien sorgen dafür, dass es im echten Betrieb trägt. Legen Sie die Zuständigkeit pro Datendomäne fest, nicht einmal für alles. Ein System besitzt den physisch vorrätigen Bestand, ein anderes die verkaufbare Menge pro Kanal, und die Grenze dazwischen ist ausdrücklich festgelegt statt stillschweigend angenommen. Nur der Eigentümer einer Zahl darf sie ändern, die übrigen Systeme abonnieren sie. Übertragen Sie Updates ereignisgesteuert statt nach Timer, damit die schreibgeschützten Kopien nah am tatsächlichen Stand bleiben. Und akzeptieren Sie, dass ein Abgleichprozess zum Design gehört und kein Zeichen des Scheiterns ist. Eine geplante Prüfung, die Systeme vergleicht, Abweichungen markiert und sichtbar macht, bevor ein Kunde sie bemerkt: So bleibt ein gut geführter Stack zwischen den Ereignissen ehrlich.

Das ist die Arbeit hinter dem Begriff „Unified Commerce“, und es lohnt sich, sie konkret zu sehen statt als Schlagwort. Als Flatline bei North Actionsports das separate PIM, das ERP und mehrere Onlineshops zu einem abgestimmten Ablauf verbunden hat, lag der Gewinn nicht darin, dass Daten schneller zwischen den Systemen flossen. Er lag darin, dass die Systeme aufhörten, jeweils eine eigene Version der Wahrheit zu halten, und sich einer festgelegten Rangfolge unterordneten. Das beendet die tägliche Abweichung: nicht schneller kopieren, sondern entscheiden, welche Zahl zählt.

Der erste praktische Schritt kostet nichts und schafft viel Klarheit. Erfassen Sie Ihren aktuellen Stack und notieren Sie für jedes System, welche Bestandszahl es hält und woher diese Zahl kommt. Die meisten Teams stellen innerhalb einer Stunde fest, dass drei oder vier Systeme glauben, „verfügbar“ gehöre ihnen, und keinem je gesagt wurde, sich einem anderen unterzuordnen. Diese Übersicht ist die eigentliche Diagnose. Sobald Sie sehen, welche Systeme Autorität beanspruchen, die ihnen nie übertragen wurde, ist die Frage, welches System führend sein soll, nicht mehr abstrakt. Die Antwort liegt dann auf der Hand.

Häufig gestellte Fragen

Warum zeigt mein Onlineshop einen Artikel als verfügbar, der im Laden ausverkauft ist?

Onlineshop und Kassensystem führen getrennte Zählungen und aktualisieren mit Verzögerung. Wird im Laden ein Stück verkauft, weiß der Shop davon erst, wenn ein Sync läuft oder ein Scan es meldet. In dieser Lücke zeigt die Website eine Zahl, die beim letzten Sync stimmte und inzwischen veraltet ist. Die Ursache: Beide Systeme führen ihre eigene Zählung, ohne gemeinsamen Datensatz, nach dem sich beide richten.

Verhindert Echtzeit-Synchronisation Überverkäufe vollständig?

Sie reduziert Überverkäufe deutlich, beseitigt sie aber nicht. Ereignisgesteuerte Synchronisation verkleinert das Zeitfenster, in dem Systeme abweichen, auf Sekunden. Trotzdem kann eine Nachricht durch ein Rate-Limit verzögert, durch einen Timeout verworfen oder während einer Lastspitze in einer Retry-Warteschlange aufgehalten werden. Innerhalb dieses Fensters können zwei Systeme dieselbe Einheit abbuchen. Echtzeit ist eine schnellere Kopie, kein maßgeblicher Datensatz.

Was ist eine Single Source of Truth für den Bestand?

Es ist das eine System, das dafür bestimmt ist, die maßgebliche Bestandszahl zu halten, sodass alle anderen Systeme daraus lesen, statt eine eigene Version zu führen. Es ist eine Entscheidung darüber, welcher Datensatz gilt, wenn zwei voneinander abweichen, kein bestimmtes Produkt. Ohne sie hält jedes System seine eigene Zählung für richtig, und das Unternehmen löst den Konflikt von Hand.

Behebt ein ERP Bestandsabweichungen von allein?

Ein ERP kann das führende System sein, weil es dafür gebaut ist, operative Daten zu zentralisieren. Abweichungen löst es aber nur, wenn es als das System eingerichtet wird, nach dem sich die anderen richten. Ohne diese Entscheidung in einen Stack eingefügt, wird ein ERP nur ein weiteres System mit einer eigenen Zahl. Die Lösung ist die Entscheidung über Zuständigkeit, und das ERP ist ein möglicher Ort dafür.

Warum führen Retouren immer wieder zu Bestandsabweichungen?

Ein retournierter Artikel ist physisch wieder da, aber erst verkaufbar, wenn er geprüft und im richtigen System in den richtigen Status gesetzt wurde. Bis dahin zählt ihn ein System und ein anderes nicht, und beide sind vertretbar. Retouren bewegen Bestand außerhalb des gewöhnlichen Pfads „eins verkauft, eins abziehen“. Ein Sync, der nur abgeschlossene Bestellungen beobachtet, sieht diese Änderung deshalb nie.

Das Wichtigste in Kürze

  • Ein nicht synchroner Bestand ist ein Problem der Zuständigkeit, nicht der Geschwindigkeit. Mehrere Systeme führen jeweils ihre eigene Zählung, und keines wurde zu dem System bestimmt, das entscheidet.

  • „Verfügbar“ ist eine berechnete Zahl, keine physische Tatsache. Jedes System berechnet sie aus seiner eigenen Sicht auf zugesagten, reservierten und nicht verfügbaren Bestand. Von allein konnten die Zahlen also nie übereinstimmen.

  • Schnellere und ereignisgesteuerte Synchronisation verkleinert die Lücke, schließt sie aber nie. Eine schnellere Kopie bleibt eine Kopie, und zwei Kopien können immer noch dieselbe Einheit verkaufen.

  • Retouren, Reservierungen, Bestand an mehreren Standorten und Ware unterwegs verändern den Bestand auf Wegen, die ein naiver Sync nie beobachtet. Deshalb hilft eine Nachzählung heute, morgen aber nicht mehr.

  • Der Hebel liegt darin, pro Datendomäne ein führendes System festzulegen und alle anderen Systeme daraus lesen zu lassen. Erfassen Sie zuerst, welches System heute welche Zahl besitzt. Sobald es aufgeschrieben ist, werden die Konflikte meist sofort sichtbar.

So betrachtet ist die Abweichung auf Ihrem Bildschirm kein Zeichen dafür, dass jemand beim Zählen schlampt. Sie ist ein Zeichen dafür, dass die Architektur nie entschieden hat, wessen Zahl gilt. Das Problem lässt sich lösen. Die Lösung beginnt nicht mit einem neuen Tool, sondern mit einer Entscheidung, auf die Ihre Systeme schon lange warten.

Verwandte Artikel

Nichts mehr verpassen

Mit Ihrer Anmeldung stimmen Sie unserer Datenschutzerklärung zu

Nichts mehr verpassen

Mit Ihrer Anmeldung stimmen Sie unserer Datenschutzerklärung zu

Nichts mehr verpassen

Mit Ihrer Anmeldung stimmen Sie unserer Datenschutzerklärung zu

Erzählen Sie uns von Ihrem Projekt.

Erzählen Sie uns von Ihrem Projekt.

Erzählen Sie uns von Ihrem Projekt.