AnwendungsfallE-Commerce & Retail

Bestell-Synchronisation

Shop-Bestellungen fließen in Echtzeit ins ERP und Lager – auch an Peak-Tagen. Mit Idempotenz, Wiederholungen und lückenlosem Audit-Trail für jede Bestellung.
Beteiligte Systeme:ShopERPLagerDatenbank

Das Problem

Online-Bestellungen müssen ins ERP für die Rechnungsstellung und ins Lager für die Auslieferung. An einem normalen Tag ist das kein Problem. An einem Kampagnentag sind es tausende Bestellungen pro Minute – und jede kann scheitern, weil das ERP langsam ist, die Lager-API down ist oder die Verbindung abreißt.

Eine Bestellung zu verlieren heißt: Geld und Vertrauen verlieren. Dieselbe Bestellung zweimal zu verarbeiten ist genauso schlimm. Und sobald das Volumen anzieht, beginnt die simple „Senden und Hoffen“-Integration, die letztes Jahr noch lief, lautlos Dinge zu verlieren.

Wie dataflows das löst

dataflows behandelt jede Bestellung als durablen Workflow. Sie wird zuerst in deiner eigenen Datenbank gespeichert, geht also nie verloren. Dann wird sie ans ERP und ans Lager geschickt – mit Wiederholungen, falls eines der Systeme beschäftigt ist.

Jede Bestellung wird genau einmal verarbeitet, auch wenn der Shop den Webhook zweimal sendet. Ist das ERP down, wartet der Workflow und versucht es erneut, statt einfach zu scheitern. Ist etwas dauerhaft kaputt, landet es im Dashboard – das Team kann es beheben, ohne die Bestellung zu verlieren.

So sieht das im Code aus

// Bestell-Sync-Workflow
export const orderSync = defineWorkflow({
  id: 'order-sync',
  trigger: shop.onOrderCreated(),

  async run({ event, step }) {
    const order = event.payload

    const isNew = await step.run('persist', () =>
      db.orders.insertIfMissing(order)
    )
    if (!isNew) return { status: 'skipped' }

    await step.run('sync-erp', {
      retries: 5,
      backoff: 'exponential'
    }, () =>
      erp.createSalesOrder(order)
    )

    await step.run('sync-warehouse', () =>
      warehouse.reserveStock(order)
    )

    await step.run('mark-synced', () =>
      db.orders.update(order.id, { status: 'synced' })
    )

    return { status: 'synced' }
  }
})

Der Nutzen fürs Geschäft

Keine Bestellung geht verloren
Jede Bestellung wird zuerst in deiner eigenen Datenbank gespeichert – auch wenn alle externen Systeme ausfallen.
Genau einmal
Eingebaute Idempotenz. Doppelte Webhooks vom Shop erzeugen keine doppelten Bestellungen.
Hält Peak-Last aus
Smarte Wiederholungen und Backoff. Black-Friday-Volumen bringt die Pipeline nicht ins Wanken.

Lass uns über deinen Prozess sprechen

Erzähl uns, wo es aktuell klemmt. Wir sagen dir offen, ob und wie dataflows hilft – ohne Pitch, einfach ehrlich.