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”:

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

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(
((Proxy)client.InnerChannel).BeginCall,
((Proxy)client.InnerChannel).EndCall,
Parameter,null);
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.

Running the NAV2015 service tier console mode

Normally you will always run the Dynamics NAV Service Tier as a service. But some crazy people might want to run it directly from a console, or just from a shortcut.

That can be done, just use the following parameters:

Folder: C:\Program Files\Microsoft Dynamics NAV\80\Service
Executable: Microsoft.Dynamics.Nav.Server.exe

Parameter 1: $<name of service>
Parameter 2: console
Parameter 3: config
Parameter 4: <fullpath of config file> Example: “C:\Program Files\Microsoft Dynamics NAV\80\Service\Instances\NAV80\NAV80.config”

NAV will accept the parametes prefixed with – or / or without prefix (as shown above)

Thats it, putting that together runs the server from a shortcut or from a console.