Install the DAT on Azure with node 8.9.4 [DEPRECATED]

Configuring the CALI A2J Viewer + DAT on Azure

Tobias Nteireho



This document illustrates the process used to serve the A2J DAT (Document Assembly Tool) on the Microsoft Azure platform. The document will be updated as the process is updated. The tutorial was developed on an Apple Macbook Air with High Sierra 10.13.2 using Node 6.9.5, firefox, chrome, and MS Remote Desktop Client 8.0.43 on the client end and Windows Server 2016 on the server end but is  adaptable to support all browsers supported by Azure and Operating systems that support Node 6+


Setup Azure VM:

Go to and login. You should be presented with a dashboard.

select new and create Windows Server 2016 VM



Fill out the fields


Select a VM size. Azure lists recommended sizes but other sizes can be found by clicking view all


The size used for this tutorial was a B2S standard which includes 4GB of RAM and 2 virtual CPUs and is priced at approximately $54/mo. This provided tolerable demo performance for minimum price. A higher specced VM can of course be chosen, if desired or required.


After hitting the select button, Azure setup takes you to step 3 (Settings). This space is for the initial configuration of network, availability, storage, firewall, monitoring, extensions, and automatic shutdown. Most settings will be filled automatically and the values generated should be appropriate.




After clicking ok, you should be taken to step four which summarizes your install.

Click Create and wait for install to be created. This may take several minutes.


Configure Firewall

Now that the VM is setup, you need to configure your firewall by opening up the appropriate ports.

Click All resources in the sidebar to arrive at the screen similar to below and click the network security group attached to your VM. This is typically labeled in the pattern of <name-of-your-vm>-nsg.


Click Inbound security rules

Click + Add. We will now add a rule for port 80 to serve http requests.

Fill in fields as above and click OK


Now we need to set the ip address to static so the site will be accessible from the same address. Go to All Resources and click the ip address resource assigned to the VM. This is typically labeled as <name-of-your-VM>-ip. The screen illustrated below will appear. Select Static and Save.



If you navigate to the ip address given, the default IIS html demo page should appear


Setup IIS:


Go to the VM Resource page and If the VM is not started, start virtual machine. Once the VM has started select Connect

You will likely be prompted to update the OS. Execute the updates. This may take a few hours. When the updates have finished open Server Manager.This usually launches on automatically but can be launched by typing server manager in the search bar.


When it launches, select Add Roles and Features



Click next to select Installation type


Select Role-based or feature based installation and Click next


Select the server and click next


Files and storage will likely be partially selected.  Click Web Server (IIS)

Click Add Features


Click Next

Several options will be pre selected


Select .NET Framework 3.5 Features



Click Next


Click Next to configure roles


Several default options will be preselected. Add HTTP Redirection


Scroll to Application Development and expand


Select ASP.NET 3.5 Extensibility. A prompt to install the .NET dependency will appear. Click Add Features.




Select .NET Framework 4.6, Application Initialization, ASP.NET 3.5 ASP.NET 4.6, CGI, ISAPI Extenstions, ISAPI Filters

Click Next

Review and click install and wait for the process to complete. This can take up to 2 hours


Install Node:

Node is the primary backend environment for the DAT. Download and run the latest node 6 LTS from The version used in this tutorial is node 6.9.5 which can be downloaded directly here If another version of node is used, the DAT may need to be recompiled.


Install NVM:


nvm install 6.9.5

nvm  use 6.9.5


Ensure Node is in PATH:

The node installer might not always set the PATH variable correctly. Check Environment variables to ensure that there is an entry for the folder containing node.exe.  For this tutorial that folder is C:\Program Files\nodejs\.


Confirm Node is properly installed:

Open a terminal and check the node version


node -v


Configure Node Permissions:

Node.exe must be added to the IIS_IUSRS group in order to be allowed to handle requests. Open a command prompt and run as administrator and run

icacls “%programfiles%\nodejs\node.exe” /grant IIS_IUSRS:rx


Prepare to install PHP:

A setting must be temporarily changed to install the PHP Manager  PHP dependency on Windows 10. Open the registry editor. This can be done by typing regedit in the search windows bar.


In regedit, go to


Change the MajorVersion value 0x0000a0 to 0x000008





Prepare to install IISNode:

Download and run Microsoft Visual C++ 2010 redistributable Which is a dependency for IISNode


Install Web Platform Installer (WPI):

The web platform installer is a basic package manager for IIS. Download and run the Web Platform Installer from

Or follow the directions below:


Alternate Instructions for installing Web Platform Installer:


Open IIS Manager. This can be done by typing inetmgr in the search box.



Select the site root



Select Get New Web Platform Components on the right side bar



Clicking will open a browser to the WPI download page.


Download and run


Install PHP:

Open IIS and the Web Platform Installer




Type php 7 in the search bar. Add the latest available for your platform. For this VM at this time,this version was 7.1.7 (x64). This is different from the IIS Express version. Do not install the IIS Express version.


Click Install


Install IISNode:

IISNode is an IIS module that manages the node process. The IISNode module in WPI is usually extremely out of date. Go to and download the latest available full version of IISNode. The full version allows for debugging and includes examples. The version used in this tutorial is 0.2.21 located at


Reset registry settings:

Open the registry editor and reset the previously changed key to its original value.


Go to


Change the MajorVersion value 0x000008 to 0x0000a0


Install CALI Software ( Viewer + DAT):

The DAT and viewer have been separated for flexibility in configuration and upgradability. Download the latest DAT and extract it to the webroot. Download the latest viewer from and extract it to webroot. Webroot on the machine in this example is C:\inetpub\wwwroot . Following this step the folder structure should look like













++DAT instructions







WKHTMLTOPDF is the engine used to transform interview data into PDF from an intermediate HTML file. Download the latest stable version from  and install it in the VM. Make a note of the install path. The version used for this tutorial is 0.12.4 and can be obtained from It was installed to C:\Program Files\wkhtmltopdf\bin


Configure DAT:

Since the A2J software can run on many platforms, there is a small amount of platform specific configuration that is necessary. Navigate to the root of the DAT in your websites folder. Open config.json


The Most important keys are:

SERVER_URL- required to establish target endpoints for API

GUIDES_DIR-  required to establish location of templates

GUIDES_URL- relative web location of guides



All other keys must be present but the value is irrelevant.


Ensure that the value for the key WKHTMLTOPDF_PATH matches the path noted above where WKHTMLTOPDF is installed. Backslashes are special characters in json so each backslash must be typed twice to escape them and work properly.


The config.json used in this tutorial is below:



 "SERVER_URL": "http://localhost",

 "GUIDES_DIR": "C:\\inetpub\\wwwroot\\a2j-viewer\\guides",

 "GUIDES_URL": "/a2j-viewer/guides",

 "SQL_HOST": "localhost",

 "SQL_USERNAME": "root",

 "SQL_PASSWD": "root",

 "SQL_DBNAME": "caja",

 "SQL_PORT": 3306,

 "DRUPAL_HOST": "localhost",


 "DRUPAL_PASSWD": "root",

 "DRUPAL_DBNAME": "D7commons",

 "DRUPAL_PORT": 3306,

 "WKHTMLTOPDF_PATH": "C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf"



Save config.json to the parent folder of the DAT.


Configure Permissions:

Node and IISNode require permissions to write to the DAT folder for logging and debugging purposes. Navigate to the webroot. Right click on the DAT folder and select properties



Select the Security tab.


Select Edit Permissions and give groups Users and IIS_IUSERS write permissions to this folder.


Configure Server:

The DAT is a simple restful interface with endpoints located at <host>/api/. Requests must be routed through the node /bin/www target. We will setup a reverse proxy to accomplish this.


The file web.config contains all the commands needed.  Place it in the webroot.


The web.config used is below:


<?xml version="1.0" encoding="UTF-8"?>




          <add name="iisnode" path="DAT/bin/www" verb="*" modules="iisnode" />




          <rule name="myapp">

            <match url="(api/.*)" />

            <action type="Rewrite" url="DAT/bin/www/{R:1}" />







                   <remove segment="bin" />







The handlers directive commands iis to use iisnode to handle the bin/www javascript source file.


The rewrite directive allows commands iis to watch for any url matching to and beyond the <host>/api endpoint and send those Requests to bin/www.


The security directive relaxes the IIS restriction on requests to the bin folder.


Test the DAT:

Open a browser and navigate to localhost/a2j-viewer/viewer. This will open the demonstration page. Run the default interview. At the end of the interview, after selecting Generate DOC from A2J DAT Template, a pdf will be generated