This is a sample, generated by our pipeline from Adobe's public We.Retail project, not a customer. Scan your own estate · Back to site

Migration Blueprint · 19 October 2026 · draft for review

Sample Blueprint: Adobe We.Retail: AEM 6.5 to AEM as a Cloud Service

Source: github.com/Adobe-Marketing-Cloud/aem-sample-we-retail (public sample project). 1,289 files, 62 Java files, 45 components.

0/100Cloud Service readiness
7blocker types
375 hplanned effort incl. project work
$50,000fixed price (minimum)

The fixed price covers the findings and phases below. It changes only if the scope changes. It includes 25% contingency because only the code repository was analysed; adding a BPA report from the running instance lowers it.

1. What blocks Cloud Service today

SeverityFinding and fixFilesHoursAutomatable
blocker Legacy eCommerce framework
Use the Commerce Integration Framework (CIF) with a GraphQL commerce backend.
32 file(s), 13 in tests
  • /core/src/main/java/we/retail/core/WeRetailCommerceServiceFactory.java:24
  • /core/src/main/java/we/retail/core/WeRetailCommerceServiceImpl.java:33
  • /core/src/main/java/we/retail/core/WeRetailCommerceSessionImpl.java:34
  • /core/src/main/java/we/retail/core/WeRetailProductImpl.java:22
  • /core/src/main/java/we/retail/core/components/impl/CartEntryServlet.java:49
Reference: Legacy commerce
32132low
blocker AEM Communities (social) APIs
AEM Communities is not offered on Cloud Service; plan a replacement service before migrating.
3 file(s), 2 in tests
  • /core/src/main/java/we/retail/core/model/Header.java:39
  • /core/src/test/java/common/AppAemContext.java:29
  • /core/src/test/java/common/mock/MockCommunityContext.java:25
Reference: AEM Communities
346low
blocker Content package mixing /apps with /content or /conf
Split into immutable (ui.apps) and mutable (ui.content) packages; /apps and /libs are read-only at runtime.
2 file(s), 1 in tests
  • /ui.apps/src/main/content/META-INF/vault/filter.xml:18
  • /it.tests.ui-js/src/main/content/META-INF/vault/filter.xml:18
Reference: Mutable vs immutable
218partial
blocker Oak or Jackrabbit internal APIs
Use public JCR, Jackrabbit API or Sling APIs; internal Oak SPIs are not exported on Cloud Service.
2 file(s)
  • /core/src/main/java/we/retail/core/model/Header.java:26
  • /core/src/main/java/we/retail/core/model/ProductModel.java:20
Reference: Oak internal APIs
216partial
blocker Classic UI (ExtJS) dialogs and widgets
Rebuild as Touch UI (Granite UI / Coral) dialogs; Classic UI is not available on Cloud Service.
2 file(s)
  • /ui.apps/src/main/content/jcr_root/apps/msm/we-retail/blueprintconfigs/weretail/_jcr_content/dialog.xml:3
  • /ui.apps/src/main/content/jcr_root/apps/weretail/components/structure/productreviews/dialog.xml:3
Reference: Classic UI dialogs
210high
blocker Felix SCR annotations (org.apache.felix.scr removed)
Move to OSGi Declarative Services annotations (org.osgi.service.component.annotations) with metatype.
4 file(s)
  • /core/src/main/java/we/retail/core/WeRetailCommerceServiceFactory.java:18
  • /core/src/main/java/we/retail/core/components/impl/CartEntryServlet.java:29
  • /core/src/main/java/we/retail/core/productrelationships/SimilarToCartRelationshipsProvider.java:22
  • /core/src/main/java/we/retail/core/productrelationships/SimilarToCurrentRelationshipsProvider.java:22
Reference: Felix SCR annotations
44high
blocker Google Guava imports (removed from Cloud Service on 26 Feb 2026)
Replace with JDK equivalents or Caffeine, or embed your own Guava version; the platform no longer exports it.
2 file(s), 1 in tests
  • /core/src/main/java/we/retail/core/model/CountriesFormOptionsDataSource.java:44
  • /core/src/test/java/common/AppAemContext.java:31
Reference: Google Guava
21high
major Components inheriting from Foundation components
Re-base on proxied Core Components (core/wcm/components/...).
2 file(s)
  • /ui.apps/src/main/content/jcr_root/apps/weretail/components/structure/productfilter/.content.xml:6
  • /ui.apps/src/main/content/jcr_root/apps/weretail/components/structure/productreviews/.content.xml:6
Reference: Foundation components
212partial
major Code referencing /etc
Move configuration to /conf (context-aware configuration) and runtime data to /var; designs move to editable-template policies.
9 file(s), 4 in tests
  • /ui.content/src/main/content/jcr_root/content/campaigns/we-retail/master/we-retail-big-spender/ordervalueover100/free-shipping/.content.xml:5
  • /core/src/test/resources/sample-content.json:17
  • /it.tests.ui-js/src/main/content/META-INF/vault/filter.xml:20
  • /it.tests.ui-js/src/main/content/jcr_root/apps/weretail/tests/admin/components-it/FormContainer/FormContainer.js:26
  • /it.tests.ui-js/src/main/content/jcr_root/apps/weretail/tests/admin/components-it/Page/Page.js:34
Reference: Content under /etc
98partial
major Sling Commons JSON
Use Jakarta JSON (javax.json), Gson or Jackson instead of the removed Sling Commons JSON bundle.
2 file(s), 1 in tests
  • /core/src/main/java/we/retail/core/model/ProductItem.java:33
  • /core/src/test/java/we/retail/core/components/impl/CartEntryServletTest.java:27
Reference: Sling Commons JSON
22high
minor AEM uber-jar dependency
Depend on com.adobe.aem:aem-sdk-api and fix the compile errors it surfaces; that is your real deprecated-API list.
3 file(s)
  • /core/pom.xml:192
  • /parent/pom.xml:573
  • /ui.apps/pom.xml:229
Reference: uber-jar
35high
minor OSGi configs in .config, .cfg or XML node format
Convert to .cfg.json; the Repository Modernizer and the AEM Analyser flag what remains.
5 file(s)
  • /config/pom.xml
  • /config/src/content/jcr_root/apps/weretail/config/com.day.cq.wcm.foundation.forms.impl.MailServlet-weretail.config
  • /config/src/content/jcr_root/apps/weretail/config/org.apache.sling.commons.log.LogManager.factory.config-we-retail.xml
  • /config/src/content/jcr_root/apps/weretail/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-we-retail.xml
  • /config/src/content/jcr_root/apps/weretail/config.publish/com.day.cq.commons.servlets.RootMappingServlet.xml
Reference: OSGi config format
52high
minor Apache Commons Collections 3
Switch to org.apache.commons.collections4 or JDK collections.
5 file(s), 1 in tests
  • /core/src/main/java/we/retail/core/WeRetailCommerceServiceImpl.java:26
  • /core/src/main/java/we/retail/core/WeRetailCommerceSessionImpl.java:28
  • /core/src/main/java/we/retail/core/model/OrderHistoryModel.java:29
  • /core/src/main/java/we/retail/core/model/ShoppingCartModel.java:28
  • /core/src/test/java/common/mock/MockCommerceSession.java:28
Reference: Commons Collections 3
51high
minor Apache Commons Lang 2 (test code only)
Switch imports to org.apache.commons.lang3.
2 file(s), 2 in tests
  • /core/src/test/java/common/mock/MockDefaultJcrPlacedOrder.java:25
  • /core/src/test/java/common/mock/MockProduct.java:25
Reference: Commons Lang 2
20high

2. Changes we can generate automatically today

ChangeFiles changedItems for review
Commons Lang 2 imports to Commons Lang 320
OSGi .config / .cfg / sling:OsgiConfig to .cfg.json40

Each change ships as its own pull request with a reviewer checklist. Items for review are places the tool deliberately did not change.

3. Plan

  1. Build foundation (23 h before automation): Switch to aem-sdk-api, restructure into ui.apps / ui.content / ui.config / all with the Repository Modernizer, add the AEM Analyser.
    AEM uber-jar dependency; Content package mixing /apps with /content or /conf
  2. Removed and deprecated APIs (25 h before automation): Mechanical code changes; most are automated and reviewed per pattern.
    Google Guava imports (removed from Cloud Service on 26 Feb 2026); Felix SCR annotations (org.apache.felix.scr removed); Sling Commons JSON; Apache Commons Lang 2 (test code only); Apache Commons Collections 3; Oak or Jackrabbit internal APIs
  3. Configuration (10 h before automation): .cfg.json, supported run modes, Cloud Manager variables, versioned indexes, /etc moves.
    OSGi configs in .config, .cfg or XML node format; Code referencing /etc
  4. Authoring experience (22 h before automation): Touch UI dialogs, Core Components, editable templates, Sling Models.
    Classic UI (ExtJS) dialogs and widgets; Components inheriting from Foundation components
  5. Assets, auth and unsupported features (178 h before automation): Design work and product decisions; least automatable.
    AEM Communities (social) APIs; Legacy eCommerce framework
  6. Content transfer (40 h): Content Transfer Tool extraction and ingestion runs with top-ups, freeze plan agreed with authors.
  7. Verification (60 h): Cloud Manager quality gates, generated regression tests, visual comparison of key templates, URL and redirect parity.
  8. Cutover and hypercare (40 h), after Cloud Manager setup (24 h) at the start.

4. Decisions needed from you

5. Assumptions and exclusions

Generated from deterministic scan data. Reviewed and approved by a senior AEM engineer before it is sent.