BCCL Documentation
Index

Permissions

BCCL requires specific permissions in Business Central to function. The extension ships with a dedicated permission set that you must assign to all users who will interact with BCCL, whether through the command-line client or the Business Central UI.

The BCCL Permission Set

BCCL includes a permission set named BCCL (internal ID: 80800). This permission set is automatically available after you install the BCCL extension.

To find it in Business Central:

  1. Press Alt+Q and search for Permission Sets.
  2. Look for the permission set with the name BCCL.

This permission set is marked as Assignable = true, meaning you can assign it directly to users through the standard Business Central user setup.

Assigning the Permission Set

Every Business Central user who needs to use BCCL must have the BCCL permission set assigned. This includes:

  • Users whose credentials are used by the BCCL command-line client (whether Basic, OAuth, or S2S)
  • Users who access the BCCL pages in Business Central (Request Builder, Service Tasks, etc.)
  • Service accounts used for S2S authentication

Steps to Assign

  1. In Business Central, press Alt+Q and search for Users.
  2. Open the user card for the user who needs BCCL access.
  3. In the User Permission Sets section, add a new line.
  4. Set the Permission Set field to BCCL.
  5. Leave the Company field blank to grant access across all companies, or specify a company name to limit access.
  6. Close the user card.

Repeat for each user who will use BCCL.

For S2S Authentication

When using Service-to-Service (S2S) authentication, the Azure AD app registration acts as a user in Business Central. You need to:

  1. In Business Central, search for Microsoft Entra Applications (or Azure Active Directory Applications in older versions).
  2. Add your app registration's Client ID.
  3. Assign the BCCL permission set to this application entry.
  4. Also assign any other permission sets the application needs for the data it will access (for example, D365 BASIC or custom permission sets for specific tables).

Granting the Entra Application Access to Other Apps' Tables

Assigning the BCCL permission set to the Entra application covers BCCL's own objects only. If BCCL has to read data from tables owned by other apps installed in the tenant (ISV or third-party apps such as LS Central, the Shopify Connector, or any vertical solution), the permission set published by each of those apps must also be added as an extra line on the same Entra application record. Do this for every app whose tables BCCL needs; do not try to extend an existing permission set instead.

If a permission set is missing, BCCL fails at runtime, even though authentication succeeded, with:

Sorry, the current permissions prevented the action. (TableData <object id> <table name> IndirectRead: BCCL)

The TableData <object id> <table name> part identifies the table that could not be read, and therefore which app's permission set is missing. Concrete example: reading LS Central data requires LSCentralPermissions; SUPER (Data) works as a worst-case catch-all. Note that this is a BC permission configuration issue, not a BCCL or Entra App Registration issue: changing API permissions or consent on the App Registration in the Entra admin center does not fix it, and neither does editing the end user's permission sets when the call is made by the Entra application. See Permission Errors.

What the Permission Set Grants

The BCCL permission set grants the following permissions. Understanding these helps you assess the security impact and troubleshoot access issues.

Table Data Permissions (RIMD)

RIMD means Read, Insert, Modify, Delete. These permissions are granted on all BCCL-specific tables:

Table Purpose
BCCL Cache Temporary storage for paged data transfers
BCCL Field Mapping Stores field mapping configurations used in the Request Builder
BCCL Request Tracks individual request executions
BCCL Request Task Defines available request types
BCCL Request Type Request type configuration
Service Agent Tracks registered service agents and their status
Service Task Defines Service Task configurations
Service Task Field Mapping Stores field mapping for Service Tasks
Service Task Log Logs Service Task execution history
BCCL Test Table Used for testing BCCL functionality

Codeunit Execute Permissions (X)

Execute permission is granted on all BCCL codeunits:

Codeunit Purpose
BCCL Web Service The SOAP endpoint that receives requests from the client
BCCL Management Core request handling and routing
BCCL Initialization Registers built-in request types on startup
BCCL Data Exchange Output Formats data for export
BCCL Run From Job Queue Enables Job Queue integration
BCCL Request: GETDATA Handles data export requests
BCCL Request: PUTDATA Handles data import requests
BCCL Request: DELETEDATA Handles record deletion requests
BCCL Request: DELETEALL Handles bulk deletion requests
BCCL Request: MASSUPDATE Handles mass update requests
BCCL Request: MAPPING Generates mapping file templates
BCCL Request: TABLES Searches for tables by name
BCCL Request: TASKS Returns the list of available tasks
BCCL Request: CHANGELOG Reads from the Business Central Change Log
BCCL Request: POSTSALES Posts sales documents
BCCL Request: POSTPURCHASE Posts purchase documents
BCCL Request: CODEUNIT Runs a specified codeunit
BCCL Request: DOWNLOAD Downloads binary data
BCCL Request: UPLOAD Uploads binary data
BCCL Request: LEARN Internal learning/discovery operations

Page Execute Permissions (X)

Execute permission is granted on all BCCL pages:

Page Purpose
BCCL The main BCCL page (entry point)
BCCL Request Builder The graphical command builder
Mapping Builder The visual field mapping editor
Service Task Card Individual Service Task configuration
Service Task List List of all Service Tasks
Service Task Clone List Manages cloned Service Tasks
Service Task Subform Sub-page for Service Task details
Request Tasks List of available request types
View Service Task Output Displays Service Task execution logs
Available Agents Factbox Shows connected service agents
BCCL Debug Page Diagnostic information

Report Execute Permissions (X)

Report Purpose
SQL Bundle Builder Generates SQL replication scripts for multiple tables

Additional Permissions for Data Access

Important: The BCCL permission set only grants access to BCCL's own objects. It does not grant access to the Business Central data that you want to export or import.

For the BCCL user to read from or write to Business Central tables, the user must also have appropriate permissions on those tables. For example:

  • To export data from the Customer table (table 18), the user needs at least Read permission on that table.
  • To import data into the Item table (table 27), the user needs Read, Insert, and Modify permissions on that table.
  • To delete records from any table, the user needs Delete permission on that table.

You typically achieve this by assigning standard Business Central permission sets (like D365 BASIC, D365 FULL ACCESS, or SUPER) alongside the BCCL permission set. For production environments, it is good practice to create a custom permission set that grants only the specific table-level access your BCCL operations require.

On-Premises Specific Requirements

For on-premises Business Central, there are additional authentication requirements beyond the BCCL permission set:

Web Service Access Key

If you use Basic authentication with the BCCL client, each user must have a Web Service Access Key configured:

  1. In Business Central, search for Users.
  2. Open the user card.
  3. In the Web Service Access section, generate a new Web Service Access Key.
  4. Use this key as the password (-p parameter) when running BCCL commands -- not the user's regular login password.

The Web Service Access Key is separate from the user's Windows or NavUserPassword credential. It is specifically for web service authentication.

If your on-premises instance uses NavUserPassword authentication, users authenticate with their Business Central username and password directly. In this case, you use the regular password with the -p parameter.

Verifying Permissions

To verify that a user has the correct permissions:

  1. Run a simple BCCL command such as:
   BCCL -w "<url>" -u <user> -p <password> -t tasks
  1. If the permissions are correct, you will receive a JSON response listing all available task types.
  2. If you see a permission error, check:
    • Is the BCCL permission set assigned to the user?
    • For on-premises: does the user have a valid Web Service Access Key?
    • Does the user have permissions on the target data tables?

Common Permission Errors

Error Likely Cause
You do not have permission to run codeunit BCCL Web Service BCCL permission set is not assigned
You do not have the following permissions on Table X: Read User lacks data table permissions
Sorry, the current permissions prevented the action. (TableData <id> <table> IndirectRead: BCCL) The Entra application (S2S) lacks the permission set of the app that owns the table; add that app's permission set on the Microsoft Entra Applications page. See Permission Errors
The server returned an error (401) Unauthorized Invalid credentials or missing Web Service Access Key
The server returned an error (403) Forbidden User account lacks web service access

Security Considerations

Principle of Least Privilege

For production environments, consider creating a dedicated BCCL user with only the permissions required for the specific operations you run. Rather than assigning SUPER or D365 FULL ACCESS, create a custom permission set that grants:

  • The BCCL permission set
  • Read-only access to tables you export from
  • Read/Insert/Modify access to tables you import into
  • Delete access only to tables where you run delete operations

Auditing

All BCCL operations go through Business Central's standard web service layer. This means:

  • Operations are performed as the authenticated user
  • Standard Business Central Change Log captures data modifications made through BCCL
  • You can audit which user performed which operations through the Change Log

Service Account Best Practices

For automated operations (scheduled tasks, Windows service), create a dedicated service account in Business Central:

  1. Create a new user specifically for BCCL automation.
  2. Assign the BCCL permission set.
  3. Assign the minimum additional permissions needed for the data operations.
  4. If using S2S, configure the Azure AD app registration with these same permissions.
  5. Document which operations this account is authorized to perform.