<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure</link><description /><dc:language>en-US</dc:language><generator>14.0.0.586 14</generator><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure</link><pubDate>Tue, 27 Aug 2024 23:24:15 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Jon Allen</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Current Revision posted to User Documentation by Jon Allen on 08/27/2024 23:24:15&lt;br /&gt;
&lt;p&gt;Community can be run as an Azure&amp;nbsp;Web App using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization&amp;nbsp;understands how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&amp;nbsp; Verint and Microsoft highly recommend premium level Azure packages.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1g2lci4e40"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premises installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed and the recommendations from Verint and Microsoft for Community to run in Azure. To ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least (1) Virtual Machine (VM). The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (Web App)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Refer to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://azure.microsoft.com/en-us/pricing/details/app-service/windows"&gt;Microsoft Azure documentation&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for App Service sizing.&amp;nbsp; See graphic example below from the Azure documentation.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;At minimum, the Premium App Service plan P1v3 is required*&lt;/strong&gt;.&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Basic and Standard App Service plans are not supported&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:273px;max-width:526px;" alt=" " height="273" src="/resized-image/__size/1052x546/__key/communityserver-wikis-components-files/00-00-00-12-80/Azure_2D00_App_2D00_Service_2D00_Plan.jpg" width="526" /&gt;&lt;/p&gt;
&lt;p&gt;*Community is designed to scale horizontally and/or vertically. Use your Azure monitoring tools to determine if more Cores, RAM or Storage is required for your use-cases under peak utilization periods.&lt;/p&gt;
&lt;p&gt;Create a new Web App in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Disable 32 bit to ensure 64 bit is ON&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&amp;nbsp; (&lt;em&gt;Note: Not all Apps Service Plans have Always On as an option)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to OFF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the Web App itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as its own&amp;nbsp;Web App. It should be configured as&amp;nbsp;&lt;strong&gt;continuous&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt;&amp;nbsp;and it can be found in your&amp;nbsp;&amp;#39;[Community Install Package]\JobServer&amp;#39; folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ATTENTION:&amp;nbsp; Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Refer to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://azure.microsoft.com/en-us/pricing/details/azure-sql-database/single/"&gt;Microsoft Azure documentation&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for SQL Database sizing . See graphic example below from the Azure documentation.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Service Type Business Critical is best suited&amp;nbsp;for high IO requirements. The Hardware Type: Standard or DC-Series is at your discretion.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Your community requires a dedicated SQL database (it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; Never make alterations to the database schema even if a third-party tool or Azure itself makes recommendations.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:306px;max-width:554px;" alt=" " height="306" src="/resized-image/__size/1108x612/__key/communityserver-wikis-components-files/00-00-00-12-80/Azure_2D00_SQL_2D00_BusinessCritical_2D00_Standard.jpg" width="554" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Or&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:299px;max-width:560px;" alt=" " height="299" src="/resized-image/__size/1120x598/__key/communityserver-wikis-components-files/00-00-00-12-80/pastedimage1724777409961v1.png" width="560" /&gt;&lt;/p&gt;
&lt;p&gt;When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure private end-points is configured.&lt;/li&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;There is only one service bus option supported when running Community in Azure: Azure Cache for Redis is required for performance reasons along with the benefit of being a distributed cache. Refer to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://azure.microsoft.com/en-us/pricing/details/azure-sql-database/single/"&gt;Microsoft Azure documentation&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for Azure Cache for Redis sizing . See graphic example below from the Azure documentation.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Service Tier Premier is best suited for increased bandwidth and reduced latency.&amp;nbsp; &amp;nbsp;Cache Name is at your discretion based on projected Number of Client Connections&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="max-height:331px;max-width:575px;" alt=" " height="331" src="/resized-image/__size/1150x662/__key/communityserver-wikis-components-files/00-00-00-12-80/pastedimage1724777530555v2.png" width="575" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Azure Cache for Redis&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;Azure Cache for Redis is required due to being a performant, managed service but you can use other Redis services within Azure if you are comfortable managing those instances. Azure Cache for Redis configuration recommendations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Service tier:&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-planning-faq#azure-cache-for-redis-performance" rel="noopener noreferrer" target="_blank"&gt;Premier&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is recommended in production due to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-planning-faq#azure-cache-for-redis-performance"&gt;increased bandwidth and reduced latency&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Peristant: Disabled&lt;/li&gt;
&lt;li&gt;Version: Latest&lt;/li&gt;
&lt;li&gt;Connectivity: Virtual/Private&lt;/li&gt;
&lt;li&gt;Note: You should periodically&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-insights-overview" rel="noopener noreferrer" target="_blank"&gt;monitor&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;your instance to see an an upgrade is necessary.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of your community is housed in a Azure storage account you will need to create. Refer to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://azure.microsoft.com/en-us/pricing/details/azure-sql-database/single/"&gt;Microsoft Azure documentation&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for Azure Blob Storage sizing. See graphic example below from the Azure documentation.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Premium Storage is required for low and consistent latency.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="max-height:275px;max-width:587px;" alt=" " height="275" src="/resized-image/__size/1174x550/__key/communityserver-wikis-components-files/00-00-00-12-80/pastedimage1724777692579v3.png" width="587" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Community manages the contents of the storage account and therefore, unless directed by support, you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage you can&amp;nbsp;&lt;a href="https://community.telligent.com/community/13/a/user-documentation/UD917/how-do-i-migrate-my-existing-file-storage-to-azure"&gt;migrate files to Azure&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommended you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a Windows Virtual Machine powerful enough to handle the search traffic with enough disk space to store the search index. This&amp;nbsp;server should never be accessible over the internet publicly. It does however have to be accessible to the Web App and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premises and those instructions should be consulted.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See tables at URL below&lt;/p&gt;
&lt;p&gt;https://azure.microsoft.com/en-us/pricing/details/virtual-machines/windows/&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premises installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;Web App and configured in the portal. Access the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;Web App&amp;#39;s a&lt;/span&gt;pplication settings and locate the &amp;quot;Connection Strings&amp;quot; section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;***DO NOT SET&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table width="524" height="246"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance. (Note: This is not necessary if using Azure Cache for Redis)&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Custom&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url your community will use.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Custom&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt;&amp;nbsp;Do not run web job as part of of the main Web App. Run the web jobs in their own dedicated&amp;nbsp;Web App Service, you will need to configure the connection strings up on the dedicated&amp;nbsp;Web App.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file. We will reference this folder as [Community Install Package] below.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/5722.TelligentAzure_2D00_2.1.27887.zip"&gt;Download&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the the Azure deployment zip file.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;For Community versions prior to 12.1, use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/6813.TelligentAzure_2D00_2.0.21985.zip"&gt;this&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;download.
&lt;ol&gt;
&lt;li&gt;Ensure the file is unblocked (Right click on file -&amp;gt; Properties -&amp;gt; Unblock should be unchecked) and extract the contents.&lt;/li&gt;
&lt;li&gt;Copy the contents to the &amp;#39;[Community Install Package]\Web&amp;#39; folder. If prompted by Windows to merge the &amp;#39;bin&amp;#39; folder, choose &amp;#39;Yes&amp;#39;.&lt;/li&gt;
&lt;li&gt;C&lt;span&gt;opy the contents to the &amp;#39;[Community Install Package]\JobServer&amp;#39; folder.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;You&amp;nbsp;will be using Azure Cache for Redis, download&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/7802.redis_2D00_1.0.1.0.zip"&gt;Redis for Community&lt;/a&gt;.
&lt;ol&gt;
&lt;li&gt;Ensure the file is unblocked (Right click on file -&amp;gt; Properties -&amp;gt; Unblock should be unchecked) and extract the contents.&lt;/li&gt;
&lt;li&gt;Copy the contents to the &amp;#39;[Community Install Package]\Web&amp;#39; folder.&lt;/li&gt;
&lt;li&gt;C&lt;span&gt;opy the contents to the &amp;#39;[Community Install Package]\JobServer&amp;#39; folder.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the &amp;#39;[Community Install Package]\Web&amp;#39; folder and un-comment the two override nodes for the fileStoreGroup.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional)&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy the just edited &amp;#39;[Community Install Package]\Web\communityserver_override.config&amp;#39; file to the &amp;#39;[Community Install Package]\JobServer&amp;#39;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;When using Community 12.1 (or newer), add the following three assembly bindings within&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em&gt;the web.config&lt;/em&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and job server&amp;#39;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em&gt;Telligent.Jobs.Server.exe.config:&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="padding-left:90px;"&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;configuration&amp;gt;
	&amp;lt;runtime&amp;gt;
		&amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
			&amp;lt;dependentAssembly&amp;gt;
				&amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Bcl.AsyncInterfaces&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
				&amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
			&amp;lt;/dependentAssembly&amp;gt;
			&amp;lt;dependentAssembly&amp;gt;
				&amp;lt;assemblyIdentity name=&amp;quot;System.Text.Encodings.Web&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
				&amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.1&amp;quot; newVersion=&amp;quot;5.0.0.1&amp;quot; /&amp;gt;
			&amp;lt;/dependentAssembly&amp;gt;
			&amp;lt;dependentAssembly&amp;gt;
				&amp;lt;assemblyIdentity name=&amp;quot;System.Text.Json&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
				&amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.2&amp;quot; newVersion=&amp;quot;5.0.0.2&amp;quot; /&amp;gt;
			&amp;lt;/dependentAssembly&amp;gt;
		&amp;lt;/assemblyBinding&amp;gt;
	&amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p style="padding-left:90px;"&gt;&lt;em&gt;&amp;nbsp;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premises installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premises installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice such as FTP, deploy the contents of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;#39;[Community Install Package]\&lt;/span&gt;JobServer&amp;#39; folder&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the Web App&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note: Azure will ultimately deploy and run the job service in a temporary folder (ex. D:\local\Temp\JobsShutdown\continuous\jobs\[random.string]) which will change across restarts. For this reason, we recommend updating the logging location to a persistent location. This can be done by editing the &amp;lt;file&amp;gt; configuration elements for the &amp;lt;ErrorLogFileAppender&amp;gt; and &amp;lt;FullLoggingAppender&amp;gt; within the Telligent.Jobs.Server.exe.config file to sub-folder under the existing &amp;#39;D:\home\LogFiles\&amp;#39; folder (e.g. D:\home\LogFiles\Community).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;log4net&amp;gt;
		&amp;lt;root&amp;gt;
			&amp;lt;level value=&amp;quot;DEBUG&amp;quot;/&amp;gt;
			&amp;lt;appender-ref ref=&amp;quot;ConsoleAppender&amp;quot;/&amp;gt;
			&amp;lt;appender-ref ref=&amp;quot;ErrorLogFileAppender&amp;quot;/&amp;gt;
			&amp;lt;appender-ref ref=&amp;quot;FullLoggingAppender&amp;quot;/&amp;gt;
		&amp;lt;/root&amp;gt;
		&amp;lt;appender name=&amp;quot;ErrorLogFileAppender&amp;quot; type=&amp;quot;log4net.Appender.RollingFileAppender&amp;quot;&amp;gt;
			&amp;lt;threshold value=&amp;quot;WARN&amp;quot;/&amp;gt;
			&amp;lt;!-- &amp;lt;file value=&amp;quot;Logs\errors.log&amp;quot;/&amp;gt; --&amp;gt;
			&amp;lt;file value=&amp;quot;D:\home\LogFiles\Community\errors.log&amp;quot;/&amp;gt;
			&amp;lt;appendToFile value=&amp;quot;true&amp;quot;/&amp;gt;
			&amp;lt;rollingStyle value=&amp;quot;Size&amp;quot;/&amp;gt;
			&amp;lt;maxSizeRollBackups value=&amp;quot;10&amp;quot;/&amp;gt;
			&amp;lt;maximumFileSize value=&amp;quot;10MB&amp;quot;/&amp;gt;
			&amp;lt;staticLogFileName value=&amp;quot;true&amp;quot;/&amp;gt;
			&amp;lt;layout type=&amp;quot;log4net.Layout.PatternLayout&amp;quot;&amp;gt;
				&amp;lt;conversionPattern value=&amp;quot;%date %-5level [%thread] - %message%newline&amp;quot;/&amp;gt;
			&amp;lt;/layout&amp;gt;
		&amp;lt;/appender&amp;gt;
		&amp;lt;appender name=&amp;quot;FullLoggingAppender&amp;quot; type=&amp;quot;log4net.Appender.RollingFileAppender&amp;quot;&amp;gt;
			&amp;lt;threshold value=&amp;quot;INFO&amp;quot;/&amp;gt;
			&amp;lt;!-- &amp;lt;file value=&amp;quot;Logs\log.log&amp;quot;/&amp;gt; --&amp;gt;
			&amp;lt;file value=&amp;quot;D:\home\LogFiles\Community\log.log&amp;quot;/&amp;gt;
			&amp;lt;appendToFile value=&amp;quot;true&amp;quot;/&amp;gt;
			&amp;lt;layout type=&amp;quot;log4net.Layout.PatternLayout&amp;quot;&amp;gt;
				&amp;lt;conversionPattern value=&amp;quot;%date %-5level [%thread] - %message%newline&amp;quot;/&amp;gt;
			&amp;lt;/layout&amp;gt;
		&amp;lt;/appender&amp;gt;
[snip]&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice such as FTP, deploy the contents of the &amp;#39;[Community Install Package]\Web&amp;#39; folder [site/wwwroot] to the Web App&amp;#39;s site folder.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of&amp;nbsp;&lt;a href="https://community.telligent.com/community/13/a/user-documentation/UD1124/how-do-i-install-verint-community"&gt;How Do I Install Telligent Community?&lt;/a&gt;. Remember your VM will need to have a Java JRE installed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;&lt;/strong&gt;    	    	        &lt;div style="padding: 1em; margin: 1em 0; color: #111; background-color: #fff; border: solid 1px #ffb300;"&gt;
	    	        IMPORTANT:  Search cannot be publicly accessible. You will need to configure your environment in such a way as to allow communication from the Web App to the search VM on its virtual network&amp;#160;while ensuring that any public traffic is being blocked to the VM itself.
	    &lt;/div&gt;
	&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span&gt;Configuring Redis (*if using Redis)&lt;br /&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Once your Redis instance is up and the Community site is running,&amp;nbsp;it is&amp;nbsp;time to configure Redis for the service bus and distributed cache.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Login to your site as an administrator and navigate to Administration (Click Pencil icon - &amp;gt; Administration).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Navigate to Site -&amp;gt; Message Buses -&amp;gt; and disable (uncheck) the existing message bus and click &amp;#39;Save&amp;#39;. This will disable the current message bus.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;In the left-hand categories, click &amp;#39;Extensions&amp;#39; and find the &amp;#39;Redis&amp;#39; plugin.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Enter the host, port and credentials for your Redis instance. Once entered, select &amp;#39;Enabled&amp;#39; (checked) and click &amp;#39;Save&amp;#39;.&lt;br /&gt;&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Below is an example of this information from an Azure Cache for Redis instance&lt;br /&gt;&lt;br /&gt;&lt;img style="max-height:258px;max-width:677px;" alt=" " height="258" src="/resized-image/__size/1354x516/__key/communityserver-wikis-components-files/00-00-00-12-80/7167.pastedimage1670600806718v1.png" width="677" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Navigate back to Administration-&amp;gt; Site -&amp;gt; Message Bus and confirm a successful connection via the &amp;#39;Diagnostics&amp;#39; tab.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Note: The distributed cache will automatically be enabled.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section&amp;nbsp;&lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt;&amp;nbsp;to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web App&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the Web App and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: azure&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/16</link><pubDate>Thu, 02 Dec 2021 15:36:05 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 16 posted to User Documentation by Kevin Cunningham on 12/02/2021 15:36:05&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to OFF (Note: if on version &amp;lt; 11.1.0 set this to ON)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot; or &amp;quot;Block Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/TelligentAzure_2D00_1.0.19571.zip"&gt;Download the Azure package.&lt;/a&gt; Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/15</link><pubDate>Tue, 14 Sep 2021 16:01:30 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 15 posted to User Documentation by Kevin Cunningham on 09/14/2021 16:01:30&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot; or &amp;quot;Block Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/TelligentAzure_2D00_1.0.19571.zip"&gt;Download the Azure package.&lt;/a&gt; Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/14</link><pubDate>Tue, 13 Apr 2021 16:40:21 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 14 posted to User Documentation by Michael Kelley on 04/13/2021 16:40:21&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot; or &amp;quot;Block Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-80/TelligentAzure_2D00_1.0.17881.zip"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/13</link><pubDate>Wed, 17 Mar 2021 14:09:03 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 13 posted to User Documentation by Michael Kelley on 03/17/2021 14:09:03&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot; or &amp;quot;Block Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a title="Azure download" href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.59.zip?_=637408983874753312"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/12</link><pubDate>Wed, 17 Mar 2021 14:06:00 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 12 posted to User Documentation by Michael Kelley on 03/17/2021 14:06:00&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot; or &amp;quot;Block Blog Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a title="Azure download" href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.59.zip?_=637408983874753312"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/11</link><pubDate>Fri, 13 Nov 2020 21:47:35 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 11 posted to User Documentation by Kevin Cunningham on 11/13/2020 21:47:35&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a title="Azure download" href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.59.zip?_=637408983874753312"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration when a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/10</link><pubDate>Fri, 13 Nov 2020 21:46:32 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 10 posted to User Documentation by Kevin Cunningham on 11/13/2020 21:46:32&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a title="Azure download" href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.59.zip?_=637408983874753312"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cdnUrl&lt;/strong&gt; - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maximumSecureFileAccessDays&lt;/strong&gt; - The number of days secured file links are valid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimumSecureFileAccessHours&lt;/strong&gt; - The number of hours (or time window) before link expiration before a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/9</link><pubDate>Fri, 13 Nov 2020 21:44:25 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 9 posted to User Documentation by Kevin Cunningham on 11/13/2020 21:44:25&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (Solr). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config file. In an Azure deployment, all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s a&lt;/span&gt;pplication settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key. It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your Community Installation Package and ensure the .zip file is unblocked. Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a title="Azure download" href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.59.zip?_=637408983874753312"&gt;Download the the Azure deployment zip file&lt;/a&gt;. Ensure the file is unblocked and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the fileStoreGroup.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Configure Azure blob storage options (optional) &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Azure Content Delivery Network (CDN) - If you are using Azure&amp;#39;s CDN services, edit the fileStoreGroup node with the name of &amp;quot;Azure&amp;quot; and add an &amp;quot;cdnUrl&amp;quot; attribute with the value of your CDN&lt;/li&gt;
&lt;li&gt;maximumSecureFileAccessDays - The number of days secured file links are valid. &lt;/li&gt;
&lt;li&gt;minimumSecureFileAccessHours - The number of hours (or time window) before link expiration for which a new URL will be generated. For example, if the &amp;#39;maximumSecureFileAccessDays&amp;#39; is set to 14 days and &amp;#39;minimumSecureFileAccessHours&amp;#39; is set to 2, the same URL will be given in requests for 14 days until 2 hours before the expiration time is up at which point a new URL is generated for the next 14 days.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
      cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      maximumSecureFileAccessDays=&amp;quot;7&amp;quot;
      minimumSecureFileAccessHours=&amp;quot;2&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;    
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat the configuration changes for communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can copy the web version of the file to the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/8</link><pubDate>Wed, 29 Apr 2020 19:08:41 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 8 posted to User Documentation by Kevin Cunningham on 04/29/2020 19:08:41&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.55.zip?_=637237840653960833"&gt;Download the the Azure deployment zip file&lt;/a&gt;.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the URL of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/7</link><pubDate>Wed, 29 Apr 2020 18:47:09 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 7 posted to User Documentation by Michael Kelley on 04/29/2020 18:47:09&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t0"&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t1"&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8t2"&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8t3"&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1e73k6j8t4"&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t5"&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t6"&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t7"&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1e73k6j8t8"&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3 id="mcetoc_1e73k6j8t9"&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8ta"&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3 id="mcetoc_1e73k6j8tb"&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/Azure/TelligentAzure_2D00_1.0.43.zip?_=636762173114565624"&gt;Download the the Azure deployment zip file&lt;/a&gt;.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the URL of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1e73k6j8tc"&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1e73k6j8td"&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/6</link><pubDate>Wed, 08 Apr 2020 14:36:22 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Kevin Cunningham</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 6 posted to User Documentation by Kevin Cunningham on 04/08/2020 14:36:22&lt;br /&gt;
&lt;p&gt;Verint Community can be run as an Azure&amp;nbsp;WebApp using an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs. This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR). This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology. This guide will go through the components needed for Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine. The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Community web components will be deployed. Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state. Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;. To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics. This means as of the publication of this document you must use a standard pricing tier or higher. Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus. Avoid using the default. This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage (CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose. Verint Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN. CDNs offer expanded capabilities and features such as compression that blob storage directly does not. You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint URL for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Community. Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index. This&amp;nbsp; server should never be accessible over the internet publicly. It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place. If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal. Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section. You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;&lt;a href="/cfs-filesystemfile/__key/communityserver-components-sitefiles/downloads/TelligentAzure_2D00_1.0.54.zip?_=637219514315336654"&gt;Download the the Azure deployment zip file&lt;/a&gt;.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the URL of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation. Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder. You will be prompted to override the command file as you uploaded it to create the job, this okay or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations. See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]]. Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt; You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time. The database and ALL web files must be updated for your community to function. Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready. Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server. DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/5</link><pubDate>Tue, 07 Apr 2020 15:55:16 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 5 posted to User Documentation by Michael Kelley on 04/07/2020 15:55:16&lt;br /&gt;
&lt;p&gt;As of 10.1 Telligent Community can be run as an Azure&amp;nbsp;WebApp using&amp;nbsp;&amp;nbsp;an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs.&amp;nbsp; &amp;nbsp;This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Telligent Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR).&amp;nbsp; &amp;nbsp;This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology.&amp;nbsp; &amp;nbsp;This guide will go through the components needed for Telligent Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine.&amp;nbsp; The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Telligent Community web components will be deployed.&amp;nbsp; &amp;nbsp;Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state.&amp;nbsp; &amp;nbsp;Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&amp;nbsp; &amp;nbsp;To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Telligent Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics.&amp;nbsp; &amp;nbsp;This means as of the publication of this document you must use a standard pricing tier or higher.&amp;nbsp; Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus.&amp;nbsp; Avoid using the default.&amp;nbsp; This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage(CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose.&amp;nbsp; &amp;nbsp;Telligent Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN.&amp;nbsp; CDNs offer expanded capabilities and features such as compression that blob storage directly does not.&amp;nbsp; You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint url for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Telligent Community.&amp;nbsp; &amp;nbsp;Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index.&amp;nbsp; This&amp;nbsp; server should never be accessible over the internet publicly.&amp;nbsp; It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place.&amp;nbsp; &amp;nbsp;If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal.&amp;nbsp; Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section.&amp;nbsp; &amp;nbsp;You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;Locate the Azure deployment zip file you obtain from Telligent Support.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Telligent Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Telligent Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Telligent Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the url of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation.&amp;nbsp; &amp;nbsp;Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Telligent Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder.&amp;nbsp; &amp;nbsp;You will be prompted to override the command file as you uploaded it to create the job, this ok or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations.&amp;nbsp; &amp;nbsp;See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]].&amp;nbsp; &amp;nbsp;Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt;&amp;nbsp;&amp;nbsp;You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time.&amp;nbsp; &amp;nbsp;The database and ALL web files must be updated for your community to function.&amp;nbsp; &amp;nbsp;Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready.&amp;nbsp; &amp;nbsp;Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server.&amp;nbsp; DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/4</link><pubDate>Wed, 01 Apr 2020 14:51:33 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 4 posted to User Documentation by Michael Kelley on 04/01/2020 14:51:33&lt;br /&gt;
&lt;p&gt;As of 10.1 Telligent Community can be run as an Azure&amp;nbsp;WebApp using&amp;nbsp;&amp;nbsp;an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs.&amp;nbsp; &amp;nbsp;This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Telligent Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR).&amp;nbsp; &amp;nbsp;This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology.&amp;nbsp; &amp;nbsp;This guide will go through the components needed for Telligent Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine.&amp;nbsp; The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Telligent Community web components will be deployed.&amp;nbsp; &amp;nbsp;Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state.&amp;nbsp; &amp;nbsp;Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&amp;nbsp; &amp;nbsp;To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Telligent Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics.&amp;nbsp; &amp;nbsp;This means as of the publication of this document you must use a standard pricing tier or higher.&amp;nbsp; Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus.&amp;nbsp; Avoid using the default.&amp;nbsp; This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage(CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose.&amp;nbsp; &amp;nbsp;Telligent Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN.&amp;nbsp; CDNs offer expanded capabilities and features such as compression that blob storage directly does not.&amp;nbsp; You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint url for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Telligent Community.&amp;nbsp; &amp;nbsp;Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index.&amp;nbsp; This&amp;nbsp; server should never be accessible over the internet publicly.&amp;nbsp; It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place.&amp;nbsp; &amp;nbsp;If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal.&amp;nbsp; Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section.&amp;nbsp; &amp;nbsp;You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Service Bus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;Locate the Azure deployment zip file you obtain from Telligent Support.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Telligent Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Telligent Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Telligent Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the url of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation.&amp;nbsp; &amp;nbsp;Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Telligent Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder.&amp;nbsp; &amp;nbsp;You will be prompted to override the command file as you uploaded it to create the job, this ok or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations.&amp;nbsp; &amp;nbsp;See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]].&amp;nbsp; &amp;nbsp;Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt;&amp;nbsp;&amp;nbsp;You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time.&amp;nbsp; &amp;nbsp;The database and ALL web files must be updated for your community to function.&amp;nbsp; &amp;nbsp;Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready.&amp;nbsp; &amp;nbsp;Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server.&amp;nbsp; DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/3</link><pubDate>Wed, 01 Apr 2020 14:21:09 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Michael Kelley</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 3 posted to User Documentation by Michael Kelley on 04/01/2020 14:21:09&lt;br /&gt;
&lt;p&gt;As of 10.1 Telligent Community can be run as an Azure&amp;nbsp;WebApp using&amp;nbsp;&amp;nbsp;an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs.&amp;nbsp; &amp;nbsp;This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Telligent Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR).&amp;nbsp; &amp;nbsp;This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology.&amp;nbsp; &amp;nbsp;This guide will go through the components needed for Telligent Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine.&amp;nbsp; The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Telligent Community web components will be deployed.&amp;nbsp; &amp;nbsp;Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state.&amp;nbsp; &amp;nbsp;Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&amp;nbsp; &amp;nbsp;To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Telligent Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics.&amp;nbsp; &amp;nbsp;This means as of the publication of this document you must use a standard pricing tier or higher.&amp;nbsp; Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus.&amp;nbsp; Avoid using the default.&amp;nbsp; This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage(CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose.&amp;nbsp; &amp;nbsp;Telligent Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN.&amp;nbsp; CDNs offer expanded capabilities and features such as compression that blob storage directly does not.&amp;nbsp; You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint url for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Telligent Community.&amp;nbsp; &amp;nbsp;Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index.&amp;nbsp; This&amp;nbsp; server should never be accessible over the internet publicly.&amp;nbsp; It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place.&amp;nbsp; &amp;nbsp;If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal.&amp;nbsp; Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section.&amp;nbsp; &amp;nbsp;You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Service Bus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;Locate the Azure deployment zip file you obtain from Telligent Support.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Telligent Community package&amp;#39;s web folder. When prompted by Windows if you want to merge the bin folder as one already exists, select yes.&lt;/li&gt;
&lt;li&gt;In he Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Telligent Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Telligent Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name of &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the url of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation.&amp;nbsp; &amp;nbsp;Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Telligent Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @SiteUrl = N&amp;#39;http://yoursite.com&amp;#39;,
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder.&amp;nbsp; &amp;nbsp;You will be prompted to override the command file as you uploaded it to create the job, this ok or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations.&amp;nbsp; &amp;nbsp;See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]].&amp;nbsp; &amp;nbsp;Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt;&amp;nbsp;&amp;nbsp;You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time.&amp;nbsp; &amp;nbsp;The database and ALL web files must be updated for your community to function.&amp;nbsp; &amp;nbsp;Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready.&amp;nbsp; &amp;nbsp;Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server.&amp;nbsp; DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/2</link><pubDate>Thu, 18 Jul 2019 17:41:14 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Grant Pankonien</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 2 posted to User Documentation by Grant Pankonien on 07/18/2019 17:41:14&lt;br /&gt;
&lt;p&gt;As of 10.1 Telligent Community can be run as an Azure&amp;nbsp;WebApp using&amp;nbsp;&amp;nbsp;an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs.&amp;nbsp; &amp;nbsp;This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Telligent Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR).&amp;nbsp; &amp;nbsp;This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology.&amp;nbsp; &amp;nbsp;This guide will go through the components needed for Telligent Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine.&amp;nbsp; The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Telligent Community web components will be deployed.&amp;nbsp; &amp;nbsp;Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state.&amp;nbsp; &amp;nbsp;Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&amp;nbsp; &amp;nbsp;To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Telligent Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics.&amp;nbsp; &amp;nbsp;This means as of the publication of this document you must use a standard pricing tier or higher.&amp;nbsp; Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus.&amp;nbsp; Avoid using the default.&amp;nbsp; This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage(CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose.&amp;nbsp; &amp;nbsp;Telligent Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN.&amp;nbsp; CDNs offer expanded capabilities and features such as compression that blob storage directly does not.&amp;nbsp; You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint url for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Telligent Community.&amp;nbsp; &amp;nbsp;Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index.&amp;nbsp; This&amp;nbsp; server should never be accessible over the internet publicly.&amp;nbsp; It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place.&amp;nbsp; &amp;nbsp;If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal.&amp;nbsp; Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section.&amp;nbsp; &amp;nbsp;You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Service Bus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;Locate the Azure deployment zip file you obtain from Telligent Support.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Telligent Community package&amp;#39;s web folder.&lt;/li&gt;
&lt;li&gt;In The Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Telligent Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Telligent Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name or &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the url of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation.&amp;nbsp; &amp;nbsp;Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Telligent Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @SiteUrl = N&amp;#39;http://yoursite.com&amp;#39;,
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder.&amp;nbsp; &amp;nbsp;You will be prompted to override the command file as you uploaded it to create the job, this ok or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations.&amp;nbsp; &amp;nbsp;See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]].&amp;nbsp; &amp;nbsp;Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt;&amp;nbsp;&amp;nbsp;You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time.&amp;nbsp; &amp;nbsp;The database and ALL web files must be updated for your community to function.&amp;nbsp; &amp;nbsp;Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready.&amp;nbsp; &amp;nbsp;Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server.&amp;nbsp; DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How Do I Deploy my Site to Microsoft Azure?</title><link>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure/revision/1</link><pubDate>Tue, 04 Jun 2019 20:16:51 GMT</pubDate><guid isPermaLink="false">c3c8ddf8-af09-42c9-ac34-3ad3552899eb</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/user-documentation/62986/how-do-i-deploy-my-site-to-microsoft-azure#comments</comments><description>Revision 1 posted to User Documentation by Ben Tiedt on 06/04/2019 20:16:51&lt;br /&gt;
&lt;p&gt;As of 10.1 Telligent Community can be run as an Azure&amp;nbsp;WebApp using&amp;nbsp;&amp;nbsp;an Azure SQL database, Azure Service Bus, Azure Storage account and Azure Web Jobs.&amp;nbsp; &amp;nbsp;This guide will&amp;nbsp;assist in helping you understand the technologies being used and where they need to be deployed in Azure, however there is an expectation that&amp;nbsp;your organization has&amp;nbsp;an understanding of how Azure works, its components and infrastructure, and utilization of the Azure portal.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Limitations" name="Limitations"&gt;&lt;/a&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Currently, Azure is only a supported solution for a new community running version 10.1 or later.&amp;nbsp; There is currently no supported migration path from an on-premise installation of Telligent Community to an Azure based installation unless you are currently running version 10.3 or higher and only if you currently use the default local filesystem for file storage.&lt;/p&gt;
&lt;p&gt;You will still need to have at least a single windows virtual machine(VM) to&amp;nbsp;install&amp;nbsp;and run search (SOLR).&amp;nbsp; &amp;nbsp;This machine should only be accessible by the website and job service, not publicly.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Planning" name="Planning"&gt;&lt;/a&gt;Planning&lt;/h2&gt;
&lt;p&gt;It is important to plan out your architecture before building it as it requires a functional knowledge&amp;nbsp;of Azure and how to configure all aspects of Azure topology.&amp;nbsp; &amp;nbsp;This guide will go through the components needed for Telligent Community to run in Azure, but to ensure a secure, stable and efficient&amp;nbsp;infrastructure you will need to understand parts of Azure that are beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;The biggest consideration is that Telligent Community requires a mix of App Services and at least 1 virtual machine.&amp;nbsp; The App Services need to be able to communicate&amp;nbsp;with&amp;nbsp;the VM while still being available over the internet publicly, however the VM itself must not be accessible.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Required_Components" name="Required_Components"&gt;&lt;/a&gt;Required Components&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Azure_Web_Application_WebApp" name="Azure_Web_Application_WebApp"&gt;&lt;/a&gt;Azure Web Application (WebApp)&lt;/h3&gt;
&lt;p&gt;This is where the actual Telligent Community web components will be deployed.&amp;nbsp; &amp;nbsp;Create a new WebApp in Azure App Services and in its application settings ensure the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework is set to version 4.7 (or higher)&lt;/li&gt;
&lt;li&gt;Web Sockets are ON&lt;/li&gt;
&lt;li&gt;Always On is set to ON&lt;/li&gt;
&lt;li&gt;ARR Affinity is set to ON&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other options can be left in their default state.&amp;nbsp; &amp;nbsp;Once set up be sure to STOP the WebApp itself.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h3&gt;
&lt;p&gt;The job server runs as a continuous Azure Web Job that you configure as part of the &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; itself or&amp;nbsp;it can run as its own &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&amp;nbsp; &amp;nbsp;To set up the job server as a web job, access the&amp;nbsp;&lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt; responsible for running the jobs, select WebJobs and add a new one.&amp;nbsp; Or you can do this on its own separate WebApp but the steps are the same.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be configured as &lt;strong&gt;continuous&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The required command file is&amp;nbsp;&lt;em&gt;Telligent.Jobs.AzureWebJobs.cmd&amp;nbsp;&lt;/em&gt; and it can be found in your Telligent Community installation package in the JobServer folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure the Web Job remains in a stopped state.&lt;/p&gt;
&lt;h3&gt;&lt;a id="SQL_Database" name="SQL_Database"&gt;&lt;/a&gt;SQL Database&lt;/h3&gt;
&lt;p&gt;The database portion of the community utilizes an Azure SQL database.&amp;nbsp; Your community requires a dedicated SQL database(it should not be shared with any other applications) but can share a SQL Server.&amp;nbsp; &amp;nbsp;Never make alterations to the database schema even if a third party tool or Azure itself makes recommendations.&amp;nbsp; When configuring a SQL database be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic Tuning&amp;nbsp;options for FORCE PLAN, CREATE INDEX, and DROP INDEX are set to OFF for their desired state. Do not use INHERIT to ensure these settings are not accidentally applied to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Service_Bus" name="Service_Bus"&gt;&lt;/a&gt;Service Bus&lt;/h3&gt;
&lt;p&gt;You can create a new service bus on in Azure or utilize an existing one, however whichever you choose that service bus must support topics.&amp;nbsp; &amp;nbsp;This means as of the publication of this document you must use a standard pricing tier or higher.&amp;nbsp; Basic does not support topics.&lt;/p&gt;
&lt;p&gt;You should create a community specific shared access key on the bus.&amp;nbsp; Avoid using the default.&amp;nbsp; This way, especially in a shared bus, an access key can be revoked without impacting other services.&amp;nbsp; When creating a new shared access policy/key it needs the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage&lt;/li&gt;
&lt;li&gt;Listen&lt;/li&gt;
&lt;li&gt;Send&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="File_Storage" name="File_Storage"&gt;&lt;/a&gt;Storage Account&lt;/h3&gt;
&lt;p&gt;The&amp;nbsp;Centralized File Storage(CFS) portion of of your community is housed in a Azure storage account you will need to create.&amp;nbsp; This storage account needs to be dedicated to your community and not utilized for any other application or other storage purpose.&amp;nbsp; &amp;nbsp;Telligent Community manages the contents of the storage account and therefore unless directed by support you should never manually manipulate the contents of the storage account or configure it outside of the recommended settings&amp;nbsp;outlined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure the storage account as &amp;quot;Blob Storage&amp;quot;, not general purpose&lt;/li&gt;
&lt;li&gt;Production storage accounts should always be on a &amp;quot;Hot&amp;quot; tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a id="Migrating_Your_Files_to_Azure" name="Migrating_Your_Files_to_Azure"&gt;&lt;/a&gt;Migrating Your Files to Azure&lt;/h4&gt;
&lt;p&gt;If you are currently running version 10.3 or higher and you already have an existing community that uses the default local file system for file storage&amp;nbsp; you can [[How Do I Migrate My Existing File Storage to Azure?|migrate files to Azure]].&lt;/p&gt;
&lt;h4&gt;&lt;a id="CDN" name="CDN"&gt;&lt;/a&gt;CDN&lt;/h4&gt;
&lt;p&gt;It is highly recommend you place your storage account behind a CDN.&amp;nbsp; CDNs offer expanded capabilities and features such as compression that blob storage directly does not.&amp;nbsp; You can create a new CDN end point directly from the storage account itself.&amp;nbsp; Be sure to note the endpoint url for later use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:&amp;nbsp; At the time of publication, the Standard Akamai CDN was not compatible with Telligent Community.&amp;nbsp; &amp;nbsp;Please select one of the alternative solutions such as standard Verizon.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;Search&lt;/h3&gt;
&lt;p&gt;As noted previously, search currently does not utilize any Azure specific services or features.&amp;nbsp; It must be installed on a windows virtual machine powerful enough to handle the search traffic and enough disk space to store the search index.&amp;nbsp; This&amp;nbsp; server should never be accessible over the internet publicly.&amp;nbsp; It does however have to be accessible to the WebApp and Jobs.&lt;/p&gt;
&lt;p&gt;Because search is run on a virtual machine, its installation is no different than installing it on a windows machine on-premise and those instructions should be consulted.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Deployment" name="Deployment"&gt;&lt;/a&gt;Deployment&lt;/h2&gt;
&lt;h3&gt;&lt;a id="Preparation" name="Preparation"&gt;&lt;/a&gt;Preparation&lt;/h3&gt;
&lt;p&gt;It is assumed at this point you have you created the infrastructure as defined above and have all the components in place.&amp;nbsp; &amp;nbsp;If not please review the required components again and setup as necessary.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Configure_Connection_Strings" name="Configure_Connection_Strings"&gt;&lt;/a&gt;Configure Connection Strings&lt;/h4&gt;
&lt;p&gt;If you are used to on-premise installations you are familiar with having to setup connection strings in the connectionstrings.config&amp;nbsp; file.&amp;nbsp; In an Azure deployment all the connection strings are stored as part of the&amp;nbsp;WebApp and configured in the portal.&amp;nbsp; Access the &lt;span&gt;WebApp&amp;#39;s&amp;nbsp;&lt;/span&gt;&amp;nbsp;Application settings and locate the connection strings section.&amp;nbsp; &amp;nbsp;You need to add and configure the keys below.&lt;br /&gt;&lt;br /&gt;***DO NOT SET the Slot setting for any key.&amp;nbsp; It should remain unchecked&lt;/p&gt;
&lt;table height="246" width="524"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteSqlServer&lt;/td&gt;
&lt;td&gt;The connection string value of the SQL Database.&amp;nbsp; You can obtain this from the connection strings area of the SQL database itself.&amp;nbsp; Be sure to substitute the correct name and password.&lt;/td&gt;
&lt;td&gt;SQL Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBus&lt;/td&gt;
&lt;td&gt;The connection string to the service bus you configured.&amp;nbsp; It can be copied from the access keys area of the service bus instance.&lt;/td&gt;
&lt;td&gt;Service Bus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureServiceBusTopic&lt;/td&gt;
&lt;td&gt;A user defined string that will be used as the topic in the service bus.&amp;nbsp; A good value to use is the name of your community.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AzureFilestorageContainer&lt;/td&gt;
&lt;td&gt;The connection string of the storage account created for CFS.&amp;nbsp; It can be copied from the access keys area of the storage account instance.&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchContentUrl&lt;/td&gt;
&lt;td&gt;The url that points to the search index.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-content/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SearchConversationsUrl&lt;/td&gt;
&lt;td&gt;&lt;span&gt;The url that points to the search index for conversations.&amp;nbsp; It should be http://[solrvm]:8983/solr/telligent-conversations/&amp;nbsp; where [solrvm] should be replaced with the IP or DNS name or your search virtual machine&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT:&amp;nbsp;&lt;/strong&gt; If you are running the web job as part of of the main WebApp, then you needn&amp;#39;t set up separate connection strings.&amp;nbsp; &amp;nbsp;However if you chose to run the web jobs in their own dedicated &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;, you will need to also set these connection strings up on that &lt;span&gt;WebApp&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;a id="Prepare_Web_and_Job_Files_For_Deployment" name="Prepare_Web_and_Job_Files_For_Deployment"&gt;&lt;/a&gt;Prepare Web and Job Files For Deployment&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Locate your&amp;nbsp;Telligent Community Installation Package and be sure the .zip file is unblocked.&amp;nbsp; Extract the zip file.&lt;/li&gt;
&lt;li&gt;Locate the Azure deployment zip file you obtain from Telligent Support.&amp;nbsp; Ensure it is unblocked after download and extract it.&lt;/li&gt;
&lt;li&gt;In&amp;nbsp;the Azure package, copy the contents of Web Folder to the Telligent Community package&amp;#39;s web folder.&lt;/li&gt;
&lt;li&gt;In The Azure package,&amp;nbsp;&lt;span&gt;copy the contents of&amp;nbsp;JobServer Folder to the Telligent Community package&amp;#39;s&amp;nbsp;JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Edit the communityserver_override.config file in the Telligent Community web package and un-comment the 2 override nodes for the filestoragegroup.&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;If you are using a CDN for your storage account, edit the fileStoreGroup&amp;nbsp; node with the name or &amp;quot;Azure&amp;quot; by adding the attribute cdnUrl and a value equal to the url of your cdn like below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="xml"&gt; &amp;lt;Override xpath=&amp;quot;/CommunityServer/CentralizedFileStorage&amp;quot; mode=&amp;quot;add&amp;quot; where=&amp;quot;end&amp;quot;&amp;gt;
  &amp;lt;fileStoreGroup name=&amp;quot;Azure&amp;quot;
      default=&amp;quot;true&amp;quot; 
      type=&amp;quot;Telligent.Evolution.Azure.Filestorage.AzureBlobFilestorageProvider, Telligent.Evolution.Azure.Filestorage&amp;quot;
	  cdnUrl=&amp;quot;https://yourcdn.azureedge.net&amp;quot;
      /&amp;gt;
 &amp;lt;/Override&amp;gt;  &lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Repeat step 5 for the communityserver_override.config file in the Telligent Community package&amp;#39;s Job Server folder, or if this is the only override you can simply copy the web version into the JobServer folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="Installation" name="Installation"&gt;&lt;/a&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;/h2&gt;
&lt;h4&gt;&lt;a id="Database" name="Database"&gt;&lt;/a&gt;&lt;span&gt;Database&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Previously you had already created a new dedicated database, setting up your community database is no different than an on-premise installation.&amp;nbsp; &amp;nbsp;Connect to the database using the tool of your choice that will allow you to execute SQL scripts and do the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;In the Telligent Community Installation package&amp;nbsp;execute&amp;nbsp;&lt;em&gt;Install.sql.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;Once the install script has finished with no errors, set up your community by executing the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="sql"&gt;EXECUTE[dbo].[cs_system_CreateCommunity]
    @SiteUrl = N&amp;#39;http://yoursite.com&amp;#39;,
    @ApplicationName = N&amp;#39;telligent&amp;#39;,
    @AdminEmail = N&amp;#39;notset@localhost.com&amp;#39;,
    @AdminUserName = N&amp;#39;temporary-admin&amp;#39;,
    @AdminPassword = N&amp;#39;[PUT A TEMPORARY PASSWORD HERE]&amp;#39;,
    @PasswordFormat = 0,
    @CreateSamples = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;NOTE: As with an on-premise installation, the temporary-admin account should be removed after you have created an alternate administrative account via the community itself for security purposes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;a id="Job_Server" name="Job_Server"&gt;&lt;/a&gt;Job Server&lt;/h4&gt;
&lt;p&gt;Using a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s JobServer folder &lt;span&gt;&amp;nbsp;[site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&amp;nbsp;&lt;/span&gt;to the WebApp&amp;#39;s job folder.&amp;nbsp; &amp;nbsp;You will be prompted to override the command file as you uploaded it to create the job, this ok or you can skip it.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Web_Site" name="Web_Site"&gt;&lt;/a&gt;Web Site&lt;/h4&gt;
&lt;p&gt;Similar to job server,&amp;nbsp;u&lt;span&gt;sing a deployment method of your choice&amp;nbsp; such as FTP, deploy the contents of the Telligent Community package&amp;#39;s Web folder [site/wwwroot] to the WebApp&amp;#39;s site&amp;nbsp; folder.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a id="Search" name="Search"&gt;&lt;/a&gt;&lt;span&gt;Search&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;As mentioned previously, because&amp;nbsp;you are installing search on a windows VM, its installation is the same as on-premise installations.&amp;nbsp; &amp;nbsp;See the search installation section of [[How do I install Telligent Community?|How Do I Install Telligent Community?]].&amp;nbsp; &amp;nbsp;Remember your VM will need to have a Java JRE installed (8+).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;:&amp;nbsp;&lt;strong&gt; Search cannot be publicly accessible.&lt;/strong&gt;&amp;nbsp;&amp;nbsp;You will need to configure your environment in such a way as to allow communication from the WebApp to the search VM on its virtual network&amp;nbsp;while ensuring that any public traffic is being blocked to the VM itself.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Upgrading" name="Upgrading"&gt;&lt;/a&gt;&lt;span&gt;Upgrading&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;You must bring your community down completely to upgrade.&amp;nbsp; You cannot rely on slot deployments or upgrading single nodes at a time.&amp;nbsp; &amp;nbsp;The database and ALL web files must be updated for your community to function.&amp;nbsp; &amp;nbsp;Failure to do this could result in instability, data corruption or failure of your installation.&amp;nbsp; Run backups of all components for safety.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Repeat the section &lt;strong&gt;Prepare Web and Job Files for Deployment&lt;/strong&gt; to get the new package ready.&amp;nbsp; &amp;nbsp;Instead of re-manipulating the community_server.config file, you can simply back up the existing one and use it instead.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the Web job for the job server.&amp;nbsp; DO NOT Rely on shutting down the web app to shut it down.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;STOP the WebApp&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using FTP or another deployment option, clear the contents of the [site/wwwroot/App_Data/jobs/continuous/[Web job Name]]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Using&amp;nbsp;FTP or another deployment option, clear the contents of the [site/wwwroot] folder leaving the App_Data folder in tact.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Connect to your database using a tool of your choice and execute the Upgrade.sql file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the job the same was as you did in the Job Server section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Re-Install the web files the same was as you did in the&amp;nbsp;Web Files&amp;nbsp;section of the Installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Restart the WebApp and Web Job&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>