Title: SAP Commerce Migration | Commerce Cloud Integrations
Source: https://www.commercecloudintegrations.com/migrations
Publisher: Commerce Cloud Integrations

# 2211 upgrades and CCv2 migrations

We move Hybris estates from 6.x, 1905, or your own servers onto 2211-jdk21 on SAP Commerce Cloud, and rehearse the cutover twice before the real night.

[Book a strategy call](https://www.commercecloudintegrations.com/contact) [Plan your route](https://www.commercecloudintegrations.com/migrations#route)

*Animation: A split-flap departure board for tonight's migration of eight data types from an on-premise Hybris 1905 estate and OneTrust to SAP Commerce Cloud. Before, media, customers, consents, and promotions arrive incomplete and the go-live moves. After CCI's reconciled load, every row arrives with sent equal to arrived and go-live stays at 06:00.*

## Your route to 2211-jdk21

Since August 31, 2026, Commerce Cloud blocks new builds on the Java 17 releases of 2211. Wherever the estate starts, the route ends on 2211-jdk21.

- From

  SAP Commerce 1905 on-premise, Accelerator

- To

  2211-jdk21 on SAP Commerce Cloud

- 8

  <!-- -->

  stops

  1. [Assess](https://www.commercecloudintegrations.com/migrations#route-stop-assess)
  2. [Upgrade](https://www.commercecloudintegrations.com/migrations#route-stop-upgrade)
  3. [Java 21](https://www.commercecloudintegrations.com/migrations#route-stop-jdk21)
  4. [CCv2](https://www.commercecloudintegrations.com/migrations#route-stop-cloud)
  5. [Data](https://www.commercecloudintegrations.com/migrations#route-stop-data)
  6. [Storefront](https://www.commercecloudintegrations.com/migrations#route-stop-storefront)
  7. [Cutover](https://www.commercecloudintegrations.com/migrations#route-stop-cutover)
  8. [Live](https://www.commercecloudintegrations.com/migrations#route-stop-after)

8 stops from SAP Commerce 1905 on-premise, Accelerator to 2211-jdk21 on SAP Commerce Cloud.

1. Assess

   ### An upgrade attempt on a copy of your code

   We lay the target platform over a copy of your repository, then build, start, and update it, one commit per fix. You get the issue list by phase and fix type, the estimate built from it, and the patch that starts the real upgrade.

   [Estimating an SAP Commerce upgrade](https://www.commercecloudintegrations.com/guides/sap-commerce-upgrade-effort-analysis)

2. Upgrade

   ### Stepping stones to 2211

   1. 1905
   2. 2005
   3. 2011
   4. 2105
   5. 2205
   6. 2211

   Every hop passes five checks before the next one starts: compile, startup, system update, a clean console log, and a storefront smoke test. When something fails, one hop caused it.

   - OCC generated from the ycommercewebservices template answers on /rest/v2 and gets none of the OCC work SAP ships in commercewebservices on /occ/v2. SAP deletes the OCC add-ons between Q3 2026 and Q1 2027, so custom endpoints move across.
   - Solr moves to 9, the only version 2211 builds with today. Your schema, solrconfig.xml, and custom plugins are re-tested on it.

   [Upgrading from 6.x to 2211, hop by hop](https://www.commercecloudintegrations.com/guides/upgrading-from-6x-to-2211)

3. Java 21

   ### Java 21 and Spring 6

   1. Java 11
   2. Java 17
   3. Java 21

   1) Spring 5
   2) Spring 6

   Every custom extension compiles and starts on the 2211-jdk21 stack: SapMachine 21, Spring 6.2, and Tomcat 10.1. Jakarta EE imports move from javax to jakarta, custom Spring Security configuration is rewritten for Spring Security 6, and OAuth clients move to the new authorization server.

   - 2211-jdk21 deletes the legacy cockpits: cmscockpit, productcockpit, and the cockpit framework. Product Cockpit work moves to Backoffice, CMS Cockpit work to SmartEdit.

   [SAP Commerce 2211 upgrade readiness](https://www.commercecloudintegrations.com/guides/sap-commerce-2211-upgrade-readiness)

4. CCv2

   ### From your servers to Commerce Cloud

   manifest.json replaces the server configuration. Azure SQL replaces your database, Blob Storage replaces the file system, Cloud Hot Folders replace the NFS and SFTP drops, and cloudmediaconversion replaces ImageMagick. Cronjobs move to the backgroundProcessing aspect, and everything in the session has to serialize.

   - 2205 is the last on-premise release, and its mainstream maintenance ended on July 31, 2026.

   [The technical gap list for CCv2](https://www.commercecloudintegrations.com/guides/migrating-to-ccv2-planning-and-assessment)

5. Data

   ### Database and media copy

   The upgraded code first runs a system update on a copy of your database, so both sides have the same schema. SAP Commerce DB Sync then copies it to Azure SQL: the large tables days ahead, the changed rows inside the cutover window. AzCopy moves the media with an MD5 hash per file, and we compare row counts per table and the hashes on both sides.

   [CCv2 data and media migration](https://www.commercecloudintegrations.com/guides/ccv2-data-and-media-migration)

6. Storefront

   ### Accelerator stays, then moves

   Accelerator has been deprecated since 2205 and gets no new features, but it still ships with 2211-jdk21. It keeps trading through the upgrade, then moves to Composable Storefront one route at a time behind a rollback gate, with cart, checkout, and account last.

   [Accelerator to Composable Storefront](https://www.commercecloudintegrations.com/guides/accelerator-to-composable-migration)

7. Cutover

   ### Cutover, rehearsed twice

   The people who run cutover night run the plan twice on a copy, timed step by step. The plan names the point of no return and the time-box for rollback, and we rehearse the rollback once for real: DNS, the integrations, and the order number series moved past the last order the new system took.

   [Testing, deployment, and rollback](https://www.commercecloudintegrations.com/guides/upgrade-execution-testing-and-deployment)

8. Live

   ### Two weeks of hypercare

   The engineers who did the upgrade take the first incidents, then hand over to your support team with the runbook and every fix written down.

## What breaks on the way to 2211

These breaks recur on estates from 6.x to the Java 17 track. We fix each one at the hop that caused it.

- ### Extensions that no longer exist

  Extensions disappear along the way, and 2211-jdk21 deletes the legacy cockpits. We remove each reference at the hop that deleted it, and check whether you used what it did.

  [The recurring failure classes](https://www.commercecloudintegrations.com/guides/upgrading-from-6x-to-2211)

  config/localextensions.xml

  ```
  Removed: <extension name="mcc"/>            <!-- deleted in 1905 -->Removed: <extension name="importcockpit"/>  <!-- deleted in 2005 -->Removed: <extension name="cmscockpit"/>     <!-- deleted in 2211-jdk21 -->
  ```

- ### Packages that moved

  The Jakarta EE packages move from javax to jakarta on the Java 21 track; Jackson and Mockito moved earlier on the path. Each fix is mechanical once you know which hop caused it.

  [Upgrading from 6.x to 2211](https://www.commercecloudintegrations.com/guides/upgrading-from-6x-to-2211)

  CheckoutController.java

  ```
  Removed: import javax.servlet.http.HttpServletRequest;Added: import jakarta.servlet.http.HttpServletRequest;Removed: import org.codehaus.jackson.map.ObjectMapper;Added: import com.fasterxml.jackson.databind.ObjectMapper;
  ```

- ### Spring 6 removed @Required

  On the 2211-jdk21 track @Required no longer compiles, along with classes such as HandlerInterceptorAdapter. We delete the annotation, keep the setter the Spring XML wires, and check the dependency at startup.

  [Code review playbook](https://www.commercecloudintegrations.com/guides/sap-commerce-code-review-playbook)

  DefaultStoreCreditFacade.java

  ```
  Removed: @Requiredpublic void setCartService(final CartService cartService) {    this.cartService = cartService;}Added: @OverrideAdded: public void afterPropertiesSet() {Added:     Assert.notNull(cartService, "cartService must be set");Added: }
  ```

- ### The password grant is gone

  The Java 21 stack replaces the oauth2 extension and supports neither the password nor the implicit grant. A storefront that posts a password to the token endpoint moves to authorization code with PKCE.

  [OIDC login for Commerce storefronts](https://www.commercecloudintegrations.com/guides/oidc-login-for-commerce-storefronts)

  OAuthClientDetails: acme\_storefront

  ```
  Removed: authorizedGrantTypes   password,refresh_tokenAdded: authorizedGrantTypes   authorization_code,refresh_tokenAdded: public                 trueAdded: requireProofKey        trueAdded: registeredRedirectUri  https://shop.acme.com/callback
  ```

- ### Dynamic attributes with no bean behind them

  A system update stops on a dynamic attribute whose handler bean is gone. We list every handler before the hop, check each bean against the target build, and remove the orphans first.

  [Type-system cleanup per hop](https://www.commercecloudintegrations.com/guides/upgrading-from-6x-to-2211)

  hAC, FlexibleSearch

  ```
  SELECT {t.code}, {ad.qualifier}, {ad.attributeHandler}FROM   {AttributeDescriptor AS ad        JOIN ComposedType AS t ON {ad.enclosingType} = {t.pk}}WHERE  {ad.attributeHandler} IS NOT NULL
  ```

- ### Cache sizes tuned for your old servers

  On Commerce Cloud node sizes differ per environment and aspect. Region caches are sized from the heap they run in, not from the hosts you had.

  [Caching and CCv2 sizing](https://www.commercecloudintegrations.com/guides/persistence-and-caching-architecture)

  local.properties → acmecore-spring.xml

  ```
  Removed: regioncache.entityregion.size=100000Added: <constructor-arg name="maxEntries"Added:     value="#{100000 * (T(java.lang.Runtime).runtime.maxMemory()Added:             / (1024 * 1024 * 1024 * 4.0))}"/>
  ```

## Fixed-scope engagements

- ### [2211 upgrade readiness](https://www.commercecloudintegrations.com/composable-storefront#/p/upg)

  A readiness check before an upgrade to 2211: extension and addon compatibility, storefront impact, integration replay, and a data migration rehearsal on a copy. The output is a report with a dated plan, or the upgrade itself as the larger scope.

  - Compatibility report for extensions and addons
  - Integration replay results
  - Data migration rehearsal on a copy

  10 to 30engineer-days

- ### [CCv2 migration](https://www.commercecloudintegrations.com/composable-storefront#/p/ccv2)

  Migration from on-premise or hosted Hybris to SAP Commerce Cloud. We produce the gap list, the data and media runbook, and a cutover rehearsed twice on a copy before the real one, with a timed rollback.

  - Technical gap list with effort
  - Data and media migration runbook
  - Cutover plan with a timed rollback

  8 to 20engineer-days

- ### [Accelerator to Composable migration](https://www.commercecloudintegrations.com/composable-storefront#/p/acc2csf)

  Migration of an Accelerator (JSP) storefront to Composable Storefront 2211. We inventory the customizations, map each page to its Composable route, and release routes one by one behind a rollback gate, so the old storefront keeps serving until each route is proven.

  - Customization inventory of the Accelerator codebase
  - Route parity map: PLP, PDP, cart, checkout, account, content
  - OCC gap list with owners
  - Release plan with per-route rollback gates

  8 to 40engineer-days

## Questions before a migration

Is 2211-jdk21 mandatory?

On Commerce Cloud, yes. Since August 31, 2026, Commerce Cloud blocks new builds on the Java 17 releases of 2211, so an estate still on them cannot deploy a fix until it moves. On-premise there is no 2211 at all: 2205 is the last release, and its mainstream maintenance ended on July 31, 2026.

[SAP Commerce 2211 upgrade readiness](https://www.commercecloudintegrations.com/guides/sap-commerce-2211-upgrade-readiness)

Can we upgrade and move to Commerce Cloud in one project?

Yes, as two workstreams that share a deadline. The upgrade comes first: the upgraded code runs a system update on a copy of your on-premise database, because DB Sync needs the same schema on both sides. Then the data moves to Commerce Cloud, with database changes frozen until go-live.

[CCv2 data and media migration](https://www.commercecloudintegrations.com/guides/ccv2-data-and-media-migration)

Do we have to leave Accelerator at the same time?

No. Accelerator has been deprecated since 2205 and gets no new features, but it still ships with 2211-jdk21. We upgrade with the storefront you have, then move it to Composable Storefront route by route, or run both projects together when the budget allows.

[Untangling a legacy Accelerator storefront](https://www.commercecloudintegrations.com/guides/modernizing-legacy-accelerator-storefronts)

What happens to feature work during the project?

Features keep shipping until the upgrade is stable. A dated window then releases the queued features on the new version. Once the data migration starts, database changes stop until go-live; a Composable Storefront, which deploys on its own, can keep shipping.

[Choosing your code freeze](https://www.commercecloudintegrations.com/guides/ccv2-data-and-media-migration)

How do you prove that no data was lost?

After every DB Sync run we compare row counts per table on both sides. AzCopy stores an MD5 hash for every media file, and the final sync compares by hash. Then we spot-check orders, customers, catalogs, and media rendering on the migrated system.

[CCv2 data and media migration](https://www.commercecloudintegrations.com/guides/ccv2-data-and-media-migration)

What if the cutover goes wrong?

The plan names a point of no return and a time-box before the night. Before that point we roll back: restore the database and media, point the integrations back, and move the order number series past the last order the new system took. We rehearse that rollback once, for real, on a copy.

[Executing an SAP Commerce upgrade](https://www.commercecloudintegrations.com/guides/upgrade-execution-testing-and-deployment)

How long does an upgrade take?

It depends on how many releases the estate skips and how much custom code crosses them, so we do not quote it from an extension count. The assessment runs the upgrade on a copy of your code, and the estimate is built from the breaks it finds, each tagged by fix type.

[Estimating an SAP Commerce upgrade](https://www.commercecloudintegrations.com/guides/sap-commerce-upgrade-effort-analysis)
