Introduction
This blog explains Microsoft Dynamics 365 Business Central Table, Table Field, and Table Extension properties. It includes clear definitions, when-to-use guidance, when-not-to-use warnings, and real business scenarios with AL code examples.
Table-Level Properties
1. Access
Controls whether a table is accessible outside the extension. Used when exposing tables to APIs or other extensions. Avoid using Public unnecessarily.
Access = Public;
2. DataPerCompany
Defines whether data is stored per company. Used for transactional and master data.
DataPerCompany = true;
3. TableType
Defines the technical purpose of the table (Normal, Temporary).
TableType = Normal;
4. Extensible
Allows other extensions to add fields.
Extensible = true;
5. LookupPageId / DrillDownPageId
Defines default lookup and drill-down pages.
LookupPageId = "Customer List";
6. Permissions
Defines required permissions for accessing the table.
Permissions = TableData Customer = RIMD;
Table Field Properties
1. AutoIncrement
Automatically generates sequential values.
AutoIncrement = true;
2. TableRelation
Creates lookup and enforces referential integrity.
TableRelation = Customer."No.";
3. ValidateTableRelation
Validates related table data during entry.
ValidateTableRelation = true;
4. NotBlank
Prevents empty values.
NotBlank = true;
5. ValuesAllowed
Restricts allowed values.
ValuesAllowed = 'Open, Released,Posted’;
6. InitValue
Sets default field value.
InitValue = 'Open';
7. MinValue / MaxValue
Restricts numeric ranges.
MinValue = 0;
8. DecimalPlaces
Controls decimal precision.
DecimalPlaces = 0:2;
9. BlankZero
Hides zero values.
BlankZero = true;
10. DataClassification
Classifies data for compliance.
DataClassification = SensitivePersonalData;
11. MaskType
Masks sensitive data.
MaskType = Partial;
12. OptionCaption
User-friendly option values.
OptionCaption = 'Open,Released,Posted';
Performance & Key Properties
1. Clustered
Defines primary index.
Clustered = true;
2. SumIndexFields
Creates SIFT totals.
SumIndexFields = Amount;
3. MaintainSqlIndex
Controls SQL index maintenance.
Table Extension Properties
1. AllowInCustomizations
Allows fields in personalization.
AllowInCustomizations = true;
2. MovedFrom / MovedTo
Tracks refactoring during upgrades.
MovedFrom = 'OldFieldName';
Real Business Example
table 50100 CustomerExtra
{
Extensible = true;
DataClassification = CustomerContent;
fields
{
field(1; CreditLimit; Decimal)
{
Caption = 'Credit Limit';
DecimalPlaces = 0:2;
MinValue = 0;
DataClassification = FinancialData;
}
field(2; PANNo; Code[20])
{
Caption = 'PAN Number';
MaskType = Partial;
DataClassification = SensitivePersonalData;
NotBlank = true;
}
}
}
Best Practices
- Prefer properties over triggers
- Always define DataClassification
- Use TableRelation instead of manual validation
- Design tables for extensibility
- Use obsolete properties for upgrade safety
Conclusion
Table and Table Field properties are the backbone of Business Central. Correct use ensures clean architecture, strong validation, compliance, and upgrade-safe solutions.