How To, Part I | Breaking a Monolyth

I often wonder how I find myself in situations like this. On my day off I find myself behind my desk doing something which is not my responsibility, nor am I getting paid to do it.

If you say A, you also have to be willing to say B and C. This is what my parents told me when I was young so when I promissed Bugsy and Jesper to look into making the Business Central Base Application smaller I decided I may as well make it into a decent project.


  1. davmac1 says:

    Commissions is much smaller, but should be a separate app as well so it can be replaced easily.
    Look forward to hearing more about this project.
    Didn’t Bill Gates originally think that we needed a standard G/L that many other apps could use?


  2. How do you solve the issue that there are extensions that are overlapping, like extended text management. that allows to handle texts per document type (in separate tables) or commissions which which may be used from service and sales.
    Does this mean, that we need additional or different apps for every of the separate (base) app module- combination?
    Where does this end, if you split up base app into multiple apps?


    1. The only solution i currently know is not to break up BassApp. But that means slow develpoment.
      My solution would be a solution you would/can not accept: Use C/AL. There you don’t have the problem with with the large base-app in most cases.
      And a real usefull solution requires also C/AL: Conditional Compile. If whole source is uploaded into the tennant, and compiler is also integrated, you are able to compile an object after a module is installed. Then you are able to use a compiler directive like “#IFEXIST(OBJECT::”WhatEver”)…#END” and a property at variables or functions “IgnoreIfNotExist”=True.
      But conditonal compile also requires also a large amount of tests, because you have to test also every combination of installed apps.
      BTW: The problem why breaking up the base app is not a good idea, is the same why breaking up large ISV- solutions is not a good idea. They have to many dependenies through the modules.


Leave a Comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.