Guide · updated

Upgrading to AEM 6.5 LTS: Java 17/21, removed dependencies and a test plan

AEM 6.5 LTS is Adobe's long-term support line of AEM 6.5 and the branch that receives new AEM 6.5 features. Adobe describes the upgrade as an in-place upgrade available from all supported 6.5 service packs. For many teams it is the fastest way to stay supported while they plan a move to Cloud Service.

What changes

AreaWhat Adobe documents for 6.5 LTS
JavaThe foundation supports Java 17 and Java 21.
Uber JARThe packaging structure changed; check that your build uses the apis classifier.
GuavaGuava dependencies are missing; tools that rely on them, such as older Groovy Console versions, may not work (Adobe names 19.0.8 as the supported Groovy Console release, with an extra OSGi allow-list entry).
Sling APIsSling artifacts migrated to jakarta.* package namespaces are not supported; use the javax.* versions.
Health checks/systemalive is superseded by Apache Felix Health Checks at /system/health.
Legacy featuresSome legacy features and artifacts were removed; obsolete bundles are uninstalled after the upgrade, and add-ons installed under /libs may need reinstalling.

Before you upgrade

  1. Run Adobe's AEM Analyzer to estimate upgrade complexity against your customisations and integrations.
  2. Inventory add-ons and third-party bundles under /libs; check each has a 6.5 LTS compatible version.
  3. Remove Guava from your own code now (it is also removed from AEM as a Cloud Service); our scanner and AI refactoring handle most of it.
  4. Pin your build to the new Uber JAR with the apis classifier and fix compile errors.
  5. Switch monitoring and load balancer checks from /systemalive to /system/health.

A test plan that fits in two weeks

  • Restore a production copy to a non-production environment and run the upgrade there first; time it.
  • Smoke-test every template's authoring and rendering, every workflow, and every integration.
  • Re-run performance tests on the new Java version; JVM flags tuned for Java 8 or 11 may need revisiting.
  • Rehearse the rollback: snapshot, upgrade, restore.

LTS now, Cloud Service later

Several of the changes LTS needs (removing Guava, cleaning up legacy APIs, current Java) are the same work Cloud Service needs. Doing them once, in a way that serves both, is cheaper than two separate projects. The 6.5 LTS vs Cloud Service guide on this site compares the two paths.

Sources