Best Practice Analysis

Best Practice Analysis scans your crawled solutions against 12 rules covering deprecated features, unsupported code, naming, error handling, performance, security, maintainability, and configuration. It lists what it finds as issues you can review and resolve. It is free, for every solution.

What It Analyzes

Best Practice Analysis runs when you click Run Analysis, on one solution at a time. It examines the components that the solution's last crawl stored and evaluates them against the rules below. A crawl or a schedule never starts it. Each rule checks for a specific pattern, anti-pattern, or configuration issue that could impact maintainability, performance, security, or reliability.

The analysis runs inside your Dataverse environment as plug-in logic. The names, metadata and documentation of your components never leave your environment. The issues it finds are stored in the Best Practice Issue table in your own Dataverse, where you can review and resolve them at any time. Once Cartographer is activated, it sends VerseBlocks a usage report when you open this page and when an analysis finishes. A report carries counts and IDs, never component names. The privacy policy lists everything Cartographer sends.

How to Run Analysis

  1. 1Open the Cartographer app and go to Best Practices
  2. 2Select a crawled solution from the picker in the header
  3. 3Click Run Analysis
  4. 4Issues appear below as a list of cards, with summary counts by severity at the top
Best Practices results with five count cards, a filter bar, and issue cards for deprecated SDK usage, a flow without error handling and a missing description

Use the filter bar to narrow the list by solution, severity, or category, and toggle Show Resolved to bring resolved issues back into view.

Best Practices does not give a score. It counts issues by severity and lists each one. The 0 to 100 score belongs to Solution Health, which you open with the Health button on a solution row in Solution Manager.

Best Practice Analysis uses data from the most recent crawl. For the most accurate results, re-crawl the solution before running the analysis.
Cartographer must be activated before you run an analysis. Running one, and marking an issue resolved, needs the rights that the Cartographer Admin role grants. See Activation.

Severity Levels

Critical

Issues that pose a security risk or rely on deprecated or unsupported code or features. These should be addressed first.

Warning

Issues that may cause problems over time or indicate a deviation from best practices. These should be reviewed and addressed when possible.

Info

Suggestions for improvement that are not urgent. These are recommendations that can improve code quality and maintainability over time.

Rules Reference

The following 12 rules are checked during every Best Practice Analysis run:

IDRuleSeverityCategoryWhat It Checks
BP001Deprecated WorkflowCriticalDeprecated FeatureFlags any classic workflow. Microsoft recommends Power Automate cloud flows instead of classic workflows
BP002Synchronous Plugin on RetrieveWarningPerformanceA plugin step registered synchronously on a Retrieve or RetrieveMultiple message
BP003Flow Without Error HandlingWarningError HandlingA cloud flow with no "Configure run after — has failed" branch on its actions
BP004Hardcoded GUIDs in JavaScriptWarningMaintainabilityA JavaScript web resource containing literal GUIDs, which break when a solution moves between environments
BP005Poor Naming ConventionInfoNaming ConventionA component using the default "new_" publisher prefix, or a long lowercase name with no separators
BP006Deprecated SDK UsageCriticalUnsupported CodeJavaScript referencing XrmServiceToolkit, Xrm.Page, or other unsupported or internal Microsoft namespaces
BP007Async Plugin Without Error LoggingInfoError HandlingFlags asynchronous plugin steps as a reminder to verify they log failures
BP008Large JavaScript FileWarningPerformanceA large JavaScript web resource, which can affect page load
BP009Business Rule on All FormsInfoConfigurationA business rule with no form scoping, so it applies to every form for the table
BP010Disabled FlowInfoConfigurationA cloud flow that is currently turned off
BP011Missing DescriptionInfoMaintainabilityA flow, classic workflow, custom action, or business process flow with no description
BP012XSS Risk in JavaScriptCriticalSecurityJavaScript containing eval(), document.write(), or innerHTML
The 12 rules are fixed. You cannot add rules or tune them. The checks are text and metadata tests on what the crawl stored. For example, BP003 looks for a "run after failed" branch in the flow definition, and BP006 looks for strings such as Xrm.Page. They are not a code analysis.
Rules apply only to components your own solutions own. A Microsoft platform or system component that was crawled only because your solution depends on it — a standard table like systemuser, for example — is never flagged.

Resolving Issues

Each issue card shows its title, rule ID, severity, category, and the affected component, with expandable Recommendation and Details sections for the specifics.

  • Mark Resolved — after fixing the issue in your solution, mark it resolved. It drops out of the default list; toggle Show Resolved to bring it back, or Reopen it if you marked it too soon.
  • Filter — narrow the list by solution, severity, or category to focus on what matters most.

The issues for a solution also appear in its Report, which you open with the Report button in Solution Manager. There is no export from this page.

Running the analysis again on a solution replaces its issue list with a fresh one from the latest crawl. If you marked an issue resolved but the underlying pattern is still there, it will reappear as unresolved the next time you run analysis.

Next Steps