Keeping SharePoint lists synced across Site Collections

Posted: November 21st, 2011 | Author: | Filed under: sharepoint, work | No Comments »

One of the problems we have encountered at $work is keeping lists synced across site collections. Due to the way our SharePoint Foundation instance was set up, many of the business units have their own site collections.

We have a number of master lists which need to be available across these site collections – a requirement which is not supported by SharePoint Foundation. The solution was to create duplicate instances of each of these lists – one instance in each site collection. This introduces a new problem – the lists can quickly become divergent. This isn’t what is wanted for critical, master data.

After much experimentation and deliberation we settled on the following solution:

  • A parent master list was created in the primary site collection – call this List A. Two child master lists were created – one in each of the site collections. Call them List B and List C.
  • Two columns where added to List A. They contained the id of the matching item on Lists B & C respectively.
  • The Advanced Workflow Actions for SharePoint Designer 2010 package by ilovesharepoint, available on codeplex, was installed. This great package includes actions to both Call a Web Service and to Request an HTTP Service.
  • A workflow was created to fire whenever an item is added to List A. This workflow will call the lists.asmx web service on List B, add the item, get the id of the created item and add that into the List B id column in List A. This is repeated for List C.
  • A second workflow was created to fire whenever an item in List A is updated. This workflow will update the matching item in Lists B & C using the id stored in List A, again using the web service.

By doing this, we’re able to make the data both available to as many site collections as needed whilst maintaining consistency and accuracy.