Article How Do I Migrate My Existing File Storage to Azure?

This article is for existing Community owners who are looking to do one (or more) of the following:

  • Looking to migrate their existing file system storage to Azure file storage. 
  • Optionally looking to eventually move to use Azure Web Apps. You must complete this migration process prior to moving the community to Azure as an Azure Web App.  

Overview

The file migration process was written to minimize downtime and allow your users to still use the community while files are being migrated. This is done by replacing the existing storage provider with the Azure storage provider and using the current file system provider as a fallback option when files are not located in Azure yet. For example, a page is rendered that contains CommunityHighlights.png and the following check occurs:

  • Request file from Azure file storage:
    • If exists, send file contents from Azure.
    • If does not exist, fallback to the previous filestore.

The fallback ensures users can continue to get the same experience while the migration is in process. 

When the migration is complete, administrators are notified.

Preparing for Migration

  • Backup the file storage, database, and web files before you begin.
  • It is also recommended that you try this in a non-production environment if at all possible.
  • Download the the Azure deployment zip file. Note: For Community versions prior to 12.1, use this download.
  • Be familiar with running applications in Azure. The instructions assume you have experience working in and running applications in Azure.

Installation and Configuration

Going forward your site will be configured to communicate to Azure as its primary file storage and your current, existing file storage becomes the fallback file storage. You need to refer to the following sections of How Do I Deploy my Site to Microsoft Azure? to set up Azure as your storage provider:

  • Storage Account - This will provide guidance on how to configure your Azure storage account
  • Preparation/Prepare Web and Job Files For Deployment -  This will help you install the Azure components.   The only difference is where this article refers to the "Telligent Community Installation Package" as the place to copy files to, you will be using your existing web installation directory.

You must stop all web and job servers when installing the Azure components.

Connection Strings

Update your existing file connectionstrings.config in the web installation and job server installation to point to your storage account.
Note: The value for connectionString is provided in the Azure portal under the keys area of the storage account properties:

 <add name="AzureFilestorageContainer" connectionString="[Obtain from the Portal]" />

Configuration

Once you complete the setup from  How Do I Deploy my Site to Microsoft Azure? as described above, your web installation and job installation now has (or had) a communityserver_override_config file with the appropriate configuration settings in it:

Note: This is an example, your section may have different values and or additional fields not shown here

<Override xpath="/CommunityServer/CentralizedFileStorage" mode="add" where="end">
  <fileStoreGroup name="Azure"
      default="true" 
      type="Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage"
	  cdnUrl="https://yourcdn.azureedge.net"
      />
 </Override>

Modify that section by adding the node migrationSource as a child node of filestoreGroup as shown below in both the web and job versions of this file.

<Override xpath="/CommunityServer/CentralizedFileStorage" mode="add" where="end">
  <fileStoreGroup name="Azure"
      default="true" 
      type="Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage"
	  cdnUrl="https://yourcdn.azureedge.net"
      >
      
      <migrationSource name="FileStorageProvider"   type="Telligent.Evolution.Extensibility.Storage.Providers.Version1.FileSystemFileStorageProvider, Telligent.Evolution.Platform" connectionStringName="FileStorage" />
     
    </fileStoreGroup>
 </Override>

Once you have successfully installed all the files and modified the configuration, you can start web site followed by the job server. From this moment on your site will be using Azure as its file storage, however, when it cannot locate a file there, it will fallback and load the file from its original location.


Enabling the Job

Enable the job by going to the Administration area and locating the Centralized File Storage Migration Job under the Jobs section. Check the "Enabled" options and save. When this job begins it will start copying files to the Azure filestore.

Upon successful completion, administrators will receive a system notification stating the job has completed successfully and the steps to disable the job and remove the configuration added previously (see "Success" section below).

If the job encounters errors, administrators will receive a system notification with links to log files. Review these error log files for any errors that you may be able to correct. If the issue is not immediately apparent or correctable, allow the job to run again at its scheduled time where it will try and rectify any issues from subsequent runs. If you continue to experience errors contact Support with the error log files provided in the notification.

Success

When migration ends successfully and you receive the system notification do the following:

  1. Disable the Centralized File Storage Migration Job in Administration
  2. Stop your web and job servers.
  3. Modify communityserver_override.config in both web and job servers and remove the <migrationSource/> node you previously added. Save the files.
  4. Restart the web and job servers.