NAV 2009 3-tiers on 3 Machines Gotcha

Here's a sneaky gotcha for the 3-tiered environment configuration. As you may know, configuring NAV 2009 to run using 3-tiers on 3 computers is not trivial. This is because we need to use delegation in order to allow the server tier to impersonate the client when connecting to the database tier. The setup guide at http://msdn.microsoft.com/en-us/library/dd301254.aspx is pretty good (although the Service Principal Name they propose for your SQL Server Service is wrong-see below)

Incorrect Suggested SPN in guide at time of writing

setspn -A NAVSQL_MSSQLSvc/NAVSQL.yourDomain.yourCompany.com:1433 yourDomain\yourUser

Correct SPN

setspn -A MSSQLSvc/NAVSQL.yourDomain.yourCompany.com:1433 yourDomain\yourUser

 

The gotcha came yesterday when I knew everything was configured correctly but I was still getting validation issues when trying to connect to the NAV Server. The problem was that the configuration file neds to be changed (you can find details on this at http://msdn.microsoft.com/en-us/library/dd301077.aspx). In short, you need to add the DelegationInfo key to your ClientUserSettings.config file for the client that is connecting. According to the online guide, this will specify the type of authentication that will be used when the client connects to the NAV Server and this needs to be set in order for delegation to work (three tiers on three computers).

The problem I found was that if the Server and ServerInstance values in the configuration file are for a NAV Server that does not have delegation configured (for example it could be localhost/DynamicsNAV if you installed the demo version) the RoleTailored client will connect to that instance and will then fail to connect to the NAV Server that is configured for delegation, even though you have the DelegationInfo key set to DomainUser and you have created all of your ActiveDirectory settings as required. This can be a bit confusing, but it seems that once your RoleTailored client starts up, it remembers whether you are using delegation or not and simply selecting a different server instance will not switch it over.

The solution is to change the Server and ServerInstance to be the settings for your NAV Server that is configured for three tiers and restart the RoleTailored client.

[Edit] I've just discovered that the problem is not one of whether your NAV Server and instance is using delegation or not, but is simply a case of when you are using delegation, you cannot change servers. Doh!

Now that I think about it, I seem to remember one of Freddy K's blog posts that included batch files for the RTC to allow you to start clients for different servers. At the time I thought, why on earth would I want that. Now I know. I've just been to read Freddy's posts and his blog was about auto starting the service tiers when you need them which is not the same thing. I am pretty sure I can create a batch file that will do what I want, so I might have a go at creating one. From memory it seemst that opening a different instance on the same server tier works fine when using delegation but trying to open a different server when using delegation does not use delegation correctly. I think I might have to log this with MS, because it doesn't sound quite right to me. Keep your eye out for the batch file if you're interested.

Comment List
  • OK, I finally got around to writing the batch file and it was so ridiculously easy, I almost didn't post the solution. But here it is anyway.

    1) If you are in Vista or server 2008, copy your ClientUserSettings.config to a file that indicates the service you want to connect to. Let's say that I'm going to create two files LIVE.config and TEST.config. These files should be in the same directory as your ClientUserSettings.config file.

    2) Create a new batch file in the same directory. I called mine rtc.bat. It's contents are as follows:

    @ECHO OFF

    IF "%1" == "" GOTO usage

    COPY /Y %1 ClientUserSettings.config

    START dynamicsnav://///

    GOTO :eof

    :usage

    ECHO.

    ECHO Usage:

    ECHO.

    ECHO RTC ConfigFileName

    ECHO.

    3) Edit the TEST.config and LIVE.config files so that the "Server" key value has the correct server - that's why we need the file remember?

    4) Create a new shortcut on your desktop to start the rtc.bat file with a TEST.CONFIG as a parameter. For me the shortcut was this:

    "%HOMEPATH%\AppData\Local\Microsoft\Microsoft Dynamics NAV\rtc.bat" TEST.config

    5) If you like, you can change the Icon for your shortcut to use the icon from the %ProgramFiles%\Microsoft Dynamics NAV\60\RoleTailored Client\Microsoft.Dynamics.Nav.Client.exe file.

    6) Repeat steps 4) and 5) for your LIVE.config file.

    That's all folks.

Related
Recommended