Skip to main content
Dynamics 365

Breaking the monolith: Introducing the Business Central System Application

The landscape in which ERP solutions operate is undergoing major changes. Those changes are also being referred to as the digital transformation or the industrial evolution 4.0. For Dynamics NAV to stay relevant, the product had to join that transformation and become a cloud solution, operating in the heart of the intelligent cloud. It had to become Business Central.

Intelligent Cloud

This fundamental change of the technology ecosystem requires fundamental changes to Business Central, which now must deal with the increased complexity of the ecosystem in which it operates. With the business application being a monolith, made for a code customization model, there are several challenges which arise, as the application is:

Book Escavator Tree Tools
Hard to understand and to document Hard to extend and build upon Hard to evolve Hard to maintain

In order to restore simplicity and move forward efficiently, one of our initiatives is to componentize the monolithic application into smaller modules.

Componentization

By componentizing the business logic in Business Central from the bottom-up, we get to “start over” and build the foundation, upon which a more extensible business logic can evolve. We are building a new foundation upon which the business applications of the future will be built.

Initially, we are factoring out all functionality that isn’t business logic as such. This code is a gang of low level helpers that support functionality and frameworks – we call it the System Application, the interface to the Business Central platform and cloud ecosystem:Layers

By constructing the System Application out of small building blocks, the so-called modules, we achieve a variety of advantages, as modules have the following properties:

Separate Concerns Stable API Encapsulate Lock
They separate concerns and are functionally coherent​ They have stable, well documented APIs that are exposed through facades They encapsulate complexity and hide implementation details They have a small attack surface, which makes them easier to secure
Fast Compile Discussion Performance Versioning
They are faster to compile and publish, which supports a good developer experience Their size and clear purpose allow for a code contribution model and focused design discussions They are easier to performance test and monitor They allow for individual versioning and effective upgrading

For the first release of the System Application, the collection of modules looks as follows:

Modules Diagram

As the foundation is work in progress, you should expect new modules to be appearing regularly. If you would like to look into the latest state, you can always go to the GitHub repository where we will publish the latest improvements: https://github.com/Microsoft/alappextensions

In a series of blog posts, you will learn more about the architecture of the System Application, and you will get more details about the individual modules.