Integration

SAP-Integration & Composable Order Flows in Magento 2

SAP‑Integration & Composable Order Flows in Magento 2

Die Kopplung von Magento 2 an SAP darf nicht aus synchronen API‑Aufrufen im Checkout bestehen. Ziel ist eine robuste, entkoppelte Architektur: Magento erfasst Bestellungen, eine Integrationsschicht liefert diese mit Garantien, Monitoring und klaren Verträgen an SAP. Im Folgenden ein praxisnahes Design für composable Order‑Flows mit hoher Zuverlässigkeit, Sicherheit und Observability.

Bestelldomäne entkoppeln

Magento ist System of Engagement (Bestellerfassung), SAP das System of Record (Fulfillment, Faktura, Finance). Vermeide blockierende "SAP anrufen"‑Schritte im Checkout. Stattdessen Bestellung speichern und Event publizieren (z. B. order.created). Eine Bridge konsumiert das Event und schreibt nach SAP. Ist SAP nicht verfügbar, schließt Magento die Order dennoch ab; die Bridge liefert später nach. So bleibt die UX stabil und Single‑Points‑of‑Failure entfallen.

Event‑Modell (minimal)

  • order.created – Bestellung in Magento angelegt
  • payment.captured – Zahlung erfolgreich (Stripe/Bank)
  • order.confirmed – SAP bestätigt Beleg
  • order.shipped – Versand mit Tracking
  • order.invoiced – Rechnung in SAP gebucht
  • order.canceled – Storno

Events laufen über Bus/Warteschlange. Nutze Korrelation (z. B. order_number) über alle Systeme für Traces/Logs.

Integrationsmuster

  • Synchrone Reads: UX‑kritische Leseaufrufe (Preis/Verfügbarkeit) erlaubt – mit Timeouts, Fallbacks und Cache.
  • Asynchrone Writes: Order‑Writes landen in einer Outbox und werden per Worker an SAP (OData/BAPI/API‑Gateway) übermittelt. Checkout niemals auf SAP‑Writes blockieren.
  • Webhooks/Callbacks: SAP‑Bestätigungen per Callback oder Polling einer Staging‑Tabelle nach Magento zurückführen.

Zuverlässigkeit: Idempotenz & Exactly‑Once

  • Outbox‑Pattern: In der Order‑Transaktion eine Outbox‑Zeile (order_number, Payload, Typ) mitschreiben; ein Worker liefert und markiert als zugestellt.
  • Idempotenz‑Key: order_number oder deterministischer Hash als Idempotenzschlüssel beim SAP‑Beleg; doppelte Requests ignorieren.
  • Inbox‑Pattern: Empfängerseitig verarbeitete Message‑IDs speichern (De‑Duplication).
  • Retries/Backoff/DLQ: Transiente Fehler mit Exponential‑Backoff; Poison‑Messages in Dead‑Letter‑Queue und späteres Replay.

Status‑Mapping (Magento ↔ SAP)

Definiere eine kanonische Abbildung und speichere SAP‑Referenzen (Belegnummer) als Order‑Attribute in Magento. Reconciliation‑Jobs gleichen Abweichungen regelmäßig aus.

  • Magento pending → SAP Beleg angelegt (offen)
  • Magento processing → SAP Bestätigt/In Bearbeitung
  • Magento complete → SAP Versandt & Fakturiert
  • Magento canceled → SAP Storniert

Fehlerbehandlung & Reconciliation

  • Fehlerklassen: 4xx (Mapping/Validierung) vs. 5xx (Transient). Nur 5xx automatisch retrien.
  • Kompensationen: Saga‑Muster für mehrstufige Flows (z. B. Zahlung voiden bei SAP‑Ablehnung).
  • Replay‑Tooling: Admin‑Tool zum gezielten erneuten Senden aus Outbox/DLQ nach Datenfix.

Sicherheit & Compliance

  • PII minimieren; nur erforderliche Felder übertragen.
  • Verschlüsselung at‑rest/in‑transit; Credentials rotieren; Tokens scopen.
  • Audit‑Trail (unveränderbar); sensible Felder in Logs maskieren.

Observability & KPIs

  • Tracing: correlation-id/order_number durch PWA → API → Outbox → SAP propagieren.
  • Metriken: Publish/Consume‑Lag, Success‑Ratio, Retry‑Anzahl, DLQ‑Größe, Time‑to‑Acknowledge (Order → SAP‑Bestätigung).
  • Logging: strukturiert mit Event‑Typ, Idempotenz‑Key, Fehlerklasse.

Rollout & Tests

  • Start im SAP‑QA/Sandbox und mit Teilmenge von Order‑Typen/Kunden.
  • Contract‑Tests für Payloads; End‑to‑End‑Tests mit Ausfall‑Simulation.
  • Feature‑Flags und manueller Export als Fallback.

Magento‑Hinweise

  • Events aus Checkout‑Services publizieren; Outbox in derselben DB‑Transaktion wie Order schreiben.
  • CLI/Cron‑Consumer mit Retries/Backoff zum Zustellen.
  • Webhook‑Endpoint für SAP‑Bestätigungen mit Validierung und Status‑Update.

Event‑getriebene, composable Order‑Flows isolieren Fehler, skalieren besser und halten den Checkout schnell. Mit Outbox/Inbox, Idempotenz und starker Observability bleiben Magento und SAP zuverlässig synchron, ohne die Kundenerfahrung an Backend‑Verfügbarkeit zu koppeln.

Vorheriger ArtikelShared Catalogs & kundenspezifische Kataloge in Magento 2 — Zugriff, Preise, Performance
Nächster ArtikelAngebotswesen in Magento 2 — Verhandlung, Berechtigungen, Workflow