Dynamics 365 Business Central: System tables, Virtual tables and Virtual tables (entities) in Dataverse

Dynamics 365 Business Central

Hi, Readers.
Today I would like to briefly talk about System tables, Virtual tables in Business Central and Virtual tables (entities) in Dataverse. Why do I bring this up? Recently, due to the new Business Central Integration with Dataverse, there have been some misunderstandings about Virtual tables.

First, let’s take a look at the System tables. Microsoft does not provide MS Learn (Docs) about the System tables, but we can find some instructions from the link below.
Table extensibility limitations:

System and virtual tables can’t be extended. System tables are created in the ID range of 2.000.000.000 and above. For more information about object ranges, see Object ranges.

Table object – Business Central | Microsoft Learn

So, System tables are created in the ID range of 2.000.000.000 (2 billion) and above. For example, (One part is Virtual tables)

Next, let’s look at Virtual tables. Microsoft provides MS Learn (Docs) for this.
Virtual tables: A virtual table contains system information. You can’t change the data in virtual tables. You can only read the information. Virtual tables aren’t stored in the database, but are computed by Business Central at runtime.

The virtual tables provide such information as:

  • Integers in the range –1,000,000,000 to 1,000,000,000
  • Dates in a given period
  • Overview of the operating system files
  • Overview of the logical disk drives
  • Overview of the operating system files that store the database

For example, you can use filters to get subsets or ranges of integers or dates from the Integer virtual table or the Date virtual table.
table 2000000026 Integer:

Like the system tables, their ID range is 2.000.000.000 (2 billion) and above as well.

Note:

The system or virtual table ‘Expanded Permission’ cannot be extended. AL AL0525

So how do you distinguish which are system tables and which are virtual tables? This is not in the table properties. There is actually a simple way. When you download symbol files in VS Code, the following file is automatically downloaded, Microsoft_System_24.0.20409.0.app.

We can unzip this file. Then you can find System Tables and Virtual Tables folders in the folder below.
~.alpackages\Microsoft_System_24.0.20409.0\src

System Tables:

Virtual Tables:

I organized it briefly.
All the 2.000.000.000 (2 billion) tables (175) in Version: W1 24.3 (Platform 24.0.21879.0 + Application 24.3.21374.21517)
System tables: 117
Virtual tables: 58

TypeIdNameType
Table2000000001ObjectSystem table
Table2000000004Permission SetSystem table
Table2000000005PermissionSystem table
Table2000000006CompanySystem table
Table2000000007DateVirtual table
Table2000000009SessionVirtual table
Table2000000020DriveVirtual table
Table2000000022FileVirtual table
Table2000000026IntegerVirtual table
Table2000000028Table InformationVirtual table
Table2000000029System ObjectVirtual table
Table2000000038AllObjVirtual table
Table2000000039PrinterVirtual table
Table2000000040License InformationVirtual table
Table2000000041FieldVirtual table
Table2000000043License PermissionSystem table
Table2000000044Permission RangeVirtual table
Table2000000045Windows LanguageVirtual table
Table2000000048DatabaseVirtual table
Table2000000049Code CoverageVirtual table
Table2000000050Language SelectionVirtual table
Table2000000053Access ControlSystem table
Table2000000055SID – Account IDVirtual table
Table2000000058AllObjWithCaptionVirtual table
Table2000000063KeyVirtual table
Table2000000065Send-To ProgramSystem table
Table2000000066Style SheetSystem table
Table2000000067User Default Style SheetSystem table
Table2000000068Record LinkSystem table
Table2000000069Add-inSystem table
Table2000000071Object MetadataSystem table
Table2000000072ProfileSystem table
Table2000000073User PersonalizationSystem table
Table2000000074Profile MetadataSystem table
Table2000000075User MetadataSystem table
Table2000000076Web ServiceSystem table
Table2000000078ChartSystem table
Table2000000080Page Data PersonalizationSystem table
Table2000000081Upgrade Blob StorageSystem table
Table2000000082Report LayoutSystem table
Table2000000083Tenant Profile SettingSystem table
Table2000000084Tenant Profile ExtensionSystem table
Table2000000086Profile Configuration SymbolsSystem table
Table2000000095API Webhook SubscriptionSystem table
Table2000000096API Webhook NotificationSystem table
Table2000000097API Webhook EntityVirtual table
Table2000000098API Webhook Notification AggrSystem table
Table2000000100Debugger BreakpointSystem table
Table2000000101Debugger Call StackVirtual table
Table2000000102Debugger VariableVirtual table
Table2000000103Debugger Watch ValueVirtual table
Table2000000104Debugger WatchSystem table
Table2000000107Isolated StorageSystem table
Table2000000110Active SessionSystem table
Table2000000111Session EventSystem table
Table2000000112Server InstanceSystem table
Table2000000114Document ServiceSystem table
Table2000000115Document Service ScenarioSystem table
Table2000000120UserSystem table
Table2000000121User PropertySystem table
Table2000000130DeviceSystem table
Table2000000132Entity TextSystem table
Table2000000135Table Synch. SetupVirtual table
Table2000000136Table MetadataVirtual table
Table2000000137CodeUnit MetadataVirtual table
Table2000000138Page MetadataVirtual table
Table2000000139Report MetadataVirtual table
Table2000000140Event SubscriptionVirtual table
Table2000000141Table Relations MetadataVirtual table
Table2000000142Query MetadataVirtual table
Table2000000143Page ActionVirtual table
Table2000000144Power BI BlobSystem table
Table2000000145Power BI Default SelectionSystem table
Table2000000146Intelligent CloudSystem table
Table2000000150NAV App Object MetadataSystem table
Table2000000151NAV App Tenant AppSystem table
Table2000000152NAV App Data ArchiveSystem table
Table2000000153NAV App Installed AppSystem table
Table2000000154Database LocksVirtual table
Table2000000155NAV App Publish ReferenceSystem table
Table2000000156NAV App Published AppSystem table
Table2000000157NAV App ExtraVirtual table
Table2000000159Data SensitivitySystem table
Table2000000160NAV AppSystem table
Table2000000161NAV App DependenciesSystem table
Table2000000162NAV App CapabilitiesSystem table
Table2000000163NAV App Object PrerequisitesSystem table
Table2000000164Time ZoneVirtual table
Table2000000165Tenant Permission SetSystem table
Table2000000166Tenant PermissionSystem table
Table2000000167Aggregate Permission SetVirtual table
Table2000000168Tenant Web ServiceSystem table
Table2000000169NAV App Tenant Add-InSystem table
Table2000000170Configuration Package FileSystem table
Table2000000171Page Table FieldVirtual table
Table2000000172Table Field TypesVirtual table
Table2000000173Intelligent Cloud StatusSystem table
Table2000000175Scheduled TaskSystem table
Table2000000176NAV App ResourceSystem table
Table2000000177Tenant ProfileSystem table
Table2000000178All ProfileVirtual table
Table2000000179OData Edm TypeSystem table
Table2000000180Media SetSystem table
Table2000000181MediaSystem table
Table2000000182Media ResourcesSystem table
Table2000000183Tenant Media SetSystem table
Table2000000184Tenant MediaSystem table
Table2000000185Tenant Media ThumbnailsSystem table
Table2000000186Profile Page MetadataSystem table
Table2000000187Tenant Profile Page MetadataSystem table
Table2000000188User Page MetadataSystem table
Table2000000189Tenant License StateSystem table
Table2000000190Entitlement SetSystem table
Table2000000191EntitlementSystem table
Table2000000192Page Control FieldVirtual table
Table2000000193Api Web ServiceVirtual table
Table2000000194Webhook NotificationSystem table
Table2000000195Membership EntitlementSystem table
Table2000000196Object OptionsSystem table
Table2000000197Token CacheSystem table
Table2000000198Page DocumentationSystem table
Table2000000199Webhook SubscriptionSystem table
Table2000000200NAV App Tenant OperationSystem table
Table2000000201NAV App SettingSystem table
Table2000000202All Control FieldsVirtual table
Table2000000203Report Data ItemsVirtual table
Table2000000204Page Info And FieldsVirtual table
Table2000000205Object Access Intent OverrideSystem table
Table2000000206Published ApplicationSystem table
Table2000000207Application Object MetadataSystem table
Table2000000208Application ResourceSystem table
Table2000000209Application DependencySystem table
Table2000000210Tenant Feature KeyVirtual table
Table2000000211Feature KeySystem table
Table2000000212Installed ApplicationSystem table
Table2000000213Designed QuerySystem table
Table2000000214Designed Query CaptionSystem table
Table2000000215Designed Query CategorySystem table
Table2000000216Designed Query ColumnSystem table
Table2000000217Designed Query Column FilterSystem table
Table2000000218Designed Query Data ItemSystem table
Table2000000219Designed Query FilterSystem table
Table2000000220Designed Query JoinSystem table
Table2000000221Designed Query Order BySystem table
Table2000000222Designed Query PermissionSystem table
Table2000000223Designed Query ObjVirtual table
Table2000000224Designed Query GroupSystem table
Table2000000225Designed Query ManagementVirtual table
Table2000000226Query NavigationSystem table
Table2000000227Extension Execution InfoVirtual table
Table2000000228Report Settings OverrideSystem table
Table2000000229Report PrinterVirtual table
Table2000000230Page Usage StateSystem table
Table2000000231Report Layout DefinitionSystem table
Table2000000232Tenant Report LayoutSystem table
Table2000000233Tenant Report Layout SelectionSystem table
Table2000000234Report Layout ListVirtual table
Table2000000235Database Wait StatisticsVirtual table
Table2000000236Database Missing IndexesVirtual table
Table2000000237Privacy NoticeSystem table
Table2000000238Privacy Notice ApprovalSystem table
Table2000000239Tenant Application StorageSystem table
Table2000000240External Event SubscriptionSystem table
Table2000000241External Event Log EntrySystem table
Table2000000242External Event NotificationSystem table
Table2000000243Ext. Business Event DefinitionVirtual table
Table2000000244Extension Database SnapshotVirtual table
Table2000000245External Event Activity LogSystem table
Table2000000250Metadata Permission SetVirtual table
Table2000000251Metadata PermissionVirtual table
Table2000000252Metadata Permission Set Rel.Virtual table
Table2000000253Tenant Permission Set Rel.System table
Table2000000254Expanded PermissionVirtual table
Table2000000255Signup ContextSystem table
Table2000000400Inplace Installed ApplicationSystem table

Finally, let’s take a look at Virtual tables in Microsoft Dataverse.

Virtual tables in Microsoft Dataverse: Virtual tables (also known as virtual entities) enable the integration of data residing in external systems by seamlessly representing that data as tables in Microsoft Dataverse, without replication of data and often without custom coding.

A virtual table is a custom table in Microsoft Dataverse that has columns containing data from an external data source. Virtual tables appear in your app to users as regular table rows, but contain data that is sourced from an external database, such as an Azure SQL Database. Rows based on virtual tables are available in all clients including custom clients developed using the Dataverse web services. More details: Get started with virtual tables (entities) and Business Central Virtual Table for Microsoft Dataverse Admin Reference

So this kind of tables (virtual tables) is not a table in Business Central (Although there may be an intermediate table, TableType=CDS).
Business Central Virtual Table in AppSource:

Microsoft Dynamics 365 Business Central Virtual Tables for Microsoft Dataverse.
Microsoft Dynamics 365 Business Central Virtual Table is a virtual data source in Microsoft Dataverse allowing Create, Read, Update and Delete operations from Microsoft Dataverse against Dynamics 365 Business Central. Data for virtual tables do not reside in Microsoft Dataverse, but continues to reside in Business Central. Virtual tables are enabled for Business Central APIs, by making them available in Microsoft Dataverse as virtual tables. Custom and Standard APIs exposed in Business Central are consumable on Microsoft Dataverse and can be exposed as virtual tables. The new version adds support for data change events (CUD events) so Dataverse virtual tables can be used in Power Automate flows.

And after you complete the Set up a connection to Dataverse, you can view all available virtual tables in Available Virtual Tables – Dataverse.

And in Power Apps:

For example, account:

All the Virtual tables in Microsoft Dataverse (78) in Version: W1 24.3 (Platform 24.0.21879.0 + Application 24.3.21374.21517)

NameDisplay NameAPI Route
accountAccountv2.0
accountingPeriodAccounting Periodv2.0
agedAccountsPayableAged Accounts Payablev2.0
agedAccountsReceivableAged Accounts Receivablev2.0
applyVendorEntryApply Vendor Entryv2.0
attachmentAttachmentv2.0
balanceSheetBalance Sheetv2.0
bankAccountBank Accountv2.0
cashFlowStatementCash Flow Statementv2.0
companyInformationCompany Informationv2.0
contactContactv2.0
contactInformationContact Informationv2.0
countryRegionCountries Regionv2.0
currencyCurrencyv2.0
currencyExchangeRateCurrency Exchange Ratev2.0
customerCustomerv2.0
customerContactCustomer Contactv2.0
customerFinancialDetailCustomer Financial Detailv2.0
customerPaymentCustomer Paymentv2.0
customerPaymentJournalCustomer Payment Journalv2.0
customerReturnReasonCustomer Return Reasonv2.0
customerSaleCustomer Salev2.0
defaultDimensionDefault Dimensionv2.0
dimensionDimensionv2.0
dimensionSetLineDimension Set Linev2.0
dimensionValueDimension Valuev2.0
disputeStatusDispute Statusv2.0
documentAttachmentDocument Attachmentv2.0
employeeEmployeev2.0
fixedAssetFixed Assetv2.0
fixedAssetLocationFixed Asset Locationv2.0
generalLedgerEntryGeneral Ledger Entryv2.0
generalLedgerSetupGeneral Ledger Setupv2.0
generalProductPostingGroupGeneral Product Posting Groupv2.0
incomeStatementIncome Statementv2.0
inventoryPostingGroupInventory Posting Groupv2.0
itemItemv2.0
itemCategoryItem Categoryv2.0
itemLedgerEntryItem Ledger Entryv2.0
itemVariantItem Variantv2.0
journalJournalv2.0
journalLineJournal Linev2.0
locationLocationv2.0
opportunityOpportunityv2.0
paymentMethodPayment Methodv2.0
paymentTermPayment Termv2.0
pdfDocumentPDF Documentv2.0
picturePicturev2.0
projectProjectv2.0
purchaseCreditMemoPurchase Credit Memov2.0
purchaseCreditMemoLinePurchase Credit Memo Linev2.0
purchaseInvoicePurchase Invoicev2.0
purchaseInvoiceLinePurchase Invoice Linev2.0
purchaseOrderPurchase Orderv2.0
purchaseOrderLinePurchase Order Linev2.0
purchaseReceiptPurchase Receiptv2.0
purchaseReceiptLinePurchase Receipt Linev2.0
retainedEarningsStatementRetained Earnings Statementv2.0
salesCreditMemoSales Credit Memov2.0
salesCreditMemoLineSales Credit Memo Linev2.0
salesInvoiceSales Invoicev2.0
salesInvoiceLineSales Invoice Linev2.0
salesOrderSales Orderv2.0
salesOrderLineSales Order Linev2.0
salesQuoteSales Quotev2.0
salesQuoteLineSales Quote Linev2.0
salesShipmentSales Shipmentv2.0
salesShipmentLineSales Shipment Linev2.0
shipmentMethodShipment Methodv2.0
taxAreaTax Areav2.0
taxGroupTax Groupv2.0
timeRegistrationEntryTime Registration Entryv2.0
trialBalanceTrial Balancev2.0
unitOfMeasureUnit Of Measurev2.0
vendorVendorv2.0
vendorPaymentVendor Paymentv2.0
vendorPaymentJournalVendor Payment Journalv2.0
vendorPurchaseVendor Purchasev2.0

PS: Microsoft Power Platform integration with Business Central via virtual tables and Business Central Virtual Tables FAQ

The new virtual tables are named after the ones in Power Platform, but Business Central already has virtual tables. This is what makes it confusing. Hopefully this post will help you make this clear.

END

Hope this will help.

Thanks for reading.

ZHU

コメント

Copied title and URL