Business Central is open source!

  1. Before Directions EMEA 2023
  2. BCApps repository
  3. The future of ALAppExtensions and BusinessCentralApps
  4. Business Foundation app
  5. Conclusion

It happened on November the 2nd, 2023, on the Directions EMEA in Lyon (France), when Microsoft dropped a bomb: Business Central code is finally maintained truly open source!

This is good and extremely exciting news in so many ways. Let’s discover what is this actually means, what is already available, and what is yet going to come.

Disclaimer: I am neither an MVP (having access to exclusive information), nor did I attend the Directions EMEA 2023. Everything that I am going to describe in this blog post are conclusions based on social media and my own research. Updates to this post might follow.

Before Directions EMEA 2023

So far, contribution to standard AL code forming the Business Central standard application was possible through the following repositories:

  1. https://github.com/Microsoft/ALAppExtensions
    Home of the System App and various add-on and localization apps, together with their automated tests, but also of the Test Framework itself, and the Business Central Performance Toolkit (BCPT).
    Additionally, everybody can create issues (not pull requests) for extensibility requests, such as missing events.
  2. https://github.com/microsoft/BusinessCentralApps
    Application Platform Contribution Pilot: private repository for partners to enhance the Base App and the DemoTool. Additionally, it contains code from the ALAppExtensions repository as Modules, but only the W1 part.

In both mentioned repositories, the main branch represented the current, last released BC update.

None of these were truly open source: They were copies of the repositories where Microsoft developed features on. Accepted contributions by the community get merged with Microsoft’s code changes and released together in an upcoming release of the product.

I should mention here as well that there is a third (non-Microsoft) repository to view (only) and download all AL code of all released BC versions, with one branch per main BC version: https://github.com/StefanMaron/MSDyn365BC.Code.History

BCApps repository

There is a new Microsoft repository that will hold all AL standard code together in once place. It is located under https://github.com/microsoft/BCApps (or short: aka.ms/BCApps). It has been created already in May 2023, but it’s public only since the 2nd of November 2023.

The main branch points to the next major BC version. Absolutely everybody is allowed to view and fork this repository, to submit their own enhancements to be released in the next major version. Both Microsoft and the community can view and review all pull requests. Every day, there is one pull request named “[main] Update BC Artifact version” that will update the BC build number, the third position of the version number, in the AL-Go-Settings.json.

The repository does not contain all apps yet: For the time being, we can find the System App, the Test Framework, and the Performance Toolkit. But the rest, including the Base App, will come soon!

But before you submit bug issues, mind the following disclaimer on the README:

⚠IMPORTANT⚠: This is not the right place to report product defects with customer impact to Microsoft! Issues created in this repository might not get picked up by the Microsoft engineering team and issues reported in this repository do not fall under SLAs (Service Level Agreements) and hence have no guaranteed time to mitigation, just as provided fixes won’t get backported to all supported versions of the product.

BCApps README.md

The future of ALAppExtensions and BusinessCentralApps

Does the new repository fully replace the old ones? Well, not yet, and at least not in terms of ALAppExtensions:

ALAppExtensions is still the place for 1st party apps for now, and will remain the place for extensibility requests. Given time, you won’t find code in that repo anymore though. Next goal is to get all apps and modules moved to the new repo – might take a week or 100 though

Jesper Schulz-Wedde on X (formerly known as Twitter)

There’s no statement on the BusinessCentralApps available yet, but I expect that as soon as the Base App has been moved to BCApps, BusinessCentralApps will be history.

Business Foundation app

Announcing the new repository was not the only hot news on the Directions EMEA 2023: code will move from the Base App to the so-called Business Foundation app that will reside between the System App and the Base App. Check out the details on this slide:

The Business Foundation has been prepared by Microsoft already since BC 21, when ErrorMessage related code has been moved into a new Base App Foundation subfolder. In BC 22, further tables of different functional areas were moved there. BC 23 introduced folders per sub-module that contained not only tables, but all kinds of related objects.

In BC 23, let’s now focus on an example, the NoSeries subfolder: It contains codeunit 396 NoSeriesManagement, an object that we all know well since Navision. The codeunit has been moved, but not changed yet – but it will in BC 24.

In the BCApps repository, we can see what is already being developed by checking the active branches, which will be the base for later pull requests into the main branch. And surprise, surprise, there is a feature branch called “features/BusinessFoundation”. Inside that branch, there is a new folder next to the System Application: Business Foundation. Inside that folder, you not only find the app.json of the future Business Foundation app, but also the NoSeries subfolder we already saw in the BC 23 Base App. But this time, it has been changed. Codeunit 396 has been put into a new Legacy subfolder, and it has been obsoleted:

    ObsoleteReason = 'Please use the "No. Series" and "No. Series - Batch" codeunits instead';
    ObsoleteState = Pending;
    ObsoleteTag = '24.0';

I won’t dive in any deeper now – I think you got my point: as soon as the changes are merged from the feature branch into main, your next major pipelines might throw warnings due to obsoleted code. If you want to know more about changes of the NoSeries management, check the features/BusinessFoundation branch yourself (and be aware that my links to it are invalid as soon as the feature branch will be deleted).

Conclusion

BCApps is not only the only repository you need to remember in the future – it is also already now the public source future BC changes, even if still under development like the Business Foundation app. Once the Base App has been added (still no feature branch or PR …), you will find many, many pull requests by Microsoft, partners and users to review. This will be your chance to anticipate what’s coming, and to warn about gaps you discover before the code has been even merged into main.

Enough said, now let’s celebrate 🥳

Leave a comment

Create a free website or blog at WordPress.com.

Up ↑

Design a site like this with WordPress.com
Get started