Walkthrough: Configuring EXM in a scaled environment

Last updated Monday, May 23, 2016 in Email Experience Manager for Developer, Administrator

If your Sitecore solution works in a scaled environment, you must configure the Email Experience Manager (EXM) module to work in this environment.

A scaled environment usually consists of one content management server, and one or more content delivery server(s). You can configure servers for a specific purpose (for example, content management, content delivery, or processing) by enabling or disabling the relevant configuration files on each Sitecore instance.

In the standard multiserver Sitecore environment, all the content management and content delivery instances share the Core and Web databases, and all the content management instances share the Master database. This means that you have to use the same connection strings to the databases for the configuration file of each server.

The following diagram illustrates the connections between the servers and the content databases in a standard multiserver Sitecore setup:

exm_Sitecore_Scaled_Environment.png

A multiserver environment also shares the collection database (MongoDB) and the reporting SQL Server database.

This walkthrough outlines how to:

Configure a content management server

To configure a content management server:

  1. Install Sitecore Experience Platform and configure it according to the Sitecore scaling recommendations for content management servers.
  2. Add the ecm.dispatch connection string to \App_Config\ConnectionStrings.config:
    <add name="ecm.dispatch" connectionString="mongodb://localhost/ecm_dispatch" /> 
  3. Install the EXM module.

    Important

    The EXM installation package that you download from dev.sitecore.net includes two zip packages: the Email Experience Manager and Email Experience Manager – CD packages. Do not use the CD package on the content management server.

  4. Run the Sitecore.EmailCampaign.sql script against the reporting database.
  5. For each content delivery server, in the manager root, set the Base URL setting to the URL of the content delivery server.
  6. Publish the Master database on all the content delivery servers.

Configure a content delivery server

To configure a content delivery server:

  1. Install Sitecore Experience Platform and configure it according to the Sitecore scaling recommendations for content delivery servers.

    Important

    In the Sitecore.Analytics.Tracking.config file, ensure that the value of the Analytics.ClusterName setting is the hostname of the content delivery server. This is required for a scaled environment to avoid contacts being locked when running EXM. If there is more than one content delivery server in your environment, use the same value for each server.

    In addition, make sure that the content management server can reach the content delivery server through HTTP using the hostname that you have specified in the Analytics.ClusterName setting of the content delivery server.

  2. To configure the connection strings:
    • Add a connection string to the EmailCampaignClientService web service:
    <add name="EmailCampaignClientService" connectionString="url=http://<CMServerHost>/sitecore%20modules/web/emailcampaign/ecmclientservice.asmx;timeout=60000" />
    • Add the ecm.dispatch connection string to \App_Config\ConnectionStrings.config:
    <add name="ecm.dispatch" connectionString="mongodb://localhost/ecm_dispatch" /> 
  3. Add the following setting to the Sitecore.Analytics.config file:
    <setting name="Analytics.DefaultDefinitionDatabase" value="web" />
  4. Install the relevant Email Experience Manager – content delivery package.

    Note

    To be able to install the package, ensure that you have not removed or restricted access to the client as described in the content delivery server configuration steps.

    To find the Email Experience Manager – CD package, download the relevant EXM installation package from dev.sitecore.net and unzip it.

    If the content delivery server does not have a client interface or you restricted access to the client, copy the following files and folders manually:

    • \App_Config\Include\Sitecore.EmailCampaign.config
    • \App_Config\Include\Sitecore.EmailCampaign.Xtune.CD.config
    • \bin\Sitecore.EmailCampaign.dll
    • \bin\Sitecore.EmailCampaign.Analytics.Model.dll
    • \layouts\EmailCampaign\*
    • \sitecore\AutomationStates.ashx
    • \sitecore\ConfirmSubscription.aspx
    • \sitecore\ContactLists.ashx
    • \sitecore\RedirectUrlPage.aspx
    • \sitecore\Unsubscribe.aspx
    • \sitecore\UnsubscribeFromAll.aspx
    • \sitecore\RegisterEmailOpened.aspx
    • \xsl\EmailCampaign\*

Configure a processing server

To configure a processing server for Analytics data processing and aggregation:

  1. Install Sitecore Experience Platform and configure it according to the Sitecore scaling recommendations for processing servers.
  2. Copy the following files from the content management server to the processing server:
    • \App_Config\Include\Sitecore.EmailCampaign.config
    • \bin\Sitecore.EmailCampaign.dll
    • \bin\Sitecore.EmailCampaign.Analytics.Model.dll
  3. Copy and enable the Website\App_Config\Include\Sitecore.EmailCampaign.Xtune.Processing.config file.
  4. Add the ecm.dispatch connection string to \App_Config\ConnectionStrings.config:
    <add name="ecm.dispatch" connectionString="mongodb://localhost/ecm_dispatch" />

Configure a reporting server

To configure a reporting server:

  1. Install Sitecore Experience Platform and configure it according to the Sitecore scaling recommendations for reporting servers.
  2. Copy the following files from the content management server to the reporting server:
    • \App_Config\Include\Sitecore.EmailCampaign.config
    • \bin\Sitecore.EmailCampaign.dll
    • \bin\Sitecore.EmailCampaign.Analytics.Model.dll
    • \bin\Sitecore.EmailCampaign.Statistics.dll
  3. Copy and enable the Website\App_Config\Include \App_Config\Include\Sitecore.EmailCampaign.Xtune.CD.config file.
  4. Add the ecm.dispatch connection string to \App_Config\ConnectionStrings.config:
      <add name="ecm.dispatch" connectionString="mongodb://localhost/ecm_dispatch" />

Configure the List Manager

To configure the List Manager to use the list management functionality in a scaled environment:

  1. Disable the List Manager on every instance except for the content management instance. To disable the List Manager, disable all the configuration files in the App_Config\Include\ListManagement folder.
  2. On the content management instance, disable the following configuration files in the App_Config\Include\ListManagement folder:
    • Sitecore.ListManagement.Lucene.IndexConfiguration.config
    • Sitecore.ListManagement.Lucene.Index.List.config
  3. On the content management instance, enable the following configuration files in the App_Config\Include\ListManagement folder:
    • Sitecore.ListManagement.Solr.Index.List.config.disabled
    • Sitecore.ListManagement.Solr.IndexConfiguration.config.disabled
  4. On your Solr server instance, create an additional Solr core for the List Manager index. The core must have a unique name.
  5. In the Sitecore.ListManagement.Solr.Index.List.config file, in the <param desc="core"></param> element, specify the name of the Solr core created in the previous step.
Send feedback about the documentation to docsite@sitecore.net.