SujanSolutionDeployer 1.0.12

dotnet add package SujanSolutionDeployer --version 1.0.12
                    
NuGet\Install-Package SujanSolutionDeployer -Version 1.0.12
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SujanSolutionDeployer" Version="1.0.12" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SujanSolutionDeployer" Version="1.0.12" />
                    
Directory.Packages.props
<PackageReference Include="SujanSolutionDeployer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SujanSolutionDeployer --version 1.0.12
                    
#r "nuget: SujanSolutionDeployer, 1.0.12"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SujanSolutionDeployer@1.0.12
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SujanSolutionDeployer&version=1.0.12
                    
Install as a Cake Addin
#tool nuget:?package=SujanSolutionDeployer&version=1.0.12
                    
Install as a Cake Tool

Sujan Solution Deployer

Power Platform Solution Deployment Tool

NuGet License

A comprehensive solution deployment and management tool for Microsoft Power Platform that streamlines the process of deploying solutions across multiple environments with advanced features like version control, automated backups, and rollback capabilities.

Solution Deployer Screenshot

🚀 Features

Core Functionality

  • Multi-Environment Solution Loading: Load both managed and unmanaged solutions from connected Power Platform environments
  • Batch Deployment: Deploy single or multiple solutions to one or more target environments simultaneously
  • Target Environment Management: Easily add, remove, and manage multiple target environments

Version Control

  • Intelligent Version Increment: Support for both manual and automatic version incrementation
  • Source Synchronization: Update solution versions in the source environment automatically
  • Version History Tracking: Maintain complete version history for audit and compliance

Deployment Management

  • Real-Time Monitoring: View live deployment logs and progress indicators
  • Deployment History: Access complete deployment history with CSV export capability
  • Configurable Options: Customize deployment settings per environment

Backup & Recovery

  • Automatic Solution Backup: Create backups before each deployment
  • Rollback/Downgrade: Safely revert to previous solution versions when needed
  • Point-in-Time Recovery: Restore solutions to any previous state

Notifications

  • Email Notifications: Automated deployment status notifications
  • SMTP Configuration: Built-in SMTP setup with diagnostic tools
  • Custom Alerts: Configure notification triggers and recipients

📋 Prerequisites

  • .NET 4.6 or higher
  • Microsoft Power Platform environment access
  • Valid Power Platform credentials with appropriate permissions
  • SMTP server details (optional, for email notifications)

🔧 Installation

Via NuGet Package Manager

Install-Package SujanSolutionDeployer --version 1.0.12

Via .NET CLI

dotnet add package SujanSolutionDeployer --version 1.0.12

Via Package Manager Console

PM> NuGet\Install-Package SujanSolutionDeployer -Version 1.0.12

🎯 Quick Start

1. Connect to Your Environment

var connectionString = "AuthType=OAuth;Url=https://yourorg.crm.dynamics.com;...";
var solutionManager = new SolutionDeploymentTool(connectionString);

2. Load Solutions

// Load all solutions from the connected environment
var solutions = await solutionManager.LoadSolutionsAsync();

// Filter managed or unmanaged solutions
var managedSolutions = solutions.Where(s => s.IsManaged).ToList();

3. Configure Target Environments

// Add target environment
solutionManager.AddTargetEnvironment(new TargetEnvironment 
{
    Name = "Production",
    Url = "https://prod.crm.dynamics.com",
    Credentials = credentials
});

4. Deploy Solutions

var deploymentOptions = new DeploymentOptions 
{
    EnableEmailNotification = true,
    AutoBackup = true,
    VersionIncrement = VersionIncrementType.Patch
};

await solutionManager.DeployAsync(solutions, targetEnvironments, deploymentOptions);

📖 Detailed Usage

Version Management

Automatic Version Increment
var options = new DeploymentOptions 
{
    VersionIncrement = VersionIncrementType.Automatic,
    VersionIncrementRule = IncrementRule.Patch // Major, Minor, Patch, Build
};
Manual Version Increment
await solutionManager.UpdateSolutionVersionAsync(
    solutionName: "MySolution",
    newVersion: "1.2.3.4"
);

Backup Configuration

var backupOptions = new BackupOptions 
{
    AutoBackup = true,
    BackupLocation = @"C:\Backups\Solutions",
    RetentionDays = 30
};

solutionManager.ConfigureBackup(backupOptions);

Email Notifications

var smtpConfig = new SmtpConfiguration 
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    Username = "your-email@domain.com",
    Password = "your-password",
    FromAddress = "noreply@domain.com"
};

solutionManager.ConfigureSmtp(smtpConfig);

// Test SMTP configuration
var diagnosticResult = await solutionManager.TestSmtpAsync();

Rollback Solutions

// List available backups
var backups = await solutionManager.GetBackupsAsync("MySolution");

// Rollback to specific version
await solutionManager.RollbackAsync(
    solutionName: "MySolution",
    targetVersion: "1.2.0.0",
    targetEnvironment: productionEnv
);

Deployment History

// Get deployment history
var history = await solutionManager.GetDeploymentHistoryAsync(
    startDate: DateTime.Now.AddMonths(-1),
    endDate: DateTime.Now
);

// Export to CSV
await solutionManager.ExportHistoryToCsvAsync(
    history, 
    outputPath: @"C:\Reports\deployment_history.csv"
);

🔍 Monitoring & Logging

The tool provides real-time deployment monitoring:

solutionManager.OnDeploymentProgress += (sender, args) => 
{
    Console.WriteLine($"Progress: {args.PercentComplete}%");
    Console.WriteLine($"Current Step: {args.CurrentStep}");
    Console.WriteLine($"Status: {args.Status}");
};

solutionManager.OnDeploymentLog += (sender, args) => 
{
    Console.WriteLine($"[{args.Timestamp}] {args.Level}: {args.Message}");
};

⚙️ Configuration

appsettings.json Example

{
  "PowerPlatform": {
    "SourceEnvironment": {
      "Url": "https://dev.crm.dynamics.com",
      "AuthType": "OAuth"
    },
    "DefaultDeploymentOptions": {
      "AutoBackup": true,
      "EmailNotification": true,
      "VersionIncrement": "Patch"
    }
  },
  "Smtp": {
    "Host": "smtp.gmail.com",
    "Port": 587,
    "EnableSsl": true
  },
  "Backup": {
    "Location": "./Backups",
    "RetentionDays": 30
  }
}

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📝 License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

🐛 Known Issues

  • Large solution deployments (>100MB) may require increased timeout settings
  • Email notifications require proper SMTP server configuration

📞 Support

🙏 Acknowledgments

  • Microsoft Power Platform team for the excellent SDK

📊 Roadmap

  • Support for Power Platform Pipelines integration
  • Advanced solution dependency analysis
  • Multi-tenant deployment support
  • Integration with Azure DevOps
  • Enhanced reporting and analytics dashboard

Made with ❤️ for the Power Platform Community

Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.12 1,142 12/1/2025
1.0.11 535 12/1/2025
1.0.10 523 12/1/2025
1.0.9 526 12/1/2025
1.0.8 534 12/1/2025
1.0.7 455 12/1/2025
1.0.6 225 11/27/2025
1.0.5 219 11/27/2025
1.0.4 221 11/27/2025
1.0.3 212 11/27/2025
1.0.2 220 11/27/2025
1.0.1 216 11/27/2025
1.0.0 218 11/27/2025

Version 1.0.12 (2025-12-01)
     - Fixed missing SQLite dependencies that prevented the tool from loading in XrmToolBox
     - Added required System.Data.SQLite.dll and native SQLite.Interop (x86/x64) files into the NuGet package

     Version 1.0.11 (2025-12-01)
     - Updated NuGet Assembly info for XrmToolBox compatibility

     Version 1.0.10 (2025-12-01)
     - Updated NuGet Assembly info for XrmToolBox compatibility

     Version 1.0.9 (2025-12-01)
     - Updated NuGet Assembly info for XrmToolBox compatibility

     Version 1.0.8 (2025-12-01)
     - Fixed NuGet package structure for XrmToolBox compatibility
     - Changed dependency from XrmToolBoxPackage to XrmToolBox
     - Updated target framework to net472 for proper plugin loading

     Version 1.0.7 (2025-11-28)
     - Fixed NuGet package target framework to match dependency group (net48)

     Version 1.0.6 (2025-11-28)
     - Fixed NuGet package structure for XrmToolBox compatibility (lib\net452\Plugins)

     Version 1.0.5 (2025-11-28)
     - Assembly info updated for NuGet package compliance

     Version 1.0.4 (2025-11-28)
     - Added embedded icon for better package visibility

     Version 1.0.3 (2025-11-28)
     - Added public icon for better package visibility

     Version 1.0.2 (2025-11-27)
     - Added public icon for better package visibility

     Version 1.0.1 (2025-11-27)
     - Added embedded icon for better package visibility
     - Included README documentation in package
     - Improved package metadata and presentation

     Version 1.0.0 (2025-11-27)
     - Initial release of Sujan Solution Deployer for XrmToolBox
     - Deploy Dataverse/Dynamics 365 solutions with a user-friendly interface
     - Automated rollback capabilities for failed deployments
     - Email notifications for deployment status and results
     - Comprehensive deployment history tracking
     - Solution version management and comparison
     - Support for managed and unmanaged solutions
     - Batch deployment support for multiple solutions
     - Pre-deployment validation and dependency checking
     - Integration with XrmToolBox plugin ecosystem
     - Built on .NET Framework 4.8 with latest Microsoft CRM SDK