This Extensions Stuff, is it version 0.1, 0.9 or 1.0?

Unless you have been living under a rock it is impossible to have missed the discussions about Extensions, or should I say fights. When I was walking my kids to school this morning my neighbour asked what the argument I had on LinkedIn with Marko was all about.

As MVPs we have to get used to a new reality. Blogging is no longer something that nerds do to share their personal opinion. Blogging is part of a marketeers day job and people get paid for what nerds like me do for free. I like it because writing allows me to clear my mind.

Oh, I remember the old days when people did not understand what an MVP was and we had huge debates over project green, SQL Server performance issues and other problems. No Microsofties getting in our way to have a good rant after having a bad day at the office.

In fact, in the real old days Navision employees were not allowed to be on (Now MiBuSo) or MBSOnline (Now DynamicsUsers). There were people that would do that anyway under an alias (which as very normal back then, you didn’t use your own name on forums) and helped people in the ecosystem.

Hey Mark, are you done already? I thought you were going to talk about extensions.

No. But be patient, we will get there eventually, maybe…

This is my blog. If you don’t want to read my thoughts, than don’t go here. Nobody forces you to read this. You don’t believe what I write is true? You think I am spreading rumours. I challenge you to test it yourself and if you prove me wrong I stand corrected. Happend in the past and I am a big boy, I can handle rejection.

Protecting code

Yesterday I spent most of my day on the Phone and on Skype. Talking to friends who attended Directions US.

On one of the calls I stood corrected. In one of my rants against Extensions I talk about the negative side effect of them being protected. You cannot see the source code.

This is bad, but not a new problem. It has been a challenge in our ecosystem for a longer time. A few months ago even I was asked to do a second opinion on a Navision 5.0 system that was running on a Native database. The source code was protected, not only the isv-range but also main posting routines like codeunit 12 and 80. This customer was held hostage by its partner.

In an unprotected situation I could have helped this customer and prevent an unhappy Navision customer leaving our ecosystem looking for another software.

Less serious a situation is where an ISV protects a few of their codeunits via the licensing system. In these situations you can still use some back doors that Microsoft kindly enough left in the system to analyse the code and even correct a thing or two before sending the solution to the ISV.

Extensions are protected but also have a backdoor. I’m not going to blog that and I am not taking the credits for finding the backdoor. One of my friends did that. So if a Navision 2016 or 2017 customer runs into issues when using an extension there is a way to change its behaviour without being held hostage by the ISV.

So what version of extensions are you talking about Mark?

I’m not going to tell you just yet. Please remember that NAV2017 is not released just yet and information is officially still under NDA. Strange situation because hundreds of people have access to the preview and every NAV partner seems to get access to Yammer with the Microsoft ace program these days.

What I do want to share are some other things.

Inside the VSCode project

One of my friends I called yesterday was Arend Jan Kauffmann and he shared the same with me as he writes in his blog, which is mandatory reading if you are taking your job as a Navision developer serious.

In his blog he is actually answering the question I raised as a title of the blog but I want to add some background which I will blog once NAV2017 is released maybe together with some videos.

He estimates an ETA of two-three years for this project to complete.

It sounds like a lot of problems I had with the current Extension model will no longer be valid but in return we will get an extra challenge called object-oriented programming.

Again, something for a future blog post or a video.

Solution Apps

James Crowter writes about Solution Apps. This is something I first heard about after WPC and it seems that partners who have a vertical solution which is not loosely coupled with the current design patterns can put their code into Dynamics 365 anyway.

This makes me smile. Yes we need to move to extensions, but in order to match sales targets we allow large vertical partners to take a backdoor.

I’ll leave you to have your own opinion here.

Future of my blog

If you are still reading this you are still on my blog. Since it is my blog I might post something tomorrow about my dog if I want to. It’s your choice to read my blog and my goal in life is not to be an MVP but to help the community.

If something is wrong with your Navision, call 911 (NA) , or 112 (Europe) and I will try to save you. I prefer to do that by sharing what I know in training, coaching, books, blogs, forums or videos. That allows me to multiply myself and ultimately have a better Navision ecosystem.

Sometimes I will share weird code that I find in Navision and try to explain how to work around it. This is normal I think in open source situations.

This entry was posted in Dynamics NAV. Bookmark the permalink.

4 Responses to This Extensions Stuff, is it version 0.1, 0.9 or 1.0?

  1. davmac1 says:

    Does your dog miss you? 🙂

    Liked by 1 person

  2. Hi Mark,
    Personally then if an add-on used to have more than a few protected objects, then I would more or less automatically disqualify it. Not such much because I couldn’t changes it, more to avoid all the fuss when upgrading. And of course to prevent the customer to be bound to a special partner.
    I too have been working on more than one project, where the customer was locked to a special partner because of an add-on with locked key objects (tables and forms etc.). They were not happy. Upgrading was practically impossible as the partner didn’t have a new version.
    I think that one of the strength of the NAV world has been that everything has been open source. It has allowed us to copy and paste from the good patterns we see. Even if some of the copy/paste’s may be very close to stealing IP, then we would never have been where we are now if it had been closed.

    In regards to the latest debate in the different “forums”, then I think that everyone should be happy that there is someone who’s “the devils advocate”. Especially when that someone is you. You have a lot of followers.
    So don’t even consider to start blogging about dogs, if it would mean you wouldn’t blog about NAV.


  3. amitwason says:

    I think protecting code goes against the grain of Dynamics NAV / Navision, it does not help the customer in the long run…but as much as people want to share code and ideas, businesses want to protect their IP.
    Having Extensions protected will encourage more companies to create good solutions and that is good news *if* those are written well. One of the benefits of “open source” code is that a good partner can solve a bad partners code!

    In theory the extension will be a little less dependant on the version so not all upgrades will affect it. If a version is not compatible then there should be conditions that state the partner must have an update within x weeks, or better still be given pre-approval before the release of the upgrade. If they don’t do this within a stated time frame, then the code gets updated by Microsoft and they then own it.
    Having an IV bypass is not really right…it seems to go in the opposite direction that Microsoft are aiming to get to with Dynamics 365!


  4. Hans H. Fiddelke says:

    First of all i have to say, that i have currently no real exerience in NAV Extensions.
    As i understand them, extensions are a delta between the base- version and my new modifed version.
    Currently we are developing an own ISV- solution, which depends/extends in parts another ISV-Solution (payment- handling). Every month i have to merge the new CUs from MS into our ISV- Solution, which works never completely automaticaly. As i think this is nearly the same mechanism as the extensions, creating a patch(delta) to insert in the existing code, with the difference, that with an extension you have the patch but you may change the code that you want to apply it to. I think that would not work well every time.
    Currently i see a great difference in then structure of the pages for the master data (items,customer,vendor,…) between NAV2016 and NAV2017. So an extension to a page in NAV2016 would not work in NAV2017, because the structure of the new pages is very different. This may also happen in a CU.

    If this is true we have to build and manage an extension- version for every CU and NAV- Version, probably additional extensions for used or depending other extensions. That means also, when upgrading NAV-base, you can not be shure that your used extensions would work after the update.

    Currently the workflow in the NAV-code depends heavily on executing the code in the right order. for example: you have first to find the discounts and then the (best) prices (respecting discounts) in the SalesLine. How can i insert an extension for a special discount calculation which i need in my business between that two function- calls if there is no event?
    Next thing is “to validate” or not to validate”. The NAV-Code depends very on doing a validate at the right time. Sometimes you may validate, sometimes you can and sometimes you may not validate to get the program work correctly. But sometimes you need now a validate where a simple assignment was enough in the NAV- Base. How can this be done by an extension?
    Currently i have three questions from real life, and i do currently not know how this could be handled by/with an extension:
    1. The payment- solution we use, did a small change in their code in checking that a payment could not be applied if it is done before the posting date of the depending invoice. Another ISV- Solution (WEB-shop) we use in projects, accepts payments on orders, so the payment is often done before the invoice is posted, and this a strongly recomendet fuctionality. How can i switch of the checking in an if- statemanet in the payment- solution with/in an extension?
    2. A Customer expects for his business that some items are handled in two different unit of measures which can not be calculated among each other. So every time an item journal is filled, i sometimes have to fill also an additional UOM and UOM- quantity for this special Items, and i have to get this values into the itemledgers and valueentries. Of course i have to check/fill these values on different circumstances in the Item journal (f.e. Apply to item ledger entry no., calculate phys. inventory,…). How can this be done by an extension which probably extends other extensions?.
    3. We have to allow Payments to and from Vendors or Customers to different Vendors or Customers, So the filtering in the codunits for posting(12) and Apply 225,226,227 has to be redesigned for correct appling ledger entries with correct dimensions and other information.

    So in my opinion (and Microsoft says the same) extensions are a good method for addons which have no real influence to the businesslogic (f.e. reporting or additional information like DocManagement which allows to view external scanned Documents), or which can hook at a clear position in the system and do not need to manipulate the basedata (f.e. parcel service export, it can handle ist complete own data, and does not change any logic).
    For other addons, extensions are not always the real answer.

    The business of our cstomers is often more different than we or Microsoft think.

    Liked by 1 person

Leave a Reply

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 )

Google+ photo

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

Connecting to %s