Part 1 – The Basics
Part 2 – User Interface
Part 3 – Triggers
Part 4 – Timer Jobs
Part 5 – Configuration Overview
Part 6 – Configuration Internals
Part 7 – Variation Hierarchy Creation
Part 8 – Creating Page Variants
Part 9 – Creating Site Variants
Part 10 – Restructuring the Hierarchy
Part 11 – Variations Fixup Tool
Part 12 – Customization
Part 13 – Logging
Part 14 – Troubleshooting
Part 15 – “View Changes” Button
Part 16 – Translation Support
Part 17 – MOSS 2007 vs. SP 2010
Part 18 – FAQ
In the previous part I have provided an overview about the configuration settings available in SharePoint 2010 related to Variations.
Today I will provide you additional information about where these configuration settings are stored and in this context also about the famous Relationships List.
Configuration Storage
Important: Be aware that direct modification of the settings mentioned below without going through the SharePoint UI is not supported! If you find an inconsistency in one of these settings and you cannot resolve it using the UI you should open a support case with Microsoft to get the issue analyzed and fixed in a supported manner. |
The variation system uses seven different places to store configuration information
- Property bag of root site of site collection
- Property bag of root folder of root site of site collection
- Property bag of root folder of Relationships List
- List Items in Relationships List
- List Items in Variation Labels List
- Property bag of sites in the Variation Hierarchy
-
Fields of pages in the Variation Hierarchy
Here are the details about the information stored in these locations:
Property bag of root site of site collection
This location is used to describe the location of the Relationships List and the Variation Labels list. The following properties are used by the variation system:
_VarRelationshipsListId
This property contains the unique ID of the Relationships List. Most code parts in the Variation System use the value in this property to access the Relationships List rather than the Url name.
_VarLabelsListId
This property contains the unique ID of the Variation Labels List. The Variation System always uses the value in this property to access the Variation Labels list.
Property bag of root folder of root site of site collection
This location is used to synchronize the interactions of content deployment import operations and the variation system. The following property is used by the variation system:
DeploymentInProgress_SiteId
This property exists while a content deployment job performs an import operation into the current site collection is active. After the import is completed the property will be removed. The variation system checks this property in context of autospawning of created pages and sites. Authoring actions during import operations are discouraged as sites and pages created by authors while an import operation is running will not be automatically spawned to the target sites.
Note: Parallel execution of content deployment imports can cause a problem, as the first finishing job will clear this property. |
Property bag of root folder of Relationships List
This is the place where most of the configuration settings configured in the Variation Settings page are stored.
UpdateWebPartsPropertyName
This property stores the configuration setting for the “Update Target Page Web Parts” option on the variation settings page.
Default Value: True
AutoSpawnStopAfterDeletePropertyName
This property stores the configuration setting for the “Recreate Deleted Target Page” option on the variation settings page. Default: False
SourceVarRootWebTemplatePropertyName
This property stores the configuration setting site template to be used for the top sites of each label. This setting is configured when defining the source label rather than in the variation settings page.
Default Value: CMSPUBLISHING#0
CopyResourcesPropertyName
This property stores the configuration setting for the “Resources” option on the variation settings page.
Default: False
EnableAutoSpawnPropertyName
This property stores the configuration setting for the “Automatic Creation” option on the variation settings page.
Default: True
SendNotificationEmailPropertyName
This property stores the configuration setting for the “Notification” option on the variation settings page.
Default: True
DisableAutomaticPropagation
This property can be used to disable automatic variation of content changes and new pages to the target labels. If this property is set to True then the only way to vary content changes to the target pages is through a manual update in the UI. This setting can only be configured using object model.
Default: False
TranslateFields
This property is used when leveraging external translation services to flag specific columns to be translatable. The information about the translatable fields are stored in this property in Xml format. Translatable columns are covered in Module 10.
List Items in Relationships List
Variation Root Site URL
This URL is stored as a hyperlink in the ObjectId link field in a list item in the relationships list. The item is identified by a well-known Guid (F68A02C8-2DCC-4894-B67D-BBAED5A066F9) in the GroupId column.
Note: Storing the variation root in a link field has the benefit that it is possible to move around the variation root using Site Manager. The link management feature of site manager will automatically adjust all links to the moved item – including the link in the Relationships List. The same benefit applies to all peered sites and pages. Moving them around using site manager will not break the relationship link and further updates to the pages will be propagated to the moved target pages automatically. |
List Items in Variation Labels List
Each list item in the Variation Labels list represents a label configured for variations.
Property bag of sites in the Variation Hierarchy
To efficiently link sites to their peers, it is necessary to store some information within the property bag of the Publishing sites:
Variation Group Id
The Id of the Variation Group assigned to the site and its peers.
Fields of Pages in the Variation Hierarchy
To efficiently link pages to their peers, it is necessary to store some information within special fields of the Publishing Pages:
Variation Relationship Link
The variation system stores the URL to the associated list item in the Relationships List the “Variation Relationship Link” field of the publishing page. More details about the Relationships List in the next section.
Variation Group ID
The Id of the Variation Group assigned to the page and its peers.
Relationships List
SharePoint needs to keep track of the associations between sites and pages in the different variation labels to ensure that changes done to the source variation are automatically propagated to the target labels.
This association data is kept in a hidden list in the root of the site collection named Relationships List.
You can view the content of this list by navigating to the following URL:
http://url-to-site-collection/Relationships%20List
The “All Items” view only contains the Title column of the list elements – which is always empty.
To view the content in this list more effectively you should create a new view (you should not change the “All Items” view) where all the columns are enabled.
To identify which of the entries are variation peers have a look at the GroupGuid column. All peers have the same Id in the GroupGuid column.
Note: The variation root site is also represented in the Relationships List. The GroupGuid column for the variation root site always has the value “{F68A02C8-2DCC-4894-B67D-BBAED5A066F9}”. The Variation retrieves the list item with this well-known Guid above to locate the variation root site |
Important Fields
GroupGuid
This field allows to find peers for a given page. All peers have the same GroupGuid value.
In addition, a well-known Guid in this GroupGuid value identifies the variation root site.
ObjectID
This is a link field. The hyperlink in this link field points to the associated site or item in the variation hierarchy. The text value of the field represents the location of the item when it was first added to the variation hierarchy.
ParentAreaID
The content of this field is currently not used by the variation system.
This is a link field. The hyperlink in this field points to the parent area of the associated item when it was first added to the variation hierarchy. The hyperlink and text value is not updated when the associated item or site is moved to another site in the hierarchy.
This field is empty for the variation root site.
LastPropagatedSourcePageVersion
This text field is empty if the list item represents an element in the source variation hierarchy or a site in a target hierarchy. If the list item represents a document in the target label it will contain the version of the item in the source label used to propagate this target item.
Deleted
This field is used to track whether a variant of an item has been deleted in a label to prevent it from being recreated if the user configured “Recreate Deleted Target Page” to false.
Variation Labels List
The Variations Labels list is used to store the settings for the different variation labels.
Note: When you try to navigate to the Variation Labels list, you will notice that you get redirected to the Variation Labels management page. |
Each variation label is represented by one list item in the variation labels list and the configuration for each label is stored in the fields of the list item.
Important Fields
Label (StaticName: Title)
This text field contains the Name of the label, which is used for the URL to the top site.
Flag Control Display Name
This text field contains the Title of the variation top site. This value is also use in the Microsoft.SharePoint.Publishing.WebControls.VariationDataSource class, which can be used to implement navigation between the variation labels. I will discuss this in more details in a later part.
Hierarchy Is Created
This Yes/No field is No at the beginning and changed to Yes by the CreateVariationHierarchiesJobDefinition timer job after the hierarchy for the label has been created.
Is Source
This Yes/No field defines whether the label represented by this list item is a source or target label.
Language
This text field contains the configured language (selected language pack) configured for the label.
Locale
This text field contains the configured locale for the label.
Top Web URL
This Link field contains the link to the top site of the variation label. This field is filled by the CreateVariationHierarchiesJobDefinition timer job after the top site for the label has been created.
Hierarchy Creation Mode
This Choice field contains the information what to do when the variation hierarchy for the label is created. The following options are available:
Publishing Sites and All Pages
This option will create the top variation site for the label and will replicate the site structure and all pages created in the source label to the target label.
Publishing Sites only
This option will create the top variation site for the label and will replicate the site structure of the source label to the target label. Pages, which are not part of the site template, are not replicated.
Note: Be aware that this method will also create all lists and documents, which are defined in the site template of the source site as the replication to the target label uses normal SharePoint provisioning methods using the same template to create the site in the target label. However, the content of the pages created in the target label will not be sync’d with the items from the source label. |
Root Sites Only
This option will only create the top variation site for the label.
Permalink
Hi,
great article. Only I have one questions about it. Synchronize Masterpage also from the source to the target?
sk
Permalink
Master pages have to live in the root site of the site collection – so they don't have to be synchronized. In case you mean master page settings for the sites: Variations allows to use different master pages for different labels to allow a different look in feel in the different labels.
Permalink
Hi,
Great article! Only I have questions about it. I have problems when propagate sites that are created from template of publishing site, in this case, happen because Relationships List isn't updated?
Permalink
Hi Edson,
creating templates from publishing sites and creating new publishing sites from these templates is unsupported and many different things break in this scenario. The only way to get back to a supported Environment is to delete all sites created from These templates.
Cheers,
Stefan
Permalink
As Stefan Goßner approved there is a wording issue in the section "Fields of Pages in the Variation Hierarchy". Here's the correct wording:
"The variation system stores the URL to the associated list item in the Relationships List IN the "Variation Relationship Link" field of the publishing page. More details about the Relationships List in the next section."
As a german I was thinking for a loooong time about this sentence. So let me make it a little bit clearer for guys like me. 🙂
It's a field that contains an URL to the Relationships List item that is associated with this page.
Permalink
Hi Stefan,
We are seeing column "Variation Group ID" in all content types (content types are associated with Page Library) and showing "Variation Group ID" value when page properties are edited.
Any way to make the column "Variation Group ID" disappear / remove in content types?
Permalink
Hi Naveen,
this column is what Varations uses to find peer pages. Removing this column would kill variations.
Cheers,
Stefan
Permalink
Hi Stefan,
Normally,Fields of Pages in the Variation Hierarchy should not appear in all content types.
I could see in Content types (only in Variation site). Any way to make not to show in Content types? Where could see these columns configurations?
Permalink
Hi Stefan,
We are also facing similar issue in few variation sites, "Variation Relationship Link" and "Variation Group ID" columns are showing as editable columns in Page Edit properties.
These columns are showing as associated with all content types only when we click on content type in Pages library settings. But, when we verify content type’s in top level site collection, no column’s association found. What is the way to disassociate these
columns from content types?
Permalink
Hi Maru,
I would suggest to open a support case to investigate this.
Cheers,
Stefan
Permalink
Same for Naveen.
Permalink
Hi Stefan, we have a SharePoint 2013 publishing site, and we have turned ON the variation feature with auto synch. Now the business is asking to remove all the target labels and provision only few with manual synch. SO we deleted all existing variations
and trying to create manual target labels. Problem which we are acing is that the source sites which have custom sharepoint apps installed those are NOT creating the target label (the target site is getting created though)….and when we try to recreate the
target label by installing those apps in target we get a message saying the target site already exist because in first place the target site was created but the link was not there….really struggling right now and we are running against the time..
Permalink
This was raised and MS accepted as bug – https://support.microsoft.com/en-us/kb/3085492
Bug is that if a sharepoint hosted app has a client part then it used to never copy into the target variation. This was fixed in November CU.
Thanks
Manu
Permalink
Hi Stefan,
Thanks for awesome article.
I would like to update Label Contact under Target Label Behavior in Variation labels using CSOM in sharepoint 2013. COuld you please help us that how it could be achieved. Thanks!!
Permalink
I found the solutions and below code worked for me.
Guid varListId = new Guid(rootWeb.AllProperties[“_VarLabelsListId”] as string);
SPList varList = rootWeb.Lists[varListId];
SPListItemCollection itemcol = varList.Items;
foreach(SPListItem item in itemcol )
{
item.Properties[“LabelOwner”] = “domain\\username”;
}