videoPlatform, DevOps & Performanceofficial - Microsoftreviewed - checked by Opus

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.

  1. 0:00 Introduction and Background
  2. 1:50 The Shift from Customization to Extensibility
  3. 3:04 Challenges with the Extensibility Model
  4. 5:18 Introduction to Modules and System Application
  5. 7:26 Advantages of Modules and SOLID Principles
  6. 9:20 Breaking Changes and Technical Solutions
  7. 11:43 Business Foundation Architecture and Design
  8. 13:48 Open Source Development and Number Series Selection
  9. 15:49 Number Series Page Enhancements and UI Improvements
  10. 17:30 Actionable Error Messages and Workflow Improvements
  11. 19:11 New Number Series API and Batch Processing
  12. 24:31 Custom Implementations, Extension Interface, and Backwards Compatibility
  13. 27:49 API Usage Patterns, Batch Processing Simplification, and Code Examples
  14. 32:15 Copilot Support, Componentization, and Closing Remarks
video Microsoft Dynamics 365 Business Central (YouTube) · 2024-04-04Watch on YouTube

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.