This guide covers how to safely and efficiently migrate an on-premises Discovery Hub application server and database platforms to Azure. After completing this guide, the Discovery Hub application and services will be installed on a cloud-based Virtual Machine. The project repository and target SQL databases will be housed in an Azure PaaS database. For performance reasons, it is highly recommended your cloud databases are deployed in the same region as the cloud-based application server.
We strongly recommend that you use the Azure Marketplace apps for deploying Discovery Hub to Azure. These plans include the Discovery Hub® Application Server for Azure, and it is deployed in a Virtual Machine on Azure that has been pre-configured to best support Discovery Hub®.
How to move from one server to the other
To move from one server to the other, use Microsoft’s Data Migration Assistant or Data Migration Service to migrate databases, schemas of databases, data and users, server roles, and SQL Server and Windows Logins. This is the best way to help you upgrade to your modern data platform because it is designed to enable seamless migrations to Azure data platforms with minimal downtime. It will also detect any compatibility issues that can impact database functionality.
When migrating the Discovery Hub® application server and services, one of the most important pieces is to migrate the project repository database that contains all of metadata for your projects.
If you run into any issues with access or rights for users or service accounts on the new server, refer to the required Accounts and Permissions section at the bottom of this article.
- Create databases in Azure
- Migrate SQL Server Resources using DMA/DMS
- Configure the ODX Server
- Connect to the ODX Server
- Update ODX Storage
- Edit Analysis Services Endpoint (if applicable)
- Run the Connection Manager
- Update Multiple Environment Settings (if applicable)
1. Create databases in Azure
In order to map your databases on your source server to the target server for migration, you must first create empty databases for them on Azure.
- Using Discovery Hub on your source server, adjust the connections so your target databases (e.g. MDW, ODX) point to your SQL Server on Azure.
- Click Create to have the database(s) created in Azure.
3. Adjust the connection of your project repository so it points to your SQL Server on Azure.
4. Click Create to have the project repository created in Azure and click OK to close the dialogue box.
5. When asked Do you want to save these changes before your project repository changes? Select Yes.
6. When asked Do you want to copy your current project to the new project repository? Select No.
2. Deploy Your Project
Changing your server and database(s) will trigger a deployment., and Discovery Hub will need to redeploy the raw and valid tables for those without incremental loads or history after changing the connection string.
- The next step is to migrate your project repository and target databases (e.g. ODX, DSA, MDW) to your Azure data platform using Microsoft’s recommended approach depending on your target server type. It is also recommended to migrate the schemas, data and users, server roles, and SQL Server and Windows logins associated with these databases.
- Azure SQL Database: Use Data Migration Assistant to move your project repository and target databases (e.g. ODX, DSA, and/or MDW) to your target server
- Azure SQL Database managed instance: Use Data Migration Service to move your project repository and target databases (e.g. ODX, DSA, and/or MDW) to your target server.
- After you have successfully migrated databases, data and users, server roles, and SQL Server and Windows Logins associated with these databases, you need to start Discovery Hub on the Virtual Machine on Azure.
- When you start Discovery Hub for the first time you must enter in your license key and point it to the project repository in Azure.
*Ensure the user account has the proper permissions
4. When you open a project, edit the other target databases in your project to point to the new databases on Azure.
*Ensure the user account has the proper permissions
4. Configure the ODX Server
Before configuring the ODX server, ensure the ODX Server Service is not currently running on your current source server.
- In the Virtual Machine on Azure, open the ODX Server Configuration There is a shortcut located at “C:” or you can find it at “C:\Program Files\Discovery Hub\ODX Server”. This will open a wizard to help you configure the server and set up and start the Windows Service.
- In Step 1 of the wizard you will be asked for your Client Secret. You can find this by going to portal.timextender.com and clicking on the ODX tab. Once you have entered in your client secret, click Next in the ODX Server Configuration wizard.
- In Step 2 of the wizard, select your existing project or add a new one.
- In Step 3 of the wizard you are asked to specify a port number and maximum concurrent execution tasks. We recommend that you leave these at their default unless you have a reason to customize them. Click
- In Step 4 of the wizard you are asked to create the ODX management password and the Discovery Hub connection password. Either keep the same password(s) or enter the new password(s) information and click
- In Step 5 of the wizard you can enter an encryption secret that is used when the encryption key is generated. Make sure to store the secret in a safe place since we cannot help you retrieve a lost secret. Enter in your encryption secret (16-32 characters) or use the system default encryption and click
- In Step 6 of the wizard you can specify what account you want to run the service as if you need to connect to SQL Servers using ActiveDirectory authentication. The user account needs to have the appropriate access on these servers. Specify the account or use the Local System Account and click
- In Step 7 of the wizard you can save your settings and start the ODX Server Service. Click Save.
5. Connect to the ODX Server
- Open Discovery Hub and click Manage ODX Server on the Tools menu
- In the Manage ODX Server pane, right-click ODX Servers and click Add ODX…
- In the Name box, type a name for the ODX server (e.g. ODX)
- In the Server box, enter the ODX server address.
- In the Port box, enter the port number if it is different from the default
- In the Password box, enter the password for managing the ODX.
- Click OK.
6. Update ODX Data Storage
Once you are connected to the ODX Server, you must update your storage option if the deployment target for your ODX has changed. Only one storage option is allowed, and you can choose between SQL storage or an Azure Data Lake.
- In the Manage ODX Servers window, right-click an ODX Server and click Add SQL Server Data Storage.
- In the Name box, type the name you want to use for the storage
- In the Server box, enter the address of server.
- Select SQL Server Authentication and type in the credentials
- Under Database type in name of your existing ODX database that was migrated over to Azure.
- Click OK to add the storage.
Before adding an Azure Data Lake for storage, you must first register an application in order to access the data lake resources from Discovery Hub. Find out how to create and register a new application here.
- Once your application has been registered, go to the Manage ODX Servers window, right-click an ODX Server and click Add Data Lake Data Storage.
- Name: type the name you want to use for the storage.
- Account Name: Use the name of your Data Lake Store. The input only needs the name of the resource instead of the entire URL.
- Folder name: Type the name of the folder you want to create. This folder doesn’t have to be created in Data Lake Store in advance. The root folder is always Operational data eXchange and this folder name will be under that.
- Analytics account name: Use the name of your Data Lake Analytics. This input only needs the name of the resource instead of the entire URL.
- Tenant ID: This is the [Directory ID] found under properties of Azure Active Directory.
- Application ID: Use the application you registered previously. The ID can be found under the registered app.
- Application Key: Use the key you created under the application.
- Analytics Unit: You pay for Analytics Units (AU) time used on your Azure subscription. Adding more AUs can increase performance on Incremental Load.
- Click OK to add the storage.
7. Azure Analysis Services (if applicable)
- If you have existing Analysis Services Tabular Endpoints in Discovery Hub, edit the endpoint and point it towards your new server.
- You can use the service account but only if it has rights on the Azure Analysis services server.
- The Windows user that you use has to be added on the Analysis Services Admins.
- If you are connecting to on-premises data sources, you will need to configure an on-premises data gateway to provide secure data transfer between on-premises data sources and your Azure Analysis Services servers in the cloud. Install and Configure On-Premises Data Gateway
- If you are using Azure Analysis Services with Azure SQL Database Managed Instance, you must update your AAS configuration to work with Azure SQL Database Managed Instance. Azure Analysis Services integration with VNets via On-Premises Data Gateway
- If you have existing reports and dashboards in PowerBI that are connected to an on-prem SSAS Tabular Model, you can easily modify your Data source settings to point to your new Azure Analysis Server. This way you don’t have to rebuild all of your reports and dashboards.
Run the wizard in the connection manager to make sure all of your target databases have been updated, and then test your connections to make sure they are connected.
- After you have completed the first steps, you need to log into Discovery Hub as the server services user.
- Point it to the other repository on the new server.
- Open the “Windows Service Setup”
- Start the Server Service as that user account and close the program.
- Open the program as the first user and open the “Environment Properties”.
- You should be able to see all environments and global databases.
- Deploy and execute all projects.
Accounts and Permissions
Ensure the users, user groups, and service accounts have the same access and rights to the new server. Below are the access and rights required.
Identify and/or create the following user accounts. Azure Active Directory (AAD), is recommended if using the Hybrid or Cloud configurations but the permissions are the same for local Active Directory (AD). If utilizing Azure Analysis Services then Azure Active Directory is required.
- One user account for each Discovery Hub developer.
- One Service Account must be created for each “non-development” environment. These will be used to run the Discovery Hub Multiple Environment and Scheduler Services.
Create an Active Directory (AD) Security Group called TXDevelopers and add the developer user accounts. This will make it easier to apply permissions as developers work on and off the project.
Local or Domain Administrator on the Application Server. This is required to be able to start and stop services.
- Azure SQL Database permissions
- Data sources: db_datareader
- Target databases: Server admin, Azure Active Directory admin or dbmanager role in the master database. If hosting the project repository in Azure SQL DB then a SQL account is required. If using contained database users, then use the db_owner role.
- Azure SQL Database Managed Instance permissions
- Data Sources: db_datareader
- Target databases: sysadmin or dbOwner. Note that if using dbOwner instead of sysadmin, a user account with at least dbCreator rights must log in and create the project repository database from within the project repository settings dialog.
- Azure Analysis Services
- Analysis Services Admin permissions based from an Azure Active Directory login.
There are alternative methods for moving the application server. You can view other methods here.