Power Platform Developer Suite Demo Solution

December 14, 2025 · View on GitHub

A reference implementation for Dynamics 365 CE / Dataverse that demonstrates the capabilities of the Power Platform Developer Suite VS Code extension and the PPDS ecosystem.

Purpose

This repository serves four main goals:

  1. Showcase Extension Capabilities - Provides real-world examples of plugins, web resources, cloud flows, and other components that demonstrate what the VS Code extension can do

  2. Reference Architecture / Starter Template - Clone this repo, replace the demo content, keep the infrastructure (CI/CD, branching, docs) as a starting point for new projects

  3. AI-Assisted Development Reference - Well-structured patterns in CLAUDE.md that AI coding assistants can use when helping build Power Platform solutions

  4. Educational Example - Shows complex ALM concepts at a micro level without clutter - one correct example of each component type

Prerequisites

Required

For Plugin Development

  • PPDS.Plugins (NuGet): Plugin step registration attributes
    # Installed via project reference - see src/Plugins/PPDSDemo.Plugins/PPDSDemo.Plugins.csproj
    

For Plugin Deployment

  • PPDS.Tools (PowerShell): Deployment automation cmdlets
    Install-Module PPDS.Tools -Scope CurrentUser
    

For Web Resources & PCF

Optional

Quick Start

# Clone the repository
git clone https://github.com/joshsmithxrm/ppds-demo.git
cd ppds-demo

# Restore NuGet packages
dotnet restore

# Build the plugin projects
dotnet build src/Plugins/PPDSDemo.Plugins/PPDSDemo.Plugins.csproj

# Run tests (when available)
dotnet test

# Pack the solution (requires PAC CLI)
pac solution pack --zipfile solutions/exports/PPDSDemo.zip --folder solutions/PPDSDemo/src

What's Included

ComponentDescription
Plugin AssemblyClassic IPlugin implementations with PPDS.Plugins attributes
Plugin PackageModern NuGet-based plugin package with external dependencies
Custom Workflow ActivitiesCodeActivity implementations for classic workflows
Web ResourcesJavaScript/TypeScript, HTML, CSS, and images
Custom TablesDemo entities with relationships
SolutionUnpacked solution using --packagetype Both
CI/CD WorkflowsGitHub Actions for export and deployment

Project Structure

/
├── src/
│   ├── Plugins/                    # Plugin assemblies
│   │   └── PPDSDemo.Plugins/       # Classic plugin assembly
│   ├── PluginPackages/             # Modern plugin packages
│   │   └── PPDSDemo.PluginPackage/ # NuGet-based plugin package
│   └── Shared/
│       └── PPDSDemo.Entities/      # Generated early-bound entities

├── solutions/
│   └── PPDSDemo/
│       └── src/                    # Unpacked solution (source control)

├── tools/                          # Example deployment scripts
├── .github/                        # CI/CD workflows
└── docs/                           # Documentation

PPDS Ecosystem

This demo solution is part of the Power Platform Developer Suite ecosystem:

RepositoryPurposeUsage in this Demo
ppds-sdkNuGet packages for plugin developmentPPDS.Plugins package for step registration attributes
ppds-toolsPowerShell module for Dataverse operationsDeployment scripts in tools/
ppds-almCI/CD templates for GitHub ActionsWorkflow examples in .github/workflows/
power-platform-developer-suiteVS Code extensionDevelopment experience

Plugin Development

Plugins use attribute-based registration with the PPDS.Plugins package:

using PPDS.Plugins;

[PluginStep(
    Message = "Update",
    EntityLogicalName = "account",
    Stage = PluginStage.PostOperation,
    Mode = PluginMode.Asynchronous,
    FilteringAttributes = "name,telephone1")]
[PluginImage(
    ImageType = PluginImageType.PreImage,
    Name = "PreImage",
    Attributes = "name,telephone1")]
public class AccountAuditPlugin : PluginBase
{
    protected override void ExecutePlugin(LocalPluginContext context)
    {
        // Plugin implementation
    }
}

Deployment Workflow

  1. Build: dotnet build -c Release
  2. Extract: .\tools\Extract-PluginRegistrations.ps1
  3. Deploy: .\tools\Deploy-Plugins.ps1

CI/CD

This repository includes GitHub Actions workflows for Power Platform ALM:

WorkflowTriggerDescription
ci-export.ymlNightly / ManualExports from Dev with noise filtering
cd-qa.ymlPush to developDeploys to QA environment
cd-prod.ymlPush to mainDeploys managed solution to Production
pr-validation.ymlPull requestsValidates solution builds correctly

See docs/strategy/PIPELINE_STRATEGY.md for details.

Documentation

Strategy (The "Why")

Reference

Contributing

This is primarily a demonstration repository. If you find issues or have suggestions for better patterns, please open an issue.

License

MIT License - See LICENSE for details.