Dynamics 365 for Finance and Operations AOT Browser
The AOT Browser includes a set of metadata tables that store detailed information about all tables, fields, relations, and enumerations in the AOT. This metadata is stored in regular D365FO tables and exposed via OData data entities, making it accessible to AI agents, Synapse Link, Power Platform, and other external consumers without requiring access to a development environment.
Stores one record per table in the AOT.
| Field | Type | Description |
|---|---|---|
| TableName | String | AOT name of the table |
| TableNum | Int | Numeric table ID |
| TableLabel | String | Resolved display label |
| TableGroup | String | Table group classification (e.g., Main, Group, Transaction) |
| Description | String | Table description |
| SqlTableName | String | Physical SQL table name |
| SaveDataPerCompany | Enum (NoYes) | Whether the table stores data per legal entity |
| TableType | String | Table type (e.g., Regular, InMemory, TempDB) |
Stores one record per field on each table.
| Field | Type | Description |
|---|---|---|
| TableName | String | Parent table name |
| FieldName | String | Field name |
| FieldId | Int | Numeric field ID |
| FieldLabel | String | Resolved display label (walks EDT inheritance chain) |
| FieldDataType | String | Base data type (e.g., String, Int32, Real, Enum) |
| ExtendedDataType | String | EDT name, if the field uses one |
| EnumTypeName | String | Base enum name, for enum-type fields |
| StringSize | Int | Maximum string length, for string-type fields |
| IsMandatory | Enum (NoYes) | Whether the field is mandatory |
| HelpText | String | Resolved help text (walks EDT inheritance chain) |
Stores one record per field constraint on each table relation.
| Field | Type | Description |
|---|---|---|
| TableName | String | Source table name |
| RelationName | String | Relation name |
| RelatedTableName | String | Target (related) table name |
| RelationshipType | String | Relationship type (e.g., Association, Composition) |
| FieldName | String | Source field name |
| RelatedFieldName | String | Target field name |
| Cardinality | String | Source table cardinality |
| RelatedTableCardinality | String | Target table cardinality |
Stores one record per value on each base enumeration.
| Field | Type | Description |
|---|---|---|
| EnumName | String | Base enum name |
| EnumLabel | String | Resolved enum label |
| ValueName | String | Enum value name |
| ValueLabel | String | Resolved value label |
| IntegerValue | Int | Numeric integer value |
Stores one record per field in each primary index and replacement key.
| Field | Type | Description |
|---|---|---|
| TableName | String | Parent table name |
| IndexName | String | Index name (e.g., the primary index or replacement key index) |
| FieldName | String | Field name in the key |
| KeyType | String | Key type: PrimaryIndex or ReplacementKey |
| FieldPosition | Int | Ordinal position of the field within the key (1-based) |
The metadata tables must be populated after installation and whenever the AOT changes. Navigate to Common > Common > Table metadata and click the Populate table metadata button.
It is recommended to run this as a batch job as it processes all tables, fields, relations, and enumerations in the system. Scheduling the batch job with recurrence keeps the metadata up-to-date.
All four metadata tables are exposed as public OData data entities for external consumption:
| Data Entity | OData Collection |
|---|---|
| ARBTableMetadataEntity | ARBTableMetadata |
| ARBTableFieldMetadataEntity | ARBTableFieldMetadata |
| ARBTableRelationMetadataEntity | ARBTableRelationMetadata |
| ARBEnumMetadataEntity | ARBEnumMetadata |
| ARBTableKeyFieldMetadataEntity | ARBTableKeyFieldMetadata |
These entities can be accessed at https://<environment>/data/ARBTableMetadata (and similar for the other collections).
Two forms are available under Common > Common to browse the metadata directly in the D365FO web interface: