XPT Data Explorer

A browser-based tool for exploring, querying, and exporting data from Microsoft Dynamics 365 Business Central. See every table, every field, and every relationship — then build queries and export the results.

HOW IT WORKS
📋
Browse tables
Search & filter the full BC schema
🔍
Select fields & filter
Choose columns, add BC filters
⬇️
Query & export
View results, export CSV/Excel

XPT Data Explorer is designed for BC developers, consultants, and power users who need quick access to data that isn't easily visible through standard BC pages. Instead of writing custom reports or API pages, you can explore any table directly in your browser.

The app runs at dx.xpt.tools. No installation required — just open it and start browsing.

Free tier & demo data

The free tier gives you full access to browse the Business Central schema using a shared Cronus demo environment. Cronus is Microsoft's standard demo company, pre-loaded with realistic data across customers, vendors, items, GL entries, and more.

No account needed
You can browse tables, view fields, explore relations, and run queries (up to 100 rows) without creating an account or signing in.

What you can do on the free tier

  • Browse all BC tables and fields — search by name or ID, filter by category
  • View field details — data types, primary keys, FlowFields, table relations
  • Run queries — select fields, add filters, see up to 100 rows of live Cronus data
  • Export CSV — download up to 100 rows as CSV
  • Schema Explorer — navigate table relationships visually
  • Field cross-references — see where a field is used across all BC tables
Upgrading
To connect your own BC environment, run unlimited queries, and export without row limits, upgrade to Pro or Partner.

Browsing tables

The left sidebar shows every table available in your BC environment (or the Cronus demo). Each entry shows the table name, ID number, category, and record count.

TABLE LIST — LEFT SIDEBAR
🔍 Search tables...
All Sales Purchasing Inventory
Customer #18 Sales · 29
Item #27 Inventory · 197
Sales Header #36 Sales · 12
G/L Entry #17 General Ledger · 2,845

Searching and filtering

Type in the search box to filter by table name or table ID. You can also click the category buttons to filter by functional area (Sales, Purchasing, Inventory, etc.).

The highlighted row (amber accent) shows which table is currently selected. Click any table to load its fields in the main panel.

Fields & relations

When you select a table, the Fields tab shows every field on that table. Each field displays:

FIELDS TAB — ITEM TABLE (#27)
NO. FIELD TYPE CLASS RELATION
1 No. PK Code Normal
3 Description Text Normal
10 Unit Price Decimal Normal
32 Inventory Decimal FlowField → Item Ledger Entry #32

Understanding the columns

  • Checkbox — tick/untick fields to include them in your query. All fields are selected by default.
  • No. — the BC field number. Useful when writing AL code or filters.
  • Field — the field caption. Fields marked PK are part of the table's primary key.
  • Type — the data type (Code, Text, Decimal, Integer, Date, Boolean, Option). Colour-coded for quick scanning.
  • Class — either Normal or FlowField. FlowFields are calculated at runtime and marked with an amber ⚡ label.
  • Relation — if this field has a TableRelation to another table, it shows as a clickable blue link. Click it to navigate directly to that table.

Field cross-reference

Click on any field that has a relation or is a primary key to expand the cross-reference panel. This shows you every other table in BC that references the same related table — a "where used" view that's invaluable during implementations and data migrations.

Tip — FlowFields
FlowFields (like "Inventory" on the Item table) are calculated by BC at runtime by summing or counting records in related tables. Including FlowFields in a query adds processing time — roughly 0.01 seconds per record per FlowField. The query builder warns you when FlowFields are selected.

Query builder

Switch to the Query Builder tab to run a query against the selected table. The query builder shows three sections:

  1. Selected fields — the columns that will be included in your results. Uncheck fields in the Fields tab to exclude them. Each field appears as an amber chip. Click the × on any chip to remove it.
  2. Filters — narrow your results using BC filter syntax. Click + Filter to add a row. Choose the field from the dropdown and enter your filter value.
  3. Check & Run — click the amber button to see a performance estimate before running. The gate shows estimated row count and warns if the query might be slow.

The performance gate

Before running, the query builder checks the total record count and your filters to estimate how many rows will be returned. It shows one of three states:

PERFORMANCE GATE
Safe
Under 10,000 rows. Runs quickly.
Warning
10K–50K rows. May take 10–30 seconds.
Danger
Over 50K rows. Consider adding filters.

You can always click "Run anyway" on warning or danger queries — the gate is advisory, not blocking. Results are capped at 1,000 rows (100 on the free tier).

Filters & BC syntax

Filters use standard Business Central filter syntax. Here's a quick reference:

PatternMeaningExample
DOMESTICExact matchCustomer Posting Group = DOMESTIC
<>0Not equal toBalance <> 0 (non-zero balances)
>1000Greater thanAmount > 1000
1000..5000Range (inclusive)No. between 1000 and 5000
*dental*Contains (wildcard)Description contains "dental"
CUS*Starts withNo. starts with CUS
10000|20000|30000Multiple values (OR)Customer No. is any of these
01/01/24..31/12/24Date rangePosting Date in 2024

When you add multiple filters, they are combined with AND logic — all filters must match for a record to be included.

Tip — Try filters before running
On large tables (like G/L Entry or Item Ledger Entry), always add at least one filter to narrow results. A posting date range or a document type filter makes a huge difference to query speed.

Exporting data

After running a query, click the ⬇ CSV button in the results grid header to download the data as a CSV file. The file includes all columns shown in the results.

Free tier limits
The free tier caps queries and exports at 100 rows. Pro and Partner plans have no row limits (up to 10,000 per query).

Excel export is available on Pro and Partner plans. The data is returned as a downloadable .xlsx file with proper column formatting.

Schema explorer

The Schema Explorer (accessible from the Schema tab in the top navigation) gives you a visual way to navigate table relationships in Business Central.

SCHEMA EXPLORER — SALES HEADER (#36)
Customer Sales Header Sales Line
142
RECORDS
8
OUTBOUND
3
INBOUND
Customer
#18 · 29 records
→ via Sell-to Customer No.
Item
#27 · 197 records
→ via No. (on Sales Line)

Select a table from the sidebar to see its outbound relations (tables this table points to) and inbound references (tables that point to this table). Click any relation card to navigate to that table and explore its own relations.

The breadcrumb trail at the top tracks your navigation path — click any entry to jump back.

Quick start tables

The sidebar shows commonly-used tables (Customer, Item, Sales Header, G/L Entry, etc.) as quick-start links. Below that, every table is listed alphabetically for full access.

ERD Diagrams

Select any table and click ◈ Diagram to generate an interactive entity-relationship diagram. Choose which relations to display, drag table cards into position, and export as PNG for documentation or presentations.

Static schema reference
The full BC schema is also published as a browseable reference site — one page per table, all interlinked. Useful for bookmarking specific tables: Customer #18, Item #27, G/L Entry #17, Sales Header #36.

Saved views

After running a query, click 💾 Save View to store the current table, field selection, and filters for quick access later. Saved views appear in the Views tab in the left sidebar.

Creating a view

  1. Select a table, choose your fields, add filters, and run the query.
  2. Click Save View. Enter a name (e.g. "Active Customers London") and optionally a category (e.g. "Migration Checks").
  3. Toggle Share with team if you want other users in your account to see it.

Using saved views

Click the Views tab in the sidebar to see all your saved views. Click a view to load it — the table, fields, and filters are restored automatically. Click ▶ to re-run the query.

Use the ⋮ menu on any view to pin it to the top or delete it.

Requires sign-in
Saved views require a signed-in account. On the free tier, views are available as part of the demo experience. Pro and Partner plans support unlimited views.

Environment Compare

The Compare tab (visible to Partner-tier users) lets you compare two Business Central environments side-by-side. This is designed for go-live validation, upgrade regression testing, and data migration checks.

Partner tier only
Environment Compare requires the Partner plan, which includes unlimited BC connections. You need at least two connections configured (e.g. Production and Sandbox) to run comparisons.

Schema Diff — upgrade validation

Select your live environment as Source and the upgraded sandbox as Target. Configure which checks to run using the checkboxes before starting:

  • Table existence — tables present in source but missing from target (regressions), and new tables only in the target
  • Column changes — for every table in both environments: new fields, missing fields
  • Type & length changes — data type, field length, or field class modifications
  • Primary key changes — detect differences in PK field composition
  • Record counts — side-by-side record counts per table
  • Extension filter — limit the comparison to a specific extension (e.g. your custom app) or leave blank for all

Results are grouped into summary cards, expandable per-table diffs with colour-coded badges, and a sortable record count grid.

Data Diff — row-level comparison

Compare actual data in a single table across two environments. Records are matched by primary key, then every field value is compared cell by cell.

  • Full table or select columns — compare everything, or pick the specific fields you care about
  • Auto-exclude system fields — SystemId, SystemCreatedAt, SystemModifiedAt, SystemCreatedBy, SystemModifiedBy are excluded by default
  • Auto-exclude GUIDs — GUID-type fields are excluded by default (these are almost always different between environments)
  • Max rows cap — default 5,000 as a safety valve for large tables

Results show three categories: added rows (in target only), removed rows (in source only), and changed rows (same PK, different values) with cell-level highlighting of what changed.

Record Count overview

The fastest check — fetches record counts for every table in both environments and displays them in a sortable grid. No data is read, just counts. Use it as a first pass to identify anything obviously different before running a more detailed comparison.

Toggle Differences only to filter to tables where counts don't match. Toggle Hide errors to remove any tables that couldn't be counted.

Saving reports

After running any comparison, enter a name and click Save to store the results. Saved reports are accessible from the Saved reports button at the top of the Compare page. Click View on any report to reload its results.

Typical upgrade workflow
Run Record Counts first for a quick sanity check. Then run Schema Diff with all checks enabled to find structural changes. Finally, use Data Diff on critical setup tables (G/L Setup, Sales Setup, Number Series) to verify configuration data migrated correctly.

XPT Validate

Configuration audit and ongoing data quality validation for Business Central. Catches posting group gaps, number series issues, dimension problems, and master data errors — before your users do.

TWO MODES, ONE PRODUCT
🔍
Configuration Audit
One-click health check against 22 built-in rules across 6 domains. Run before go-live or after upgrades.
📊
Data Quality
Ongoing validation with customisable templates, 10 smart rules, and a quality score dashboard.

Validate uses the same BC connection you already set up in Data Explorer. No additional AL extension changes are required. All validation runs on the XPT backend using the existing query infrastructure.

Requirements
XPT Validate requires a Pro or Partner subscription and at least one active BC connection configured in Settings.

Running your first audit

  1. Sign in to dx.xpt.tools and click Validate in the top navigation bar.
  2. You will land on the Audit tab. All six domains are pre-selected by default. You can uncheck any domain you want to skip.
  3. Click the amber Run Audit button. The audit typically takes 2–5 seconds against Cronus or a small environment, and up to 10 seconds on larger environments.
  4. Review the results. The summary bar at the top shows PASS (zero critical findings) or FAIL (one or more critical findings), with counts for each severity level.

Severity levels

SeverityColourWhat it means
CriticalRedWill cause posting errors, data corruption, or broken processes. Fix these before go-live or immediately in production.
WarningAmberWill not crash immediately but will cause problems in the next reporting cycle or month-end close. Fix before go-live.
InfoBlueBest-practice gaps or cleanup opportunities. Address when convenient — these will not block daily operations.

Working with audit results

After an audit completes, the results screen gives you several ways to find what matters:

  • Severity filter — use the dropdown to show only Critical, Warning, or Info findings. The count next to each option tells you how many findings are in each category.
  • Domain filter — narrow to a specific domain (e.g. only Posting Groups or only Master Data). Useful when you are working through fixes one area at a time.
  • Search — type a customer number, GL account, table name, or rule ID to find specific findings instantly.
  • Expand a finding — click any finding row to see the full details: which BC table is affected, which field has the problem, what the current value is, and what it should be.
  • Clean domains — domains with zero findings show a green tick and "All checks passed" so you can see at a glance which areas are healthy.

Click ← New audit at the top to return to the domain selection screen and run again after making fixes.

Audit history

Every audit is automatically saved. Click the History tab to see all previous audit runs for the current connection. Each report shows the date, company name, number of domains run, pass/fail status, and severity counts.

Click any report to reload its full findings. Click the bin icon to delete a report you no longer need. Reports are stored per-connection, so switching connections in Settings shows a different history.

Tip — Before and after
Run an audit before making configuration changes, then run again afterwards. The History tab lets you compare the two reports side by side to confirm your fixes resolved the issues.

Configuration audit — rules reference

The configuration audit checks 22 rules across 6 domains. Each domain focuses on a specific area of BC setup. Below is the complete rule reference with explanations of what each rule checks and why it matters.

Posting Groups (6 rules)

Posting groups control which GL accounts BC uses when posting transactions. A missing or incorrect posting group causes immediate posting failures that block users from completing their work.

RuleSev.What it checks
PG-001CritGeneral Posting Setup matrix. Every row in General Posting Setup must have Sales Account and Purch. Account populated. Missing accounts mean BC cannot determine where to post revenue or cost for that business/product group combination.
PG-002CritCustomer Posting Group → Receivables Account. Every Customer Posting Group must have a Receivables Account. Without it, customer invoices cannot be posted.
PG-003CritVendor Posting Group → Payables Account. Same check for vendors. A blank Payables Account prevents purchase invoice posting.
PG-004CritInventory Posting Setup → Inventory Account. For every Inventory Posting Group and Location combination, the Inventory Account must be populated. Missing accounts prevent inventory transactions (receipts, shipments, adjustments).
PG-007CritVAT Posting Setup accounts. Any VAT Bus./Prod. combination where VAT% is greater than zero must have both a Sales VAT Account and a Purchase VAT Account. Zero-rate combinations are skipped.

Number Series (2 rules)

Number series control how BC generates document and master data numbers. Running out of numbers silently blocks record creation.

RuleSev.What it checks
NS-001WarnNearly exhausted series. Flags any number series line where usage exceeds 90% of the ending number. Shows how many numbers remain so you can plan ahead. Typical on long-running environments where the original series was sized too small.
NS-003CritSetup page number series. Verifies that Sales & Receivables Setup has Customer Nos. and Invoice Nos., and Purchases & Payables Setup has Vendor Nos. and Invoice Nos. Blank series mean you cannot create new master data records or post documents.

Dimensions (2 rules)

Dimension configuration errors are among the hardest to diagnose because the error message at posting time rarely says “your dimension is blocked.” These rules catch the two most common causes.

RuleSev.What it checks
DIM-001CritMandatory without default. Reads the Default Dimensions table (352) for any record where Value Posting is set to “Code Mandatory” but no Dimension Value Code is assigned. This means every transaction involving that record requires the user to manually enter the dimension — or posting fails.
DIM-002CritBlocked values in use. Cross-references Dimension Values (table 349) where Blocked = Yes against Default Dimensions to find records that still have a blocked dimension value assigned. Transactions using these records will fail at posting.

Core Setup Tables (4 rules)

These rules check the single-record setup pages that control fundamental BC behaviour.

RuleSev.What it checks
SET-001CritGeneral Ledger Setup. LCY Code (local currency) must be populated — this is the most fundamental setting in BC. Also flags if Allow Posting From is more than one year in the past, which may indicate an overly permissive posting window.
SET-002CritSales & Receivables Setup. Customer Nos., Invoice Nos., and Credit Memo Nos. must all be populated. Blank series prevent creating customers and posting sales documents.
SET-003CritPurchases & Payables Setup. Same check for vendor/purchase number series.
SET-006WarnCompany Information. Name, Address, Post Code, VAT Registration No., and Registration No. These appear on printed documents and may be legally required in your jurisdiction.

Chart of Accounts (3 rules)

Problems in the chart of accounts can cause posting failures or gaps in financial reporting.

RuleSev.What it checks
COA-001CritBlocked posting accounts. Any posting-type GL account that is Blocked. If this account is referenced in any posting setup table, transactions will fail.
COA-002WarnDirect Posting disabled. Posting-type GL accounts with Direct Posting = No. Users cannot make journal entries to these accounts. Sometimes intentional (e.g. system-posting accounts), sometimes an oversight.
COA-003InfoMissing Account Category. Posting accounts without an Account Category assigned. Financial reports that rely on categories (like the standard financial statements) will show gaps.

Master Data Integrity (5 rules)

Master data problems are usually created during data migration when records are bulk-imported without full validation.

RuleSev.What it checks
MD-001CritCustomer posting groups. Every active (not blocked) customer must have Gen. Bus. Posting Group, Customer Posting Group, and VAT Bus. Posting Group populated. Missing any of these prevents invoicing that customer.
MD-002CritVendor posting groups. Same check for vendors: Gen. Bus., Vendor, and VAT Bus. posting groups.
MD-003CritItem posting groups. Active items must have Gen. Prod. Posting Group, Inventory Posting Group, and VAT Prod. Posting Group.
MD-004CritBase Unit of Measure. Inventory-type items (not Service or Non-Inventory) must have a Base Unit of Measure. Without it, any inventory transaction (receipt, shipment, adjustment) will fail.
MD-006InfoPayment terms. Active customers and vendors without a Payment Terms Code. Not an error, but transactions will default to immediate payment which may not be intentional.
Read-only
Validate never modifies data in your BC environment. It reads configuration through the API and evaluates all rules on the XPT backend. Nothing is written back to BC.

Data quality — templates & smart rules

The Data Quality tab lets you define ongoing validation rules for your master data. While the Configuration Audit checks BC setup tables, Data Quality checks the actual records — every customer, vendor, item, or GL account — against rules you define.

Creating a template

  1. Click the Data Quality sub-tab at the top of the Validate screen, then click + New Template.
  2. Enter a template name (e.g. “Customer compliance” or “Item data quality”).
  3. Select the entity type from the dropdown: Customer, Vendor, Item, or G/L Account. This determines which BC table is queried and which smart rules are available.
  4. In the Smart Rules section, toggle on the built-in rules you want. All applicable smart rules are enabled by default. Each shows its severity and a short description.
  5. Optionally, add custom rules by clicking + Add Rule. Select the field, rule type, and severity. See the custom rules section below for details on each type.
  6. Click Save Template. You are returned to the template list.
Quick start
The fastest way to get value is to create one template per entity type with only smart rules enabled and no custom rules. This gives you immediate coverage across posting groups, contact info, addresses, and more — with zero configuration.

Smart rules — built-in checks

Smart rules are pre-built validation checks that work instantly. You toggle them on or off per template — no configuration needed. Blocked records are automatically skipped (except SMART-008 which specifically flags them).

RuleApplies toSev.What it checks
SMART-001Cust, Vend, ItemCritPosting group completeness. All posting group fields are populated. Checks the correct group fields for each entity type (e.g. Customer Posting Group for customers, Inventory Posting Group for items).
SMART-002Cust, VendInfoPayment terms assigned. Payment Terms Code is not blank. Records without payment terms default to immediate payment.
SMART-003ItemCritBase UoM on inventory items. Only checks items where Type is Inventory (or blank). Service and non-inventory items are skipped.
SMART-004Cust, VendInfoContact info present. At least one of Phone No., E-Mail, or Contact is populated.
SMART-005Cust, VendInfoAddress completeness. Address, City, and Post Code are all populated.
SMART-006CustWarnCredit limit set. Credit Limit (LCY) is greater than zero. A zero credit limit means unlimited credit exposure.
SMART-007Cust, VendWarnCurrency on foreign entities. If the Country/Region Code differs from the company country, a Currency Code should be set. Compares against your Company Information automatically.
SMART-008Cust, Vend, ItemInfoBlocked record awareness. Flags any blocked records. Not an error — just visibility so you know what is blocked in your system.
SMART-009G/L AccountWarnDirect Posting on posting accounts. Posting-type GL accounts should have Direct Posting enabled to allow journal entries.
SMART-010G/L AccountInfoAccount Category assigned. Posting-type GL accounts should have an Account Category for correct financial report grouping.

Custom rules — defining your own checks

Custom rules let you validate any field against specific business requirements. Click + Add Rule in the template builder to add one. Each rule has a field selector, a rule type, and a severity level.

TypeWhat it doesConfigurationExample use
RequiredField must not be blankNo extra config neededE-Mail is required on all customers
Specific valueField must equal an exact valueEnter the expected valueCountry/Region Code must be “GB”
Value in listField must be one of several allowed valuesEnter comma-separated valuesGen. Bus. Posting Group in DOMESTIC, EXPORT, EU
Value not in listField must not be a blacklisted valueEnter comma-separated valuesPayment Terms Code must not be COD or PREPAY
Numeric rangeNumeric field must be within min/max boundsEnter min and/or maxCredit Limit between 1,000 and 100,000
Min lengthField must have a minimum number of charactersEnter the minimumPhone No. must be at least 10 characters
PatternField must match a regular expressionEnter the regex patternPost Code matches ^[A-Z]{1,2}\d (UK format)

Conditional rules

Any custom rule can be made conditional by ticking “Only apply when...” below the rule. This adds a condition that must be true for the rule to fire. Available condition operators:

  • equals — condition field must equal the specified value
  • not equals — condition field must not equal the value
  • contains — condition field must contain the text (case-insensitive)
  • is not blank — condition field must have a value
  • is blank — condition field must be empty

Example: Rule type = Required, field = VAT Registration No., condition = Country/Region Code equals GB. This means “VAT Registration No. is required, but only for UK entities.”

Running validation

There are two ways to run validation:

  • Run a single template — click the ▶ Run button next to any template in the list. Only that template is evaluated.
  • Run all templates — click ▶ Run All at the top of the template list. Every active template for the current connection is evaluated.

Results show violations grouped by severity with the rule name, affected record, field, current value, and expected value. Violations are stored in the database — re-running a template replaces the previous violations with the current state, so the list always reflects reality.

Editing and managing templates

  • Edit — click Edit on any template to change its name, smart rules, or custom rules. The entity type cannot be changed after creation — create a new template instead.
  • Delete — click the bin icon to permanently delete a template and all its violation history. This cannot be undone.
  • Active/inactive — templates can be deactivated without deleting them. Inactive templates are skipped during “Run All”.
FlowFields excluded
The template builder only shows Normal and Primary Key fields in the field picker. FlowFields (calculated fields) are excluded because they cannot be reliably filtered or compared as static values.

Quality dashboard

After you run validation at least once, the Quality Dashboard appears at the top of the Data Quality tab. It gives you a single-number view of your environment’s data health and tracks improvements over time.

DASHBOARD COMPONENTS
72
Quality Score
0–100 colour-coded ring
📈
Trend Chart
SVG line chart · 7d / 30d / 90d
🎯
Worst Offenders
Top 10 records by violations

Quality score (0–100)

The score is displayed as a colour-coded ring in the top left of the dashboard:

  • 90–100 — Healthy (green) — only minor issues. Your data is in good shape.
  • 70–89 — Needs Work (amber) — some problems that should be addressed.
  • 0–69 — At Risk (red) — significant data quality issues that need attention.

The score is calculated using a weighted formula: critical violations count 3×, warnings count 2×, and info count 1×. An environment with zero violations scores 100. The more weighted violations you have, the lower the score.

Trend chart

The SVG line chart shows your quality score over time. A new data point is added every time you run validation. Toggle between 7 days, 30 days, and 90 days to adjust the view.

The chart requires at least two data points (two validation runs) to display. Before that, it shows a message asking you to run validation again.

The line colour matches the score colour — green when healthy, amber when needing work, red when at risk. The shaded area below the line makes trends easier to spot.

Stats grid

Six boxes below the score ring show: Total Violations, Critical, Warning, Info, Records Checked, and Templates Active. These update every time you return to the template list after running validation.

Worst offenders

The bottom section lists the top 10 records with the most violations, ranked by weighted severity (critical violations ranked highest). Each entry shows the record number and name, entity type, severity counts, and total violations.

Use this to prioritise which records to fix first — fixing the worst offenders improves your score the fastest.

Tier access for Validate

FeatureFreeAnalystProPartner
Configuration auditCronus demoCronus demoYour own BC
Validation templatesUnlimited
Smart rules (10 built-in)
Custom rules (7 types)
Quality dashboard
Trend tracking
Scheduled validationComing soon

Why connect your own BC?

The free tier uses a shared Cronus demo environment. Connecting your own Business Central lets you:

  • Query your real data — customers, sales orders, ledger entries, everything
  • No row limits — up to 10,000 rows per query (vs. 100 on demo)
  • Export to Excel and CSV — full data exports for analysis
  • Multiple environments — connect production, sandbox, or both
  • Saved views — store and share frequently-used queries
  • Environment Compare (Partner) — schema diff, data diff, and record counts across two environments for upgrade validation and go-live checks

Connecting requires three things: an Azure app registration, the XPT AL extension installed on your BC environment, and a Pro or Partner plan.

Azure app registration

XPT Data Explorer connects to your BC environment using OAuth2 client credentials. This requires an Azure Entra ID (formerly Azure AD) app registration.

  1. Go to portal.azure.comMicrosoft Entra IDApp registrationsNew registration.
  2. Name it something like XPT Data Explorer. Set "Supported account types" to Accounts in this organizational directory only. Leave Redirect URI blank. Click Register.
  3. On the Overview page, copy the Application (client) ID and the Directory (tenant) ID. You'll need both.
  4. Go to Certificates & secretsNew client secret. Give it a description (e.g. "XPT DX") and an expiry (e.g. 24 months). Copy the Value immediately — it's only shown once. (Not the Secret ID — the Value.)
  5. Go to API permissionsAdd a permissionDynamics 365 Business CentralApplication permissions → select API.ReadWrite.AllAdd permission.
  6. Click Grant admin consent for your organisation.
Important — Copy the secret value
The client secret value is only displayed once when you create it. If you navigate away without copying it, you'll need to create a new secret. Copy the Value column, not the Secret ID.

Installing the AL extension

XPT Data Explorer needs a small AL extension installed on your BC environment. This extension exposes API endpoints that allow the app to read table metadata and execute queries securely.

What the extension does
The extension creates read-only API endpoints for listing tables, fields, and running queries. It does not modify any data in your BC environment. All queries are read-only.

Contact us at dx.xpt.tools → Support and we'll provide the extension file and walk you through installation. The process takes about 5 minutes.

  1. Download the .app file provided by XPT.
  2. In BC, go to Extension ManagementUpload Extension.
  3. Upload the .app file and accept the prompts.
  4. Wait for the extension to install (usually 1–2 minutes).
  5. Assign the XPT Data Explorer permission set to the Azure app's service account.

Adding your connection

Once you have the Azure app registration and the AL extension installed, add your connection in the Data Explorer:

  1. Sign in to dx.xpt.tools and go to Settings.
  2. Click + Add Connection.
  3. Fill in the form:
    • Connection Name — e.g. "Production" or "Sandbox"
    • Tenant ID — from Azure → Entra ID → Overview
    • Client ID — the Application (client) ID from your app registration
    • Client Secret — the secret Value you copied earlier
    • Environment — e.g. "production" or "sandbox"
    • Company Name — the exact company name from BC (including spaces, dots, and case)
  4. Click Add Connection, then click Test to verify it works.
Company name must be exact
The company name must match exactly what appears in BC — including spaces, periods, and capitalisation. If your company is "CRONUS UK Ltd." then you must enter exactly that. A mismatch will cause a "company not found" error.
Tip — Test first
Always click Test after adding a connection. A successful test means the credentials are correct, the extension is installed, and the company name matches. If the test fails, double-check the client secret (use the Value, not the Secret ID) and the company name.

Plans & pricing

PLAN COMPARISON
FEATURE FREE PRO PARTNER
Schema browser
Query builder100 rowsUnlimitedUnlimited
Own BC environment
BC connectionsDemo onlyUp to 3Unlimited
CSV & Excel export100 rows
Saved viewsUnlimitedUnlimited
Environment Compare
Price£0£29/mo£79/mo

See the full comparison at xpt.tools/pricing. Annual billing is available with a 17% discount.

Billing & subscription

Payments are processed securely by Stripe. You can manage your subscription, update payment details, or cancel at any time.

  • To upgrade — go to Pricing and click "Get started" on your chosen plan. You'll be redirected to Stripe to complete payment.
  • To manage your subscription — sign in, go to Account, and click Manage billing. This opens the Stripe customer portal where you can update your card, switch plans, or cancel.
  • To cancel — cancel any time from the Stripe portal. Your subscription runs until the end of the billing period. Cancel within 14 days of your first payment for a full refund.

Prices are exclusive of VAT. UK customers will have VAT added at checkout. Xpertly Ltd VAT No. 452840787.

Getting help

If you have a question, run into an issue, or need help setting up your BC connection, we're here to help.

  • Support form — click the Support tab in the Data Explorer to submit a ticket. We'll respond by email.
  • Email — reach us at support@xpt.tools
  • Ticket history — signed-in users can see their ticket history and replies in the Account page and Support tab.

© Xpertly Ltd · Company No. 14753894 · VAT No. 452840787

Home Data Explorer Pricing Privacy Terms