SAP Commerce Cloud Java 21 + Spring 6 Migration: Ein Leitfaden für Entwickler
SAP Commerce Lead, Spadoom AG
Im September 2025 hat SAP das Framework-Update 2211-jdk21 für SAP Commerce Cloud veröffentlicht: Die Plattform läuft seither auf Java 21 und Spring Framework 6 (SAP Help Portal: Framework Update). Daraus folgten zwei Stichtage. Sicherheitsfixes für die auf Java 17 basierenden 2211-Updates gab es bis Ende Juni 2026. Und laut Ankündigung von SAP sind neue Builds für Java 17 nach dem 31. August 2026 gesperrt.
Beide Daten sind vorbei. Wenn Ihr Projekt umgestellt hat, hilft Ihnen dieser Leitfaden zu prüfen, was noch lauern könnte. Wenn nicht, eilt es: Ohne das Update können Sie keine Änderungen mehr bauen und deployen.
Das Update ist mehr als ein JDK-Wechsel. Spring 6 bringt den Jakarta-EE-Namespace mit, aus javax.servlet, javax.validation und javax.annotation, den Imports, die Entwickler seit fünfzehn Jahren schreiben, wird jakarta.*. Das betrifft Servlets, Filter, Validierungsannotationen, die Spring-Security-Konfiguration und potenziell jede eigene Extension. Werkzeuge erledigen den Grossteil der mechanischen Arbeit; der Rest ist echte Ingenieursarbeit.
Kurzfassung: Mit 2211-jdk21 läuft SAP Commerce Cloud auf Java 21 und Spring 6. Die Sicherheitsfixes für Java 17 endeten im Juni 2026, neue Java-17-Builds sind nach dem 31. August 2026 gesperrt. Die Migration heisst:
javax.*aufjakarta.*umstellen, Spring-Security-Konfigurationen aufSecurityFilterChainumschreiben, XML-Bean-Definitionen, Reflection und Drittbibliotheken prüfen, dann gründlich testen. OpenRewrite automatisiert den Grossteil der Namespace-Arbeit. Rechnen Sie mit zwei bis vier Wochen Migration und zwei bis drei Wochen Regressionstests.
Was sich ändert und warum
Drei Umstellungen passieren gleichzeitig. Sie hängen zusammen, brechen aber verschiedene Dinge.
Java 17 auf Java 21. Release 2211, die reine Cloud-Generation von Commerce Cloud, hat das Minimum auf Java 17 gehoben; 2211-jdk21 wechselt auf Java 21, seit September 2023 ein Release mit Langzeitsupport (OpenJDK). Java 21 bringt Virtual Threads, Pattern Matching für switch, Record Patterns und Sequenced Collections. Das meiste davon ist additiv und bricht bestehenden Code nicht. Brechen kann Code, der sich per Reflection auf JDK-Interna stützt oder auf APIs, deren Verhalten sich geändert hat.
Spring 5 auf Spring 6. Spring Framework 6 setzt Java 17 oder neuer voraus und basiert auf den Jakarta-EE-9+-APIs (Upgrade-Hinweise zu Spring Framework 6). Das ist der grosse Brocken: Spring 6 unterstützt den javax.*-Namespace nicht mehr. Erweitert Ihr Code Spring-Klassen oder implementiert er Interfaces, die javax.*-Typen referenzieren, kompiliert er nicht mehr.
Der Jakarta-Namespace. Nachdem Oracle Java EE an die Eclipse Foundation übergeben hatte, wurden die Pakete von javax.* in jakarta.* umbenannt. Eine mechanische Änderung, aber eine allgegenwärtige: jeder Import, jeder vollqualifizierte Klassenname in XML, jede String-Referenz.
Wie sich diese Plattformänderungen in die Architektur von Commerce Cloud einfügen, zeigt unser Überblick über SAP Commerce Cloud. Die weiteren Neuerungen, die SAP in diesem Jahr ausgeliefert hat, fasst der Beitrag zu den praktischen Updates vom September 2026 zusammen.
Die Zeitleiste
| Datum | Ereignis |
|---|---|
| September 2023 | Java 21 erscheint als LTS-Version |
| September 2025 | SAP veröffentlicht das Framework-Update 2211-jdk21 (Java 21, Spring 6) |
| Ende Juni 2026 | Sicherheitsfixes für die auf Java 17 basierenden 2211-Updates enden |
| 31. August 2026 | Neue Builds für Java 17 werden gesperrt |
Die meisten Commerce-Cloud-Projekte tragen Zehntausende Zeilen eigenen Java-Code in Dutzenden Extensions. Allein die Namespace-Umstellung erzeugt Tausende geänderte Dateien, und das Testen dauert länger als die Migration selbst.
Wo Sie im September 2026 stehen: Laufen Sie noch auf einer 2211-Version mit Java 17, arbeiten Sie ohne Sicherheitsfixes und können keine Änderungen mehr ausliefern. Setzen Sie die Migration an die erste Stelle Ihrer Roadmap, frieren Sie die Feature-Arbeit ein und folgen Sie dem Vorgehen weiter unten. Prüfen Sie die aktuell geltenden Regeln in der SAP-Dokumentation und beim SAP-Support, bevor Sie planen.
Checkliste der Breaking Changes
Grob nach Häufigkeit und Auswirkung geordnet.
Namespace-Migration von javax.* zu jakarta.*
Die allgegenwärtigste Änderung. Jede Referenz auf diese Pakete muss angepasst werden:
| Alt (javax.*) | Neu (jakarta.*) | Betroffener Code |
|---|---|---|
javax.servlet.* |
jakarta.servlet.* |
Filter, eigene Controller, Request/Response-Wrapper |
javax.validation.* |
jakarta.validation.* |
Bean Validation, @NotNull, @Size, eigene Validatoren |
javax.annotation.* |
jakarta.annotation.* |
@PostConstruct, @PreDestroy, @Resource |
javax.inject.* |
jakarta.inject.* |
@Inject, @Named |
javax.persistence.* |
jakarta.persistence.* |
Nur wo eigener Code JPA direkt nutzt |
javax.ws.rs.* |
jakarta.ws.rs.* |
JAX-RS-Endpunkte (falls vorhanden) |
Vorher:
import javax.servlet.http.HttpServletRequest;
import javax.annotation.PostConstruct;
import javax.validation.constraints.NotNull;
public class CustomRequestValidator {
@NotNull
private String customField;
@PostConstruct
public void init() { /* ... */ }
}
Nachher:
import jakarta.servlet.http.HttpServletRequest;
import jakarta.annotation.PostConstruct;
import jakarta.validation.constraints.NotNull;
public class CustomRequestValidator {
@NotNull
private String customField;
@PostConstruct
public void init() { /* ... */ }
}
Grösstenteils Suchen und Ersetzen, aber achten Sie auf String-Literale und XML-Dateien, in denen javax. als vollqualifizierter Name steht. OpenRewrite findet die meisten davon, ein manuelles grep den Rest.
Änderungen in Spring Security
Spring Security 6 bringt mehrere Breaking Changes, die Commerce-Cloud-Projekte betreffen. Der grösste: WebSecurityConfigurerAdapter ist weg.
Vorher (Spring Security 5):
@Configuration
@EnableWebSecurity
public class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/public/**").permitAll()
.antMatchers("/api/admin/**").hasRole("ADMIN")
.anyRequest().authenticated();
}
}
Nachher (Spring Security 6):
@Configuration
@EnableWebSecurity
public class CustomSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/public/**").permitAll()
.requestMatchers("/api/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
);
return http.build();
}
}
Die wichtigsten Änderungen:
WebSecurityConfigurerAdapterentfällt; stattdessenSecurityFilterChain-BeansauthorizeRequests()wird zuauthorizeHttpRequests()antMatchers()wird zurequestMatchers()csrf(),cors()undsessionManagement()werden über die Lambda-DSL konfiguriert- Der
SecurityContextwird nicht mehr automatisch in der Session gespeichert; die Persistenz ist explizit
Eigene Spring-Security-Konfigurationen für Storefront-Anmeldung, B2B-Login oder Backoffice-Zugriff müssen Sie von Hand umschreiben. Dasselbe gilt für Extensions, die auf dem alten Projekt Spring Security OAuth aufbauen, das 2022 sein Lebensende erreicht hat: Prüfen Sie in der SAP-Dokumentation zum Framework-Update, wie die OCC-Authentifizierung jetzt gelöst ist, bevor Sie etwas portieren.
Änderungen in Spring MVC
Spring 6 hat mehrere Muster entfernt, die in 5.x als veraltet galten:
CommonsMultipartResolverwird durchStandardServletMultipartResolverersetzt. Haben Sie einen eigenen Datei-Upload konfiguriert, passen Sie das Resolver-Bean an.- Trailing-Slash-Matching ist standardmässig deaktiviert.
/api/products/und/api/productssind jetzt verschiedene Routen. Verlassen sich Storefront oder API-Clients auf die alte Toleranz, ergänzen Sie explizite Mappings oder einen Redirect und korrigieren Sie die URLs. - Path Matching nutzt standardmässig den
PathPatternParser, der bei einigen Mustern strenger ist als derAntPathMatcher. Testen Sie eigene Controller-Mappings.
Wo eigener Code JPA oder Hibernate nutzt
SAP Commerce speichert Daten über sein eigenes Typsystem und den Service Layer, nicht über JPA. Dieser Abschnitt betrifft nur Extensions, die einen eigenen JPA- oder Hibernate-Stack mitbringen, etwa für eine separate Datenbank. Für sie bedeutet der Jakarta-Wechsel Hibernate 6 mit eigenen Änderungen:
- Sequenzbasierte ID-Generierung als Standard. Verlassen Sie sich auf Auto-Increment, setzen Sie
strategy = GenerationType.IDENTITYexplizit. - Überarbeitetes Typsystem. Eigene
UserType-Implementierungen müssen angepasst werden; das Interface hat seine generische Signatur geändert. - Geänderte
@Type-Annotation.@Type(type = "yes_no")wird zu einem Converter:
Vorher:
@Type(type = "yes_no")
private Boolean active;
Nachher:
@Convert(converter = org.hibernate.type.YesNoConverter.class)
private Boolean active;
JDK-Änderungen zwischen 17 und 21
Prüfen Sie Code und Bibliotheken auf:
java.lang.SecurityManager: seit Java 17 zur Entfernung vorgesehen (JEP 411) und standardmässig nicht nutzbar. Code, der einen installiert, scheitert zur Laufzeit.Thread.stop(),Thread.suspend(),Thread.resume(): werfen jetzt eineUnsupportedOperationException. Sie waren immer gefährlich; Code, der sie aufruft, war schon vorher kaputt.- Starke Kapselung der JDK-Interna: Reflection-Zugriffe auf interne Pakete (
sun.misc,sun.reflectund andere) scheitern, solange keine expliziten--add-opens-Flags gesetzt sind. Aktualisieren Sie lieber die Bibliothek, als Flags zu ergänzen. - Finalization: zur Entfernung vorgesehen. Ersetzen Sie
finalize()durchCleaneroder try-with-resources.
Führen Sie diese Prüfungen früh aus:
# Nutzung von SecurityManager finden
grep -rn "SecurityManager" --include="*.java" .
# Reflection-Zugriffe auf JDK-Interna finden
grep -rn "sun\.misc\|sun\.reflect\|com\.sun\.proxy" --include="*.java" .
# Entfernte Thread-Steuerungsmethoden finden
grep -rn "\.stop()\|\.suspend()\|\.resume()" --include="*.java" .
OpenRewrite: den Grossteil der Arbeit automatisieren
OpenRewrite ist ein Werkzeug für automatisiertes Refactoring, das auf dem Syntaxbaum arbeitet statt auf Text. Deshalb behandelt es Imports, vollqualifizierte Namen und Typreferenzen korrekt. Für diese Art von Migration ist es zum Standardwerkzeug geworden. Die Open-Source-Rezepte unten decken die generischen Teile für Java, Jakarta und Spring ab; ob es Commerce-spezifische Werkzeuge gibt, klären Sie in der SAP-Dokumentation zum Framework-Update.
Schritt 1: OpenRewrite-Plugin hinzufügen
SAP Commerce selbst baut mit Ant. Am einfachsten lassen Sie OpenRewrite über einen kleinen Gradle- (oder Maven-) Wrapper laufen, der auf die Quellordner Ihrer eigenen Extensions zeigt:
plugins {
id 'org.openrewrite.rewrite' version '7.3.0'
}
dependencies {
rewrite platform('org.openrewrite.recipe:rewrite-recipe-bom:3.5.0')
rewrite 'org.openrewrite.recipe:rewrite-migrate-java'
rewrite 'org.openrewrite.recipe:rewrite-spring'
}
rewrite {
activeRecipe(
'org.openrewrite.java.migrate.UpgradeToJava21',
'org.openrewrite.java.spring.framework.UpgradeSpringFramework_6_2',
'org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta'
)
}
Die Rezepte sind dokumentiert unter UpgradeToJava21, JavaxMigrationToJakarta und UpgradeSpringFramework_6_2. Verwenden Sie aktuelle Versionen von Plugin und BOM.
Schritt 2: Zuerst einen Probelauf ausführen
./gradlew rewriteDryRun
Das schreibt einen Diff-Bericht nach build/reports/rewrite/. Prüfen Sie ihn, suchen Sie nach Fehlalarmen und nach Änderungen an Dateien, die Ihnen nicht gehören.
Schritt 3: Migration anwenden
./gradlew rewriteRun
Committen Sie das Ergebnis als einzelnen Commit «Namespace-Migration», damit es sich sauber prüfen und zurücknehmen lässt.
Schritt 4: Spring-Security-Rezept separat ausführen
rewrite {
activeRecipe(
'org.openrewrite.java.spring.security6.UpgradeSpringSecurity_6_2'
)
}
Das Spring-Security-Rezept übernimmt den Wegfall des Adapters und die Umbenennungen, erzeugt aber manchmal Code, der kompiliert und trotzdem nicht der beabsichtigten Sicherheitslogik entspricht. Prüfen Sie jede sicherheitsrelevante Änderung von Hand.
Was OpenRewrite abdeckt
- Imports von
javax.*aufjakarta.* - Wegfall des Spring-Security-Adapters und Umstellung auf die Lambda-DSL
- Umbenennung von
antMatchers()inrequestMatchers() - Anpassung der Hibernate-Annotation
@Type(wo JPA genutzt wird) - Ersatz von APIs für Java 21
- Anpassung von Spring-MVC-Signaturen
Was OpenRewrite übersieht
- String-basierte Klassenreferenzen:
Class.forName("javax.servlet.Filter") - XML-Konfiguration: Spring-Bean-Definitionen in
*-spring.xmlund*-beans.xml, diejavax.*-Klassen referenzieren - Properties-Dateien:
javax.*-Referenzen in.properties-Dateien - Typladen per Reflection: dynamisches Laden von Klassen
- Eigene Annotation-Prozessoren, die
javax.*-Annotationen auswerten
Was OpenRewrite nicht reparieren kann
Hier verdienen erfahrene Entwickler ihr Geld.
Spring-XML-Konfigurationen. Commerce-Extensions definieren viele Beans in XML. OpenRewrite wandelt <bean class="javax.servlet.…">-Referenzen nicht zuverlässig um, also durchsuchen Sie jede Spring-XML-Datei:
# javax-Referenzen in Spring-XML-Configs finden
grep -rn "javax\." --include="*-spring.xml" --include="*-beans.xml" .
AOP-Muster. Pointcut-Ausdrücke in @Pointcut oder @Around sind Strings, keine Typreferenzen:
Vorher:
@Around("execution(* javax.servlet.http.HttpServlet+.do*(..))")
Nachher:
@Around("execution(* jakarta.servlet.http.HttpServlet+.do*(..))")
Code mit Reflection. Extensions, die Typen inspizieren, Beans dynamisch laden oder Proxys erzeugen, können fest codierte javax.*-Strings enthalten. Sie kompilieren und scheitern zur Laufzeit.
Drittbibliotheken. Hängt eine Extension an einem JAR, das noch nicht auf Jakarta EE umgestellt ist, aktualisieren oder ersetzen Sie es. Bridge-JARs sind bestenfalls eine Übergangslösung.
Interceptoren und Typsystem. Prüfen Sie Implementierungen von PrepareInterceptor, ValidateInterceptor und LoadInterceptor sowie jeden Code, der Validierungsannotationen oder Servlet-Typen in seinen Signaturen verwendet.
Teststrategie
Die Migration erzeugt Tausende mechanische Änderungen, zwischen denen sich einige inhaltliche verstecken. Die Teststrategie muss diese finden, ohne in der Menge unterzugehen.
Unit-Tests
Führen Sie zuerst die bestehenden Unit-Tests aus; sie sind die schnellste Rückmeldung und finden in dieser Phase mehr echte Regressionen als sorgfältige Code-Reviews. Beheben Sie zuerst Kompilierfehler (übersehene Namespace-Änderungen), dann Assertion-Fehler (Verhaltensänderungen in Spring 6).
Tests müssen typischerweise angepasst werden wegen:
- geänderter Mock-Einrichtung (die Test-APIs von Spring Security haben sich geändert)
- Änderungen an der Konfiguration des Spring-Testkontexts
- strengerem Path Matching in MVC-Tests
Integrationstests
Führen Sie die vollständige Integrationssuite auf einer lokalen Installation mit Java 21 aus:
ant alltests -Dtestclasses.packages=com.yourcompany.*
Sie zeigen, was Unit-Tests übersehen: Fehler beim Verdrahten der Beans nach dem Namespace-Wechsel, falsch konfigurierte Security-Filterketten und ClassNotFoundExceptions aus XML zur Laufzeit.
Performance-Regression
Java 21 sollte die Performance verbessern, aber prüfen Sie:
- Startzeit: Kaltstarts zwischen Java-17- und Java-21-Build vergleichen
- Speicherbedarf: Heap-Nutzung unter Last beobachten
- Durchsatz: Standard-Lasttests fahren und Antwortzeiten vergleichen
- Garbage Collection: Generational ZGC steht in Java 21 zur Verfügung; bewerten Sie ihn für latenzkritische Lasten, bevor Sie umstellen
SAP-spezifische Prüfungen
- ImpEx-Importe: prüfen, dass alle ImpEx-Dateien noch importieren, besonders solche mit Java-Klassenreferenzen
- Backoffice: eigene Typen, Editoren und Widgets auf korrekte Darstellung prüfen
- Storefront-Smoke-Tests: Warenkorb, Checkout, Zahlung, Bestellbestätigung
- OCC-API-Tests: eigene OCC-Endpunkte aufrufen und Request- und Response-Verträge prüfen, einschliesslich Authentifizierung
Migration Schritt für Schritt
Zehn Schritte, in dieser Reihenfolge.
Schritt 1: Eigenen Code inventarisieren. Eigene Extensions, Java-Zeilen, Spring-XML-Dateien und Drittabhängigkeiten zählen.
# Java-Dateien und Zeilen zählen
find . -name "*.java" -path "*/src/*" | wc -l
find . -name "*.java" -path "*/src/*" -exec cat {} \; | wc -l
# Spring-XML-Configs zählen
find . -name "*-spring.xml" -o -name "*-beans.xml" | wc -l
# Drittanbieter-JARs auflisten
find . -name "*.jar" -path "*/lib/*" | sort
Schritt 2: Migrationsbranch anlegen. Die Migration berührt Hunderte Dateien; halten Sie sie von der Feature-Arbeit getrennt.
git checkout -b migration/java21-spring6
Schritt 3: Build aktualisieren. Lokales JDK und CI auf Java 21 umstellen und commerceSuiteVersion in der manifest.json auf eine aktuelle 2211-jdk21-Version setzen.
Schritt 4: Namespace-Migration mit OpenRewrite. JavaxMigrationToJakarta und UpgradeToJava21 anwenden und committen.
Schritt 5: Spring-6-Rezepte ausführen. Die Rezepte für Spring Framework und Spring Security anwenden, separat prüfen und committen.
Schritt 6: Nachbessern, was OpenRewrite übersehen hat. Nach verbleibenden javax.-Referenzen in XML, Properties und String-Literalen suchen.
# ALLE verbleibenden javax-Referenzen finden
grep -rn "javax\." --include="*.xml" --include="*.properties" \
--include="*.java" .
Schritt 7: Kompilierfehler beheben. Bauen und jeden Fehler abarbeiten; typischerweise API-Änderungen in Spring Security, entferntes JDK-Verhalten oder veraltete Bibliotheken.
Schritt 8: Unit-Tests ausführen und Fehler beheben. Tests reparieren, die wegen API-Änderungen scheitern; nicht löschen.
Schritt 9: Integrationstests auf einer Java-21-Umgebung. Auf eine Commerce-Cloud-Staging-Umgebung mit 2211-jdk21 deployen und die vollständige Integrations- und Smoke-Test-Suite ausführen.
Schritt 10: Performance validieren und in Produktion gehen. Lasttests fahren, mit der Java-17-Baseline vergleichen und deployen.
Häufige Stolperfallen
ClassNotFoundException zur Laufzeit. Alles kompiliert, aber ein Spring-Bean scheitert beim Start, weil eine XML-Konfiguration javax.servlet.Filter noch als String referenziert. Durchsuchen Sie immer die XML-Dateien.
Spring Security lässt alles durch (oder nichts). Beim Wechsel von WebSecurityConfigurerAdapter zu SecurityFilterChain führt ein fehlendes .build() oder ein fehlendes @Configuration dazu, dass Spring auf eine Standardkonfiguration zurückfällt. Testen Sie Authentifizierung und Autorisierung explizit.
Konflikte mit Drittanbieter-JARs. Nach unserer Erfahrung kostet diese Falle die meisten Tage. Eine Bibliothek bringt ihre eigenen javax.*-Klassen mit, und nach der Migration liegen javax.servlet und jakarta.servlet gleichzeitig im Classpath. Die Folge ist eine ClassCastException zur Laufzeit: Ein jakarta.servlet.http.HttpServletRequest ist kein javax.servlet.http.HttpServletRequest, auch wenn die Methoden identisch sind. Entfernen oder aktualisieren Sie das betroffene JAR.
Klassenreferenzen in ImpEx. ImpEx-Dateien können Java-Klassen für eigene Translatoren und Import-Prozessoren referenzieren. Hängen diese Klassen an javax.*-Typen, scheitert der Import mit einer kryptischen Meldung. Prüfen Sie Ihre ImpEx-Dateien.
Unterschiedliche Versionen in der Build-Pipeline. Lokal läuft Java 21, aber die CI-Pipeline oder die manifest.json zeigt noch auf eine Java-17-Version. Lokal funktioniert alles, das Deployment scheitert. Passen Sie beides vor dem ersten Deployment an.
Die Migration auf Java 21 und Spring 6 ist mechanisch in der Art und breit im Umfang. OpenRewrite erledigt die mühsame Namespace-Arbeit zuverlässig. Was bleibt, ist sorgfältige Ingenieursarbeit: Spring Security umschreiben, XML-Konfigurationen, Reflection, Bibliotheken und gründliche Tests. Planen Sie auch grössere Plattformänderungen, deckt unsere Migrations-Checkliste für SAP Commerce den Rest des Wegs ab.
Brauchen Sie Hilfe, den Umfang in Ihrer Codebasis abzuschätzen? Nehmen Sie Kontakt auf. Wir kennen dieses Update aus unserer eigenen Commerce-Cloud-Arbeit. Wie wir mit der Plattform insgesamt arbeiten, zeigt unsere Seite zu SAP Commerce Cloud, und wenn Sie Implementierungspartner vergleichen, hilft unsere Übersicht über die besten SAP-Commerce-Cloud-Partner in der Schweiz.
Fragen Sie Spadoom
Antworten auf Basis dessen, was Spadoom auf dieser Website veröffentlicht hat, mit Links zu den Quellseiten.
Versuchen Sie eine dieser Fragen
KI-generierte Antworten. Vor Entscheidungen prüfen. Fragen werden anonym und ohne IP-Adresse gespeichert, damit wir unsere Inhalte verbessern können. Bitte geben Sie keine Personendaten ein.
SAP Commerce Cloud Implementierungspartner
Spadoom ist Ihr SAP Commerce Cloud Implementierungspartner in der Schweiz, Deutschland, Österreich und Italien. 14 Wochen Median-Go-Live. Live-Kunden in der gesamten DACH-Region.
Verwandte Artikel
SAP Commerce On-Premise nach dem 31. Juli 2026: Was sich geändert hat und Ihre vier Optionen
Die Mainstream Maintenance für SAP Commerce On-Premise endete am 31. Juli 2026. Dieser Leitfaden erklärt, was sich geändert hat, was die kundenspezifische Wartung noch abdeckt, wo die Kosten des Weiterbetriebs stecken und wie die vier realistischen Optionen bei Zeit, Risiko und Ergebnis abschneiden.
SAP Hybris End of Life: Die vollständige Migrations-Checkliste für 2026
Die Mainstream-Wartung für SAP Commerce On-Premise (früher Hybris) endete am 31. Juli 2026. Was das jetzt für Sie heisst, was von Hybris in die Commerce Cloud mitkommt und die Checkliste, mit der wir migrieren: Assessment, Architektur, Umsetzung, Go-live und die Wochen danach.
Von SAP Hybris zur Commerce Cloud in 90 Tagen: ein Migrations-Playbook
Wie eine mittelgrosse SAP-Hybris-Plattform in 90 Tagen in SAP Commerce Cloud ankommt: 30 Tage Vorbereitung, drei Sprints, Go-live. Die Methode hinter unseren schnellsten Commerce-Launches, und was jetzt zu tun ist, da die Mainstream-Wartung für On-Premise vorbei ist.