Categories
Dynamics NAV HOW TO Microsoft

HOW TO create NAV Web Instances with multiple builds in the same machine

After my post HOW TO create NAV Instances with multiple builds in the same machine, it’s time to expand that post including a “super-easy method” to add a new NAV Web Instance for a different build.

The concept once again is that you are working with a version of Dynamics NAV (particular build) installed in your machine of which you have already configured the Web Client and now you want to create a new NAV Web Instance for a different build (scenario of my previous post).

Under the hook

Let analyze, for example, the structure of the Web Client for NAV 2017.
The following picture, from Internet Information Service (IIS) Manager, shows that there is a website called Microsoft Dynamics NAV 2017 Web Client that can contain one or multiple NAV Web Instances. In this case, it contains a NAV Web Instance named DynamicsNAV100 which is a Virtual Directory (we can notice it from the icon) that contains an Application called WebClient.

Right-click on DynamicsNAV100 and selecting Explore it will open the content of the virtual directory in a File Explorer window:

So now we know the content of the Virtual Directory, which includes actually two items, and the location where it is stored, at the path

C:\inetpub\wwwroot\DynamicsNAV100

What are these two items?

  1. web.config is a file containing the configuration of the NAV Web Instance
  2. WebClient, with an icon similar to a shortcut, is a Symbolic Link.

Right-click on the symbolic link WebClient shows in the properties, in the Shortcut tab, the path of the NAV Web Client folder as Target:

C:\Program Files\Microsoft Dynamics NAV\100\Web Client

However, double-click on the symbolic link WebClient allows the user to navigate inside NAV Web Client folder “pretending” that those files are stored in the Virtual Directory folder.

Hint: If a symbolic link is deleted, its target remains unaffected.

At this point, we have enough knowledge to manipulate this information to achieve our goal.

HOW TO create NAV Web Instances with multiple builds in the same machine

In this example, I consider NAV 2017 but the same concepts can be applied to multiple versions of NAV.

Prerequisites/Preparation:

  • Microsoft Dynamics NAV 2017 (10.0.14199, CU 1) installed including Web Server Components
  • Cumulative Update package, in this example the latest CU 39 (build 10.0.30160), downloaded from theĀ Microsoft Support website

After you installed NAV 2017, the Web Client files will be inside the following path:

C:\Program Files\Microsoft Dynamics NAV\100\Web Client

Copy the content of the Web Client folder from the Cumulative Update package (DVD zipped)

C:\Temp\CU 39 NAV 2017 W1\NAV.10.0.30160.W1.DVD\WebClient\Microsoft Dynamics NAV\100\Web Client

Into a new folder:

C:\Program Files\Microsoft Dynamics NAV\100 - Build 30160\Web Client

Now you can create a new Web Server Instance using PowerShell command, e.g.

New-NAVWebServerInstance -WebServerInstance SecondWebInstance -Server MyServer -ServerInstance NAV2017CU39 -ClientServicesCredentialType Windows -ClientServicesPort 7146

Then navigate to the following path

C:\inetpub\wwwroot\SecondWebInstance

Delete the WebClient link and then recreate it to point to the new version folder created before:

mklink /d "C:\inetpub\wwwroot\SecondWebInstance\WebClient" "C:\Program Files\Microsoft Dynamics NAV\100 - Build 30160\Web Client"

Did my HOW TO help you? Leave a reply.

Categories
Dynamics NAV HOW TO Microsoft

HOW TO create NAV Instances with multiple builds in the same machine

The concepts described in this post are applicable to different versions/builds, for the examples I will use an installation of NAV 2013 R2 (7.1.35473) and I will create one or more instances also for the build 7.1.36703 (Cumulative Update 7 – May 2014) in the same server.

HOW TO create NAV Instances with multiple builds in the same machine?

We have to distinguish two different operations:

  1. Creation of the first instance for a different build
  2. Add more instances for this build

HOW TO create the first instance for a different build?

Prerequisites:

After you installed NAV 2013 R2 Server side’s files will be inside the following path:

C:\Program Files\Microsoft Dynamics NAV\71\

Copy the folder 71 in a new folder 71 – Build 36703

C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\

Copy and replace all files from the NST folder, in the Cumulative Update package, to the Service folder in the following path:

C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\

Run Microsoft Dynamics NAV 2013 R2 Administration Shell and execute the following PowerShell CmdLet:

New-Service 'MicrosoftDynamicsNAVServer$NewInstanceName' -BinaryPathName '"C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\Microsoft.Dynamics.Nav.Server.exe" $NewInstanceName /config "C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\Microsoft.Dynamics.NAV.Server.exe.config"' -DependsOn 'HTTP' -Description 'Service handling requests to Microsoft Dynamics NAV application.' -DisplayName 'Microsoft Dynamics NAV Server [NewInstanceName]' -StartupType Manual

Note: you can replace NewInstanceName with your preferred name (there are 3 references) or use another name for the folder “71 – Build 36703” (there are 2 references)

In case of error, to delete this service using the following PowerShell CmdLet:

sc.exe delete 'MicrosoftDynamicsNAVServer$NewInstanceName'

Note: don’t remove the instance using Microsoft Dynamics NAV 2013 R2 Administration because this is the Default instance for this build and it will be removed the Service folder from the 71 – Build 36703 folder.

HOW TO add more instances for this build?

In my example, the name will be SecondInstanceName

Method 1:
Using Microsoft Dynamics NAV 2013 R2 Administration tool create a new instance with the name SecondInstanceName.

Copy the SecondInstanceName folder from

C:\Program Files\Microsoft Dynamics NAV\71\Service\Instances\

to

C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\Instances\

Note: if the subfolder Instances doesn’t exist create it.

Using Microsoft Dynamics NAV 2013 R2 Administration tool delete the instance with the name SecondInstanceName.

Run Microsoft Dynamics NAV 2013 R2 Administration Shell and execute the following PowerShell CmdLet:

New-Service 'MicrosoftDynamicsNAVServer$SecondInstanceName' -BinaryPathName '"C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\Microsoft.Dynamics.Nav.Server.exe" $SecondInstanceName /config "C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\Instances\SecondInstanceName\SecondInstanceName.config"' -DependsOn 'HTTP' -Description 'Service handling requests to Microsoft Dynamics NAV application.' -DisplayName 'Microsoft Dynamics NAV Server [SecondInstanceName]' -StartupType Manual

The difference with the previous command is only that now we will refer to the config file inside the Instances folder.

Note: you can replace SecondInstanceName with your preferred name (there are 5 references) or use another name for the folder “71 – Build 36703” (there are 2 references)

The last step is to correct the config files inside the SecondInstanceName folder:

  • SecondInstanceName.config – correct the paths in appsettings and tenants node replacing “71” with “71 – Build 36703”
  • CustomSettings.config – insert the correct values and ports and don’t forget to refer to the Default instance for this build in the following key:
<add key="ServerInstance" value="NewInstanceName" />

Method 2 (by ROEL BERGS):

  1. Change a registry key to the path of the new build
  2. create the SecondInstanceName using Microsoft Dynamics NAV 2013 R2 Administration tool or PowerShell (CmdLet New-NAVServerInstance). This method will create the Instance folder in the correct path.
  3. Changed the registry key value back to the default path.

Following an example of the PowerShell script (run Microsoft Dynamics NAV 2013 R2 Administration tool as Administrator):

$nstDefaultPath = "C:\Program Files\Microsoft Dynamics NAV\71\Service\"
$nstPath = "C:\Program Files\Microsoft Dynamics NAV\71 - Build 36703\Service\"

#Switch registry to correct path
set-itemproperty -path "HKLM:\SOFTWARE\Microsoft\Microsoft Dynamics NAV\71\Service" -name "Path" -value $nstPath

New-NAVServerInstance "SecondInstanceName" -DatabaseName "DBNAME" -DatabaseServer "SQLSERVER" -ClientServicesPort 7046 -SOAPServicesPort 7047 -ODataServicesPort 7048 -ManagementServicesPort 7045

#Switch registry to default
set-itemproperty -path "HKLM:\SOFTWARE\Microsoft\Microsoft Dynamics NAV\71\Service" -name "Path" -value $nstDefaultPath

Note: don’t forget to insert set the correct values in the parameters and you can replace SecondInstanceName with your preferred name (there is 1 reference) or also use another name for the folder “71 – Build 36703” (there is 1 reference).

The last step is to correct the config file inside the SecondInstanceName folder:
CustomSettings.config – insert the correct values and ports and don’t forget to refer to the Default instance for this build in the following key:

<add key="ServerInstance" value="NewInstanceName" />

Method 3:

Download and install the Service Tier Administration Tool from the following link: https://mibuso.com/downloads/service-tier-administration-tool

Did my HOW TO help you? Leave a reply.