icon SQL Azure Scale-Out
Created by Orckestra

C1 CMS Versions supported

This package requires CMS version 6.1 or newer (Build: 6.1.6325.31805).

Launch the CMS Console, then open the top menu item “Help” and click “About C1 CMS”.
Note. Along with the package installation, you need to take a few pre- and post-installation steps (see below).

Pre-Installation Steps

  1. Use C1 CMS version 4.2 Update 2 or later.
  2. Deploy the website on Microsoft Azure.
  3. Convert the XML-based website into an SQL-based one.

Important Notes:

  1. Consider using a C1 CMS Azure service package with the "Small" or larger web role.
  2. To be able to work in the CMS Console of the website, consider allowing write-backs on the website:
    <Runtime writeback="true" websiteType="composite-c1" />
  3. Start with a 1-instance deployment. After you have configured the scaled-out solution, you will be able to increase the number of instances in the Microsoft Azure management portal.

Installation steps

  1. Log into the CMS Console as an administrator.
  2. Go to the "System" perspective.
  3. Open the folders “Packages” | “Available Packages” | " Composite.Azure".
  4. Select " Composite.Azure.ScaleOut" and click “Install”.
  5. Complete the wizard.

Post-Installation Steps

After installing the package, you should:

  1. Configure media files synchronization.
  2. Configure data changes synchronization.

Once you've configured the synchronization within your scaled-out setup, you may want to check the logs for synchronization errors to make sure that everything is working properly.

Configuring media files synchronization

Before you configure media files synchronization, you, first of all, need to create a container in Azure blob storage. This is where the scaled-out Orckestra CMS Website will store its media files (instead of ~/App_Data/Media):

  1. Log into the Microsoft Azure management portal.
  2. Choose an existing blob storage account or, if needed, create a new one.
  3. Add a storage container (for example, "c1mediafiles") where media files will be stored
  4. Make sure the container has the Private access.
  5. Make a note of, or copy, the storage account name and storage access key. You'll be using these values when specifying the blob connection string (see below).

Then, add the connection string to Web.config:

  1. Edit ~/Web.config.
  2. Add the blob storage connection string with some name, for example, "c1media":
<configuration>
  <!-- skipped -->
  <connectionStrings>
    <!-- skipped -->
	<add name="c1media" 
connectionString="DefaultEndpointsProtocol=https;AccountName=[AccountName];AccountKey=[AccessKey]" />
  </connectionStrings>
</configuration>
where:
  • [AccountName] is the name of the Azure storage account
  • [AccessKey] is the access key to the storage account

Finally, replace the default media provider in Composite.config with an Azure media provider using the name of blob connection string you've just added:

  1. Edit ~/App_Data/Composite/Composite.config.
  2. Search for name="MediaFileDataProvider" to locate the default media provider.
  3. Comment out this media file provider.
  4. Add a reference to AzureMediaProvider as shown below:

<configuration>
  <!-- skipped -->
  <Composite.Data.Plugins.DataProviderConfiguration defaultDynamicTypeDataProviderName="…">
    <DataProviderPlugins>
      <!-- skipped -->
      <!-- <add rootDirectory="~/App_Data/Media" 
		storeId="MediaArchive"
		storeDescription="Media Archive Files"
		storeTitle="Media Archive"
		type="Composite.Plugins.Data.DataProviders.MediaFileProvider.MediaFileProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null"
		name="MediaFileDataProvider" /> -->
	  
      <add rootDirectory="~/App_Data/Media" 
	    storeId="MediaArchive" 
		storeDescription="Media Archive Files" 
		storeTitle="Media Archive" 
		type="Composite.Azure.ScaleOut.AzureMediaProvider.AzureMediaDataProvider, Composite.Azure.ScaleOut.AzureMediaProvider" 
		name="MediaFileDataProvider" 
		blobStorageConnectionStringName="[BlobConnectionStringName]" 
		blobContainer="[BlobContainerName]" />
    </DataProviderPlugins>
</configuration>
where:

  • [BlobConnectionStringName] is the name of the blob connection string added in Web.config (see above).
  • [BlobContainerName] is the name of the container created in the blob storage (see above).

For example:

<add … 
  blobStorageConnectionStringName="c1media" 
  blobContainer="c1mediafiles" />

Configuring data changes synchronization

Before you configure data changes synchronization, you should create a service bus on Microsoft Azure, if needed, and get its connection string:

  1. Log into the Microsoft Azure management portal.
  2. Choose an existing service bus or, if needed, create a new one.
  3. Make a note of, or copy, the service bus connection string you'll need next.
Note. When adding a service bus, make sure that the "Messaging Tier" parameter is set to "Standard" (not "Basic") because the package is using the “Topics” feature of the Service Bus.
Note. There are two types of service bus connection strings: SAS and ACS. You can use either.


When being installed, the package adds two application settings to Web.config.

<configuration>
  <!-- skipped -->
  <appSettings>
     <add key="Composite.Azure.ScaleOut.DataCacheFlusher.ServiceBus.ConnectionString" 
value="Endpoint=sb://[yourServiceNamespace].servicebus.windows.net/;SharedSecretIssuer=[issuerName];SharedSecretValue=[yourDefaultKey]" />
     <add key="Composite.Azure.ScaleOut.DataCacheFlusher.DataProviders" 
value="DynamicSqlDataProvider" />
   </appSettings>
   <!-- skipped -->
</configuration>
You need to make sure that they are properly configured:

  1. Edit ~/Web.config.
  2. Set the service bus connection string in the "Composite.Azure.ScaleOut.DataCacheFlusher.ServiceBus.ConnectionString" setting. For example:
    <add 
      key="Composite.Azure.ScaleOut.DataCacheFlusher.ServiceBus.ConnectionString" 
      value="Endpoint=sb://mysrvbus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gkTvceSqsUAx+okXzOG8WKCOJ9MflR/cx0ZBwyA0QW0=" />
  3. Keep the "Composite.Azure.ScaleOut.DataCacheFlusher.DataProviders" setting unchanged - if you are using the default SQL data provider named "DynamicSqlDataProvider".

In general, the "Composite.Azure.ScaleOut.DataCacheFlusher.DataProviders" setting contains a comma separated list of data providers for which the cache flush notification should be enabled. By default, on an SQL-based Orckestra CMS Website, the SQL data provider named "DynamicSqlDataProvider" is used. That's why normally this setting will be kept unchanged.

Finally:

  1. Log into the CMS Console of the website.
  2. In the System perspective, open the server log.
  3. Make sure there are no errors related to the work of the package and synchronization.

Version info

Current version
1.0.3
Package ID
af6932ba-44d6-472c-928b-0c9d4b05e2e2
Part of subscriptions:

Have a question?

Phone: +45 39 15 76 00
Email: Write us
4:01 PM
(Local time at HQ)