The Power Platform Health Check tool is buried in the Admin Center, runs in minutes, and produces a 100-item report. Half of those items are noise. Here is the triage order.
Where it lives
Power Platform Admin Center -> Environments -> [your env]
-> Resources -> Health -> Run analysis
It scans solutions, plugins, flows, formulas, and configuration drift. The output is grouped by severity (High, Medium, Low) and category (Performance, Compliance, Best Practice).
What to fix immediately (High)
- Plugin steps registered in
Synchronousmode that exceed 1.5 seconds average runtime. These are user-perceptible and risk hitting the 2-minute sandbox timeout. - Deprecated API usage in plugins (
Microsoft.Crm.Sdk.Messagesreferences, old impersonation patterns). These will break in a future wave. - Solution layering conflicts where managed and unmanaged components overlap on the same artifact.
- Flows in error state for more than 24 hours.
What to fix this quarter (Medium)
- Calculated columns appearing in views (covered separately).
- Plugin steps registered without an image when they need pre/post values; this triggers an extra retrieve under the hood.
- Excessive
RetrieveMultipleplugin steps with no filter, returning thousands of rows. - Flows with skipped runs above 1% of total.
What to ignore
- “Solution name does not match prefix convention.” Cosmetic.
- “Plugin assembly not signed.” Required only for ISV scenarios.
- “Form has more than 50 fields.” Not actually a problem if half are hidden tabs.
- “Bulk Delete job has not run in 30 days.” If the table is small, no action needed.
What it misses
The tool is server-side static analysis. It cannot see:
- Slow JavaScript on form load. Use the Performance Insights blade in admin center for this.
- Bandwidth waste from oversized form scripts.
- Customer Insights Journeys segment recompute storms.
- Plugin behavior under concurrent load (the report is single-trace).
Pair Health Check with Performance Insights and Application Insights for a full picture.
How to operationalize it
Run it monthly. Export the report. Treat the High items as bug tickets with SLA. Trend the medium count over time; if it is rising, your rate of new tech debt exceeds your remediation rate.
The hidden gem: plugin trace recommendations
Health Check flags plugins missing tracing calls. Every production plugin should call tracingService.Trace() at entry and exit. Without traces, when a plugin fails at 3am, you have nothing to debug from. The report names the offenders.
What to do this week
Run Health Check against your highest-traffic environment. Take only the High severity items into a ticket sprint this month. The report will pay for itself in avoided incidents.