Guide · updated
How to read a Best Practices Analyzer report: every pattern code explained
Best Practices Analyzer (BPA) is Adobe's free package that scans an AEM 6.x instance and lists what will need work before moving to AEM as a Cloud Service. It runs on AEM 6.1 and later. Its report can be uploaded to Cloud Acceleration Manager or exported as a CSV file (results.csv).
The CSV columns
| Column | Meaning |
|---|---|
| code | The pattern category, for example CCOM or REP. |
| type / subtype | The finding type within the category. |
| importance | INFO, ADVISORY, MAJOR or CRITICAL. |
| identifier | Usually the repository path or class involved. |
| other, moreInfo | Extra details and a documentation link. |
| message | Human-readable description. |
| context | A JSON string with finding data. The value \N means no data. |
Importance levels
- CRITICAL: very likely to be an upgrade issue that must be addressed to prevent loss of function or performance.
- MAJOR: likely to be an upgrade issue that should be addressed.
- ADVISORY: potentially an upgrade issue; review it.
- INFO: for information only, such as system details or inventory counts.
Pattern codes
| Code | What it flags |
|---|---|
| ACV | Assets missing mandatory nodes or original renditions |
| ASO | System information (AEM version, installed products) |
| CAV / ECU | Content in areas that break content classification rules |
| CCL | Custom client libraries |
| CCOM | Custom components, including ones based on Foundation components |
| CDW | Custom Classic UI dialog widgets |
| CIF | Classic commerce framework usage |
| CTEM | Custom templates, editable or static |
| DG | Deviations from development guidelines |
| DM | Dynamic Media use and mode |
| DOPI | Deprecated ordered property indexes |
| FORMS | AEM Forms features that change or are unavailable |
| INS | Invalid namespaces |
| INST | Custom and third-party packages and bundles |
| IOI | Imports of internal Oak packages |
| LOCP | Packages that write to /libs |
| LUI | Legacy UI dialogs (Classic or Coral 2) |
| MI | Misconfigurations |
| MSM | Multi Site Manager usage |
| NBCC / NCC | Non-backward-compatible node or bundle changes |
| OAUI | OAuth-configured users that need migrating |
| OCU / OU | Deprecated or removed components and APIs in use |
| OID | Oak index definition issues |
| PCX | Page complexity |
| REP | Enabled forward or reverse replication agents |
| UMI | Modified OSGi configurations that break upgrades |
| URC | Configurations based on unsupported run modes |
| URS | Unsupported repository structure |
| WRK | Custom asset workflow models and launchers |
Turning the report into a plan
- Ignore INFO rows for effort; use them for inventory (how many custom components, which products).
- Group the rest by code and take the worst importance per code. That gives you a short list of work types instead of thousands of rows.
- Separate content findings (ACV, CAV, PCX, REP, URS) from code findings. Cloud Acceleration Manager's Content Transformer can fix many content findings automatically.
- Estimate code findings by type: dialog conversions and config moves are mechanical, workflow and authentication changes need design.
The free readiness scan on this site does exactly these steps in your browser: drop in results.csv and it groups, weights and estimates the findings without uploading the file.
Questions
Where do I get the BPA CSV?
Install Best Practices Analyzer from the Software Distribution portal, generate a report under Tools, Operations, Best Practices Analyzer, and use Export to CSV. The file is called results.csv.
Is BPA output the full migration scope?
No. BPA reports on the running instance. It does not estimate effort, test integrations, review dispatcher rules in depth or plan the cutover.