Scan, diagnose, and auto-fix AEM codebases for any migration path.
AEM Shift automatically detects AEM projects in your workspace, scans every Java, XML, pom.xml, JSP, and config file against a battle-tested set of migration rules, and shows you exactly what will break — with fix guidance for every issue.
Features
Automatic AEM Detection
Open any AEM project and AEM Shift instantly detects it. No configuration needed — it reads your pom.xml and knows exactly what it's looking at.
Deep Migration Scanning (Free)
- Scans all
.java,pom.xml,.xml,.html,.jsp,.cfg,.configfiles - 40+ rules covering every known AEM 6.5 → LTS breaking change
- Results in VS Code Problems panel (red squiggles in your code)
- Full report dashboard with filtering, search, and export to CSV
SP1 & SP2 Aware
Rules are tagged to the exact service pack they apply to. Target SP2 and only see SP2-relevant issues. Target SP1 and see SP1 issues. No noise.
Java Version Aware
Detects your current Java version from pom.xml or the system. Shows extra rules for Java 8 → 17 (JAXB removed, Nashorn removed, JAX-WS removed) vs Java 11 → 17 (SecurityManager, strong encapsulation).
Sidebar Chat Co-Pilot (Free)
Ask anything about AEM migration directly in the sidebar — no AI subscription needed for AEM knowledge questions:
- "What changed in AEM 6.5 LTS?"
- "How do I fix the Guava error?"
- "What is the PowerMock issue with Java 17?"
AI Auto-Fix (Pro)
One-click fix for every issue, powered by Claude AI. The AI understands AEM deeply — it doesn't just replace imports, it refactors the logic correctly.
Migration Rules Covered
Critical — Breaks Build or Runtime
| Rule | What breaks |
|---|---|
| Guava Removed | com.google.common.* throws ClassNotFoundException |
| UberJar Classifier | Must use apis classifier with version 6.6.0 |
| Social Bundles Removed | com.adobe.cq.social.cq-social* gone |
| RequestResponseFactory Removed | Use Sling Request/Response Builders |
| PropertiesUtil Deprecated | Use OSGi DS annotations instead |
| Commons Collections 3.x | Migrate to Collections4 |
| Commons Lang 2.x | Migrate to Lang3 |
| /systemalive Removed | Replace with /system/health |
| Handlebars Removed | Migrate to HTL/Sightly |
| We-Retail References | Remove all /content/we-retail paths |
Test Framework
| Rule | What breaks |
|---|---|
| PowerMock + Java 17 | Tests fail with InaccessibleObjectException |
| Mockito Version Conflicts | Mixed 4.x / 5.x causes failures |
| Surefire Plugin Too Old | Upgrade to 3.0.0+ |
| JMockit Conflicts | Upgrade to 1.41+ |
Java 8 → 17 Specific
| Rule | What breaks |
|---|---|
| JAXB Removed | ClassNotFoundException for javax.xml.bind.* |
| JAX-WS Removed | SOAP client code breaks |
| Nashorn Removed | JavaScript engine gone since Java 15 |
| javax.activation Removed | DataHandler, MimeType break |
| sun.misc.* Removed | Internal JDK API access blocked |
SP1 / SP2 Specific
| Rule | SP |
|---|---|
| S3 Datastore JDK 21 crash | SP1 fix |
| JSP scripting bundle bug | SP1 fix |
| Content Fragment REST API deprecated | SP2 |
| New CF OpenAPI endpoints | SP2 |
How to Use
- Open your AEM project folder in VS Code
- AEM Shift detects it automatically and shows a popup
- Click Scan now
- Answer two quick questions (Java version + target SP)
- View results in the report panel and Problems panel
Right-click scanning
Right-click any folder in the Explorer → AEM Shift: Scan for LTS Upgrade
Command Palette
Ctrl+Shift+P → search "AEM Shift"
Settings
| Setting | Default | Description |
|---|---|---|
aemshift.showStartupNotification |
true |
Show popup when AEM project detected |
aemshift.migrationPath |
aem65-to-lts |
Active migration path |
aemshift.targetServicePack |
SP2 |
Target LTS service pack (SP1 or SP2) |
aemshift.javaSourceVersion |
unknown |
Current Java version |
aemshift.javaTargetVersion |
21 |
Target Java version after migration |
aemshift.scanOnSave |
false |
Auto-scan on file save |
aemshift.excludePatterns |
target/**, node_modules/** |
Folders to skip |
Pro License
Free tier includes full scanning, report panel, fix guidance text, and CSV export.
Pro unlocks AI-powered auto-fix for every issue.
Enter your key: Ctrl+Shift+P → AEM Shift: Enter License Key
Supported Migration Paths
| Path | Status |
|---|---|
| AEM 6.5 → AEM 6.5 LTS | ✅ Full rules |
| AEM 6.4 → AEM 6.5 | Coming soon |
| AEM 6.5 → AEM Cloud | Coming soon |
| WordPress → AEM | Coming soon |
Feedback & Issues
Found a false positive? Missing a rule? Open an issue on GitHub.