PunchOut-Grundlagen
Was ist PunchOut?
PunchOut ist eine B2B-E-Commerce-Technologie, die es Einkäufern ermöglicht, direkt aus ihrem Beschaffungssystem (ERP, eProcurement) heraus auf den Katalog eines Lieferanten zuzugreifen und Bestellungen zu tätigen.
graph LR
A[ERP-System] --> B[PunchOut-Session]
B --> C[Lieferanten-Shop]
C --> D[Warenkorb]
D --> E[Transfer zurück]
E --> A
Warum PunchOut?
Traditioneller B2B-Einkauf
❌ Manuelle Bestellprozesse
❌ Doppelte Dateneingabe
❌ Fehleranfällig
❌ Keine Echtzeit-Preise
❌ Komplexe Freigabeprozesse
Mit PunchOut
✅ Automatisierte Prozesse
✅ Single Source of Truth
✅ Fehlerminimierung
✅ Live-Preise & Verfügbarkeit
✅ Integrierte Freigaben
Kernkonzepte
1. Session-basiert
PunchOut arbeitet mit temporären Sessions:
- Initiierung: ERP startet Session beim Lieferanten
- Shopping: Käufer browst und wählt Produkte
- Transfer: Warenkorb wird ans ERP zurückgesendet
- Abschluss: Session wird beendet
2. Round-Trip-Prinzip
ERP → Shop → ERP
Der komplette Einkaufsprozess ist ein geschlossener Kreislauf.
3. Protokoll-agnostisch
PunchOut unterstützt verschiedene Standards:
- cXML (Commerce eXtensible Markup Language)
- OCI (Open Catalog Interface)
- Proprietary (Kundenspezifisch)
Der PunchOut-Workflow
Schritt 1: Setup Request
Das ERP-System sendet eine Anfrage zur Session-Initialisierung:
<PunchOutSetupRequest operation="create">
<BuyerCookie>UNIQUE_SESSION_ID</BuyerCookie>
<BrowserFormPost>
<URL>https://erp.company.com/return</URL>
</BrowserFormPost>
</PunchOutSetupRequest>
Schritt 2: Setup Response
Der Shop antwortet mit einer Session-URL:
<PunchOutSetupResponse>
<StartPage>
<URL>https://shop.vendor.com/punchout/session/ABC123</URL>
</StartPage>
</PunchOutSetupResponse>
Schritt 3: Shopping Experience
Der Käufer wird zum Shop weitergeleitet und kann:
- Produkte suchen und filtern
- Artikel in den Warenkorb legen
- Konfigurationen vornehmen
- Preise einsehen (kundenspezifisch)
Schritt 4: Cart Transfer
Nach Abschluss wird der Warenkorb zurückübertragen:
<PunchOutOrderMessage>
<ItemIn quantity="5">
<ItemID>
<SupplierPartID>WIDGET-001</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">99.99</Money>
</UnitPrice>
<Description>Premium Widget</Description>
</ItemDetail>
</ItemIn>
</PunchOutOrderMessage>
PunchOut vs. Alternativen
PunchOut vs. EDI
| Aspekt | PunchOut | EDI |
|---|---|---|
| Interaktivität | ✅ Voll interaktiv | ❌ Batch-basiert |
| Produktauswahl | ✅ Live-Browsing | ❌ Vordefinierte Artikel |
| Implementierung | ✅ Schnell (Tage) | ❌ Aufwendig (Wochen) |
| Flexibilität | ✅ Hoch | ❌ Starr |
| Kosten | ✅ Niedrig | ❌ Hoch |
PunchOut vs. Katalog-Upload
| Aspekt | PunchOut | Katalog-Upload |
|---|---|---|
| Aktualität | ✅ Echtzeit | ❌ Periodisch |
| Wartung | ✅ Automatisch | ❌ Manuell |
| Preise | ✅ Kundenspezifisch | ❌ Statisch |
| Konfiguration | ✅ Möglich | ❌ Limitiert |
| Multimedia | ✅ Vollständig | ❌ Begrenzt |
Technische Standards
cXML (Commerce XML)
- Version: 1.2.014 (aktuell)
- Entwickler: Ariba (SAP)
- Verbreitung: Global, besonders USA
- Format: XML-basiert
cXML-Struktur
<cXML>
<Header>
<From><!-- Absender --></From>
<To><!-- Empfänger --></To>
<Sender><!-- Authentifizierung --></Sender>
</Header>
<Request>
<!-- Request-Payload -->
</Request>
</cXML>
OCI (Open Catalog Interface)
- Version: 5.0
- Entwickler: SAP
- Verbreitung: Europa, besonders DACH
- Format: URL-Parameter / Form-Post
OCI-Parameter
HOOK_URL=https://erp.com/return
NEW_ITEM-DESCRIPTION[1]=Product Name
NEW_ITEM-QUANTITY[1]=5
NEW_ITEM-UNIT[1]=PCE
NEW_ITEM-PRICE[1]=99.99
NEW_ITEM-CURRENCY[1]=EUR
Authentifizierung & Sicherheit
Shared Secret
Beide Parteien teilen ein gemeinsames Geheimnis:
<SharedSecret>SecurePassword123</SharedSecret>
Digital Signatures
Nachrichten können digital signiert werden:
<ds:Signature>
<ds:SignedInfo>
<ds:SignatureMethod Algorithm="SHA256"/>
</ds:SignedInfo>
<ds:SignatureValue>...</ds:SignatureValue>
</ds:Signature>
Session-Token
Temporäre Token für Session-Management:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Datenfelder & Mapping
Pflichtfelder
- Artikelnummer (SupplierPartID)
- Beschreibung (Description)
- Menge (Quantity)
- Preis (UnitPrice)
- Währung (Currency)
Optionale Felder
- Herstellernummer (ManufacturerPartID)
- UNSPSC-Code (Classification)
- Lieferzeit (LeadTime)
- Mindestbestellmenge (MinQuantity)
- Verpackungseinheit (PackageQuantity)
Custom Fields (Extrinsics)
<Extrinsic name="ProjectCode">PR-2024-001</Extrinsic>
<Extrinsic name="CostCenter">IT-Department</Extrinsic>
<Extrinsic name="DeliveryLocation">Building A</Extrinsic>
Fehlerbehandlung
HTTP Status Codes
- 200: Erfolgreiche Verarbeitung
- 400: Ungültige Anfrage
- 401: Authentifizierung fehlgeschlagen
- 500: Serverfehler
cXML Status Codes
<Status code="200" text="Success"/>
<Status code="401" text="Invalid Credentials"/>
<Status code="406" text="Not Acceptable"/>
Retry-Strategie
const retryWithBackoff = async (fn, retries = 3) => {
try {
return await fn();
} catch (error) {
if (retries === 0) throw error;
await new Promise(r => setTimeout(r, 2 ** (3 - retries) * 1000));
return retryWithBackoff(fn, retries - 1);
}
};
Best Practices
1. Session-Management
- Timeout: 30-60 Minuten Standard
- Verlängerung: Bei Aktivität automatisch
- Cleanup: Alte Sessions regelmäßig löschen
2. Caching
- Produktdaten: 5-15 Minuten
- Preise: Nicht cachen (kundenspezifisch)
- Kategorien: 1 Stunde
3. Logging
// Vollständiges Request/Response Logging
logger.info('PunchOut Request', {
session_id: session.id,
protocol: 'cxml',
operation: 'create',
buyer: buyer_email,
timestamp: new Date().toISOString(),
request_body: sanitize(request)
});
4. Validierung
- XML-Schema-Validierung für cXML
- Parameter-Prüfung für OCI
- Business-Logik-Validierung
Häufige Use Cases
1. Direktkauf
Käufer bestellt direkt aus dem ERP:
ERP → Shop → Warenkorb → ERP → Bestellung
2. Angebotsanfrage
Käufer erstellt Angebotsanfrage:
ERP → Shop → Warenkorb → ERP → RFQ
3. Rahmenvertrag
Vorverhandelte Preise und Konditionen:
ERP → Shop (mit Contract-ID) → Spezialpreise → ERP
Integration in bestehende Systeme
ERP-Systeme
- SAP Ariba
- SAP SRM
- Oracle iProcurement
- Coupa
- JAGGAER
Shop-Systeme
- Shopware
- WooCommerce
- Magento
- Shopify
- PrestaShop
Middleware
- PunchFlow (unsere Lösung)
- Tradecentric
- Vurbis
- PunchOut2Go
Metriken & KPIs
Performance
- Session-Erstellung: < 2 Sekunden
- Seitenladezeit: < 3 Sekunden
- Transfer-Zeit: < 5 Sekunden
Business
- Conversion Rate: Sessions zu Bestellungen
- Average Order Value: Durchschnittlicher Warenwert
- Cart Abandonment: Abgebrochene Sessions
Technisch
- Uptime: > 99.9%
- Error Rate: < 0.1%
- Response Time: P95 < 1 Sekunde
Zukunft von PunchOut
Level 2 PunchOut
- Erweiterte Konfiguration
- Komplexe Produkte
- Service-Integration
API-First Ansatz
- RESTful APIs statt XML
- GraphQL für flexible Queries
- WebSockets für Echtzeit-Updates
AI & Automation
- Intelligente Produktvorschläge
- Automatische Nachbestellungen
- Predictive Ordering
Glossar
| Begriff | Definition |
|---|---|
| BuyerCookie | Eindeutige Session-ID vom ERP |
| SupplierPartID | Artikelnummer des Lieferanten |
| UNSPSC | United Nations Standard Products and Services Code |
| Extrinsic | Kundenspezifisches Datenfeld |
| Round-Trip | Vollständiger PunchOut-Zyklus |
| cXML | Commerce eXtensible Markup Language |
| OCI | Open Catalog Interface |