It’s the week of “undocumented features”, apparently. Today: code analysis. Apparently, the al-language extension comes with a built-in analysis for your al-code. Thing is: it’s disabled by default. Just go to settings (File/Preferences/Settings) and enabled it.
By adding the line to your settings.json of your environment (the right pane). Here is my settings.json-file:
You will get quite a number of “topics” it will analyse your code for. On the points it has issues with, it will show you a green line in your code, and you can see the exact “problem” as a tooltip when you hover over it, or in the “problems”-pane (CTRL+j / Problems). Here are just a few examples:
In this piece of code, I have 3 problems, which you can read below:
When hovering over the symbol with green line, you can see the problem. In this case, an unused variable:
What do you think of this one: you risk an overflow when you use this code:
Or one of my favorites: code that will never get executed:
Can I create my own analysis?
You can, but it’s a little bit cumbersome. You can create your own analysis-dll, drop it in the extension-folder, and go from there. I haven’t had a look at it .. because I’ll wait until this undocumented-but-already-cool-feature gets documented-and-even-cooler and supported, so we are sure that the work we put into it, is worth it. In the mean time: thumbs up, Microsoft!
I was told it does have a performance impact, so I guess that’s why it’s disabled by default. I haven’t noticed too much of an impact myself, to be honest.. but you are warned ;-).
I recently discovered what appears to be an undocumented feature in the current version of the al language extension (aka, the “Modern Dev”, aka DynDev365, aka ExtensionV2, aka VSCode Development Tools for Microsoft Dynamics NAV). And that is “Automatic Object Numbering”
On any objecttype, when enforcing intellisense, you get the lowest available number that was defined in the app.json.
Consider this example, where I have this config in the app.json:
When creating some tables, it gives me the lowest available number in intellisense:
It’s just a matter of engaging intellisense at the right context..(CTRL+Space). It works obviously also when putting your objects in individual files.
Does it also work for fieldnumbers?
What ya think? Of course it does :-). Here is proof:
From which version is it available?
This is obviously part of the functionality of the VSCode extension, which is still under heavy development (although able to use for NAV2018 development though …). I’m personally using version 0.13.15836, which I think is the anniversary update:
Good stuff! Keep it comin’
Today, I was prepping for my 2-day Masterclass about developing Extensions in Visual Studio Code. And finally, I made some time to make a first version of a function that I have been wanting for quite some time: a function to remove all the custom apps from a docker image.
What is the challenge?
Well, if you’re used to Extensions V1 – then you’ll notice things have changed on many levels :-). Let’s just say that it’s darn difficult to loose your data. And in my case here – I want to do exactly that. I want to completely clean my custom apps from the Docker container, including data.
By default, when you uninstall or unpublish the app, the data will not be removed. It will simply stay there in the companion tables or dedicated tables for the App – waiting for you to reinstall the app, or upgrade the app.
Why would I want to remove the data?
Well, just imagine development scenarios, where you are working on multiple apps (dependent or not) on one system, and you want to start from scratch again.
Or – in my case – when preparing for demos, and you want to – again – start from a clean sheet.
OK, show me how!
Well, as said, finally I made some time to put it into a function. And for your convenience, I already put it on my github, you can find it here.
And you see it’s simple. It assumes you’re already using the navcontainerhelper – which you should use when using NAV on Docker (in my opinion). More info on Freddy’s blog.
It is going to search for all apps which are not Microsoft’s apps, loop them, and uninstall, clean and unpublish all these apps one-by-one.. .
You can simply call this function like:
Clean-CustomNAVAppsOnDocker -ContainerName navserver
Are there other ways?
Well, you could obviously just ignore this entire blogpost, and simple replace the docker container by re-installing it. But in this case, you might lose data that you might depend on, or settings, or accessibility, or … .
If Docker still looks a little bit like this to you:
You might just want to reconsider re-installing the container, and just go for the function I talked about ;-).
As every year, I look very much forward to one particular conference: NAVTechDays. Not because I don’t like the other ones. But NAVTechDays is special. It’s one person that controls it – completely driven by the community, which makes it quite independent from Microsoft. An insane amount of people make the trip to Belgium, my home turf, and – all DEV related. So if this isn’t right up my alley, I don’t know what is :-).
This year was the 7th edition. The 7th already! I must be getting old. I have been at all editions, and have been enjoying it from the very first one!
And I know I fall into repetition .. Because I have been telling you for years: this conference rocks! And it mainly does because it’s so different:
This year was no different. All so good .. All so well organised … . And I feel I’m getting used to it ;-). I actually try not to, because as I said – it stands out of any normal conference .. and we need to keep realizing it and keep enjoying it!
So – if you weren’t there – you missed out on something!
What did I do?
Well, I was honoured to be able to contribute to it. And quite a lot. First, I had two very enjoyable Pre-Conference days. And I made it hard on me, because I did 2 different topics.
Event Based and SaaSified Software Architecture
First day. 20 people, talking about the new DEV environment in VSCode – but not “just” leaning hem how to work with it, but also how to architect a decent, maintainable solution in it, and “saasifying” it for the users!
On second day, I did the “traditional” PowerShell day, which I tweaked a bit for handling the new stuff. Talking about ExtensionV1 (which was a lot of PowerShell) doesn’t make sense anymore. But there is still some PowerShell for Extensions V2, so I tried to handle that as well, on top of some general topics about PowerShell.
Both these days had very good feedback – for which I would like to thank the attendees for. Do know that I really enjoyed it at least as much as you!
Rock ‘n Roll with VSCode
And last but not least, my conference session. This is for me the “main fight”. The one thing I prepare for quite a long time. This session took me three months to prepare .. as a lot of it was just very new to me.
I created a VSCode Extension to basically know what it takes to create one, which I think is quite interesting for you to use or explore to figure out some basics of VSCode Extensions in combination with the al language. I’ll go into it in another blogpost. On top of that, I showed quite some already existing VSCode extensions that might be useful to you during your development days. I did all demos using just one app, which you can find online: https://github.com/waldo1001/MostUselessAppEver
All is online
As mentioned above, one of the very differencing things about NAVTechDays is the fact that everything is recorded .. and online just a few days after the conference! You can download everything from MiBuSo. Here is the direct link to the powerpoint decks, and the session recordings: https://mibuso.com/downloads/category/navtechdays2017
On top of that, all recordings are also available on youtube here. And yes, my session is on there as well
Yesterday, I received the evaluations. It made me proud. I know it’s not a “vote”, nor a competition. It’s just evaluation of the sessions .. but nevertheless, I always compare :-). And apparently, my session was quite well received. Even more – it got the best evaluations from all sessions. That gave me “5 seconds to wow” feeling :-). It’s an honour to do a session on the best conference in front of the best community in the world. And it’s the best satisfaction to get if the session was well received :-). Thank you for that!
Worth to mention is that Vjeko got the best evaluation as “speaker”. Totally no surprise to me :-). I’m just very proud to be on his heels as second best one :-). Congrats, bro!
All that is left for me is sharing some pictures. And I realised that I didn’t take too many pictures this time.
A big thanks from Luc. No, Luc, thank YOU!
Luc during the keynote, showing off with feedback about the pre-conference day
This is how Vjeko’s session looks like from the outside – virtually everyone wanted to be part of it
Some pics of my session:
You don’t want to know what I was doing here…
Natalie and Gary being cool
For more impressions, please visit: https://www.navtechdays.com/2017/impressions/navtechdays_2017_impressions
See you next year at NAVTechDays!
There was a good topic the other day on twitter: “How and where do I report feedback about NAV”?
I shouldn’t be explaining this, but I will, because there was some confusion.. : Do what you want with Twitter or any Social Medium for that matter – but don’t expect Microsoft to pick up feedback from it. Social Media is unmanaged, can easily be missed, which just doesn’t work as an “issue reporting system”.
But what can we use then?
Well – thing is, there are different parameters to take into account, like:
So, it’s difficult for me to address all situations, but I’ll give you the info that I have … coming from a development manager at a partner, with a strong focus on the technical part of NAV :-).
First of all, there are repositories on GitHub you can provide feedback to, as multiple teams are using this platform to share and gather feedback. We are mainly talking about technical issues (or feature requests) with specific topics (repos), obviously. Let me list the ones that I have been using and monitoring:
C/AL Open Library
When you are a partner, and you have an ASfP (Advanced Support for Partners) contract, you can file support requests on Partnersource. Even, when you don’t have this contract, you still might be able to do that (I don’t know – can’t test the fact that I don’t have access, since I have ;-)). Just :
It says “technical”, but you can file all kind of questions in this support-tool. A support engineer will be assigned to you, and off you go. Works great!
And then there is something new, that is called “Microsoft Collaborate”. Basically, this replaces “MS Connect” (and TAP), where we have been able to communicate (collaborate) with Microsoft on new releases, giving feedback, feature requests, and all that. A very personal experience!
So, MS Collaborate is there for early engagement with partners and customers. Everything that is given as feedback, is going straight into the backlog of the right people at the DEV Center for NAV at Microsoft.
So, this is definitely a place you want to be. If you’re not able to sign in, it is just one mail away: Dyn365BEP@microsoft.com .
That said, it is going to be the platform for the Ready! And Go! Program. Here are the official descriptions:
Ready! for Dynamics 365 “Tenerife” and NAV 2018 R2
An early engagement program which enables partners to develop and deliver Apps for Microsoft Dynamics 365 “Tenerife” early. It give partners:
If you want to be part of this program, contact the same mail address as mentioned above!
Go! for Dynamics 365 “Tenerife” and NAV 2018 R2
An early engagement program which enables partners to onboard customers in the preview version of Dynamics 365 “Tenerife” or Dynamics NAV 2018 R2.
Yammer has been a tool that has been used throughout the past several years to gather feedback about upcoming versions – but more on a project-specific basis – a specific “epic” if you will. You can see this as an enrichment (or extension) of programs like the Ready-program mentioned above.
So, join MS Collaborate first (where you will also find downloads, feedback, requests and notifications), and join specific conversations on Yammer if needed.
And of course, there are the many conferences where MS engineers are always eager to get feedback and engage with you about the product. To name a few:
It’s a great setting, a great platform, to engage with the engineers.
To give feedback, it’s a matter of finding your way on how to give it most efficiently – on a platform it will have as much effect as possible. As said – that’s not Facebook, Twitter, Instagram, Pinterest of any other social media .. . You might get lucky – but there is a big chance that it would get lost in the mass…
What I tried to do here, is giving you some channels where you might get most success in getting done what you want Microsoft to get done .. .
Just realize one thing – and I’m telling you from (quite a lot of) experience – Microsoft listens to your feedback, and is eager to get any sort of feedback from you! Not only from weirdo MVP’s like me, but from ALL of you.