Eternal Refactoring | Are you ready?

Microsoft Dynamics 365 Business Central is the best and most customizable ERP that ever existed.

There, you have it.

For some people it’s hard to understand that in one blog I am trying to protect our ecosystem from loosing C/Side and in the next I am praising Business Central to be miles better than any other cloud ERP.

The reason is honesty and reflection.

If you don’t know NAV/Navision then Business Central is an ERP from Venus. The Web Client’s interface is next to nothing you have seen and no other cloud ERP has so many events and extensibility possibilities.

But if you are a Navision partner you are looking at your product and you see Microsoft killing it in favor of the cloud.

I said more than once that I wished that Microsoft had picked GP to be the cloud baby and put NAV in maintenance mode. That way we would have two choices. Keep running our current business OR move to the cloud.

Now Microsoft is killing C/Side and giving us no other option than to move. I am not saying move forward. In some ways, many ways, it is a step backwards.

Business Central is essentially a fancy shell over and old product. Two parts of our product are old. The code base and the language. And I think this will haunt us.

If you start programming for Business Central it looks nice and cool, but you don’t need more than 15 minutes to find out that AL is not in any way like other programming languages.

As Navision developers we know why and yet we don’t. AL is not object oriented. It does not know classes and inheritance. No polymorphism. Our base app is full of code cloning and everything that goes against clean coding principles.

Good people with great intentions at Microsoft want to change that. Which is great! They intend to refactor our base app in favor of a decoupled architecture.

Nobody could be more happy than I am.

Yet Microsoft made a promise. With extensions our lives would be easier. They made a promise that an upgrade would not be replacing an engine anymore. They promised an oil change.

The prerequisite to the oil change is extensions.

OK.

Let’s imagine I am a customer, and with NAV 2018 I had choosen for extensions. Now my live is easy right?

Is it?

What did Microsoft change in NAV 2019? (Sorry, Business Central). They removed codeunit 1. Eh… Ok. Wasn’t that a codeunit with like a million event publishers that everyone was using?

Hmmmm. So If I am subscribing to that I have to change all my events?

YES!

Bye, bye promises.

So what is next? What is the next part they will change? (If you can call one codeunit a “part”).

Roumours say the TempBlob table will be an extension on it’s own wrapped in an API.

Hands up who uses the TempBlob table? (people raising hands).

Hands up who has to refactor their code? (people raising hands)

So Microsoft refactored two large portions of the base application (2 out of 7000 objects).

What can we expect if they REALLY separate Manufacturing from the base?

What can we expect if they REALLY separate Jobs from the base?

Let’s take it one step further… the retirement from C/Side

… (three dot’s anticipating you as reader to get impatient)

If you have an ISV solution and you want to move to AL, you have to first migrate to the last C/Side version…. Then you have to move to extensions OR do customizations in AL.

After Microsoft moves to AL they will start refactoring the base app. So this means your AL solution get’s separated from your C/Side solution. And all of your existing customers, the customers that pay the salary of your employees, the rent of your building, the retirement funds and your sports car (which they don’t know about), are on C/Side.

Hmmmmm…

Refactoring forever… are you ready? How is Microsoft going to communicate what they change?

Questions…

3 thoughts on “Eternal Refactoring | Are you ready?

  1. Fiddi

    As i stated somewere else-> Developing in an ERP-System is the same as changing System.Object in DotNet every day.
    Nearly every modification is a breaking change, So in my opinion the promisses from Microsoft are useless, especialy in the view at the changes they will/try to do the next years.
    But that’s not the real problem i think. As we see faster and faster modifications in structures, the quality of the software goes down because there seems to be no real quality assurance. Or is it missing knowledge?

    Like

    Reply
  2. Capone

    Suddenly it seems more reasonable to do what a MVP once mentioned. Apply the hook pattern to events, meaning that you have a subscriber/publisher codeunit for each object you want to extend with events. All of your extensions/adaptations should subscribe to the events from that codeunit instead of standard objects.
    Once Microsoft has refactored that object you only have to refactor one publisher object instead of all the subscribers.

    Like

    Reply
    1. Mark Brummel Post author

      No, I don’t think that’s the solution. The solution is that Microsoft needs to ship code that upgrades the code, like google does for Angular. With ForNAV we do that all the time and we also change the Codeunit 1 event subscribers.

      Like

      Reply

Leave a 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