NAV TechDays 2013 in Antwerp Wrap Up

Another NAV TechDays is over, and again, needless to say, it was a splendid conference. Thanks to everybody who attended one of my sessions about .NET Interoperability: the pre-conference workshop for beginners, the session for beginners, and the advanced, or as I like to call it, the “Black Belt” session.

As I promised, I’m making all materials available for download here on my blog, and Luc will also make the recordings available from Mibuso.

Before I give you the materials, here’s the joke about programmers, and users, which I applied to programming in C/AL and .NET, and that a lot of folks asked me if I can share with them. By the way, I don’t know where it comes from, I’ve got it in an e-mail.

This is how users see programmers:


And this is how programmers see users:


As I said, the most of C/AL programmers, when having to work with .NET, feel like this:


With my sessions at TechDays, I wanted to show that .NET is simple, and to widen the horizons for everybody spending far too much time doing things in C/AL which could easily be achieved with a little help from .NET.

So, here are the materials.

Preconference Workshop

Download the PowerPoint slide deck here:

Download the NAV objects as FOB (for 2013 R2) here:

Download the NAV objects as TXT here:

.NET Interoperability for Beginners Session

Download the PowerPoint slide deck here:

Download the NAV objects as FOB (for 2013 R2) here:

Download the NAV objects as TXT here:

.NET Interoperability Black Belt Session

Download the PowerPoint slide deck here:

Download the NAV objects as FOB (for 2013 R2) here:

Download the NAV objects as TXT here:

Visual Studio Solution for All Sessions

I forgot to update the Visual Studio solution between the presentations, and essentially I used the same solution for the Black Belt session that I built on Wednesday for the Beginner workshop. Neverthless, the solution should be self explanatory, and if it is not – just drop me a note and I’ll help you.

Download the Visual Studio solution for all sessions here:

Final Notes

By the way – I will also post when Luc publishes the recordings. They should be available for the beginners and the Black Belt sessions, but I don’t think that the preconference workshop will be published.

By the way – no, I did not forgot to annotate the code, as I promised. I’ll do that. But I did not want everybody to wait until I get time, so I have just uploaded everything in a raw format here, and then I’ll comment on the code later when I have time.

I also thought about posting a series of post, one topic per post, and then use that to explain what I was doing at all of the sessions. Maybe that makes most sense – and I’d probably not have to invest more time than annotating the source code.

What do you think?


Vjeko has been writing code for living since 1995, and he has shared his knowledge and experience in presentations, articles, blogs, and elsewhere since 2002. Hopelessly curious, passionate about technology, avid language learner no matter human or computer.

This Post Has 17 Comments

  1. Peter Tijsma

    Great to see you’ve posted everything already Vjeko!

    Thanks a lot and I’ll mange good use out of it. It will give me again a tremendous head start.

    Thanks again

    1. Vjeko

      Of course I would upload everything, Peter. I am only sorry I couldn’t manage to do it until Friday, as I promised. And – you’re welcome! I hope these materials help.

  2. Mathias

    Hi, and thanks for some great hours in Antwerpen, it was really inspiring! I am so keen in getting the download from your blog to work, but when I click the links the browser try to load something new for a few seconds and then nothing happens. That is the same for all links. How can I get the PP and code?

  3. Vjeko


    Thanks for your kind words!

    To download the materials, please make sure you don’t have any browser popup blockers enabled, as all downloads start in a new window. Then, click one of the links you want to download, and a new page opens. On that page, you see the download link. Right-click the link and then click save-as.

    In the meanwhile, I’ll try to fix the URLs and update this post blog, especially in the case my instructions here don’t work.

    I apologize for this – I’ll simply blame the WordPress platform that I rely on 🙂



    1. Mathias

      Thanks for your quick answer Vjeko, but unfortunantly it didn’t work. I tried both Chrome and IE, I changed settings for allowing pop-ups from all sites. But same behaviour. Is there anything else I could try?

      Best regards, Mathias

  4. Txema Mas

    Great sessions!

  5. Mats

    I attended your Blackbelt Session, great job there! I have a follow-up question about the part with the autodeployment: You used CANLOADTYPE with a DotNet variable, but I’m wondering if there is a way to get the same functionality dynamically. All I came up with until now is searching the client’s RTC Folder for the assembly you want to check, but I’m not 100% convinced that this is reliable in every case. So maybe you have some ideas about this this 🙂 But anyways, thanks again for your engagement here!

    Best regards,

    1. Vjeko

      Hi Mats,

      I am not quite sure what you mean by dynamically? Searching the client’s RTC folder for the assembly is not the best way to do the check, because the assembly may also reside in the GAC in which case you must also go through GAC. What exactly is not working with CANLOADTYPE that you want to improve?



      1. Mats

        At the moment I am filling a table with the data for each required dll/Client Add-In and its dependencies. The table contains the Name, Version, Public Key Token and the binary data of the dll. With that information I can check if the user has all the required dlls in his Addins folder (by searching the files in it – so yeah I’m missing GAC here, but I think you could apply it for that too). So I was wondering if there is a way to feed CANLOADTYPE my table to get a better/more official way of checking if all files are installed on the client machine. Hope I made myself more clear 🙂
        The reason I’m doing this is to avoid changing any code when a new dll is needed.

  6. wakestar

    Hi Vjeko

    Thanks a lot for providing the demo objects. I have a question about the FileSystemWatcher Demo.
    I’m running the the demo page in NAV 2013 R2 and the events only get raised when I click ‘Refresh’ or press F5 on the page. Is this a bug or did you also have to refresh the page when you did your demo?


  7. Vincent Vancalbergh

    Hey Vjeko,

    I’ve been attending your sessions at TechDays since it started, so needless to say I’m a fan.

    I myself am doing a series on getting C/AL purists to dip their toe in the .Net Interop pool.
    See here:

    At one point I’d like to touch on Generics and, of course, refer to your work. I’d like to ask you permission first however to quote you (where applicable) and mirror your Generics Management codeunit (to prevent a dead link should you need to move shop again) which I have already succesfully used in a production environment.


    1. Vjeko

      @Vincent: sure, you are free to refer to my .NET interop tip on generics and to miror the Generics Management codeunit. I’d appreciate a link back to my site, but it’s completely up to you, it’s definitely not a condition. Thanks, and I am glad that you find this useful for your production environment.

        1. Vjeko

          Thanks again! 🙂

Leave a Reply