14.4 Solution Checker, App Checker & ALM Best Practices
Key Takeaways
- Solution Checker performs static code analysis in the Power Apps Maker Portal against Dataverse custom solutions, evaluating plug-ins, web resources, flows, and canvas apps against architectural best practices.
- Solution Checker rulesets categorize issues across four pillars—Performance, Security, Reliability, and Maintainability/Accessibility—with severities ranging from Critical and High to Medium and Low.
- Solution Checker output reports are exported in SARIF (Static Analysis Results Interchange Format) for CI/CD integration and Excel format for consultant triage and remediation.
- App Checker in the Canvas App Studio diagnoses formula errors, accessibility compliance (WCAG 2.1), performance bottlenecks, and non-delegable query warnings.
- Enterprise ALM implements multi-tier environment architectures (Dev -> Build -> Test/UAT -> Prod) powered by Power Platform Pipelines or automated CI/CD via Azure DevOps / GitHub Actions with Service Principals.
Solution Checker, App Checker & ALM Best Practices
Delivering high-performance, secure, and compliant business applications across enterprise organizations requires continuous automated validation. Microsoft Power Platform provides native diagnostic engines—including Solution Checker and App Checker—alongside mature Application Lifecycle Management (ALM) automation capabilities. On the PL-200 exam, you must know how to invoke static code analysis, interpret rule violation severities, resolve Canvas app delegation and performance bottlenecks, and design robust multi-environment release pipelines.
1. Solution Checker: Static Code Analysis
Solution Checker is a cloud-based static code analysis tool embedded directly within the Power Apps Maker portal and Power Platform CLI. It evaluates the components of an unmanaged solution against a rich ruleset developed by Microsoft AppSource certification and engineering teams.
+-----------------------------------------------------------------------------------+
| SOLUTION CHECKER ARCHITECTURE |
| |
| [MAKER PORTAL / CLI] |
| - Maker selects: 'Run Solution Checker' |
| - CLI command: 'pac solution check' |
| |
| | |
| v (Uploads package to Power Apps Checker) |
| |
| [STATIC ANALYSIS ENGINE] |
| Evaluates: |
| * JavaScript / TypeScript Web Resources (ECMAScript standards, DOM manipulation) |
| * C# Plug-in Assemblies (.NET Framework rules, sync web requests, sandbox limits)|
| * Dataverse Custom Workflow Activities |
| * Power Automate Cloud Flows (Connections, error handling) |
| * Canvas App packages (.msapp formulas, delegation, controls) |
| * Solution XML metadata (Entity definitions, relationships) |
| |
| | |
| v (Generates Diagnostic Report) |
| |
| [ANALYSIS OUTPUT REPORTS] |
| - Interactive Web Portal Grid (Filter by severity) |
| - Downloadable Excel Report (.xlsx) with remediation guidance |
| - SARIF Log File (.sarif) for automated CI/CD pipeline build gates |
+-----------------------------------------------------------------------------------+
Core Ruleset Categories & Pillars
- Performance: Identifies operations that degrade server or client throughput, such as synchronous XMLHttpRequest calls (
web-use-async-requests), excessive DOM traversal in model-driven forms, missing indexes, or unoptimized database retrieval. - Security: Detects vulnerabilities such as cross-site scripting (XSS) via
eval()or unvalidatedinnerHTML, insecure external HTTP calls instead of HTTPS, or exposed authorization tokens. - Reliability: Flags code likely to cause crashes or unhandled exceptions, such as plug-ins that do not implement stateless execution or instantiate non-thread-safe objects.
- Maintainability / Supportability: Detects usage of deprecated Dynamics 365 SDK methods (e.g.,
Xrm.Pageinstead ofexecutionContext.getFormContext()), unsupported internal DOM manipulation (document.getElementById), or invalid XML schemas.
Issue Severity Tiers
- Critical: Severe defects that will break platform operations, violate security boundaries, or cause complete transaction failure. Must be remediated before production deployment.
- High: Significant performance or stability degradation (e.g., synchronous web requests in browser scripts or unhandled plugin exceptions).
- Medium: Deprecated API usage or non-standard practices that could break in future platform releases.
- Low / Informational: Formatting warnings, best practice hints, or minor optimization opportunities.
[!NOTE] SARIF Integration in CI/CD: SARIF (Static Analysis Results Interchange Format) is the industry-standard JSON format used by Azure DevOps and GitHub Actions. Automated build pipelines can parse the SARIF output from
pac solution checkand automatically fail the build if any Critical or High severity issues are detected.
2. App Checker for Canvas Apps
While Solution Checker evaluates entire solution packages, App Checker provides real-time, interactive design-time diagnostics inside the Canvas App Studio.
+-----------------------------------------------------------------------------+
| APP CHECKER DIAGNOSTIC TABS |
| |
| [1. ERRORS] --> Formula syntax errors, missing variables, |
| type mismatches (Blocks app publish) |
| |
| [2. WARNINGS] --> Non-delegable queries, performance issues, |
| large collections, unused variables |
| |
| [3. ACCESSIBILITY] --> Screen reader labels, tab index order, |
| color contrast ratios (WCAG 2.1 compliance) |
| |
| [4. RULES / PERFORMANCE] --> Duplicate calculations, nested loops, |
| OnStart anti-patterns |
+-----------------------------------------------------------------------------+
Key App Checker Diagnostic Areas
- Formula & Syntax Errors: Detects invalid Power Fx syntax, unresolved table references, or data type mismatches (e.g., passing text into a numeric argument). The app cannot be published or run if hard errors exist.
- Delegation Warnings (Blue / Yellow Triangles):
- The Delegation Problem: When querying large Dataverse or SharePoint tables (>500 or >2,000 records), operations must be delegated to the backend database server for processing.
- Warning Trigger: If a formula uses a non-delegable function (such as
Search(),GroupBy(), or complex string manipulation functions) against a non-delegable connector, App Checker displays a delegation warning. - Impact: Power Apps will only retrieve the first 500 (or up to 2,000 if configured) records to the client device and evaluate the formula locally, resulting in incomplete search results and truncated data.
- Accessibility Checks (WCAG 2.1):
- Missing
AccessibleLabelproperty on interactive buttons, icons, or input controls. - Inadequate color contrast ratios between text and background.
- Missing screen reader announcements for dynamic container changes.
- Missing
- Performance Diagnostics: Identifies heavy formulas executing inside
App.OnStartor unoptimized nestedLookUp()calls inside large Gallery templates.
3. Enterprise ALM Architecture & Environment Pipelines
A mature Power Platform enterprise deployment requires a multi-tier environment strategy supported by automated Application Lifecycle Management.
+-----------------------------------------------------------------------------------+
| ENTERPRISE ALM RELEASE PIPELINE |
| |
| +---------------------+ |
| | DEV ENVIRONMENT | Makers build features in Unmanaged Solutions |
| | (Sandbox / Personal)| |
| +---------------------+ |
| | |
| v (Export Unmanaged & Unpack via PAC CLI / Git) |
| +---------------------+ |
| | SOURCE CONTROL (GIT)| Single Source of Truth (YAML, XML, Power Fx code) |
| | (Azure Repos/GitHub)| Branching, Pull Requests, Code Reviews |
| +---------------------+ |
| | |
| v (CI Build: Solution Checker + Pack Managed Solution) |
| +---------------------+ |
| | BUILD / TEST ENV | Automated smoke tests, integration validation |
| | (Managed Solution) | |
| +---------------------+ |
| | |
| v (CD Release Gate: Approvals & Connection Ref Binding) |
| +---------------------+ |
| | PROD ENVIRONMENT | Zero unmanaged layers; Managed Solutions ONLY |
| | (Managed Solution) | Service Principal execution; Locked schema |
| +---------------------+ |
+-----------------------------------------------------------------------------------+
Pipeline Tooling Options
- Power Platform Pipelines (Native Low-Code ALM):
- Built directly into the Power Platform Maker portal and Dataverse.
- Allows citizen developers and functional consultants to deploy solutions from Dev to Test and Prod with a single click, adhering to corporate governance, automated solution checks, and pre-deployment approval stages without requiring external Azure DevOps licenses.
- Azure DevOps (Power Platform Build Tools):
- Enterprise-grade CI/CD pipelines using YAML definitions.
- Tasks include
PowerPlatformExportSolution,PowerPlatformUnpackSolution,PowerPlatformChecker, andPowerPlatformImportSolution. - Authenticates using Microsoft Entra Service Principals (App Registrations), eliminating personal user dependencies.
- GitHub Actions for Microsoft Power Platform:
- GitHub-native workflows executing identical automation tasks via repository action runners.
| ALM Dimension | Power Platform Pipelines | Azure DevOps / GitHub Actions |
|---|---|---|
| Target Persona | Citizen developers, consultants | Enterprise DevOps engineers, pro-dev teams |
| Setup Complexity | Low (Configured in Dataverse portal) | Moderate to High (YAML scripts, repos) |
| Source Control | Managed within Dataverse pipeline host | Full Git integration (Branching, PRs, GitOps) |
| Extensibility | Power Automate trigger hooks | Full command-line, custom scripts, external tools |
| Licensing | Power Platform Managed Environments | Azure DevOps / GitHub enterprise licensing |
[!TIP] ALM Golden Rules for Exam PL-200:
- Never customize directly in Production: All changes must originate in Development as unmanaged solutions.
- Deploy as Managed: Deploy strictly as Managed Solutions to Test and Production.
- Run Solution Checker: Always run Solution Checker before exporting or promoting solutions to validate performance and security compliance.
- Use Service Principals: Automate pipeline deployment connections using Application Users / Service Principals rather than individual user accounts.
A functional consultant runs Solution Checker on a custom solution prior to a major client deployment. The generated report contains several 'Critical' and 'High' severity violations indicating the use of 'window.parent.document.getElementById()' in JavaScript web resources and synchronous XMLHttpRequest calls. What is the primary risk of deploying these components to Production?
A Canvas app built for inventory warehouse staff connects to a Dataverse table containing 65,000 product rows. In App Checker, a yellow warning triangle appears on a Gallery control with the message 'Delegation warning: The filter part of this formula might not work correctly on large data sets.' When warehouse workers search for items created early in the year, the app fails to return any matching records. What is the cause of this behavior?
An organization wants to establish automated governance and deployment pipelines to promote solutions from Development sandboxes to QA and Production environments. The team wants a native, low-code solution built directly inside Power Platform that citizen developers can trigger with approvals, without requiring external Azure DevOps accounts or YAML scripting. Which feature should the consultant implement?
An enterprise DevOps team is setting up an automated CI/CD build pipeline in Azure DevOps using Power Platform Build Tools. They want the pipeline to automatically validate solution health and halt the deployment if any Critical security or performance issues are found. Which file format generated by the 'pac solution check' command should the build pipeline parse to analyze the static code analysis results?