TechnoStore — Revenue Cloud Quote-to-Cash für den DACH-Markt
End-to-End-Quote-to-Cash-Demo für B2B-Elektronik auf Salesforce Revenue Lifecycle Management, Contract Lifecycle Management und Industries CPQ — orchestriert mit MuleSoft Anypoint über zehn externe Systeme.
- Jahr
- 2025
- Rolle
- Salesforce Developer
- Technologien
- ApexRevenue Lifecycle ManagementContract Lifecycle ManagementIndustries CPQAgentforce Actions (@InvocableMethod)SAP OData v2 (CSRF, deep-insert)CAMT.053 / ISO 20022DATEV (EXTF / SKR04)Approval Processes (multi-tier)MuleSoft AnypointPlatform EventsNamed CredentialsSFDX (6 packages)Kevin O'Hara trigger frameworkOpenAPI 3.0arc42
Eckdaten
- 10 externe Systeme via MuleSoft + Apex — inkl. SAP S/4HANA (OData v2: CSRF, Deep-Insert, CloudEvents) und dem deutschen Finanz-Stack (lexoffice + DATEV EXTF/SKR04)
- Agentforce-ready Apex-Actions, Einstein-Copilot-aufrufbar (Umsatz-Summary + Zahlungserinnerungen)
- CAMT.053- / ISO-20022-Kontoauszug-Parser für SEPA-Zahlungsabgleich
- Mehrstufige Rabatt-Genehmigung (>30 % Finance Director, >50 % VP) + account-kontextbezogene Produktqualifizierung (Expression Sets)
- Integration-Health-Observability: Correlation-IDs, Fehlerklassifizierung, zweischichtige Idempotenz, Slack-Eskalation + Dashboards
- ~79 Apex-Klassen in 6 SFDX-Paketen; 33 ADRs (Nygard) + arc42-Solution-Blueprint
- 50 STAR-Einträge programmatisch nach Notion publiziert
- DACH-spezifisch: 19 % USt (Multi-Country-Fallback-Tabelle), DHL-Präferenz, DE/AT/CH-Adressparsing
Funktionen im Detail
Salesforce → Stripe, end to end
Der Payment-Flow in Anypoint Studio: Ein Salesforce Platform Event (On Invoice Payment Requested) triggert den Mule-Flow, der den Stripe-Body in DataWeave baut, eine Stripe-Checkout-Session erzeugt und die Payment-URL direkt zurück nach Salesforce schreibt. Darunter routet der stripe-webhook-flow den eingehenden Webhook nach Event-Typ. Die Konsole meldet die Anwendung als DEPLOYED — das läuft wirklich.

Der Order-Fan-out — mit eingezeichneten Fehlerpfaden
Ein Choice-Router verzweigt über die Fulfillment-Flags (physical / digital / both). Jeder Zweig ruft Sendcloud innerhalb eines Try-Scopes auf, der einen eigenen Error-Handler und einen Sendcloud-GET-Fallback besitzt; danach legt ein Retry-Scope den Salesforce-Datensatz an und ein Logger hält das Ergebnis fest. Das ist die Integrations-Observability-Schicht aus der Fallstudie — Fehlerklassifizierung, Fallbacks und Idempotenz — sichtbar statt nur behauptet.

DataWeave — wo „DHL bevorzugt“ tatsächlich steht
Die Transformation Extract Preferred Carrier in DataWeave: Sie liest die Versandarten von Sendcloud, filtert auf DHL (die DACH-Carrier-Präferenz), fällt auf die erste verfügbare Methode zurück, wenn es keine gibt, und setzt auf jedes Feld einen Default. Die Zeile in der Fallstudie, dass der DACH-Carrier bevorzugt wird, ist keine Folie — sie sind diese sechs Zeilen Code.

SAP S/4HANA — wirklich abgefragt, nicht gemockt
Der SAP-Integrations-Flow: ein GET gegen SAP S/4HANA Cloud auf Business-Partner-Datensätze, die Antwort geloggt und diagnostiziert, die Datensätze in DataWeave extrahiert und eine finale Antwort zusammengesetzt. Das ist die OData-Schicht hinter der SAP-Aussage der Fallstudie — der Flow läuft, und die Konsole meldet die gelesenen Datensätze.

Keine Secrets im Quellcode
Die Configuration XML: der Salesforce-Connector, der Webhook-HTTP-Listener und die Stripe- / Slack- / Sendcloud-Request-Configs. Jede Credential wird über einen Property-Placeholder aufgelöst — ${salesforce.password}, ${stripe.host}, ${sendcloud.secret} — nie als hartkodierter Wert. Die Secrets liegen außerhalb des Repositories: der Unterschied zwischen einer Demo und etwas, das man wirklich deployen könnte.

Das Problem
DACH-Enterprise-Salesforce-Rollen (T-Systems, Allianz Technology, Mercedes-Benz.io, BMW Group IT, SAP Industries Practice) verlangen konsequent dieselbe Kombination: Revenue Cloud + Industries CPQ auf Salesforce-Seite plus echte MuleSoft- + Payment- + Logistik- + E-Signature-Integration auf der Orchestrierungsseite. Die meisten Portfolio-Projekte zeigen eines von beiden, fast keines spiegelt deutsche Marktspezifika wie Mehrwertsteuer, DHL-Präferenz oder mehrsprachiges Adressparsing wider.
Architektur
Vertriebsmitarbeiter arbeiten mit einem account-kontextbezogenen Industries-CPQ-Katalog. Bundle-Konfiguration triggert einen asynchronen attributbasierten Pricing-Service. Bei Auftragsaktivierung fächert der OrderTriggerHandler parallel zu fünf Downstream-Systemen aus: JIRA (direkter Apex-Callout) für Bestandstickets, Slack #warehouse (Platform Event → MuleSoft) für Kommissionierung, DocuSign (Apex + Named Credential) für die Vertragsdose, Stripe (MuleSoft Outbound) für Zahlung und eine gebrandete Rechnungs-Mail. Der Stripe-Webhook trifft MuleSoft, wird HMAC-SHA256 verifiziert und streut zurück nach Salesforce (Status Paid), Slack #payments-team und einen Choice-Router für Fulfilment — Sendcloud/DHL für physische Ware, Lizenzschlüssel-Generierung für digitale. Der DocuSign-Connect-Webhook landet auf einer Salesforce Site, publiziert ein Platform Event, um die Guest-User-FLS-Limits zu umgehen, und ein Autolaunched Flow erstellt das Asset. Querschnittlich fädelt eine Integration-Health-Schicht Correlation-IDs von Salesforce → MuleSoft → Provider, klassifiziert Fehler (Auth / Validierung / Timeout / Downstream), eskaliert 5xx nach Slack und erzwingt zweischichtige Idempotenz; Umsatz- und Zahlungserinnerungs-Logik ist zudem als Agentforce-ready Apex-Actions (Einstein-Copilot-aufrufbar) verfügbar.
Der Ansatz
Der Code ist in sechs SFDX-Pakete aufgeteilt (force-app + controllers + services + handlers + actions + tests), sodass Architekturgrenzen schon auf Dateisystem-Ebene sichtbar sind — eine Service-Klasse, die ApexPages aufruft, fiele im Code-Review sofort auf. Alle Trigger erben vom Kevin-O'Hara-TriggerHandler mit Rekursionsschutz und Bypass-Mechanismus. Jeder externe Aufruf nutzt eine Named Credential und ist in einen idempotenten Service verpackt: Der Stripe-Webhook prüft Order.Status vor dem Mutieren, DocuSign nutzt eine Platform-Event-Indirektion für den Guest-User-Kontext, JIRA bleibt im direkten Apex, weil der Flow synchron und volumenarm ist — während Stripe über Mule geht wegen Retry und Queueing. Die 50-teilige Notion-Doku ist selbst Feature: NotionPublishService.publishEnterprise() orchestriert sechs API-Calls pro Eintrag, um Notions Zwei-Ebenen-Nesting-Limit zu umgehen.
Das Ergebnis
Eine zusammenhängende zwölfminütige Quote-to-Cash-Story über zehn externe Systeme, bereit sowohl für Portfolio-Interviews als auch für kundennahe Lösungsgespräche. Dokumentiert als 33 Architecture Decision Records im Nygard-Format, arc42-Solution-Blueprint, OpenAPI-3.0-Specs für eingehende Webhooks und eine 17-Request-Postman-Collection. Gemessene End-to-End-Latenz: 2–6 Sekunden. Die DACH-Ausrichtung — Mehrwertsteuer-Formeln, DHL-Präferenz, DE/AT/CH-Adressparsing — ist das Detaillevel, das deutsche Enterprises erwarten, nicht generisches Salesforce-Wissen.
Externe Integrationen
StripeCheckout + webhook with HMAC-SHA256 verification
Sendcloud / DHLv3 API, DACH carrier prioritised
DocuSignEnvelope creation + Connect webhook
JIRA CloudAuto-ticket on inventory shortage
SlackTwo channels: #warehouse + #payments-team
NotionProgrammatic 50-entry portfolio publishing
MuleSoft AnypointOrchestration layer for the whole flow
SAP S/4HANAATP check, sales-order acknowledgment, tax determination, CAMT.053 reconciliation, master-data sync — a seven-phase layer
Twilio WhatsAppCustomer notifications over WhatsApp Business
lexofficeGerman cloud accounting — automated invoice (Rechnung) creation
DATEVDATEV-konform Buchungsstapel (SKR04, EXTF 700) export for the Steuerberater