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.

4 thoughts on “How To, Part I | Breaking a Monolyth

  1. davmac1

    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?

    Like

    Reply
  2. Hans H. Fiddelke

    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?

    Like

    Reply
    1. Mark Brummel Post author

      Hans, instead of complaining about problems, can you please make a suggestion of how you would solve this? You are a smart man and very experienced so offcourse you are right. But being right doesn’t solve the problem.

      Like

      Reply
      1. Hans H. Fiddelke

        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.

        Like

Leave a Reply to Mark Brummel Cancel reply

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

WordPress.com Logo

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

Google photo

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

Twitter picture

You are commenting using your Twitter 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.