Setup Guide

There is a faster way

Everything on this page can be done for you. The Power Portals Pro MCP server knows this framework, reads your Dataverse environment and your Azure subscription, and can create the app registrations, the application user, the App Service and the email sender itself — asking you before each change and telling you what it costs. The manual steps are below it, and stay accurate whether or not you use it. For the whole journey — from an empty folder to a secured page of your own data — follow the AI Quickstart.

Let an AI agent do the setup

The setup is the part of this framework that no amount of component documentation helps with: it spans dotnet new, two Entra app registrations, a Dataverse application user, a managed solution, an email sender and an App Service, and every one of them produces a value that has to land in the right configuration key. The MCP server exists because that sequence is knowable, and it is the kind of thing an agent with the right tools does well.

1. Install it

Install it at user scope, so it is available in any folder — including an empty one you are about to scaffold a project into, which is exactly where it can tell you which template to use and what the options mean:

Visual Studio and Cursor read their own .mcp.json; the MCP Server page has the block for each. Projects created from the templates are already wired up, with the version pinned to the packages that project uses. dnx ships with the .NET 10 SDK, which you already have.

2. Sign in, in your project folder

Two sign-ins, because they are two different things: one for the Dataverse environment and one for the Azure subscription. Run both in the folder your project lives in — each binding belongs to that folder alone, so a consultant with several customers open has each one pointed at its own environment and subscription at the same time:

Both use a device code by default, so they work over SSH, in a container and in WSL, and you can finish them on your phone. Nothing machine-wide changes — the server never reads or alters what az or pac are logged in to, which is what lets two projects target two customers without one stepping on the other. The Azure sign-in is only needed for the deployment tools; skip it if you are only setting up locally.

3. Ask it to begin

There is no single command that does everything, deliberately — see the note below. Point your agent at the plan instead, and it will work through it with you:

get_setup_plan is the ordered list of what has to exist and what each step produces; check_setup reports what this folder is still missing; get_setup_script writes a reviewable script for the steps you would rather run yourself. For deploying, get_deployment_plan and check_deployment do the same job for Azure — see the Azure deployment page.

Note

Why there is no single “do everything” command. Each tool that creates something asks you first and states the cost, and that per-step approval is the reason these tools are allowed to create app registrations and App Services at all. One command that did the lot would either ask ten times, which is worse than an agent walking you through it, or ask once — which would mean approving tenant-wide directory objects, a monthly bill and Dataverse writes on a single yes. The sequence is knowable and the agent can read it; the approvals are yours.

Setting it up by hand

The same sequence, done yourself. Worth reading even if you use the agent: it is what the tools are doing, and knowing it is the difference between diagnosing a failed setup and guessing at one.

1. Install the .NET Core Template

The easiest way to get started is by using the pre-built template for Visual Studio 2022 and 2026. See the Project Templates page for detailed instructions on installing the template, what it includes, and how to configure it. Run the following command to install the template:

2. Create Your Project and Solution

The pack installs two templates, and the Power Portals Pro feature set is identical across both — grids, editors, security, localization and the identity pages behave the same way either way. Pick the front end your team wants to work in:

Once the template is installed, you can select it in Visual Studio:

The Visual Studio new-project dialog with a Power Portals Pro template selected.

Either can be created from the command line instead, which is also how you would script it. The Project Templates page covers every option and its default:


3. Configure Dataverse Connection Settings

As shown in the Program.cs file, the connection information is retrieved from the application configuration:

The Program.cs code showing where the Dataverse connection settings are read from configuration.

For security best practices, store your credentials in the User Secrets file. Right-click on the project file and select 'Manage User Secrets':

The Visual Studio project context menu with the Manage User Secrets option highlighted.

Copy the following JSON and replace the placeholder values with your own credentials:

{
  "D365":
  {
    "Url": "https://yoururl.crm.dynamics.com",
    "ClientId": "",
    "ClientSecret": ""
  }
}

4. Install the Managed Solution

Download and install the latest managed solution into your Dataverse environment from the Releases page.

Navigate to the 'Power Portals Pro' app in your environment:

The Power Portals Pro model-driven app open in the Dataverse environment.

Go to the 'Portal Website' navigation item and create a new record with your license key.

The Portal Website record form where the license key is entered.

Note

If you don't have a license key, you can request a trial license here. See the Licensing page for full details on obtaining and registering a license key.

5. Microsoft Authentication (Optional)

To enable user authentication with Azure Entra ID, uncomment the following code in the Program.cs file:

The Program.cs code with the Microsoft authentication section uncommented.

You'll need to register an application in Entra ID to obtain your ClientId and Secret. See: Register an app in Entra ID

6. Run the Application

You're now ready to run the application and start customizing your portal!

The solution also includes a <YourProject>.Tests.Integration project with bases for endpoint, permission and service-layer tests. See Integration Testing.