Unsaubere Abbrüche im ShopifyCreateOrders-Step

Hallo zusammen,

es kommt leider vereinzelt immer mal wieder vor, dass sich ein Kunde an mich wendet, weil Dupletten angelegt wurden. Bei der Nachprüfung stellt sich dann immer wieder raus, dass der ShopifyCreateOrders-Step aus dem einen oder anderen Grund mit einem Fehler abgebrochen ist und der Status der vor dem Fehler bereits übertragenen Bestellungen nicht aktualisiert wurde.
Die Bereinigung von Dupletten ist immer mit massivem manuellen Nacharbeiten verbunden und im schlimmsten Fall kriegt der Kunden obendrein noch die Ware doppelt und dreifach geschickt.

Im aktuellen Fall ist der CreateOrders-Step mit folgender Fehlermeldung ausgestiegen:
Error in (Sub)-Step SpreadsheetDatastoreWriter - update successfully created orders (7) | An error has occurred. (MalformedJsonException: Unterminated string at line 1 column 8095 path $.order.line_items[1].sku | Unterminated string at line 1 column 8095

Ob der Fehler nun durch eine invalide Antwort seitens Shopify, unsaubere Eingangsdaten oder einen internes Problem bei euch verursacht wurde, ist mir da jetzt garnicht so wichtig. Wenn vor dem Fehler 15 Bestellungen erfolgreich übertragen werden, sollte es im besten Fall keine Situation geben, wo diese 15 Bestellungen im Anschluss nicht im Status „Erledigt“ im Datastore sind.
Eure Kunden verlassen sich auf diese Anbindung und erwarten berechtigterweise, dass der Schritt sauber läuft und nicht auf Grund von einem unerwarteten Sonderzeichen plötzlich Amok läuft.

Für jegliche Bemühungen zu einem robusteren Schritt wäre ich euch sehr dankbar.

Gruß
Gustav

Hallo @gustavfriedeheim,

das ist ein wichtiger Punkt den du Ansprichst, den wir in unsere Flow2Step Umgebung leider nicht so einfach in den Griff kriegen. Wir werden aber definitiv versuchen dieses Verhalten im künftigen CreateOrders GraphQL zu beachten.

Derweil haben wir zwei Sachen an dem CreateOrders 2024-04 Step angepasst.

  1. Wir haben die erlaubte Anzahl an Fehler die beim APICall auftreten dürfen von 10 auf 50 erhöht.
  2. Es gibt im Step eine neue Option temporary status. Was die Option macht? Er setzt bei der Verarbeitung der Orders als aller erstes alle Orders auf INPROCESS. Das heißt, sollte der Step unter irgendwelchen Umständen beim API Call abbrechen und die Orders somit nicht auf Error oder Success setzen, werden die Orders zumindest nicht im nächsten Run doppelt angelegt.

Natürlich behebt es nicht das Problem, ist aber zumindest Erstmal eine Lösung für den Mehraufwand die Dupletten wieder aus dem System zu entfernen.
Per Default ist die Option so eingestellt, dass die Orders auf UNPROCESS stehen bleiben.

Viele Grüße
Lukas

Hallo @synesty-Lukas,

danke schonmal für die Anpassungen. Der „temporary status“ ist ein guter Start.
Bei dem aktuell getroffenen Kunden habe ich bereits eine etwas umfassendere Lösung umgesetzt, welche anhand von den Order-Tags prüft, ob die Bestellung schon angelegt ist. Jede Bestellung hat ein eindeutiges Tag mit der externen Bestellnummer, welche den Abgleich ermöglicht.
Vielleicht könnt ihr eine ähnliche Lösung mit einer UUID pro Bestellung umsetzen, welche immer in die Tags geschrieben wird?

Gibt es irgendein ETA für den GraphQL-Step?

Gruß
Gustav