Managing Power Platform solutions across environments means repeating the same manual sequence through the Power Platform CLI every time: export the solution, unpack to source control, normalize the Canvas App files, generate deployment settings, commit, push. I built PP-ALM Suite, an interactive PowerShell menu system, to collapse that whole sequence into one guided interface.

Why I built it

Moving a Power Platform solution between environments means running the same manual CLI sequence on every deployment. It’s slow, and each step is a chance to make a mistake.

What it does

PP-ALM Suite consolidates the entire ALM workflow into a single, guided PowerShell interface. It handles the complete export-to-deployment pipeline:

Export Workflow:

  • Exports both managed and unmanaged solution packages
  • Unpacks solutions to source-controlled XML
  • Extracts and unpacks Canvas Apps for meaningful diffs
  • Normalizes Workflow JSON to eliminate noise in version control
  • Auto-generates deployment connection settings
  • Optionally commits and pushes changes to Git, all in one operation

Import Workflow:

  • Simplified solution import to any authenticated environment
  • Supports both managed and unmanaged deployments

Environment Management:

  • Authenticates to Public or GCC environments
  • View and switch between authenticated tenants
  • Built-in validation and error handling

Dependencies and terminals

It sets up its own dependencies:

  • Auto-installs Power Platform CLI via winget if not present
  • Auto-installs Git if missing from the system
  • Terminal compatibility detection: automatically adjusts UI for Windows Terminal, PowerShell 7+, VS Code, legacy conhost, or PowerShell ISE
  • Repository-aware Git configuration: sets user name and email at the repo level without touching global settings

Technical Architecture

Written in PowerShell 5.1+, so it runs on stock Windows. It uses:

  • Native Power Platform CLI (pac) commands
  • Git integration for version control automation
  • JSON-based configuration (config/config.json)
  • Auto-generated deployment settings for connection references and environment variables
  • ANSI color support with ASCII fallback for legacy terminals

The repository structure it maintains is clean and source-control friendly:

config/
  config.json          # Solution configuration
  deployment.json      # Auto-generated deployment settings
CanvasAppSrc/
  <AppName>/           # Unpacked Canvas App source
Unmanaged/             # Unpacked solution XML
Managed.zip            # Exported managed solution
Unmanaged.zip          # Exported unmanaged solution

Where it came from

This tool came out of managing complex Power Platform solutions across dev, test, and production environments while trying to maintain full version control and audit trails. It replaces the switching between GUI tools, CLI commands, and Git operations that fragments the workflow when done by hand.

Because it normalizes Canvas App files and Workflow JSON before committing, a diff shows what changed rather than noise.

Getting Started

The tool is open source under GPL-3.0 and available now:

GitHub: github.com/c-rw/Power-Platform-ALM

Clone the repository and run:

.\ppalm.ps1

The first-run wizard guides you through repository setup. From there, all ALM operations are available through the interactive menu.

Requirements

RequirementVersionNotes
PowerShell5.1+Windows PowerShell or PowerShell 7+
Power Platform CLI (pac)LatestAuto-installs via winget if missing
GitAnyAuto-installs via winget if missing
wingetAnyRequired for auto-install of the above

Features

  • Export Solution: Exports managed and unmanaged ZIPs, unpacks source, unpacks Canvas Apps, normalizes Workflow JSON for clean diffs, generates deployment settings, then optionally commits and pushes to Git.
  • Import Solution: Imports a managed or unmanaged solution ZIP into the currently authenticated Power Platform environment.
  • Repository Setup: First-run wizard that creates config/config.json with your solution name.
  • Settings & Tools
    • Check / install / update Power Platform CLI
    • Check / install / update Git
    • Configure Git user name and email (repository-local)
    • View authenticated environments
    • Authenticate to an environment (Public or GCC)

Not built yet

On the list:

  • Pipeline integration for Azure DevOps and GitHub Actions
  • Multi-solution repository support
  • Automated testing workflows
  • Environment comparison and drift detection

Current release is v2.1.2, tested against real production Power Platform environments.


Questions or feedback? Drop a comment below or open an issue on the GitHub repository.