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 │
└────────────────────────────────┴─────────┘
Step 2: Read the Release Notes
For every version between your current and target, read:
- Release notes — new features, behavior changes
- Upgrade guides — mandatory migration steps
- Deprecated and removed API lists — code that will break
- 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
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
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 │
└─────────────────────────────────────────────────────┘
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:
-- 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;
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:
- Analysis — understand what changed between versions and how it affects your customizations
- Code migration — fix compilation errors, replace deprecated APIs, update configurations
- Type system validation — ensure database schema changes don't break existing data
- Comprehensive testing — from unit tests through full regression with production data
- 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)