Watch your IDTables when upgrading

Recently after a major Sitecore upgrade, we ran into issues with items that have been synced from a DAM through a data provider. These items suddenly had different Guids than before which led to many broken links.

The reason for this took some time to figure out:

This dataprovider was using the IDTable to maintain consistent Guids. While on the old version, the IDTable was stored in the master database, on the new CM server, it was pointing to the web database.

<!--  ID TABLE  -->
<IDTable type="Sitecore.Data.SqlServer.SqlServerIDTable, Sitecore.Kernel" singleInstance="true">
<param connectionStringName="web"/>
<param desc="cacheSize">2500KB</param>
</IDTable>

The reason for this lies in the roles-based configuration.

<add key="role:define" value="ContentManagement" />

Checking through the different configurations i find the configs as follows:

Role IDTable points to
Standalone master
ContentManagement web
Processing master
Reporting master
ContentDelivery web

The config for the ContentManagement role seems like a bug to me. We patched our config accordingly to have the IDTable saved in master again for this role.

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/">
  <sitecore role:require="ContentManagement">
	<IDTable type="Sitecore.Data.$(database).$(database)IDTable, Sitecore.Kernel" singleInstance="true">
		<param connectionStringName="web">
			<patch:attribute name="connectionStringName">master</patch:attribute>
		</param>
	</IDTable>
  </sitecore>
</configuration>

Look out when you are upgrading or switching roles in conjunction with DataProviders! I hope this saves you some time.


Leave a Reply

Your email address will not be published. Required fields are marked *