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