Finally, SharePoint Variations propagation doesn’t have to erase all labels!

I read the new article today on the ECM blog entry regarding the new Variations features with SharePoint 2010, found at https://blogs.msdn.com/ecm/archive/2010/04/12/variations-in-sharepoint-2010-connecting-people-with-content.aspx, and I’m very happy.

First of all, I had seen the new timer jobs and they are nice to have, and in some case, downright required on sites with large structure.  But what I didn’t know – because it’s not in the interface, doh! – is that there’s a 3rd value for Site & Page propagation dubbed ‘hybrid’.

 

here’s the excerpt for this:

We’ve received feedback that there are often cases in which changes need to be published locally to the source variation site without being propagated to all targets. For instance, if the source variation site has a typo in English, the correction may not be relevant to a target site in German, so if the correction is published in the source page, it can be unnecessarily confusing to copy this changed English version to all target sites.

In SharePoint 2010, we introduce a third, “hybrid” content distribution model:

On-Demand Page Propagation

A setting has been added (configurable through the Object Model) to disable Automatic Page Propagation. When the setting is enabled, publishing or approving a page on the source variation site will not cause that page to be copied to any target variation sites. The "Automatic Creation" setting will be ignored for pages. "Update Variation" and "Create Variation” are the means by which a user can distribute content across the Variation hierarchy on-demand.

I’ll go into more detail on content distribution models in a future post. But so as not to keep you in suspense on how to configure on-demand page propagation, here are the PowerShell commands:

Enable On-Demand Page Propagation:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = new-object Microsoft.SharePoint.SPSite("https://yourserver/sites/abc")
$folder = $site.RootWeb.Lists["Relationships List"].RootFolder
$folder.Properties.Add("DisableAutomaticPropagation", "True")
$folder.Update();

Disable On-Demand Page Propagation:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = new-object Microsoft.SharePoint.SPSite("https://yourserver/sites/abc")
$folder = $site.RootWeb.Lists["Relationships List"].RootFolder
$folder.Properties.Remove("DisableAutomaticPropagation")
$folder.Update();

 

It will eventually make my 2 strategy options (Variation strategy to reduce labels overwrite, Variation Strategy #2 to remove label overwrites – cancel updates!) obsolete.  Now, I’ll need to make a feature of that code and make it more easy to use (unless someone beats me to it, I don’t have time to write it right now Wink).

Do read on the ECM blog, it’s a nice article.