NuGet packages for Microsoft Dataverse development. Part of the Power Platform Developer Suite ecosystem.
| Package | Target Frameworks |
|---|---|
| PPDS.Plugins | net462, net8.0, net10.0 |
| PPDS.Dataverse | net8.0, net10.0 |
| PPDS.Migration | net8.0, net10.0 |
| PPDS.Migration.Cli | net8.0, net10.0 |
Declarative attributes for configuring Dataverse plugin registrations directly in code.
dotnet add package PPDS.Plugins[PluginStep(
Message = "Create",
EntityLogicalName = "account",
Stage = PluginStage.PostOperation)]
[PluginImage(
ImageType = PluginImageType.PreImage,
Name = "PreImage",
Attributes = "name,telephone1")]
public class AccountCreatePlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider) { }
}See PPDS.Plugins on NuGet for details.
High-performance Dataverse connectivity with connection pooling, throttle-aware routing, and bulk operations.
dotnet add package PPDS.Dataverse// Setup
services.AddDataverseConnectionPool(options =>
{
options.Connections.Add(new DataverseConnection("Primary", connectionString));
options.Pool.DisableAffinityCookie = true; // 10x+ throughput improvement
});
// Usage
await using var client = await pool.GetClientAsync();
var account = await client.RetrieveAsync("account", id, new ColumnSet(true));See PPDS.Dataverse documentation for details.
High-performance data migration engine for Dataverse. Replaces CMT for automated pipeline scenarios with 3-8x performance improvement.
dotnet add package PPDS.Migration// Setup
services.AddDataverseConnectionPool(options =>
{
options.Connections.Add(new DataverseConnection("Target", connectionString));
});
services.AddDataverseMigration();
// Export
var exporter = serviceProvider.GetRequiredService<IExporter>();
await exporter.ExportAsync("schema.xml", "data.zip");
// Import with dependency resolution
var importer = serviceProvider.GetRequiredService<IImporter>();
await importer.ImportAsync("data.zip");Key Features:
- Parallel export (all entities exported concurrently)
- Tiered import with automatic dependency resolution
- Circular reference detection with deferred field processing
- CMT format compatibility (drop-in replacement)
- Security-first: no PII in logs, connection string redaction
See PPDS.Migration documentation for details.
CLI tool for data migration operations. Install as a .NET global tool:
dotnet tool install -g PPDS.Migration.Cli# Set connection via environment variable (recommended for security)
export PPDS_CONNECTION="AuthType=ClientSecret;Url=https://org.crm.dynamics.com;..."
# Analyze schema dependencies
ppds-migrate analyze --schema schema.xml
# Export data
ppds-migrate export --schema schema.xml --output data.zip
# Import data
ppds-migrate import --data data.zip --batch-size 1000
# Full migration (export + import)
export PPDS_SOURCE_CONNECTION="..."
export PPDS_TARGET_CONNECTION="..."
ppds-migrate migrate --schema schema.xmlSee PPDS.Migration.Cli documentation for details.
Key design decisions are documented as ADRs:
- ADR-0001: Disable Affinity Cookie by Default
- ADR-0002: Multi-Connection Pooling
- ADR-0003: Throttle-Aware Connection Selection
- Connection Pooling - When and how to use connection pooling
- Bulk Operations - High-throughput data operations
| Project | Description |
|---|---|
| power-platform-developer-suite | VS Code extension |
| ppds-tools | PowerShell deployment module |
| ppds-alm | CI/CD pipeline templates |
| ppds-demo | Reference implementation |
MIT License - see LICENSE for details.