DE · AT · CHAnleitung

Hängende Bestellungen und Störungen: Fehlersuche im Bestellfluss

Aktualisiert:

Gilt für: Shops, die Bestellungen automatisch an Warenwirtschaft oder ERP übergeben; Pflichten zu Rechnung und Aufbewahrung sind nicht Teil des Artikels

Kurz gesagt

Fehlt eine Bestellung in der Warenwirtschaft, prüfen Sie zuerst den Umfang: ein Vorgang, ein Zeitfenster oder alle Übertragungen seit einem Zeitpunkt. Suchen Sie dann dieselbe Bestellkennung im Shop, im Protokoll der Übergabe und im Zielsystem. Ein Antwortcode grenzt die Ursache ein; fehlt der Protokolleintrag, hat entweder kein Lauf begonnen oder die Protokollierung hat den Vorgang nicht festgehalten – prüfen Sie dann die Vollständigkeit des Protokolls und danach den Auslöser.

Das Wichtigste

  • Erste Frage ist der Umfang: ein Vorgang, ein Zeitfenster, ein Weg oder alle Übertragungen.
  • Ohne gemeinsame Kennung lassen sich fehlender und doppelter Vorgang nicht sicher auseinanderhalten.
  • Eine Anlage per POST kann denselben Auftrag zweimal erzeugen, wenn der Absender sie nach einem Abbruch vor der Antwort erneut sendet (RFC 9110 Abschnitt 9.2.2).
  • 502, 503 und 504 stehen für eine Störung auf dem Weg oder für vorübergehende Überlastung, 409 für einen Konflikt mit dem vorhandenen Stand.
  • Zeitstempel ohne Zonenangabe lassen sich zwischen zwei Systemen nicht sicher zuordnen.

Zwei Systeme können sich über einen Auftrag uneinig sein, ohne dass im Shop eine Fehlermeldung erscheint: Der Vorgang ist im Shopsystem gespeichert, während die Warenwirtschaft ihn nie erhalten hat. Ein hängender Auftrag lässt sich deshalb nicht am Shopsystem allein diagnostizieren; die Bestellbestätigung an die Kundschaft entsteht dort, bevor der Vorgang das Zielsystem erreicht. Arbeiten Sie den Weg vom Auslöser bis zur Übernahme im Ziel durch und halten Sie je Fall fest, an welcher Station er stehen geblieben ist. Den Aufbau des Ablaufs selbst behandelt Bestellabwicklung automatisieren.

Übergeben Sie Bestellungen von Hand, etwa per Export und Import, gelten die Schritte 1 bis 3 ebenfalls; einen Antwortcode gibt es dort nicht.

Was Sie vorab brauchen

  • Zugang zu den Bestelldaten im Shopsystem und zum Protokoll beider Seiten oder zum Bericht des ausführenden Dienstes
  • die Kennung, mit der die Übertragung arbeitet: Bestellnummer, Belegnummer oder ein eigener Schlüssel je Vorgang
  • den Bestellzeitpunkt mit Zeitzone und das Zeitfenster, dem der Vorgang zugeordnet wird
  • eine Beschreibung des Wegs: Auslöser (Ereignis oder Zeitplan), Stationen dazwischen (Warteschlange, Vermittler) und Zielsystem
  • ein Zielwert dafür, wie lange ein Vorgang unübertragen liegen darf
  • eine Person, die den Fall nach dem Nachziehen prüft und die Kundschaft informiert

Schritt für Schritt: Eine hängende Bestellung eingrenzen

Schritt 1: Den Umfang feststellen

Vergleichen Sie die Bestellzahl je Stunde im Shopsystem mit der im Zielsystem, nur für den betroffenen Weg. Das Ergebnis ist entweder ein einzelner Vorgang oder ein Zeitfenster, in dem mehrere fehlen. Liegt ein Zeitfenster vor, sitzt die Ursache im Weg zwischen den Systemen; betrifft es einen einzelnen Vorgang, entscheidet der Vergleich seiner Daten. Diese Zuordnung ist eine redaktionelle Einordnung, keine Messung. Ergebnis: ein Vorfall mit Zeitraum und betroffenem Weg in Ihrer Hand.

Schritt 2: Dieselbe Kennung auf beiden Seiten suchen

Suchen Sie nach der Kennung, nicht nach Name, Betrag oder Datum. Drei Ergebnisse sind möglich: Die Kennung fehlt im Zielsystem, sie kommt genau einmal vor oder sie kommt mehrfach vor. Zählen Sie zusätzlich Datensätze und Betragssumme beider Seiten: Ein fehlender und ein doppelter Vorgang über denselben Betrag lassen beide unverändert, deshalb entscheidet der Vergleich der Kennungen. Ergebnis: eine der drei Feststellungen, schriftlich notiert.

Schritt 3: Das Protokoll der Übergabe lesen

Prüfen Sie zuerst, ob das Protokoll für den Zeitraum vollständig ist. Ordnen Sie dem Vorgang dann jeden Versuch zu. Auswertbar ist das nur, wenn jeder Eintrag dieselben Felder trägt: Zeitstempel mit Zonenangabe im Format nach RFC 3339 Abschnitt 5.6, Kennung, Richtung, Antwortcode, Versuchszähler und Status. Der Antwortcode führt zur nächsten Prüfung. Führt das Protokoll keinen Eintrag zu dem Vorgang, ist für ihn entweder kein Lauf gestartet, oder die Protokollierung hat ihn nicht festgehalten: weil sie abgeschaltet war, weil Einträge verworfen oder überschrieben wurden oder weil eine Datenquelle ausgefallen ist. Für Felder, Abgleich und Alarm aller Übergaben: Fehler bei der Datensynchronisation.

Schritt 4: Den Antwortcode einordnen

Die Tabelle ordnet die Codes des HTTP-Standards der nächsten Prüfung zu.

Antwort Bedeutung nach RFC 9110 Nächste Prüfung
409 Conflict Konflikt mit dem vorhandenen Stand der Zielressource (Abschnitt 15.5.10) Vorgang im Zielsystem suchen: Liegt die Kennung schon vor?
429 Too Many Requests zu viele Anfragen in einem Zeitraum (RFC 6585, Abschnitt 4) Wartezeit aus dem Feld Retry-After einhalten
500 Internal Server Error unerwarteter Fehler des Zielservers (Abschnitt 15.6.1) Fehlerprotokoll des Zielsystems anfordern
502 Bad Gateway Vermittler hat eine ungültige Antwort erhalten (Abschnitt 15.6.3) Station zwischen den Systemen prüfen
503 Service Unavailable vorübergehende Überlast oder geplante Wartung; die Antwort kann Retry-After nennen (Abschnitte 10.2.3 und 15.6.4) Wartezeit abwarten und Versuche zählen
504 Gateway Timeout Vermittler hat keine rechtzeitige Antwort erhalten (Abschnitt 15.6.5) Zeitüberschreitung und Zielsystem prüfen
keine Antwort Eine nicht-idempotente Anfrage soll der Absender nicht automatisch wiederholen, solange er nicht weiß, dass ihre Semantik doch idempotent ist oder dass die erste Anfrage nie angekommen ist (Abschnitt 9.2.2) Erst den Stand im Zielsystem prüfen, dann wiederholen

Der Code ersetzt nicht den Blick in beide Systeme. Ein 504 sagt, dass die Antwort ausblieb; ob die Anfrage verarbeitet wurde, zeigt das Zielsystem.

Schritt 5: Wiederholung und Doppelprüfung

Eine Anfrage ist nach RFC 9110 Abschnitt 9.2.2 idempotent, wenn die beabsichtigte Wirkung mehrerer gleicher Anfragen dieselbe ist wie die einer einzelnen. PUT, DELETE und die sicheren Methoden wie GET und HEAD sind idempotent, POST ist es nicht: Trifft dieselbe Anlage zweimal ein, kann der Auftrag doppelt entstehen. Nicht-idempotente Anfragen soll ein Client nicht automatisch wiederholen, solange er nicht weiß, dass ihre Semantik doch idempotent ist oder dass die erste Anfrage nie angekommen ist (ebenfalls Abschnitt 9.2.2). Redaktionelle Empfehlung: Geben Sie jedem Vorgang einen Schlüssel mit, den das Zielsystem speichert und gegen den es jede weitere Zustellung prüft, und wiederholen Sie erst nach dieser Prüfung.

Schritt 6: Nachziehen und die Ursache abstellen

Tragen Sie den Vorgang im Zielsystem nach, wenn keine Wiederholung mehr läuft, und gleichen Sie Bestand, Rechnung und Zahlung ab, damit er nur einmal geführt wird. Informieren Sie die Kundschaft, wenn sich der Versand verzögert; die Bestellbestätigung aus dem Shop beweist nicht, dass die Warenwirtschaft den Auftrag erhalten hat: Bestellstatus und Kundenmitteilungen. Damit derselbe Fehler früher auffällt: Abgleich und Alarm nach Shop-Ausfall: Monitoring und Notfallplan.

Fehlerbaum: vom Symptom zur Ursache

Die Tabelle führt vom Symptom über die erste Prüfung zur möglichen Ursache und Behebung. Sie verkürzt die Schritte oben, wenn Sie vor einem konkreten Fall stehen.

Symptom Erste Prüfung Mögliche Ursache Behebung
Bestellung fehlt im Zielsystem, das Protokoll hat keinen Eintrag Vollständigkeit des Protokolls prüfen, dann nach der Kennung durchsuchen Kein Lauf ausgelöst (fehlender Statuswechsel, Filter, Warteschlange ohne Abnehmer) oder die Protokollierung hat den Vorgang nicht festgehalten (abgeschaltet, verworfen, überschrieben, Datenquelle ausgefallen) Auslöser und Filter prüfen, Rückstand in der Warteschlange abarbeiten, Protokollierung prüfen
Bestellung fehlt, das Protokoll zeigt 502 oder 504 Weg zwischen Shopsystem und Zielsystem prüfen Der Vermittler erreicht das Ziel nicht oder nicht rechtzeitig Verbindung und Zeitüberschreitung prüfen, Versuch nach Wegfall der Störung wiederholen
Bestellung fehlt, das Protokoll zeigt 429 oder 503 Feld Retry-After im letzten Versuch Überlast oder Wartung; der Versuch wurde verworfen, statt die genannte Wartezeit abzuwarten Wartezeit einhalten, Wiederholungen mit Zähler und Obergrenze
Bestellung fehlt im Suchfenster, das Zielsystem hat sie aber verarbeitet Zeitzone und Suchfenster vergleichen Die Systeme protokollieren in verschiedenen Zeitzonen; der Vorgang liegt außerhalb des Suchfensters Zeitstempel mit Zonenangabe vergleichen, Zeitdienst prüfen
Bestellung liegt doppelt im Zielsystem Kennung und Versuchszähler vergleichen Nach einem Abbruch erneut gesendet, das Ziel prüft keine Kennung Schlüssel je Vorgang einführen, zweiten Datensatz stornieren
Bestellung liegt im Zielsystem, aber ohne Positionen oder mit falscher Lieferadresse Nutzlast im Protokoll mit der Anzeige im Shop vergleichen Die Übertragung sendet nur einen Teil der Felder, oder ein erforderliches Feld hat sich nach einer Änderung geändert Feldumfang dokumentieren; Ablehnung wegen einer Schemaänderung sichtbar machen
Bestellung mit vielen Positionen fehlt, kleine kommen an Größe der Nutzlast im Protokoll prüfen Die Nutzlast überschreitet eine Größengrenze, oder die Verbindung bricht vor dem Ende ab Größengrenze beim Ziel erfragen, Verbindung prüfen, Prüfsumme nach RFC 9530 Abschnitt 2 einsetzen
Die Bestellung fehlt auch im Shopsystem Shopprotokoll und Zahlungsstatus prüfen Die Bestellung ist im Shop nie entstanden: abgebrochener Checkout, abgelehnte Zahlung oder doppelter Klick Liegt nicht an der Übergabe; den Vorgang im Checkout prüfen
Seit einer Änderung am Zielsystem fehlen alle neuen Bestellungen Antworten und Feldliste prüfen Das Ziel lehnt die Nutzlast wegen eines fehlenden oder geänderten Feldes ab Feldliste abgleichen, Prüfung vor der Freigabe einbauen
Bestellungen eines Kanals fehlen, die übrigen kommen an Auslöser und Konto des betroffenen Kanals prüfen Für diesen Kanal fehlt der Auslöser, ein Filter greift, oder das Konto ist gesperrt Kanalkonfiguration prüfen, Zugangsdaten erneuern

Eine Prüfsumme hilft nur, wenn beide Seiten sie auswerten; nach RFC 9530 Abschnitt 2 darf der Empfänger sie ignorieren.

Drei Grenzen der Protokollierung gehören zur Ursachensuche dazu. Ist die Protokollierung für ein System nicht eingeschaltet, gehen die Informationen verloren; reicht der Speicher nicht, können Protokolleinträge verworfen oder überschrieben werden; fällt eine Datenquelle aus, entsteht ein falsches Bild der Lage (BSI IT-Grundschutz-Kompendium, Baustein OPS.1.1.5 Protokollierung, Edition 2023, Abschnitte 2.1, 2.2 und 2.7). Derselbe Baustein verlangt synchrone Systemzeiten und ein einheitliches Datums- und Zeitformat (Anforderung A4); NIST SP 800-92 nennt in Fußnote 24 einen Zeitdienst wie NTP (RFC 5905). Die Bausteine binden nur, wenn Gesetz oder Vertrag auf sie verweisen; prüfen Sie die Protokollierung stichprobenartig nach Ihrer Protokollierungsrichtlinie (Anforderung A3).

So prüfen Sie das Ergebnis

  • Zu jedem Fall können Sie sagen, ob er im Zielsystem fehlt, einmal oder mehrfach vorliegt.
  • Für jeden fehlenden Vorgang gibt es einen Protokolleintrag mit Antwortcode oder einen belegten Grund, warum keiner existiert.
  • Jede Wiederholung trägt dieselbe Kennung wie der erste Versuch, und das Zielsystem prüft diese Kennung.
  • Nachgezogene Vorgänge sind in Bestand, Rechnung und Zahlung nur einmal vorhanden.
  • Die Zeitstempel beider Seiten tragen eine Zonenangabe und liegen innerhalb der Abweichung, die Sie zulassen.
  • Kein Versuch wurde wiederholt, ohne die im Feld Retry-After genannte Wartezeit einzuhalten.
  • Die Kundschaft des betroffenen Vorgangs hat eine Mitteilung mit Grund und neuem Termin erhalten.

Wann Sie Hilfe holen sollten

Holen Sie Unterstützung, wenn die Ursache in einem System liegt, das Sie nicht selbst betreiben, oder wenn zwischen Shop und Warenwirtschaft mehrere Stationen vermitteln. Für die Art der Anbindung führt Schnittstellen im Shop-Umfeld weiter, für die Systemauswahl Warenwirtschaft für Onlinehändler und für den Fall, dass der Weg ganz ausfällt, Shop-Ausfall: Monitoring und Notfallplan. Welche Fristen für die Aufbewahrung von Bestell- und Protokolldaten gelten, hängt von Ihrer Buchführung ab und ist nicht Teil dieses Artikels; klären Sie das mit Ihrer Steuerberatung.

Häufige Fragen

Im Shop steht die Bestellung auf bezahlt, in der Warenwirtschaft fehlt sie. Was prüfe ich zuerst?

Prüfen Sie zuerst, ob das Übergabeprotokoll für den Zeitraum vollständig ist, und suchen Sie darin die Bestellkennung. Ein Eintrag mit Antwortcode führt zur Ursache. Fehlt der Eintrag, ist für diesen Vorgang entweder kein Lauf gestartet, oder die Protokollierung hat ihn nicht festgehalten: Sie kann für den Vorgang abgeschaltet sein, Einträge können verworfen oder überschrieben worden sein, und eine Datenquelle kann ausgefallen sein (BSI IT-Grundschutz-Kompendium, Baustein OPS.1.1.5 Protokollierung, Edition 2023, Abschnitte 2.1, 2.2 und 2.7). Dann prüfen Sie den Auslöser und die Protokollierung selbst. Der Zahlungsstatus entsteht im Shop und sagt nichts darüber aus, ob die Warenwirtschaft den Auftrag erhalten hat.

Kann eine Bestellung zweimal in der Warenwirtschaft landen?

Ja. Eine nicht-idempotente Anfrage kann zweimal wirken, wenn der Absender sie nach einem Abbruch vor der Antwort wiederholt (RFC 9110 Abschnitt 9.2.2). Ein Schlüssel je Vorgang, den das Zielsystem speichert und bei jeder weiteren Zustellung prüft, verhindert den zweiten Datensatz; ohne ihn bleibt der Fall offen.

Reicht es, den fehlenden Auftrag von Hand nachzutragen?

Nur, wenn keine Wiederholung des Absenders mehr läuft. Sonst steht neben dem Nachzügler ein zweiter Datensatz. Prüfen Sie danach Bestand, Rechnung und Zahlung des Vorgangs auf doppelte Buchungen und halten Sie fest, wer wann nachgetragen hat.

Wie lange darf eine Bestellung unbearbeitet im Weg liegen?

Das legen Sie selbst fest; die für diesen Artikel geöffneten Quellen nennen dafür keinen Wert. Bemessen Sie den Zielwert daran, wann der Auftrag spätestens versandt werden soll, und melden Sie den ältesten unverarbeiteten Datensatz, sobald er älter ist. Ein Alarmweg allein genügt nicht, wenn niemand ihn abends liest.

Quellen

  1. RFC 9110: HTTP Semantics (STD 97), Juni 2022, Abschnitte 9.2.2, 10.2.3, 15.5.10, 15.6.1, 15.6.3, 15.6.4 und 15.6.5Internet Engineering Task Force (IETF) · abgerufen am
  2. RFC 9530: Digest Fields, Februar 2024, Abschnitt 2Internet Engineering Task Force (IETF) · abgerufen am
  3. RFC 3339: Date and Time on the Internet: Timestamps, Juli 2002, Abschnitt 5.6Internet Engineering Task Force (IETF) · abgerufen am
  4. RFC 6585: Additional HTTP Status Codes, April 2012, Abschnitt 4Internet Engineering Task Force (IETF) · abgerufen am
  5. RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification, Juni 2010Internet Engineering Task Force (IETF) · abgerufen am
  6. IT-Grundschutz-Kompendium, Baustein OPS.1.1.5 Protokollierung, Edition 2023 (Stand Februar 2023), Abschnitte 2.1, 2.2, 2.3 und 2.7 sowie Anforderungen A3 und A4Bundesamt für Sicherheit in der Informationstechnik (BSI) · abgerufen am
  7. NIST Special Publication 800-92: Guide to Computer Security Log Management, September 2006, Abschnitt 5.2.2 und Fußnote 24National Institute of Standards and Technology (NIST) · abgerufen am