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
| Area | What Adobe documents for 6.5 LTS |
|---|---|
| Java | The foundation supports Java 17 and Java 21. |
| Uber JAR | The packaging structure changed; check that your build uses the apis classifier. |
| Guava | Guava 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 APIs | Sling 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 features | Some 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
- Run Adobe's AEM Analyzer to estimate upgrade complexity against your customisations and integrations.
- Inventory add-ons and third-party bundles under /libs; check each has a 6.5 LTS compatible version.
- 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.
- Pin your build to the new Uber JAR with the apis classifier and fix compile errors.
- 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.