DEV Community

Aliaksandr Tsviatkou
Aliaksandr Tsviatkou

Posted on

Upgrading SAP Commerce Cloud: A Step-by-Step Migration Guide

Upgrading SAP Commerce to a new major or minor version is one of the highest-risk activities in a project's lifecycle. It touches every layer — the type system, database schema, Spring configuration, extension APIs, and storefront integration. Skipping versions amplifies the risk. Teams that stay two or three releases behind face exponentially more breaking changes, deprecated API removals, and compatibility issues when they finally upgrade.

This guide covers the complete upgrade process: planning, dependency analysis, code migration, testing, and deployment — drawn from real upgrade projects across SAP Commerce 1905 through 2211.

Upgrade Planning

Step 1: Assess the Gap

Current Version: 2105.15
Target Version:  2211.25

Gap analysis:
┌────────────────────────────────┬─────────┐
│ Category                        │ Impact  │
├────────────────────────────────┼─────────┤
│ Removed/deprecated APIs         │ HIGH    │
│ Type system changes             │ MEDIUM  │
│ Spring framework upgrade        │ HIGH    │
│ Java version change (11 → 17)   │ HIGH    │
│ Backoffice widget changes       │ MEDIUM  │
│ OCC API changes                 │ LOW     │
│ Build system changes            │ LOW     │
│ Third-party library updates     │ MEDIUM  │
└────────────────────────────────┴─────────┘
Enter fullscreen mode Exit fullscreen mode

Step 2: Read the Release Notes

For every version between your current and target, read:

  1. Release notes — new features, behavior changes
  2. Upgrade guides — mandatory migration steps
  3. Deprecated and removed API lists — code that will break
  4. Known issues — problems SAP has documented
Sources:
- help.sap.com/docs/SAP_COMMERCE → Release Information
- SAP Note search for your version range
- CCv2 compatibility matrix
Enter fullscreen mode Exit fullscreen mode

Step 3: Inventory Your Customizations

find . -name "extensioninfo.xml" -path "*/custom/*" | wc -l

# Find overridden Spring beans
grep -rn "override=\"true\"" --include="*-spring.xml" custom/

# Find overridden JSP/template files
find custom/ -name "*.jsp" -o -name "*.html" | wc -l

# Find deprecated API usage (run against deprecation list)
grep -rn "@Deprecated" --include="*.java" bin/platform/
# Cross-reference with your custom code usage
Enter fullscreen mode Exit fullscreen mode

Step 4: Estimate the Effort

Customization Level Patch Upgrade (2211.20→.25) Minor Upgrade (2205→2211) Major Skip (2105→2211)
Minimal (OOTB + config) 1-2 days 1-2 weeks 3-4 weeks
Moderate (20-30 custom extensions) 2-3 days 3-4 weeks 6-8 weeks
Heavy (50+ extensions, custom types) 1 week 6-8 weeks 3-4 months

Testing the Upgrade

Test Strategy

┌─────────────────────────────────────────────────────┐
│ Level 1: Compilation & Startup                       │
│ Platform builds, starts, and initializes             │
├─────────────────────────────────────────────────────┤
│ Level 2: Unit Tests Pass                             │
│ All existing unit tests pass without modification    │
├─────────────────────────────────────────────────────┤
│ Level 3: Integration Tests Pass                      │
│ Services, FlexibleSearch, ImpEx work correctly       │
├─────────────────────────────────────────────────────┤
│ Level 4: Functional Smoke Test                       │
│ Browse catalog, add to cart, checkout, search        │
├─────────────────────────────────────────────────────┤
│ Level 5: Full Regression                             │
│ Complete test suite including edge cases             │
├─────────────────────────────────────────────────────┤
│ Level 6: Performance Baseline                        │
│ Response times match or improve vs. old version      │
├─────────────────────────────────────────────────────┤
│ Level 7: Data Migration Validation                   │
│ Production data snapshot works with new version      │
└─────────────────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

Data Migration Testing

# 1. Take a snapshot of production data
#    (anonymized for non-production environments)

# 2. Restore to upgrade test environment

# 3. Run updatesystem against production data
ant updatesystem

# 4. Verify data integrity
# Run validation queries:
Enter fullscreen mode Exit fullscreen mode
-- Check product counts match
SELECT COUNT(*) FROM products;

-- Check no orphaned price rows
SELECT COUNT(*) FROM pricerows pr
LEFT JOIN products p ON pr.p_product = p.pk
WHERE p.pk IS NULL;

-- Check catalog versions are intact
SELECT cv.p_version, COUNT(p.pk)
FROM products p
JOIN catalogversions cv ON p.p_catalogversion = cv.pk
GROUP BY cv.p_version;
Enter fullscreen mode Exit fullscreen mode

Version-Specific Migration Notes

Upgrading to 2211 (from 2205 or earlier)

Key changes:

  • Java 17 required — update build tools, CI pipelines, Docker images
  • Spring 5.3.x — review custom Spring configurations
  • Solr 9.x — solrconfig.xml may need updates
  • Removed legacy accelerator templates — migrate to Composable Storefront
  • Improved OCC API — some endpoint signatures changed

Upgrading to 2205 (from 2105 or earlier)

Key changes:

  • Java 11 minimum — if coming from Java 8
  • Ant build changes — review custom build callbacks
  • Backoffice redesign — custom widget configurations may break
  • CronJob framework updates — verify custom CronJob implementations

Patch Upgrades (e.g., 2211.20 → 2211.25)

Lower risk but still requires testing:

  • No type system changes (usually)
  • Bug fixes and security patches
  • Possible behavior changes in edge cases
  • Always test with production data snapshot

Summary

Upgrading SAP Commerce is a project, not a task. It requires:

  1. Analysis — understand what changed between versions and how it affects your customizations
  2. Code migration — fix compilation errors, replace deprecated APIs, update configurations
  3. Type system validation — ensure database schema changes don't break existing data
  4. Comprehensive testing — from unit tests through full regression with production data
  5. Careful deployment — staged rollout with monitoring and rollback capability

The teams that upgrade regularly (every 6-12 months) spend less total effort than those who defer upgrades for years. Each version jump is smaller, the deprecated API list is shorter, and the team maintains familiarity with the upgrade process. Treat upgrades as routine maintenance, not a crisis — and they'll stay manageable.

Top comments (0)