Are you ready to move forward “WITH”-out AL?

Sometimes I just have to write my frustration away in order to clear my head. Don’t expect technical tips and tricks in this post, but maybe some inspiration.

Today I was absolutely flabbergasted. Both on Twitter and on LinkedIn (I am a social media junky) there were actually threads about Microsoft removing the WITH statement in AL. I was litterally like OMG! Go spend your time on the future!!

I’m not going to spend more time on this idiotic topic than this. AL is a horrible programming language and in my future programming career I expect to spend less and less time each year using it.

What does your toolbox look like?

My father-in-law, may he rest in piece, could litterly make anything with his hands. He was a carpenter as a proffession but he could paint, masonry, plastering, pave roads, you name it and he could do it as long as he has the right tools, a good mindset and look at someone do it for a while to pick up some tricks.

As programmers we seem to be married into languages and frameworks and I can only guess why this is the case. In the old world were we came from which was called “On Premises” it was hard to have multiple frameworks, operating systems and databases work side-by-side.


We live in a new world called cloud, preferably the Microsoft Azure cloud and in this new world frameworks, databases and programming languages co-exist side-by-side just fine. Not C/Side is your toolbox but Azure is!

How I am migrating our 200GB+ Database to Business Central with 2000 custom objects? BY USING AZURE!!!!!

– Mark Brummel –

Quote me on that.

For the last year or so I’ve been preparing “our” Business Central SAAS migration and the first thing I did was NOT look at AL code and extensions. The first thing I did was to implement Azure Blob Storage.

The second thing I’ve implemented was Azure Functions replacing C/AL code with C# code.

The third thing I’ve implemented was JavaScript Add-Ins to work around limitations of the Web Client. I did this together with the fantastic team of Global Mediator which gave birth to a product called Meta UI which for those of you not to stuborn to “want to do it themselves” make the Web Client a fantastic place to live in.

Number four on my list was Logic Apps to replace Job Queue processes scanning for new files and enhance our EDI

Right now we are implementing Cosmos Database, with Logic Apps and custom API to reduce our database size and improve scalability of our Power BI

FIVE PROJECTS to move to Business Central SAAS WITHOUT a single line of AL code written and we started our project about 18 months ago.

The plan is to move to Business Central SAAS within the next 24 monhts with as few AL customisations as possible.

You know what is funny? The things we are moving OUT of Business Central are the things that make us agile. These are the things that we always have to make ad-hoc changes to why we love C/Side so much.

Please implement a new EDI Interface. Boom, done. With Logic Apps and an Azure Function.

Please change this KPI. Boom, done with Power BI.

Please make this change to the UI. Boom, done with Meta UI.

Oh, and off-course to not forget my friends in Denmark.

Please change the layout of this report. Boom, done with ForNAV!

My frustration is probably not gone, it won’t be gone as long as I read people on the internet still treating AL as if it were C/AL WHICH IT IS NOT!

Fortunately I have a fantastic new job at QBS which allows me to evangalise thinking out of the box and helping people get started with Azure. Only last week in a few hours I got a partner up and running with an Azure Tenant running Business Central on a scalable infrastructure to run performance tests.


  1. Mark, please come down with your marketing stuff.

    I know that the WITH- statement has it’s issues, but the biggest problem is the design where it is currently used. There would be no problem if the compiler would generate a warning if there are unclear identifiers, but that is not possible with extensions. And only removing the statement will not solve the issue, you have to do several other things to make the code safe against the WITH- statement issue. But i think you would not like them.

    So removing the WITH- Statement is another workaround for problems you explained above.
    Replacing C/AL with C# (problem: unsupported untionalities), Cosmos DB ( reduced database size),ForNAV, Bower BI ( isufficient reporing capabilities), Java Script ( missing capabilities of the WEB-Client), Logic-Apps ( missing capabilites calling external services)

    So your description above is only the description of the inability of BC deliver a complete product as we hat it with NAV.
    To be clear, i am not against this tools, but we should not require them by default.
    One developer is not able to handle all these tools together. He is able to learn how to use the tools, but he will only be an amateur against a specialist for one of the tools.
    If you build a big house, you will call specialists for the seperate lots, but for a carport you need only one or two people to build. BC becomes a tool where we need a big team for building only a carport, which is enough for many users.

    And remember one of the speakers in the last presentation from then Directions EMEA in Vienna, he quoted a CEO from a software company from the netherlands, who said about BC “I would not hit my users and developers with a baseball bat”. But that’s what MS is currently doing.

    And that’s why many devlopers are angry, and are not shouting hurray when you tell them about a new workaround, like removing the WITH statement.

    Liked by 1 person

    1. Mark Brummel says:

      Hans, you can keep on looking at the past while the rest of us moves forward. Let’s catch up in a few years and see who is happier in life.


      1. Yury Rest says:

        Mark, are you migrating 200+ GB DB into SaaS and going to pay 40 Euro per every additional GB over official 80 GB making it 4800+ per month or do you have a special deal with MS?

        What you’re saying makes only partial sense, because mentioned tools aren’t really tools, they more appear as plaster over cracks. Did we not have those “tools” with dotnet interop previously? On the subject I must say personally never liked and never ever had used the WITH statement, so from own code have nothing to clean up. 😉


      2. Mark Brummel says:

        No, our database will be considerably smaller than 150 GB when we migrate.


      3. Yury Rest says:

        Nice one Mark. What about the freedom (openness) of information? 😦


      4. Mark Brummel says:

        Not sure what you mean with that? Can you elaborate>


      5. Mark i am not looking at the past. I am looking into the future, and i see that many devlopers try to introduce new technologies over and over which only solve problems, we never had before, and ignoring basic problems like concurrent apps (also you).
        In my opinion many of the tools provided, are a try to introduce new technologies with thinking from the past, fixing problems from the last “new” technologie and without knowledge from real life.


  2. Carl says:

    Could not agree more with your way of thinking here. I’m new to NAV / BC with just a few years of experience but with prior knowledge about cloud potential. I was thrilled about combining this with NAV to make some great solutions. What I found was most of my experienced collogues really question and do not want to embrace new technologies. The “but I can just create a job queue instead” came up a lot. O yea and CI/CD… no comment. As the new guy I sadly could not do much. I also have some built up frustration haha. I think this is the future and BC developers / consultants, we need to think outside the box and start embracing the new technology stack that is available to us. Thankfully some of us are most likely joining you in QBS very soon 🙂

    Liked by 2 people

    1. I agree with you that we need the ability to use new technologies, if required. And i also agree the the job queue is not a solution in many cases.
      But we live in real world, we have to solve the requirements of our customers, and these customers want for example a automatic print for a document to a specific printer without paying for every print.
      “New” and “modern” technologies are often a marketing argument for selling a product. But “new” and “modern” does not mean better. Example: A few years ago XML became “modern”, all things had to be transported in XML. One of the results, was that the old NAV- report module was replaced by the RDLC- reporting and that large reports required by accounting crashed because out of memory errors. Now some (unexperienced?) people learned that XML has a problem with large datasets an now JSON is “new” and “modern”, and nobody is talking about XML anymore.

      So if you want to make a good product, you should first know what are the requirments, and not start with a new project because you do not understand the old. I know that that this is a hard road, but you should take it, and learn from your colleagues and also from your users.


  3. My feeling is that Microsoft will make use of things like Azure functions or Logic Apps in BC anyway. Like the introduction of CDS for BC.
    So at the moment I’m also investing more time in the Power Platform and the Azure stack than learning AL.
    Sure you can’t be an expert in every field but wasn’t this the same in the past? Everybody knew that EDI expert, that .net pro or the guy who could to everything with Web Services.
    Some weeks ago I was listening to a presentation about Micro Services and I thought to myself ok let’s bring this philosophy also to BC when facing new challenges.


  4. Russell Kallman says:

    Just got to add 2c worth. It strikes me that there is a lot of legacy angst built-up where Microsoft basically did the bare minimum and left partners to plug the gaping holes in the solution – rather than deliver great industry specific value. There are two elephants in the room. Unless the BC team shifts to the same user experience layer tech stack the product may well be a dead-end (as it falls further behind and becomes more disjointed). Unless it provides a unique business process and user experience targeting smaller businesses it has no rationale for being in the portfolio other than arbitrary price point differentiation. Step back and you see that the team are trying to deal with these drivers with limited resources whilst desperately trying to get to parity so the legacy will migrate. Mark’s choice of tech is a recognition of that future, but Microsoft should be doing a hell of a lot more to utilize these technologies in ways that are simple and delivery business value. That unfortunately has been left to partners so far.


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 )

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.