How to Migrate Business Central Table Fields from Integer to BigInteger | Version 29 Preview
Business Central version 29 (preview) lets you change an existing table field from integer to BigInteger without it being treated as a destructive change, provided the extension targets runtime 18.0 or later. The demo shows the change failing as destructive on version 28 and deploying on version 29 with the data and related records kept. In the preview, the expected narrowing and table relation warnings did not appear yet.
- Introduction and Problem Statement
- Big Integer Field Migration Feature Overview
- Business Impact and Real-World Scenarios
- Technical Architecture and Implementation
- Demo Setup and Table Configuration
- Field Type Change and Code Cop Validation
- Publishing and Version Comparison Setup
- Deployment Comparison: Version 28 vs Version 29
- Developer Considerations and Migration Strategy
- Selective Migration Approach and Best Practices
- Extension Dependency Validation
- Common Mistakes and Frequently Asked Questions
- Summary and Recommendations
Overview
The video explains a new compiler and runtime feature in Business Central version 29 that lets developers change an existing table field from integer to BigInteger. The platform updates the SQL column from int to bigint without data loss and without flagging a destructive change. The motivating case is a high-volume custom transaction log table whose entry number field is getting close to the integer limit.
The demo changes a field type, shows the code cop validation, and deploys the same change to version 28 and version 29 for comparison. Version 28 fails with a destructive change error, while version 29 deploys and keeps the data. The presenter also covers selective migration, extension dependencies, and common mistakes. Several compiler warnings, for table relations, related fields and calc formulas, were not yet present in the preview at the time of recording (15 September 2026).
Key points
- The integer to BigInteger change requires the extension to target runtime 18.0 or later; extensions on a lower runtime must update it first.
- No upgrade codeunit is needed: the platform converts the SQL column and handles the data and related records.
- In the demo, version 28 rejects the change as destructive, while version 29 deploys it as is and keeps the data.
- Per the presenter, the compiler and AppSource cops (rule AS0141) are meant to warn when a BigInteger value may be narrowed or overflow; assigning a value above the integer range to an integer causes a runtime overflow.
- In the preview, no warnings appeared for the field change, table relations, related fields or calc formulas, and the presenter hopes they arrive by GA. Table relations pointing to integer fields need manual updating.
- Going back from BigInteger to integer is destructive: move data to another table, empty the table, then move the data back.
- Migrate only fields that need 64-bit capacity, and start listing high-volume tables that may need it for your roadmap.
Features
| Feature | Status | At |
|---|---|---|
| Big Integer Field Migration | status not stated, demoed | 1:50 |
| AL Compiler Validation for Integer to BigInteger Conversion | status not stated, demoed | 2:29 |
| App Source Cop Warnings for BigInteger Dependencies | status not stated, demoed | 2:43 |
| Runtime Schema Synchronization for BigInteger | status not stated, demoed | 6:10 |
| Compiler Narrowing Conversion Detection | status not stated | 18:40 |
| No Upgrade Codeunit Required for Integer to BigInteger Migration | status not stated | 21:24 |
| Runtime Version 18.0 Requirement for BigInteger Support | status not stated, demoed | 18:00 |
| Irreversibility of BigInteger to Integer Conversion | status not stated | 21:39 |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- table “demo table” at 6:58
- table “vendor table” at 7:43
- table “customer table” at 10:49
- codeunit “get next entry function” at 8:58
- table “entry number” at 14:08
Not found in BC28-30: table “demo table”, table “vendor table”, table “customer table”, codeunit “get next entry function”, table “entry number”.
Quotes
- 1:50 “Big integral feed migration is a new compiler and a runtime feature in Business Central version 29”
- 2:04 “the platform updates the SQL column for you without considering it as a destructive change”
- 3:24 “They have a custom transaction log table with an entry number field defined as integer. At some point the entry number gets uncomfortably close”
- 10:14 “But it doesn’t give me warning of changing this integer to a big integer which I was expecting that it should give me.”
- 13:47 “Whereas in version 29 based on the new changes of shifting from integer to big integer it’ll easily update it”
Disclaimers in the video
- 0:13 preview: this is a big change. I’m going to take a good amount of time for it
- 9:12 preview: as per the documentation the code cop is only available for app source app
- 10:34 preview: there is a table relation to an integer with a big integer. So there should be a warning and I’m …
- 16:06 coming-later: hopefully when the version 29GA is announced next month this will be this will be fixed
- 17:17 preview: I’m pretty sure not in the I haven’t seen it in the preview release but hopefully in some cumulative update Microsoft may change
- 18:40 coming-later: As the GA will announce, I’m hoping the compiler warnings will be there
Presenters (as heard): Unknown presenter.
