NAV on Docker in a Local Virtual Machine

Do you want to have a local development environment for Dynamics NAV and Dynamics 365 Business Central, where it is easy to spin up and remove new databases, in whatever version you need? Docker makes it all possible, and this post explains how I was able to get my environment ready for prime time.

One of the most common things that happens in my blogging life is that I will be working on a post about a certain topic, and then as I come near a state where I feel like I can publish, someone else comes along and steals my thunder, and what often happens is that those other people write something much better than what I was working on. It’s demoralizing on one hand, but at the same time great to see so much quality content. Especially when a ton of it comes out on the same day, (as it did today), you ask yourself why am I even trying….

So, having just deleted the content of my attempt at some original Docker content, here are some of the most useful resources for this topic:

  • You can’t start this with anything other than a vast amount of material by Freddy Kristiansen, who has been working tirelessly on improving this area. He came out with a truckload of material today. You can just go to his blog and look for it yourself, but let me give you links to the most useful ones:
  • My journey to finally get Docker to work on my local Hyper-V virtual machine was biased, because I am fortunate enough to work with Arend-Jan Kauffmann. Back in December, he wrote an excellent blog about setting up networking into a local VM and to set up Docker access, where the container runs in the VM, and you can do development directly on the host machine. Thank you AJ for taking some time to look at my computer and helping me set this up.

I now have Docker containers run in multiple versions of Dynamics 365 and NAV, and it is all working seamlessly.

I’m still figuring out how to utilize Hyper-V most efficiently. For instance, I’m not sure yet if I should have multiple VM’s for multiple projects, or just keep it at a single VM with all of my projects. Especially when the version of the VSCode AL Language extension is important I might need to modify my setup. I will be experimenting with this and I’ll share that as I go along.

One thing’s for sure though: with my current working Docker container, this is about as efficient as I’ve ever been in my entire history as a developer.

Microsoft 365 Business Central

For about a year now, we have been talking about “Tenerife”. Despite going to great lengths to calm down the partner channel, the name and what it stood for has caused massive misunderstandings and great anxiety. Hopefully that anxiety will come to an end because today the new name has been announced: Microsoft Dynamics 365 Business Central (click here for the announcement and click here for the overview page). A catchy, easy-to-pronounce, 14 syllable name, and it is scheduled to be released on April 2, 2018.

I just wanted to put this out there, and I don’t have a ton of things to say right now, but watch this space for much more stuff to come. This week is Directions Asia in Bangkok, and there will be plenty of information coming out of that event. With the release of the new product there will be some new requirements for partners to get their IP into AppSource, and I will have plenty of things to share about that. Microsoft is working incredibly hard on getting all the information out there, including new material in the learning portal (the link that I had wasn’t working when I wrote this, so I owe you that one) and a ton of new and updated content in the new technical documentation site called ‘docs’.

I am in a very fortunate position to be involved in the very early stages of Business Central, I’ve had the pleasure to be working with the new product for a while now. I have to say I was skeptical of the Web Client and having everything in the cloud, but as I’ve gotten used to how it all works, and how the new ecosystem is forcing to improve our internal processes, I can’t help but be happy about the way that my industry is taking me into a more professional approach to my business. No longer do we get away with flying by the seat of our pants, and do whatever we can get out there in a short term, quick and dirty way. We must adapt and get ALL of our ducks in a row. Our approach to design, architecture, coding, marketing, delivery, automated testing, EVERYTHING must be in top shape in order to be successful in the new age.

This is the time where you have to adapt, or be disrupted. For me personally, it scares the heck out of me, but I also welcome the challenge. I am looking forward to what is to come next, I hope you are too.

Install from .vsix

This is a quick blog about installing the AL language for Visual Studio Code from a .vsix file.

When you create a developer preview Azure VM for AL development, you get a landing page to access this VM. The script that creates this VM will put all the components on the VM that you need to do your development, including the correct version of the AL Language extension for VS Code.

If you want to do your development locally, you will need to put the right version of the AL Language extension on your local installation of VS Code. Lucky for you, there is a link on the landing page for your VM that will download the installation package into your downloads folder. The file has the extension .vsix, which is what VS Code needs.

All you need to do is press Ctrl+Shift+P and type ‘vsix’ in the command palette, and VS Code will suggest ‘Extensions: Install from vsix…’. When you select this, you need to browse to the file, and hit the ‘Install’ button. If you already have another version of the AL Language installed, you’ll need to disable that, so that there is no confusion about which one VSCode uses.

Keep Your Data When Developing

One of the most frequent questions I get in our workshops is how can I keep my test data when I am developing in AL. For this, Microsoft has given us a new property that you can set in launch.json, read on to learn the details :).

Up until now, every time you hit F5 in AL to test your app, you have to start from scratch to enter some test data, of put together some data creation code in an install codeunit to populate your tables automatically. The reason is that the default behavior of the AL Language extension was to completely recreate and rebuild the app, every time you hit F5. This means that behind the scenes, your current installed version is completely destroyed, and then VSCode recreates the .app file and publishes/installs the app for you. As a consequence all the test data goes kerblammo, and you are stuck having to enter all the test data again. Not a big deal if it’s a setting or two, but if you added some fields to an existing table that you need some values in, and you need some data in your custom tables, it can get very tedious very quickly.

Microsoft has given us a new property called ‘schemaUpdateMode’ that goes into launch.json. If you leave this property out, the default behavior stays the same, so it recreates the app every time you hit F5. You can of course also add the property and set it to “Recreate” just to make sure. If you want to keep your data though, you can set it to “Synchronize”, which will keep your data intact.

Be aware that if you increase your app version, you will also need to use Powershell to Synch and run the data upgrade.

Announcing NAV 2018

Real quick one today – James Phillips announced General Availability of Microsoft Dynamics NAV 2018.

Marko announced it on TwItter:

Which was retweeted by just about everyone I know. Promise made at the closing keynote at Directions in Orlando is hereby delivered!

Can’t wait to see when they announce “Tenerife”.

NAV Techdays 2017 Recap

My favorite week of the year has just ended. I’m in the high speed train from Antwerpen back to Amsterdam, which is over just like that so I don’t have much time to make this anything elaborate.

As per usual, the organization was superb. The venue is fantastic, with a great expo area, lots of good food and drink choices, and the seats in the great rooms are just about the most comfortable seats you can imagine. The Kinepolis is a movie theater that you can also rent for events. I think I speak for everyone when I say this is one of the most important features, and I hope we will never have to move to a different location.

My week started with a full day pre-conference workshop about automated testing in NAV. This workshop was hosted by none other than Luc van Vugt, who, as per usual, delivered a solid day of learning. I had misread the workshop description and the correspondence that we had prior to the workshop, so I did not get everything out of it that I could have, but Luc was so kind to offer assistance to me so that I could do the exercises at home. Any time you have an opportunity to train under Luc, you should take it.

My company, Cloud Ready Software, was a sponsor, so we had a booth to staff. It was a pleasure to be there and talk to anyone who had any questions about what we can offer.

As per usual, the two conference days were stuffed with 90 minute deep-dive sessions on any topic you can think of. My favorite ones were Waldo’s “Rock ‘n Roll with VS Code”Anders and Nikola’s “Creating great APIs”, and the Docker session by Freddy, Tobias and Jakub. Fortunately for you, you can watch all of the sessions on YouTube, Luc had all of them uploaded within a week of the conference.

I can’t say enough about this conference. For any technical resource in the NAV channel (and I include Dynamics 365 for Finance and Operations in that category), NAV Techdays is a must to attend, every single year. This is the second time that I’ve gone, and I am still kicking myself for not going the first few years. If I can help it, I will not make that mistake again.

See you next year in Antwerpen!

Directions 2017 EMEA Recap

After a supremely busy week, with lots of last minute session and workshop work, I’m getting ready to go sightseeing in Madrid with my wife and some dear friends. This week has been frustrating, as well as satisfying, as well as educational, although not as educational as I would have wanted because I was too busy doing sessions and workshops to have any time to attend any myself.

One of the key takeaways is that Microsoft is going to release NAV 2018 in December this year, so 4-5 months ahead of the spring release of “Tenerife”. The whole white label thing seems to be gone altogether, so partners can continue to use the Microsoft name in their marketing for their Dynamice 365 products. Still, there is some need for clarity about licensing, and about the long term future.

What everybody needs to acknowledge is that we now live in a world that is being disrupted continuously. Today, Microsoft is heavily investing in their current roadmap, one that they feel very strongly will succeed in the long run. You must understand that this world is moving at the speed of light, and if something happens to our ecosystem, Microsoft WILL react. When they do, they will focus on what they feel is their best chance to survive in this changed world, so it is up to US to make that happen.

This slide was shown at one of the presentations, and it shows where Dynamics 365 “Tenerife” fits into our world. As you can see, it is just one of many boxes. If the surrounding boxes change, there may be a completely different role for “Tenerife”. It might very well happen that the market shifts in such a way that there won’t be a need for it at all. Given everything that I’ve seen this week, I think the “Tenerife” story is awesome, and we are going to absolutely crush it in terms of features and capabilities. What I don’t know is whether we can grow this cloud business enough to remain strong over the long term. The key though, is to fully embrace the entire picture, not just the ‘NAV’ part of it. The days of just ‘NAV’ are over, and they’re not coming back.

If anything, what I get out of this week is that we all must play a crucial part in the success of our entire market. WE the partner channel WITH Microsoft, NOT Microsoft alone, will determine the success of this market. If you want to be a part of this ecosystem, you better adapt and embrace what is here to stay. Fighting it is a losing cause, and you will be left behind.

I say we take a deep breath, a chill pill, we take a good look at what we have to do, and we roll up our sleeves and make it happen.

Directions NA 2017 Recap

It’s been quite a week at Directions in Orlando. I’ve written about the confusion in the halls of the JW Marriott Grande Lakes resort, and I wanted to follow up about the closing keynote, and share an article by Microsoft’s General Manager for Business Apps & Strategy.

First the closing keynote, which was a very impressive thing to behold. This week has given me even more respect for Marko Perisic than I already had, because of the way that he owned what he said during the opening keynote, the way he listened to the event attendees during a few Q&A sessions, and how he has taken responsibility to do something with the feedback that he’s received this week. I already knew how much he cares and how much his team cares. Over the past decade I’ve gotten to know many of them quite closely, and they are really a great group of people that have their hearts in the right place. We are in good hands with them.

So, there are 4 items on the todo list:

  1. The ‘white label thing’ is not going to work. We are Microsoft partners, and we need the Microsoft brand.
    • I think the white label thing got taken out of context a little bit. I know someone said “once you change 1 line of code you own the product” but of course it’s more complex than that.
    • The point is that this is a Microsoft product, and we create things to extend it. We add to it, but it is still a Microsoft ecosystem, and we need to be able to leverage that
  2. Delaying the release until spring is creating confusion, and the delay in decision is going to cost many partners a LOT of money. Marko has committed to see if he can fix that
  3. Non-NAV Partners have nothing to sell at the moment. Microsoft needs to be more clear about how non-NAV partners can move into Dynamics 365
  4. Microsoft needs to be crystal clear toward the user group, and there is a firm commitment to be more involved with the user groups

Now toward the end, Marko shared a picture of a word cloud. This was the result of an internal survey, where everyone in the NAV team expressed their feelings toward the product and the greater community. I don’t know about you, but this gets me going every time. If I may speak for myself: the feeling is mutual.

One other thing that was posted a couple of days after Directions was this:

I think that the whole “NAV is dead” thing was totally misunderstood. Maybe someone was talking about the name NAV, but I really don’t think it actually is dead, or even that there are plans to kill it. I do think Microsoft at the corporate level doesn’t always have a clue (which is a polite way of saying that it seems like sometimes they have no clue whatsoever), and I also think that one way or another there is going to be just one “ERP” in Dynamics 365.

Personally I think that the NAV flavor has a really good chance of being that one flavor. For sure we are NOT dead, and there is a LOT of really good and exciting stuff ahead of us.

 

Directions EMEA 2017 – Madrid

For Directions EMEA, we are going back to Madrid. I am really looking forward to this one, because I have some business to take care of on Mallorca. While I am there I will spend some quality time with some great friends there, and in the planning stages my wife and I decided that it is of utmost importance for her to come with me. So my business trip now has a personal flavor as well.

My company Cloud Ready Software is going to host a record number of sessions (13) and workshops (10), of which I will be hosting 3 workshops and 3 sessions. We also have a booth, but I am worried that we will not have much time to actually BE at the booth since we are all very busy with sessions. My contributions are:

  • Build your 1st extension in VSCode – This is a 2 hour workshop in which we will introduce you to Visual Studio Code, and you will build your first real extension using this development tool. This is the same workshop that we did in Orlando at Directions NA this year.
  • Migrate your IP to VSCode – in this 2 hour workshop I will present what you need to look at when you want to move your IP into Dynamics 365, we’ll take a look at how you can assess your current IP and do a feasibility study. In addition, you will get your hands on some PowerShell scripts to convert your C/AL objects into AL objects.
  • SCM Simplified – this session covers an introduction to Source Code Management, and why it is important for you to start using it today
  • ISV Development Center (session) – At the Inspire conference in Washington DC, my company Cloud Ready Software was announced as one of only a handful of ISV Development Centers. At Directions we will host a session to explain what this means and what we can do for you.
  • Technical partner panel (Q&A session) – a bunch of Microsoft people and some MVP’s will answer any technical and non-technical questions you may have about the upcoming version of NAV and the new technologies that are used to develop extensions and apps for Dynamics 365.

Some of these sessions are a repeat of the ones that we did in Orlando, and some of them will be converted from mere sessions to workshops, since we had gotten some feedback that it would be great to get some hands on material in addition to the presentations. We are always happy to oblige such requests.

Come look us up at our booth, and leave us a message if we are not there, we really want to talk to you!

What’s Going On Out There?

In case you missed it, there were some unexpected announcement this week at Directions North America in Orlando, and as a result there’s some growing trepidation among my people of the NAV partner channel.

Over the past few years, Directions North America has become the time when Microsoft announces the new version of Dynamics NAV. All year long, the partner channel goes out and tries to time sales around this time, and they make promises like “just wait for Directions, the new version will come out, and we can get your project started right away”. Usually, partners go to the conference, attend all the sessions they can catch, and on their way back home, they put in their license orders.

This year, however, the announcement was that there would be NO new version right at Directions. Microsoft is working on the next greatest cloud product, and they have not yet decided what to call it, how licensing will work. We are told that the code is ready to go, but they’re not yet ready to pull the trigger, mostly because of marketing reasons. Since Microsoft wants to go big bang with this new product (identical “full NAV” on premise as well as in the cloud).

This announcement was made by Marko Perisic during the opening keynote, and that afternoon there was a Q&A session that got quite heated. I was not present at the first one, but because it was so “popular” they decided to do a repeat, and of course I did go to the repeat.

At the same time, some event was taking place with some big shots from Microsoft and some inner circle partners, where someone said that someone else high up in Microsoft said that “NAV is dead”. When I heard this, I was immediately skeptical about the accuracy of the quote, and even if it was accurate, that it was probably (likely) taken out of context.

I listened to Marko do some damage control, and to a number of people put forward their points of view, which were made with varying degrees of validity. My takeaways of this session were these:

  • In My Humble Opinion – Marko made a big mistake by using the product codename in the official announcement. Granted, it was in quotation marks, but still, that was not a good thing. Now we have ‘NAV’, and we have “Tenerife” and we also have this unknown product name. Lots of lobbying by the way for ‘Dynamics 365 Navision’ which I actually like, but is probably too retro.
  • No new NAV version is a BAD BAD BAD thing. Postponing the release until spring 2018 is an even worse thing. Many people have been postponing sales for the new version, and not having this new product will defer revenue until spring of next year, and that is going to cost a LOT of people a LOT of money.
  • What I thought was an excellent suggestion was for Microsoft to release the product as it is today (after all, they DID say the code was ready to go), only for on premise, and use current licensing. That way we can start implementing the new product, and we can just call it NAV 2018 as everyone was expecting anyway
  • This rumor that “NAV is dead” must be dispelled at once. Nuff said.

This Q&A session was brutal, there was a LOT of anger in the room. But one thing that I also took away from that session is that we are SUPER lucky to have someone like Marko at the helm of this great team at Microsoft. I observed this guy talk to everybody at Directions, and he always had a smile while he was being chewed out. He’s a very direct person (which I actually appreciate a lot) and that can sometimes be misunderstood. I’m in a fortunate position to be one of the MVP’s, and we had a private meeting with Marko this evening. Because of NDA I can’t share what we discussed, but I can assure you that this guy cares deeply for this community of ours. I for one have gained a TON of respect for how he stood up and listened to everyone that wanted to talk to him. He has heard everyone, and has taken everything to heart.

It’s still the middle of the conference. I have lots of session/workshop stuff to work on, so I gotta get going. Can’t wait for the closing keynote.