Press enter to see results or esc to cancel.

Configuring server roles

I have invested a lot of time lately in configuring different server roles and trying to see structure in the Sitecore documentation concerning server role configuration, which can be found here (…)/xdb_configuration/configuring_servers. Mind that the documentation behind this link constantly changes, so I cannot guarantee that my blog will stay consistent with it, but at least for now it is. Actually, that is one of my largest concerns considering this topic: there’s only a version toggle on the top right between 8.0 and 8.1, but when working on it for a few weeks I saw it changing, without any chance logs or notifications. It is hard to make up if you need to update your Sitecore implementations based on those silent updates and even harder to keep track of any changes this way. I already sent in a feature request for this.

I intend to do a series on this topic and share my findings, ultimately leading to an easy set of documentation on this. But to be honest, when almost having finished my first blog, it got outdated right away because Sitecore released an update.. I didn’t like the online list of files to disable and to enable, which was already improved by providing the list as an Excel worksheet (which also included numerous fixes like combining path and filename, using backward slashed instead of forward slashes and allowing you to sort on alphabet and on enable/disable if you want). So I will still share as much as possible, but I know Sitecore is working on this too.

onPublishEndAsync strategy

One of the things which turns out to be incomplete or not the full truth, is how to configure the processing server. The following instructions tell you to comment out the onPublishEndAsync strategy containing a reference to the web database, which isn’t available from the processing server: (…)/configuring_servers/configure_a_processing_server.


Upon doing so, your processing server might stop working (strange enough, it didn’t in all cases) while reporting about the following exception:

This isn’t strange at all, because multiple configuration files, that are still enabled on the processing server as indicated by the documentation, list the onPublishEndAsync strategy. I had contact with Sitecore support on this, and however we could not find the reason why it did work on one of our implementations, we concluded that you cannot only remove the strategy, while not removing any references to it.

So, our solution was to remove this strategy from the list in all of the following files as well (inside \Website\App_Config\Include\):

  • FXM\Sitecore.FXM.Lucene.DomainsSearch.Index.Web.config
  • Social\Sitecore.Social.Lucene.Index.Web.config
  • Sitecore.ContentSearch.Lucene.Index.Web.config
  • Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Web.config
  • Sitecore.Marketing.Lucene.Index.Web.config

Here’s an example of an XSL translation for all of these files (the structure is the same on all these Index.Web.config files), if you want to manage this via SlowCheetah from within your solution:

Mind that whenever Sitecore recommends to ‘comment out’ a section within the config files, I rather remove it completely via an XSL translation; and that I also have removed the strategy as indicated by the documentation I showed above.

Analytics.Tracking settings

The content delivery role configuration documentation tells you to add the domain name of your website into the following two settings:


However, after doing so we got the strange behaviour of our website that it spontaneously redirected to another domain upon the first request only. A domain we also had configured (from .nl to .com). A quick chat with Sitecore support lead us to the following knowledge base article saying you shouldn’t populate the HostName setting for this file:

Here, the documentation of and is conflicting.

Ultimately, the following configuration turned out to be working fine, so I would recommend to ignore the HostName configuration as shown above:

A few other notes

Combining server roles

Another puzzle I came across is combining server roles. The documentation does not specifically mention this, nor does it tell you how to do this, but you can combine server roles on one instance by using the following rule: only disable files when both server role configurations tell you to, and always enable configuration files when at least one of the server role configurations command you to do so. Eventually, I have succesfully combined the reporting and the processing roles on one instance, where splitting those roles would be overkill and I rather place reporting together with the processing role than leaving it on the management server in such a setup.


Opposed to the documentation and the comments in the config files itself, the serviceUrl only has to be configured in the Xdb.Remote.Client.config file and not in the two other remote client config files.

What’s next?

Next time I will share my thoughts on how to manage these changes for Sitecore 8.1 and maybe I have some other specific findings to share.

Edit: due to a few good upgrades on this topic from Sitecore regarding their documentation, being a well setup Excel overview of what config should be enabled where, and how to combine these roles, even with the option of choosig between Lucene and Solr, I decided not to do any more blogs on this topic. The most important issues are tackled now.


Comments are disabled for this post

Rob Habraken

Software Engineer, Technology Director, Senior Consultant, Sitecore MVP and overall technology addict. Specialized in web development, Microsoft technology and, of course, Sitecore.

Check out the iO tech_hub, our company tech blog with developer oriented articles about all aspects of web development and digital innovation.