What's New: Introducing the Business Foundation and the No. Series Module (2024 release wave 1)
Business Foundation, a new layer between the base application and the system application, and its first module, Number Series, from 2024 release wave 1. Covers module design, non-breaking table movement between apps, the redesigned Number Series API, and the planned removal of the legacy code in version 27.
- Introduction and Background
- The Shift from Customization to Extensibility
- Challenges with the Extensibility Model
- Introduction to Modules and System Application
- Advantages of Modules and SOLID Principles
- Breaking Changes and Technical Solutions
- Business Foundation Architecture and Design
- Open Source Development and Number Series Selection
- Number Series Page Enhancements and UI Improvements
- Actionable Error Messages and Workflow Improvements
- New Number Series API and Batch Processing
- Custom Implementations, Extension Interface, and Backwards Compatibility
- API Usage Patterns, Batch Processing Simplification, and Code Examples
- Copilot Support, Componentization, and Closing Remarks
Overview
The session explains why Business Central moved from customization to extensibility, the problems that model created, and how modules and the system application address them. It then introduces the Business Foundation as a horizontal layer for general ERP concepts such as number series, address, currency and dimension management. Number Series is the first module, developed as open source on GitHub.
The demos cover the updated Number Series page, actionable error messages, and the new codeunit-based API with batch processing. They also show the extension interface for custom number series implementations. The legacy code is obsoleted in version 24 and will be removed in version 27. Copilot support for the module is a community contribution still in progress.
Key points
- Business Foundation sits between the base application and the system application. It holds functionally coherent modules for general ERP concepts, and Number Series is the first one.
- 2024 wave 1 lets Microsoft move tables between apps without upgrade code and without breaking dependent apps. This was a prerequisite for the modularization.
- The new Number Series API is split into two codeunits: Number Series for get next, peek next and get last number used, and Number Series Batch for batch operations.
- Custom number series implementations are added through the Number Series Implementation enum and a simple interface (peek next number, get next number, get last number used, gaps indication).
- The legacy number series code is obsoleted in version 24 and will be removed in version 27. It keeps working until then, and Microsoft has converted its own code to the new API.
- The new batch processing removes the old limit of 100 number series in the cache and handles line changes and date changes.
- No localizations are planned for Business Foundation modules; localizations will be built as extensions. Copilot support for the module is still being contributed by the community (GitHub issue 659).
Features
| Feature | Status | At |
|---|---|---|
| Business Foundation | status not stated | 12:26 |
| Number Series Module | status not stated, demoed | 13:08 |
| Non-breaking Table Movement Between Apps | status not stated | 11:43 |
| Application Redirection | status not stated | 10:01 |
| Deprecation Scheme | status not stated | 10:42 |
| System Application | status not stated | 5:18 |
| Module Architecture and Design Pattern | status not stated | 5:55 |
| Number Series Page UI Enhancements | status not stated, demoed | 15:49 |
| Actionable Error Messages for Number Series | status not stated, demoed | 17:10 |
| New Number Series API (Codeunit-based) | status not stated, demoed | 19:11 |
| Number Series Implementation Enum and Interface | status not stated, demoed | 24:31 |
| Backwards Compatibility for Number Series API | status not stated | 26:13 |
| Simulate Get Next Number | status not stated, demoed | 30:01 |
| Number Series Batch Processing Simplification | status not stated, demoed | 27:49 |
| Copilot Support for Number Series Module | status not stated | 32:37 |
| Componentization of Base Application | status not stated | 33:17 |
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.
- other “System Application” at 5:39
- other “Business Foundation” at 12:26
- other “Number Series Module” at 13:28
- table “tables (general reference)” at 11:55
- table “Number Series” at 15:49
- page “Number Series” at 15:49
- codeunit “Number Series” at 21:33
- codeunit “Number Series Batch” at 21:33
- enum “Number Series Implementation” at 24:51
- interface “Number Series Implementation” at 25:12
- codeunit “Number Series Management” at 19:32
- interface “Number Series Batch” at 28:29
Not found in BC28-30: table “tables (general reference)”, table “Number Series”, page “Number Series”, codeunit “Number Series”, codeunit “Number Series Batch”, enum “Number Series Implementation”, interface “Number Series Implementation”, codeunit “Number Series Management”, interface “Number Series Batch”.
Quotes
- 2:01 “local versions were all built as modifications to our W1 the so-called worldwide version”
- 3:25 “an app uh but you don’t really have access to the right places where you can hook into the base”
- 5:55 “module is just a set of objects the difference to other sets of objects though is that these need to be functionally coherent”
- 7:06 “we provide you with a facade which is a stable API that is not going to change”
- 11:55 “with 2024 wave 1 um that’s a thing of the past at least in this version Microsoft is able to move tables between apps”
- 12:26 “the business Foundation which squeezes neatly in between the base application and the system application”
- 12:47 “it is a horizontal Erp related functionality which is used by all on none of the application domains”
- 13:48 “everything that you see here today was developed as true open source it’s the first module that we developed as true open source”
- 14:48 “number Series has a high uptake around the product so that means it’s useful both for us and for you as partners”
- 17:10 “we’ve actually in the new API that we’ve introduced all the error messages are now actionable error messages”
- 19:52 “we have the function get next number get next number three to get next number we have get next number one we have get”
- 21:13 “now instead we have split this into two code units that we want to use so we have the number series and number series”
- 26:33 “the old Legacy code has been obsoleted with version 24 and will be removed with version 27”
- 27:49 “we have this number series management which is an array of 100 uh yeah number series managements”
- 28:29 “all you need to do is create a number series Batch get the next number and save State at the end”
- 31:42 “do get next number series and try get next number they are going away because they make no sense”
- 32:37 “we didn’t get around to do the co-pilot support quite yet um but our MVP Demitri catson picked up on that”
- 32:57 “you can see the entire discussion going on and very very soon theit is going to post this first pull request”
Disclaimers in the video
- 8:17 other: at some point they also will allow for individual versioning and effective upgrading we’re not there yet but at least they are prepared for that
- 11:22 other: deprecation scheme where we’re going to tell inversion this and this and that this is going away and this is coming
- 26:33 not-in-this-release: old Legacy code has been obsoleted with version 24 and will be removed with version 27
- 26:33 subject-to-change: the old Legacy code has been obsoleted with version 24 and will be removed with version 27
- 32:37 coming-later: we didn’t get around to do the co-pilot support quite yet
Presenters (as heard): Jesper Schulz V, Andreas, Yesa, Dimitri Catson.
