Working with development sandboxes and entitlements

The experience that a user has in Dynamics 365 Business Central depends on the purchased subscription plan. In Dynamics 365 Business Central, there are two main plans; the Essential and the Premium plan, plus a few more. For more information, see Licensing in Dynamics 365 Business Central. For detailed information about the Essential and Premium plans, see Business Central on the Microsoft Dynamics 365 site.

When you develop in a Docker sandbox, the Essential experience is automatically assigned to you (you set the experience on the Company Information page), which makes it difficult to test how a user with the Premium plan assigned will experience what you have developed.

Note

There is no license check in a Docker Sandbox except for on Purchase and Sales documents. There is a different behavior in these documents as the TEAMMEMBER license has partial access. In particular Invoices, Orders, Quotes and Credit Memos share the same table and the TEAMMEMBER license has access only to Quotes.

Setup for users with different plans

To mimic users with a specific subscription plan assigned, you can set them up with the user groups as detailed in the table below. When you add user to the group, the permission sets defined for the group will apply to the user. For more information, see To group users in user groups.

Note

In the table below non-default means not assigned by default, but the plan allows this to be assigned to the user.

User Name
The type of subscription plan
assigned to the given user
User Groups
EXTERNALACCOUNTANT

Dynamics 365 Business Central External Accountant
D365 EXT. ACCOUNTANT
EXTEN. MGT. - ADMIN (non-default)
D365 TROUBLESHOOT (non-default)
D365 SECURITY (non-default)
PREMIUM

Dynamics 365 Business Central Premium
Dynamics 365 Business Central for IWs
D365 BUS PREMIUM
EXTEN. MGT. - ADMIN (non-default)
D365 TROUBLESHOOT (non-default)
D365 SECURITY (non-default)
ESSENTIAL

Dynamics 365 Business Central Essential
D365 BUS FULL ACCESS
EXTEN. MGT. - ADMIN (non-default)
D365 TROUBLESHOOT (non-default)
D365 SECURITY (non-default)
INTERNALADMIN

Internal Administrator
D365 INTERNAL ADMIN
D365 TROUBLESHOOT
D365 BACKUP/RESTORE
D365 SECURITY (non-default)
TEAMMEMBER

Dynamics 365 for Team Members
D365 TEAM MEMBER
D365 TROUBLESHOOT (non-default)
D365 SECURITY (non-default)
DEVICE

Dynamics 365 Business Central Device
D365 FULL ACCESS
EXTEN. MGT. - ADMIN (non-default)
D365 BUS PREMIUM (non-default)*
D365 TROUBLESHOOT (non-default)

D365 SECURITY (non-default)

*) Please note: usage need to be according to terms in Licensing Guide
DELEGATEDADMIN

Delegated Admin agent - Partner
Delegated Helpdesk agent - Partner
EXTEN. MGT. - ADMIN
D365 FULL ACCESS
D365 RAPIDSTART
D365 BACKUP/RESTORE
D365 TROUBLESHOOT
D365 SECURITY (non-default)

Tip

For more information about how to choose a user experience, see Changing Which Features are Displayed.

Assigning the Premium plan to test users

Depending on how you are running your Docker sandbox, you assign the experience in different ways.

Azure VMs

If you use https://aka.ms/bcsandbox to create your Dynamics 365 Business Central Sandbox Container Azure VM, the Azure Resource Manager template has two fields; Assign Premium Plan and Create Test Users, which by default are set to Yes.

Assign Premium Plan specifies whether or not your admin user should be assigned a Premium plan. Create Test Users specifies whether or not you want the setup to include test users.

BCContainerHelper

If you're using New-BCContainer to create your Dynamics 365 Business Central Sandbox container, you must make sure that you're using version 0.2.8.3 or later.

Use the switch assignPremiumPlan on New-BCContainer like this:

New-BCContainer -accept_eula -updateHosts -containerName test -artifactUrl (Get-BCArtifactUrl -country us) -assignPremiumPlan

This assigns the Premium plan to your default admin user. Internally this just adds a record to the User Plan table.

To create the test users, you must call the Setup-BCContainerTestUsers method:

Setup-BCContainerTestUsers containerName test -tenant default -password $securePassword

specifying the container and the password that you want to use for the new users.

Internally, the Setup-BCContainerTestUsers downloads an app that exposes an API, publishes and installs the app, and then invokes the CreateTestUsers API with the password needed. After this, the app is uninstalled and unpublished.

If you want to see code behind the app, it's available here.

Docker run

If you're using Docker run to run your containers, you have a little more work to do.

First of all, you must override the SetupNavUsers.ps1 by sharing a local folder to c:\run\my in the container and place a file called SetupNavUsers.ps1 in that folder with the following content:

# Invoke default behavior
. (Join-Path $runPath $MyInvocation.MyCommand.Name)
 
Get-NavServerUser -serverInstance $ServerInstance -tenant default |? LicenseType -eq "FullUser" | ForEach-Object {
    $UserId = $_.UserSecurityId
    Write-Host "Assign Premium plan for $($_.Username)"
    Invoke-Sqlcmd -ErrorAction Ignore -ServerInstance 'localhost\SQLEXPRESS' -Query "USE [$TenantId]
    INSERT INTO [dbo].[User Plan`$63ca2fa4-4f03-4f2b-a480-172fef340d3f] ([Plan ID],[User Security ID]) VALUES ('{8e9002c0-a1d8-4465-b952-817d2948e6e2}','$userId')"
}

This will assign the Premium plan to the admin user in the database.

Tip

To set up test users, you can clone the createtestusers repository and modify the code to create the users on the oninstall trigger with the password that you want.

Programming in AL
Sandbox Environments for Dynamics 365 Business Central Development
Container Sandbox
Changing Which Features are Displayed
Production and Sandbox Environments