SharePoint Variations – The complete Guide – Part 6 – Configuration Internals

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

  1. Property bag of root site of site collection
  2. Property bag of root folder of root site of site collection
  3. Property bag of root folder of Relationships List
  4. List Items in Relationships List
  5. List Items in Variation Labels List
  6. Property bag of sites in the Variation Hierarchy
  7. 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.

15 Comments


  1. Hi,

    great article. Only I have one questions about it. Synchronize Masterpage also from the source to the target?

    sk

    Reply

  2. 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.

    Reply

  3. 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?

    Reply

  4. 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

    Reply

  5. 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.

    Reply

  6. 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?

    Reply

  7. Hi Naveen,
    this column is what Varations uses to find peer pages. Removing this column would kill variations.
    Cheers,
    Stefan

    Reply

  8. 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?

    Reply

  9. 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?

    Reply

  10. Hi Maru,
    I would suggest to open a support case to investigate this.
    Cheers,
    Stefan

    Reply

  11. 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..

    Reply

  12. 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!!

    Reply

    1. 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”;
      }

      Reply

Leave a Reply to Stefan Goßner Cancel reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.