First Step – Organize the input text

Help text can either be content specific (help to a specific field) or general. With NAV the requirement for content specific help is mandatory, users can press F1 and expects to get content specific help.

We have created two tables in NAV – one for holding content specific help and one for holding general help. The content specific table can be pre-populated with references to all objects and fields.

So now, we have a organized database for our text. We created BLOB fields to hold the text. This will almost solve the 2nd problem – Putting the text in a database. We can reference object versions, languages etc.

But what do you put into the BLOB fields? How do we keep text in a “portable” way, that will let us create F1 help and manuals?

Our answer is a text format called Markdown

Markdown is a very simple format, it can be edited with Notepad, you can read the text in raw ASCII, yet it is possible to use a fair amount of formatting information, such as lists, tables, bold, italic etc.

Markdown has the advantage, that it is very “convertible”, there are many tools than can convert MD to HTML to DOC, to all sort of different text formats.

In order for our editing staff to have a more premium user experience, we are using MarkdownPad, a editor that will show both the MD text and a formatted version (Sort of What you see is what you get) side by side.

To create pages for the Dynamics NAV 2015 help server, we need HTML, so we need to convert the Markdown to HTML.

But a manual created with HTML does not really give that “book feeling”. We wanted to create the manual as a real book (at least in PDF, but also on physical paper if users wanted it).

Books are typical created with a type-setting software. One of the oldest, but still best, is called TeX. A typesetting system created by one of the computing fathers, Donald Knuth. TeX comes in many shapes and forms, we have chosen a variant called XeTeX. The primary reason for selecting XeTeX is the support for OpenType fonts that we use internally in other places (web, sales material etc.)

With TeX/LaTeX/XeTeX wee can describe, in text, how the book should be formatted, table of content, index etc. And the output is a PDF file that can be printed as a book. It is also possible to output a .epub ebook.

So we want to transform our Markdown text to both HTML and Latex format. Searching around, we found a tool that will both transformations perfectly, a tool called pandoc. It is even open source and written in Haskell, a language that has been on my todo list for a long time.

Introducing “Erik’s NAV Launcher”

Back in the “old” days, developing for NAV / Navision / Financials / Attain etc.. was easy. You needed the FIN.EXE (for FINSQL.EXE) and database, and then you where ready to go !

Not anymore. Since the three-tier architecture came to life, you will need a service tier running, perhaps also a web server.

And that is fine, as long as you’re working on the same database for a long time. But in the real life of a NAV developer, you offend have multiple databases pr. customer and many customers.

So either, you need lots of service tiers installed, or you need to reconfigure a single service tier all the time.

Introducing “Erik’s NAV Launcher”:


This is the program I use for handling this situation. Its a program that runs the service tier server as a child process, this is how it works:

Click on a database in the list, and click “Start Server”:

nav launcher2

When the light is green, a service tier of the correct NAV version has been started on the selected database. (running as a process, not at as service)

Now click on either clients to start a DEV or RTC session on the database.

When done, either close the NAV launcher or click “Stop Server” to close the service tier.


Setup is quite easy, go to the “Settings” tab and select the following for each NAV version you want to support: (2016 is now support even though its not in the screenshots)

nav launcher3

You need to specify the SQL Server you want to connect to. Database credentials is supported, but you cannot start a service tier with database credentials.

The launcher needs 3 settings pr. NAV version:

1. A config file for a service tier. The standard service tier installation is fine. Make sure that you have disabled the service in the Service Manager, as a service cannot twice at the same time. The launcher DOES modify the service file. So if you want to preserve the settings, please create a new service tier first, and then disable that.

2. The server folder (aka. Service) – typical in c:\program files\ that holds the Dynamics.NAV.Server.exe file

3. The client folder that holds the Microsoft.Dynamics.Nav.Client.exe file.

If you get a crazy error about failed compiling of temporary tables (in the 2000xxxx range) then you have a running service.

Download it from here: EriksNAVLauncherSetup_1.0.1

Please let me know if this is useful to you ?

A quick way to get async/await for WCF calls in Xamarin

Just a quick a way to consume WCF services with async/await:

Step 1.
Generate the proxy code with SLSVCUTIL.EXE, there are plenty of examples for that “out there” 🙂

Find your client class and the interface – In this example they are called ProxyClient and Proxy (interface) and the method we are wrapping is called “Call” thant takes a string parameter and returns a string.

Step 2.
Create a small wrapper method, example:

public async Task CallService(string Parameter)
ProxyClient client = new ProxyClient(new BasicHttpBiding(), new EndpointAddress("http://host/service"));
var t = Task.Factory.FromAsync(
return await t;

Step 3.
Call the method:

result = await CallService("test");

Thats the shortest version I can come up for solving the missing async/await support for WCF services. You should remove the ProxyClient construction to somewhere else depending on your WCF consumption to reuse the client.