PP-MD is a Windows desktop application that turns Microsoft Power Platform solution ZIP exports into structured, portable Markdown documentation with Mermaid diagrams. No server, no cloud upload, and no licence key required.
- What It Does
- Generated Documentation Sections
- Getting Started
- Using the App
- Document Configuration Presets
- ERD Mode
- Tech Stack
- Building from Source
- Security Notes
- System Requirements
Documentation. Usually a task people try to avoid, often difficult to get consistent output, and not fun to include all of the details you need. Then add in updating ADO, Jira etc. with the latest notes and people run for the hills.
This is where PP-MD steps in to the mix. Load the app, configure or load your document information (project, sprint, client etc) and document options, and then select solution ZIP files and click "Generate Documentation" to get a full suite of Markdown documentation automatically and consistently.
PP-MD parses you solution zip files and generates documentation that covers:
- An auto-generated Entity Relationship Diagram (ERD) rendered as a Mermaid diagram with the ability to have diagrams in a companion document to the core solution document
- Every Dataverse table with its columns, data types, and relationships
- All Power Automate Flows and classic workflows, with step-by-step details
- Model-driven and Canvas apps, including the tables they reference
- Security roles and field security profiles with privilege depth matrices and option to only include custom tables and/or tables in the current solution
- Connection references and environment variables
- Plugins and SDK message processing steps
- Reports, dashboards, web resources, and email templates
- Optional document metadata header (client, project, contract, sprint, release date)
- Column filtering controls, including Include/Exclude Default Columns (system columns), while always retaining relationship key columns in relationship documentation and ERD relationship context
- Document Options toggles to include/exclude Flows & Automation, Apps, Security, Integration, Plugins, Reports & Dashboards, Web Resources, Desktop Flows & Dataflows, Custom APIs & Offline Profiles, and Copilot Studio Agents & AI Models
Multiple solutions can be loaded at once and reviewed across all loaded solutions.
| Section | Contents |
|---|---|
| Header | Solution name, version, publisher, generation timestamp, document context |
| Table of Contents | Auto-generated links to every section |
| Entity Relationship Diagram | Mermaid ERD of all Dataverse tables and their relationships |
| Entities | Per-table: columns (name, type, required), relationships, forms, views |
| Option Sets / Choice Columns | All global and local option sets with label/value pairs |
| Forms & Views | Form names and field lists; view names and columns |
| Processes | Power Automate flows, workflows, BPFs, business rules, actions — with trigger, status, and connector details |
| Apps | Model-driven and canvas apps with referenced tables |
| Web Resources | JS, HTML, CSS, and other web resources with type and description |
| Security | Role privilege matrices and field security profiles |
| Integration | Connection references (connector type) and environment variables |
| Reports & Dashboards | Native reports and dashboards |
| Plugins | Plugin assemblies and SDK message processing steps (stage, mode, message, entity) |
| Warnings | Parser warnings for components that could not be fully parsed |
Download the latest release from the release_latest_portable/ or release_latest_installer/ folders in this repository, or build from source (see Building from Source).
| Artifact | Description |
|---|---|
PP-MD-<version>-x64-portable.exe |
Self-contained single executable — no installation required |
PP-MD-<version>-x64-installer.exe |
Standard Windows installer with Start Menu shortcut |
Both require Windows 10/11 x64.
Export your solution from Power Platform:
- Open make.powerapps.com
- Go to Solutions → select your solution → Export
- Choose Unmanaged or Managed (both are supported)
- Save the
.zipfile to your machine
In PP-MD, either:
- Drag and drop one or more
.zipfiles onto the drop zone, or - Click Browse to open a file picker
Multiple ZIPs can be loaded in a single batch. Each file is parsed independently with its own progress indicator.
Above the drop zone you can optionally fill in:
| Field | Purpose |
|---|---|
| Client | Client or customer name — appears in the document header |
| Project | Project name |
| Contract | Contract or engagement reference |
| SOW | Statement of Work reference number |
| Sprint | Sprint or iteration name |
| Release Date | Intended release or delivery date |
These fields are included in the generated document header. They can be left blank if not needed.
After uploading, the documentation is generated automatically. Use the sidebar on the left to switch between loaded solutions. The Markdown Viewer renders the output with full Mermaid diagram support, syntax highlighting, and GFM tables.
You can also load previously generated documents directly using Open .md in the top header toolbar.
When a document contains Mermaid content, the viewer toolbar shows live diagram render progress as Diagrams X/Y rendered.
Use 🔍 Search in the viewer toolbar to find text within the rendered document (type at least 3 characters) — matches are highlighted, with next/previous navigation and a match counter.
Use the single ⬇️ Export ▾ menu in the Markdown viewer toolbar to export the active document:
- Export .md: saves the raw Markdown source.
- Export .pdf: saves a rendered PDF (desktop app) with Mermaid diagrams included. Large diagrams and wide tables are optimized for print flow by switching to landscape pages and splitting oversized content where required.
- Export .xlsx: extracts Markdown tables into an Excel workbook with a branded Contents worksheet, document header details, and per-tab links. Dataverse table/entity-related tables are grouped into shared entity worksheets.
PDF export is generated through the Electron desktop shell using Chromium's tagged PDF output mode (generateTaggedPDF) so the exported document includes accessibility tagging and heading outline metadata for assistive technology.
When two or more solutions are loaded, a Consolidated Summary entry appears in the sidebar. This merges all solutions into a single report with:
- A combined ERD across all tables
- Merged component sections de-duplicated by schema name
- A solution inventory table at the top
Document context fields (client, project, etc.) can be saved as named presets and recalled from the dropdown in the toolbar.
Built-in presets are loaded from public/doc-configurations.json. You can pre-populate this file to share standard configurations across a team:
{
"configurations": [
{
"id": "project-home",
"name": "Home Inventory",
"client": "Hart of the Midlands",
"project": "Home Inventory",
"contract": "HART-001-HOME",
"sow": "HART-001",
"sprint": "Sprint 2",
"releaseDate": "2026-06-30"
}
]
}Local presets (saved from within the app) are stored in localStorage and persist between sessions on the same machine.
The ERD can be rendered in two modes, toggled in the toolbar:
| Mode | Description |
|---|---|
| Detailed Relationships | Shows all foreign-key and many-to-many relationships between tables |
| Compact | Shows tables only, without relationship lines — useful for solutions with very large schemas |
| Layer | Technology |
|---|---|
| Desktop shell | Electron 41 |
| Frontend | React 19 + TypeScript 6 + Vite 8 |
| ZIP parsing | JSZip |
| XML parsing | fast-xml-parser (XXE-safe configuration) |
| Markdown rendering | react-markdown + remark-gfm + rehype-raw |
| Diagram rendering | Mermaid 11 |
| Packaging | electron-builder (portable + NSIS installer) |
All processing runs entirely locally — no data leaves your machine.
Prerequisites: Node.js 20+, npm, Windows (for packaging)
# Install dependencies
npm install
# Run in development mode (hot-reload)
npm run desktop:dev
# Production build only (no packaging)
npm run build
# Build and package both portable + installer into release_latest_* folders
npm run desktop:build:latest
# End-of-phase workflow: bump version, run full gate, and build release executables
npm run phase:complete
# Same but also mirror the unpacked runtime to release_latest/
npm run desktop:build:latest -- -MirrorUnpacked
# Skip the npm build step (re-package from existing dist/)
npm run desktop:build:latest:skip-buildBuild artifacts are written to:
| Folder | Contents |
|---|---|
release_latest/ |
Unpacked Electron runtime (PP-MD.exe + supporting files) |
release_latest_portable/ |
Self-contained portable .exe |
release_latest_installer/ |
NSIS installer .exe + .blockmap |
Large binary artifacts in these folders are tracked by Git LFS (.exe, .dll, .asar, .pak, .dat, .bin, .blockmap).
- No network access — the app performs no outbound requests during solution processing.
- Solution ZIPs are parsed entirely in the Electron renderer process using a memory-safe XML parser configured to prevent entity-expansion (XXE) attacks.
- Electron is configured with
contextIsolation: trueandsandbox: true. - External hyperlinks open in the system default browser, not inside the app.
- A strict Content Security Policy is applied via
index.html. - The contrast of all UI theme tokens is verified at build time (WCAG 2.2 AA minimum).
| Requirement | Minimum |
|---|---|
| OS | Windows 10 or Windows 11 (x64) |
| RAM | 4 GB (8 GB recommended for very large solutions) |
| Disk | 500 MB free for the app and runtime |
| Display | 1280 × 768 or higher |
Built by Mike Hartley — Hart of the Midlands