Automatische Dokumenten-Erstellung über Flow Builder schlägt fehl „Document number has already been allocated“

Hallo zusammen,

ich möchte in Shopware 6.7.7.1 gerne einen Flow bauen, sodass Lieferschein und Rechnung am besten direkt bei Bestelleingang erstellt und per Mail an den Shopbetreiber gesendet werden.

Vorher hatten wir ein Plugin dafür, welches aber leider seit dem Update auf 6.7.7.1 nicht mehr funktioniert. Auch der Plugin-Hersteller ist ratlos.

Daher wollte ich Alternativ über den Flow-Builder diese Möglichkeit erstellen, aber egal wie ich das gestalte - es werden keine Dokumente erstellt.

Fehlermeldung in der Log-Datei:

app ERROR Document number delivery_note has already been allocated. [] []

Wenn ich die Dokumente manuell erstelle funktioniert alles einwandfrei und der Nummernkreis zählt korrekt weiter.

Ich habe jetzt schon so viele verschiedene Varianten getestet. Zunächst hatte ich die Dokumentenerstellung direkt an „Order placed“ gekoppelt, dies aber wieder entfernt, da der Fehler weiterhin auftrat. Anschließend habe ich separate Flows erstellt: Für den Lieferschein einen Flow mit Trigger „Status Versand offen“, für die Rechnung Flows mit „Status Zahlung offen“ bzw. „Status Zahlung bezahlt“. Unabhängig davon, welche Kombination oder welcher Status verwendet wird, schlägt die automatische Erstellung immer mit „already allocated“ fehl.

Ich habe auch schon neue Dokumente erstellt, neue Nummernkreise mit & ohne Bezug auf den Verkaufskanal… nichts klappt.

Der Fehler tritt ausschließlich bei Flow-basierter Erstellung auf. Die Dokumente existieren nicht doppelt, die Nummernkreise sind korrekt und es sind keine doppelten Flows aktiv.

Es wirkt wie ein Race-Condition- oder Retry-Problem im Zusammenhang mit Flow Builder und Messenger/Scheduled Tasks.

Ist dieses Verhalten in Shopware 6.7.1 jemanden bekannt? Kann mir jemand helfen?

Gibt es eine empfohlene Best Practice für eine sichere automatische Dokumentenerstellung per Flow (z. B. bestimmte Trigger oder Konfigurationen)?

Liebe Grüße
Melissa

Kannst du es hier mal rekonstruieren? https://hub.shopware.com/build

Falls der Fehler ohne Plugins noch immer auftritt, dann ist es wohl ein Bug. Mir wäre bisher nichts dazu bekannt, da das viele nutzen.

Ich habe über den Link jetzt tatsächlich das Problem versucht zu rekonstruieren - hier klappt es jedoch einwandfrei. Dann werde ich mir jetzt einmal die anderen Plugins genauer ansehen und zeitweise deaktivieren.

Also ich bin ratlos. Ich habe bereits umfangreich getestet: Plugins einzeln deaktiviert, Testbestellungen durchgeführt, verschiedene Trigger geprüft – der Fehler bleibt identisch.

Der Fehler immer der gleiche: Document number delivery_note has already been allocated.

Ich habe mir die Datenbank und alles nochmal genauer angesehen und vielleicht liegt das Problem daran?

In den Protokollen tauchen im Zusammenhang mit der Dokument-Erstellung mehrere unterschiedliche version_id_hex Werte auf, z. B.:

  • 0FA91CE… (scheint die aktive Version zu sein)

  • 019CB8F0…

  • 019CB8F1…

Es wirkt so, als würde Shopware beim Auftrags-/State-Update eine Order-Version zusammenführen/mergen, während der Flow-Job (oder die Action im Flow) weiterhin mit einer nicht mehr gültigen / vorherigen Version arbeitet.

Dabei vermute ich folgenden Ablauf:

  1. Flow wird ausgelöst → Dokument-Erstellung versucht auf version_id_hex = 019CB8F0… oder 019CB8F1…

  2. Dann Fehler: „Version … existiert nicht“ / Version nicht auffindbar

  3. Danach folgt (Retry / zweiter Versuch): „Document number delivery_note has already been allocated“

Beim ersten Versuch wird die Nummernrange bereits „gezogen“/reserviert (oder ein Dokumentdatensatz teilweise angelegt), der Vorgang bricht aber wegen Version nicht vorhanden ab. Beim Retry wird die gleiche Dokumentnummer erneut verwendet/prüft Shopware gegen bereits reserviert → Fehlermeldung „already been allocated“.

Die Fehlermeldung mit “Version … existiert nicht” ist tatsächlich vorhanden, aber war gar nicht so im Fokus - dachte das liegt am Cache.

Wenn meine Vermutung richtig ist - ist die Frage was kann ich machen? Es gibt im Flowbuilder auch keine Funktion mit 30 Sekunden warten o.ä.

Was anderes fällt mir hierzu nicht mehr ein… noch Ideen?