HomeGuidesRecipesAPI
HomeGuidesAPILog In

Deployment Guide

Deployment of Infiniti is fully automated using ARM Templates (JSON definition of Azure Components to be deployed).

Here is a step by step tutorial that will guide you through this process.

  1. Login to https://portal.azure.com/
  2. Click New (1) on the left side menu and select Resource Group (2) and click Create (3).
878
  1. Provide a name for the Resource Group, select the subscription and the Azure data center (Resource group location) where this resource group is to be deployed and click Create.

For example: In the below screenshot:

Resource Group name: IntelledoxInfinitiDemo
Subscription: Visual Studio Enterprise
Resource Group location: Southeast Asia

1284
  1. Click on the Resource Group and check whether the resource group created in Step-3 is deployed.
1285
  1. Click New (1) and select Template deployment (2) and click Create (3).
1285
  1. Click on ‘Build your own template in the editor’.
1285
  1. Copy the content from the InfinitiPaaSAzureDeploy.json, the file is shown below and paste it in the editor (1). Once you have pasted the content of the file, you will see the different resources which this template will deploy in the left resource preview (2) and now click Save (3).
{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "administratorLogin": {
      "type": "string",
      "metadata": {
        "description": "The account name to use for the database server administrator."
      }
    },
    "administratorLoginPassword": {
      "type": "securestring",
      "metadata": {
        "description": "The password to use for the database server administrator."
      }
    },
    "edition": {
      "type": "string",
      "allowedValues": [
        "Basic",
        "Standard",
        "Premium"
      ],
      "defaultValue": "Basic",
      "metadata": {
        "description": "The type of database to create. The available options are: Basic, Standard, and Premium."
      }
    },
    "hostingPlanName": {
      "type": "string",
      "defaultValue": "DefaultAppServicePlan",
      "metadata": {
        "description": "The name of the App Service plan to use for hosting the web app."
      }
    },
    "requestedServiceObjectiveName": {
      "type": "string",
      "allowedValues": [
        "Basic",
        "S0",
        "S1",
        "S2",
        "S3",
        "P1",
        "P2",
        "P3"
      ],
      "defaultValue": "Basic",
      "metadata": {
        "description": "The name corresponding to the performance level for edition. The available options are: Basic, S0, S1, S2, S3, P1, P2, and P3."
      }
    },
    "serverLocation": {
      "type": "string",
      "metadata": {
        "description": "The location of the database server. For best performance, this location should be the same as the location of the web app."
      }
    },
    "dbName": {
      "type": "string",
      "metadata": {
        "description": "Name of new Infiniti database"
      }
    },
    "serverName": {
      "type": "string",
      "metadata": {
        "description": "Name of the new database server to create."
      }
    },
    "siteLocation": {
      "type": "string",
      "metadata": {
        "description": "The location to use for creating the web app and hosting plan."
      }
    },
    "siteName": {
      "type": "string",
      "metadata": {
        "description": "The name of the web app that you wish to create."
      }
    },
    "sku": {
      "type": "string",
      "allowedValues": [
        "Free",
        "Shared",
        "Basic",
        "Standard",
        "Premium"
      ],
      "defaultValue": "Shared",
      "metadata": {
        "description": "The pricing tier for the hosting plan."
      }
    },
    "workerSize": {
      "type": "string",
      "allowedValues": [
        "0",
        "1",
        "2"
      ],
      "defaultValue": "0",
      "metadata": {
        "description": "The instance size of the hosting plan (small, medium, or large)."
      }
    }
  },
  "variables": {
    "collation": "Latin1_General_CI_AS",
    "maxSizeBytes": "1073741824",
    "siteUrl": "site\\wwwroot\\"
  },
  "resources": [
    {
      "name": "[parameters('serverName')]",
      "type": "Microsoft.Sql/servers",
      "location": "[parameters('serverLocation')]",
      "apiVersion": "2014-04-01-preview",
      "properties": {
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "version": "12.0"
      },
      "resources": [
        {
          "apiVersion": "2014-04-01-preview",
          "dependsOn": [
            "[concat('Microsoft.Sql/servers/', parameters('serverName'))]"
          ],
          "location": "[parameters('serverLocation')]",
          "name": "AllowAllWindowsAzureIps",
          "properties": {
            "endIpAddress": "0.0.0.0",
            "startIpAddress": "0.0.0.0"
          },
          "type": "firewallrules"
        },
        {
          "name": "[parameters('dbName')]",
          "type": "databases",
          "location": "[parameters('serverLocation')]",
          "apiVersion": "2014-04-01-preview",
          "dependsOn": [
            "[concat('Microsoft.Sql/servers/', parameters('serverName'),'/firewallRules/AllowAllWindowsAzureIps')]",
            "[concat('Microsoft.Sql/servers/', parameters('serverName'))]"
          ],
          "properties": {
            "edition": "[parameters('edition')]",
            "collation": "[variables('collation')]",
            "maxSizeBytes": "[variables('maxSizeBytes')]",
            "requestedServiceObjectiveName": "[parameters('requestedServiceObjectiveName')]"
          }
        }
      ]
    },
    {
      "apiVersion": "2014-06-01",
      "name": "[parameters('hostingPlanName')]",
      "type": "Microsoft.Web/serverfarms",
      "location": "[parameters('siteLocation')]",
      "properties": {
        "name": "[parameters('hostingPlanName')]",
        "sku": "[parameters('sku')]",
        "workerSize": "[parameters('workerSize')]",
        "numberOfWorkers": 1
      }
    },
    {
      "apiVersion": "2015-08-01",
      "name": "[parameters('siteName')]",
      "type": "Microsoft.Web/sites",
      "location": "[parameters('siteLocation')]",
      "dependsOn": [
        "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
      ],
      "tags": {
        "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "empty"
      },
      "properties": {
        "name": "[parameters('siteName')]",
        "serverFarmId": "[parameters('hostingPlanName')]"
      },
      "resources": [
        {
          "apiVersion": "2015-08-01",
          "type": "config",
          "name": "connectionstrings",
          "dependsOn": [
            "[concat('Microsoft.Web/sites/', parameters('siteName'))]"
          ],
          "properties": {
            "ConnectionString": {
              "value": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', parameters('serverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('administratorLogin'), '@', parameters('serverName'), ';Password=', parameters('administratorLoginPassword'), ';')]",
              "type": "SQLAzure"
            }
          }
        },
        {
          "apiVersion": "2015-08-01",
          "name": "web",
          "type": "config",
          "dependsOn": [
            "[concat('Microsoft.Web/sites/', parameters('siteName'))]"
          ],
          "properties": {
            "virtualApplications": [
              {
                "virtualPath": "/Produce",
                "physicalPath": "[concat(variables('siteUrl'), 'Produce')]",
                "preloadEnabled": false,
                "virtualDirectories": null
              },
              {
                "virtualPath": "/Manage",
                "physicalPath": "[concat(variables('siteUrl'), 'Manage')]",
                "preloadEnabled": false,
                "virtualDirectories": null
              },
              {
                "virtualPath": "/",
                "physicalPath": "[concat(variables('siteUrl'))]",
                "preloadEnabled": false,
                "virtualDirectories": null
              }
            ]
          }
        }
      ]
    }
  ]
}
1323
  1. Select the desired Azure subscription, and select the resource group created in Step-3 by selecting “use existing”. This will default the Microsoft azure data centre location. For efficient performance, all the resources should be deployed in the same data centre. Provide the value for different parameters required for this deployment. Below is an example of the parameters passed for this deployment.
  • Administrator Login: sqladmin
  • Administrator Login Password: YourPassword123 (Provide password for the database login)
  • Edition: Basic
  • Hosting Plan Name: IntelledoxInfinitiDemoPlan (Can be any name)
  • Requested Service Objective Name: Basic
  • Server Location: southeast asia (Can be any Azure Date Centre)
  • Db Name: ix_privatedb_intelledox_infiniti_demo (Can be any name)
  • Server Name: ix-privateserver-intelledox-infiniti-demo (Can be any name)
  • Site Location: southeast asia (Can be any Azure Date Centre)
  • Site Name: yourSiteName (Name of the website)
  • Sku: Shared
  • Worker Size: 0

Check I agree to the terms and conditions stated above and click Purchase.

1285

📘

App Service and Database pricing tiers can always be modified anytime based on the requirements.

  1. Check the status of the deployment in the notification.
1286
  1. When the deployment is successful, you will see the Deployment succeeded message in the notification.
1279
  1. Navigate to Resource group which you have created. You should see the following four resources: a SQL server, a SQL database, an App Service plan, and an App Service.
1287
  1. Creating the Infiniti App Files to deploy in the App Service in Azure
    12.1. Download the required Infiniti upgrade file from the Infiniti support portal (http://support.intelledox.com/common/downloads.asp). For example: the file format for Infiniti version 10.0.12 is InfinitiUpgrade10.0.12)
1286

📘

If you don’t have the username/password for this site, please contact Intelledox.

12.2. Create a folder. In our tutorial, we have created a folder V10.0.12. This folder can have any name. Create a subfolder Manage inside this folder V10.0.12.

1380

12.3. Execute the Infiniti Upgrade file (in our case: InfinitiUpgrade10.0.12.0.exe file) against the folder. In our example browse to the parent folder is V10.0.12 we have created in Step-12.2.

1147

12.4. Once the upgrade is completed, two new folders Produce and IntelledoxScheduler will be created and all the required Infiniti application files will be copied into these three folders: Manage, Produce, and IntelledoxScheduler.

1171

12.5. Open the web.config file inside Manage folder and search for connectionString in the file. Below section will be highlighted.

1409

Remove the line containing the name=“DboConnectionString” and modify the line containing name=“ConnectionString” as below.

<add name="ConnectionString" connectionString="ix" providerName="ix" />

The final code for the tag should look like the following:

1431

12.6. Open the web.config file inside Produce folder and search for connectionString and modify the line containing name=“ConnectionString”.

<add name="ConnectionString" connectionString="ix" providerName="ix" />

The final code for the tag should look like the following:

1428
  1. Deploying the App Files to the App Service in Azure
    Now you have the App Files ready, you need to deploy them to the App Service in Azure. There are different ways to do that: manually copy the files to the App Service, using Dropbox or OneDrive, Visual Studio Team Services, etc. More options are shown in below figure.
1404

In this guide, we will illustrate deployment by manually copying the files, and through Dropbox as deployment source.

13.1. Method 1: Deployment of App Files by using Dropbox as the datasource for the App Service. (Similar steps are applicable to OneDrive).
13.1.1. Choose the source as Dropbox, provide your Dropbox username and password for authorization. The folder name in Choose Folder will automatically get populate and will have the same name as your App Service name. Click OK.

1402

13.1.2. Once the deployment source is successfully configured. You will see the Successfully set up deployment source in the notification.

1402

13.1.3. A folder Apps would be automatically created by Azure in your Dropbox. Along with this, a subfolder Azure would also be created. This will be the folder for any deployment in Azure through Dropbox. These folders Apps and Azure would be created when you configure Dropbox as the deployment options for the first time in the Azure portal.

Whenever you configure Dropbox as the deployment options for an App Service, Azure will automatically create a folder with the name as the name of the App Service inside this Apps/Azure folder. In our tutorial, the folder created by Azure inside Dropbox is intelledoxinfinitidemo which is the same name as our App Service.

1400

13.1.4. Copy the Manage, Produce, and IntelledoxScheduler created in Step-12 by running the InfinitiUpgrade.exe file and contains Infiniti application files to this folder (intelledoxinfinitidemo).

1401

13.1.5. Once these folders are Sync with Dropbox, click on the Sync option in the Deployment options (4) of the App Service. Click Yes (5) to confirm the synchronisation request.

1402

13.1.6. The synchronisation of files will start from Dropbox to App Service file system in Azure.

1402

13.1.7. Once the file synchronisation is completed., you will see a tick and the number of files synchronised. With this, we have all the Infiniti app files required to run Infiniti in Azure App Service.

1403

13.2 Method 2: Deployment of Infiniti App Files by manually copying the files to the Apps Service in Azure.
13.2.1. Go to App Services (1), and click on the App Service you have created (2). Click on Advanced Tools option (3) and click Go (4).

1399

13.2.2. A new browser tab will open. Click on Debug console (1) and click CMD (2).

1399

13.2.3. The Azure App Service file system will open. Click on site.

1401

13.2.4. Navigate to site/wwwroot folder.

1400

13.2.5. Create a zip with Produce and Manage folder (created in Step-12 by running the InfinitiUpgrade.exe file and contains Infiniti application files). In our tutorial, we have created the zip with name V10.0.12.zip. The zip can have any name.

1398

13.2.6. Now drag and drop this V10.012.zip to the file system of the App Service inside the site/wwwroot folder.

1400

13.2.7. Check the status of the file copy.

1400

13.2.8. Once the entire zip file is copied, unzip the V10.012.zip by executing the unzip command in the console.
unzip

1402

13.2.9. This will start the unzip process and will create two folders Manage and Produce and inflate them with the required Infiniti application files.

1287
  1. Executing the Infiniti database scripts.
    14.1. Go to App Service (1) and search for Data connections (2) and click on SQL Database (3).
1288

14.2. Copy the password from the Connection String. You would require this password to connect to the SQL database and to execute the Infiniti database script.

1285

14.3. Click on SQL databases (1). Click on the database you have created and click on Overview (2). Now click on Tools (3) and click on Query editor (preview) (4). This will open the SQL editor where the DB queries can be executed.

1290

14.4. Click on login and select the Authentication type = SQL server authentication, login (username) will be get populated automatically populated, enter the password which you have copied from the Data connection of the App Service. Click OK and you will be logged in into the database.

1285

14.5. Go to Manage/_Database folder and copy the content of the file CreateDB.sql and paste the content in this query editor.

1281

14.6. Execute the query by clicking on the Run. The query executing can be tracked by Query running in the editor.

1283

14.7. Once the query is successfully executed you will see the output in the Messages tab of the query editor. There should not be any errors.

1291
  1. Accessing Manage and Produce
    15.1. Go to App Service overview blade to get yourSiteName.

📘

For installations of Intelledox 11.2 and Above

Intelledox v11.2 and above do not support 32 bit applications. By default the App Service is in 32 bit. To change this to 64 bit, go to the App Service and click on Configurations under the Settings tab. You should now see four different tabs. Click on the General Settings Tab. Under the Platform Settings you should be able to see a drop down called Platform. Change the drop down from 32bit to 64 bit and click Save.

1284

15.2. Navigate to Manage by using the following link:
https://.azurewebsites.net/Manage and log in by using the below default credentials.
Username: admin
Password: admin

📘

Always access Manage first after any Infiniti installation or upgrade

1289

15.3. Navigate to Produce by using the following link:
https://.azurewebsites.net/Produce

1285