Skip to main content

D365FO Deploy Portal - Package Deployment to Power Platform

Proprietary Software
D365FO Deploy Portal - Package Deployment to Power Platform

Web-based deployment automation tool for Microsoft Dynamics 365 Finance and Operations (D365 F&O). Deploy Lifecycle Services (LCS) and Unified packages to multiple Power Platform / Dataverse environments in parallel. Bidirectional package converter: LCS→Unified and Unified→LCS. Inject licenses into Unified packages. Merge LCS and Unified packages. Parallel PAC CLI deployment to all environments simultaneously. CLI for headless conversion, full REST API with Swagger, pipeline-ready (Azure DevOps, GitLab CI). Drag-and-drop UI, real-time logs, full deployment history. Docker container or self-contained Windows app — no .NET installation required.

D365 F&O Package Deployment Tool: Automate LCS↔Unified Conversion, License Injection, and Parallel Multi-Environment Deployment

Deploying Microsoft Dynamics 365 Finance and Operations (D365 F&O / D365FO / D365 FnO) packages to Power Platform and Dataverse environments is a complex, multi-step process. Teams must manually download packages from Lifecycle Services (LCS), convert between LCS and Unified formats, inject licenses, authenticate with PAC CLI for each environment, and execute deployment commands one by one. When you have multiple sandbox, UAT, and production environments, this becomes a time-consuming, error-prone routine.

The Challenge

Organizations deploying D365 Finance and Operations packages to Power Platform and Dataverse environments face manual, repetitive workflows: converting between LCS and Unified formats, injecting licenses into packages, authenticating via PAC CLI, and deploying to each sandbox and production environment one by one. With multiple environments and frequent updates, this becomes a full-time job — with no centralized history, no real-time visibility, and high risk of human error.

The Solution: Unified Deployment Portal

D365FO Deploy Portal is a web-based deployment automation tool that replaces the entire manual deployment pipeline with a single, intuitive GUI. It includes a bidirectional package converter (LCS→Unified and Unified→LCS), license injection into Unified packages, and parallel deployment to multiple environments. Upload packages, merge them if needed, convert in either direction, inject licenses, select target Dataverse environments, and deploy — all from one dashboard. Real-time logs stream directly to your browser, and full deployment history is always available.

How It Works

  1. Upload: Drag-and-drop LCS, Unified, or other ZIP packages — the system auto-detects package type by analyzing ZIP contents
  2. Merge (optional): Select 2+ LCS or Unified packages and merge them into a single combined package
  3. Convert: Convert packages bidirectionally — LCS→Unified for Power Platform deployment, or Unified→LCS when you need the original format
  4. Inject License (optional): Embed license files into Unified packages before deployment
  5. Deploy: Select a package and one or more target environments, click "Start Deploy" — parallel PAC CLI deployment runs simultaneously to all selected environments
LCS Package  →  [Merge]  →  [Convert to Unified]  →  [Inject License]  →  Parallel Deploy via PAC CLI
Unified Package  →  [Merge]  →  [Inject License]  →  Parallel Deploy via PAC CLI
Unified Package  →  [Convert to LCS]  →  LCS Package (reverse conversion)

Key Capabilities

📦 Package Management

📤

Smart Upload

Upload LCS, Unified, or any ZIP packages. The system auto-detects the package type by analyzing contents — looks for AOSService/, HotfixInstallationInfo.xml (LCS), or TemplatePackage.dll (Unified).

🔀

Package Merging (LCS & Unified)

Select 2 or more LCS or Unified packages and merge them into a single combined package. Custom merge names with expandable source info showing exactly which packages were combined. Works for both LCS and Unified package types.

🔄

Bidirectional Conversion

Convert LCS packages to Unified format for Power Platform deployment, or convert Unified packages back to LCS format when needed. Both directions available from the UI, REST API, and CLI.

📜

License Injection

Inject license files directly into Unified packages before deployment. No manual ZIP manipulation or XML editing — upload the license, select the package, and the tool embeds it automatically.

🔍

Package List

Full sortable, searchable list of all uploaded packages. Expandable rows show merge source details. Filter by type, search by name — manage hundreds of packages effortlessly.

🚀 Multi-Environment Deployment

🌐

Parallel Deploy to Multiple Environments

Parallel PAC CLI Deployment

Select a package, check all target environments, click one button — PAC CLI deployment runs in parallel to all selected environments simultaneously. No sequential waiting — all environments deploy at the same time.

Environment Management

Full CRUD for target environments. Bulk import from Setup-ServicePrincipal.ps1 script output — add 10+ environments in one paste.

Non-Interactive Auth

Uses Azure AD Service Principal for PAC CLI authentication. No manual logins, no browser popups — fully automated.

Encrypted Secrets

All Client Secrets are encrypted using ASP.NET Core Data Protection API before storing in the database. Enterprise-grade security.

⌨️ CLI, REST API, Swagger & Pipelines

🔌

Automation Without the UI

Use the portal from scripts, CI/CD pipelines, or convert packages without starting the web server.

CLI (Docker / .NET)

Run the container with convert and paths to input/output ZIP — LCS→Unified conversion without the web UI. Same with dotnet run -- convert locally.

REST API

Full API: list/upload packages, convert LCS→Unified and Unified→LCS, merge LCS/Unified packages, inject licenses into Unified packages, download. Integrate from any HTTP client or script.

Swagger

Interactive API docs at /swagger — try endpoints and see request/response schemas in the browser.

Pipelines

Call the API from Azure DevOps, GitLab CI, or any pipeline: upload artifact → convert to Unified → download result. No GUI required.

📊 Real-Time Logs & History

  • 📡
    Live Streaming via SignalR

    Watch deployment output in real time directly in your browser. Every line from PAC CLI and the conversion process is streamed live for each environment in parallel.

  • 📋
    Full Deployment History

    Every deployment is recorded with status, timestamps, package info, and target environment. Filter by package, environment, status, or date range.

  • 🔎
    Deployment Detail View

    Click any deployment to see the complete log output — useful for debugging failed deployments or auditing past actions.

  • 📈
    Dashboard Overview

    At-a-glance counters for packages, environments, and deployments. Recent deployment activity and setup warnings — everything on the home screen.

🔐 Security & Configuration

🛡️

Enterprise-Grade Security

  • Encrypted Secrets: Client Secrets encrypted with ASP.NET Core Data Protection API before database storage
  • Service Principal Auth: Azure AD non-interactive authentication — no stored user passwords
  • Configurable Paths: All tool paths configurable via Settings UI — no hardcoded paths in the application
  • Structured Logging: Serilog with console + rolling file output for full audit trail

🖥️ Application Pages

Page URL Description
Dashboard / Package/environment/deployment counters, recent deployments, setup warnings
Packages /packages Upload packages, merge, view list with sorting/search/expandable merge info
Environments /environments CRUD for target environments, bulk import from script output
Deploy /deploy Select package + environments, start deployment to all at once
History /deployments Full deployment history with status, click for details
Deployment Detail /deployments/{id} Real-time log viewer for a specific deployment
Settings /settings Configure tool paths, storage, view tool status
Swagger (API docs) /swagger Interactive REST API documentation — try endpoints, see schemas

💼 Use Cases

👨‍💻 For D365 F&O Developers

Deploy packages to sandbox and dev/test Dataverse environments without leaving the browser. Upload, merge LCS or Unified packages, convert bidirectionally (LCS↔Unified), inject licenses, and deploy in parallel — all in a few clicks instead of command-line gymnastics.

⚙️ For DevOps Engineers

Release pipelines handle scheduled, repeatable deployments perfectly — but not every task fits a pipeline. Ad-hoc hotfixes, ISV package testing across sandboxes, quick package validation before production — Deploy Portal covers this class of tasks with full history, real-time logs, and automated conversion. No pipeline setup needed for one-off operations.

🏢 For Enterprise Environments

When your organization has 5–15+ Power Platform environments, even ad-hoc deployments become complex. Deploy Portal handles multi-environment deployment with encrypted credentials, full audit trail, and bulk environment import — enterprise-grade security without enterprise-grade complexity.

🔧 For IT Administrators

Self-contained deployment tool — no .NET installation required on target machines. Run as a Docker container or standalone Windows application. Configurable via GUI, no config files to edit manually. Setup in minutes, zero dependencies on the host.

📋 For Release Managers

Centralized deployment history across all Power Platform environments — know who deployed what, where, and when. Real-time visibility into deployment progress via SignalR streaming. Full audit trail with searchable, filterable logs for compliance. Plan and coordinate releases across multiple environments with confidence.

🏗️ For Technical Delivery Managers (TDM)

Enterprise-grade deployment automation with encrypted credentials, Service Principal authentication, and structured logging. REST API for integration with your project's toolchain. Reduce deployment risk and manual effort across multiple projects and environments. Standardize D365FO package deployment process across your organization.

🐳 Deployment Options

🐳

Docker Container

Linux container with .NET Runtime and PAC CLI pre-installed. Built-in bidirectional LCS↔Unified converter. One command to run.

💻

Self-Contained Windows

Single folder with embedded .NET Runtime. Copy to target machine, double-click start.cmd — no prerequisites needed.

🛠️

Development Mode

Hot reload with dotnet watch. Open source for internal customization. Full Playwright E2E test suite included.

🛠️ Technical Stack

Core Technologies

  • 🔷 Blazor Server — interactive UI with server-side rendering
  • 🎨 MudBlazor 8.x — Material Design component library
  • ⚙️ ASP.NET Core 9.0 — backend services and API
  • 🗄️ SQLite + EF Core — zero-config database
  • 📡 SignalR — real-time log streaming

Architecture

  • 🔄 Background workers with Channel<T>
  • 🔒 Data Protection API for secret encryption
  • 📝 Serilog structured logging
  • 🐳 Docker + Docker Compose support
  • 🧪 Playwright E2E testing

📋 Package Types Supported

Type Description Auto-Detection
LCS Original Dynamics 365 package format from Lifecycle Services Contains AOSService/ or HotfixInstallationInfo.xml
Unified Converted format ready for Power Platform deployment Contains TemplatePackage.dll
Merged Result of merging 2+ LCS packages into one Created by the app, shows source packages
Other Any other ZIP file None of the above patterns matched

⚡ Quick Start — Try It in 2 Minutes

🐳

Docker — One Command to Start

All you need is Docker installed on your machine. No .NET, no PAC CLI, no SDK — everything is inside the container.

Step 1 — Start the container:

docker run -d -p 5000:5000 --name d365FOportal vglu/d365fo-deploy-portal:latest

Step 2 — Open in your browser:

http://localhost:5000

Step 3 — You're in the portal. From here:

  • • Go to Environments — add your Power Platform / Dataverse environments (or bulk-import via script)
  • • Go to Packages — drag-and-drop your LCS or Unified ZIP packages
  • • Go to Deploy — select a package, check target environments, click Start Deploy
  • • Watch the real-time logs as deployment runs

The container includes .NET Runtime, PAC CLI, and a built-in bidirectional LCS↔Unified converter. The SQLite database and uploaded packages are persisted via Docker volumes — your data survives container restarts.

CLI (no web UI):

docker run --rm -v /path/to/packages:/data vglu/d365fo-deploy-portal:latest convert /data/MyLcs.zip /data/MyUnified.zip

REST API: http://localhost:5000/swagger — use from scripts or pipelines (upload → convert → download).

💻 Alternative: Windows (Self-Contained)

No Docker? No problem. Copy the publish/ folder to any Windows machine, double-click start.cmd, and open http://localhost:5000 in your browser. No .NET installation required — everything is embedded.

# Or run manually:
DeployPortal.exe --urls "http://localhost:5000"

🔧 Configuration

All parameters are configurable via the Settings UI or environment variables:

  • PacCliPath — path to pac.cmd or pac.exe (auto-detect from PATH)
  • PackageStoragePath — directory for uploaded packages
  • DatabasePath — path to SQLite database file
  • TempWorkingDir — temp directory for merge/convert operations
  • ConverterEngine — built-in bidirectional LCS↔Unified converter
  • ProcessingMode — Local or Azure processing

💡 Why This Matters

For organizations running Microsoft Dynamics 365 Finance and Operations (D365 F&O), deploying packages from Lifecycle Services to Power Platform and Dataverse environments involves two types of tasks. Scheduled, repeatable releases are best handled by CI/CD pipelines — and they should be. But there's another class of tasks: ad-hoc hotfixes, ISV package testing, sandbox deployments, package conversion and validation. These happen constantly and don't justify building a pipeline for each one. D365FO Deploy Portal is built for exactly this — eliminating manual overhead while providing:

  • Single UI: Upload, merge LCS & Unified packages, convert bidirectionally (LCS↔Unified), inject licenses, and deploy — no command-line tools, no context switching
  • CLI & REST API: Convert via Docker CLI without the web server; full REST API with Swagger for scripts and pipelines
  • Pipeline-Ready: Integrate into Azure DevOps, GitLab CI, or any CI/CD — upload, convert, download via API
  • Parallel Deployment: PAC CLI runs in parallel to all selected environments simultaneously — not one by one
  • Real-Time Visibility: Watch deployment progress live via SignalR streaming
  • Full Audit Trail: Complete deployment history with searchable, filterable logs
  • Zero-Config Distribution: Self-contained app or Docker container — no .NET installation required
  • Enterprise Security: Encrypted secrets, Service Principal authentication, structured logging

If you manage D365 F&O package deployments to Power Platform and Dataverse environments — whether converting packages between LCS and Unified formats, injecting licenses into Unified packages, merging multiple packages, or running parallel deployments to sandbox environments — this deployment automation tool transforms a tedious manual process into a streamlined workflow.

❓ Frequently Asked Questions

How to deploy D365 Finance and Operations packages to Power Platform without LCS?
D365FO Deploy Portal provides a web-based GUI that replaces the entire manual LCS deployment workflow. Upload your LCS or Unified packages via drag-and-drop, select target Dataverse environments, and click "Start Deploy." The tool handles PAC CLI authentication, bidirectional LCS↔Unified conversion, license injection, and parallel multi-environment deployment automatically — no need to use LCS portal or command-line tools manually.

Can Deploy Portal convert packages in both directions — LCS to Unified and Unified to LCS?
Yes. Deploy Portal includes a bidirectional package converter. Convert LCS packages to Unified format for Power Platform deployment, or convert Unified packages back to LCS format when needed (e.g., for LCS-based workflows or testing). Both directions are available from the web UI, REST API, and CLI.

How to inject a license into a Unified D365FO package?
Deploy Portal allows you to inject license files directly into Unified packages. On the Packages page, select a Unified package and use the "Put License" function — upload your license file and the tool embeds it into the package automatically. No manual ZIP manipulation or XML editing required. Also available via REST API for automation workflows.

How to deploy D365FO packages to multiple Dataverse environments in parallel?
In the Deploy page, select a package and check all target environments you want to deploy to. Click "Start Deploy" — the system runs PAC CLI in parallel for all selected environments simultaneously. No sequential waiting — all environments are deployed at the same time. Real-time logs stream to your browser for each environment so you can monitor progress independently.

How to automate PAC CLI deployment without interactive login?
Deploy Portal uses Azure AD Service Principal authentication for PAC CLI. Configure your Service Principal credentials (Tenant ID, Application ID, Client Secret) in the Environments page. The tool encrypts secrets using ASP.NET Core Data Protection API and handles PAC CLI authentication automatically — no browser popups or manual logins required.

Can I merge multiple D365FO packages into one before deployment?
Yes. On the Packages page, select 2 or more packages and use the Merge function. The system supports merging both LCS and Unified packages into a single combined package with a custom name, recording which source packages were combined. The merged package can then be converted, have licenses injected, and deployed like any other package.

Can I use Deploy Portal from scripts or CI/CD pipelines without the web UI?
Yes. CLI: run the Docker image with convert and input/output paths to convert LCS→Unified or Unified→LCS without starting the web server. REST API: the portal exposes a full API (upload, convert in both directions, merge LCS/Unified packages, inject licenses, download). Interactive documentation is at /swagger. You can call the API from Azure DevOps, GitLab CI, or any pipeline: upload a build artifact, POST to convert, then download the result — no GUI required.

Does Deploy Portal work in Docker? What are the system requirements?
Yes. The Docker container includes .NET Runtime, PAC CLI, and the built-in bidirectional LCS↔Unified converter. Run docker run -d -p 5000:5000 --name d365FOportal vglu/d365fo-deploy-portal:latest and open http://localhost:5000. No additional software installation needed. For Windows, use the self-contained build — copy the folder to any machine and double-click start.cmd. No .NET installation required on the host.

What is the difference between LCS and Unified package formats in D365 F&O?
LCS (Lifecycle Services) packages are the original format used in Dynamics 365 Finance and Operations deployments — they contain AOSService folders and HotfixInstallationInfo.xml. Unified packages are the newer format required for Power Platform / Dataverse deployment via PAC CLI — they contain TemplatePackage.dll. Deploy Portal provides bidirectional conversion between these formats: LCS→Unified for Power Platform deployment, and Unified→LCS when you need the original format for LCS-based workflows.

📞 Contact & Support

For questions, licensing, or demo requests:

  • Email: vhlu@sims-service.com
  • Website: https://sims-service.com

🚀

Proprietary Software

D365FO Deploy Portal is proprietary software by SIMS tech. Contact us for licensing, pricing, and deployment options tailored to your organization's needs.