sharepoint variations – the complete guide – part 1 – the...

92
SharePoint Variations – The complete Guide – Part 1 – The Basics ★★★★★ ★★★★ ★★★ ★★ November 14, 2011 by Stefan Goßner // 12 Comments 0 0 0 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 Today I will start a new article series, which will discuss all aspects of the SharePoint Variations feature. The article series will provide insights into the underlying architecture and will also provide details about customization. But before we can start with the internals we first have to start with the basics. The idea behind SharePoint Variations has been implemented to address the following common scenarios: Multilingual sites

Upload: others

Post on 04-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

SharePoint Variations – The complete

Guide – Part 1 – The Basics

★★★★★

★★★★

★★★

★★

November 14, 2011 by Stefan Goßner // 12 Comments

• 0

• 0

• 0

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 Today I will start a new article series, which will discuss all aspects of the SharePoint Variations feature.

The article series will provide insights into the underlying architecture and will also provide details about customization.

But before we can start with the internals we first have to start with the basics.

The idea behind SharePoint Variations has been implemented to address the following common scenarios:

Multilingual sites

Page 2: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Many companies operate globally, and even in their home market, companies often must appeal to customers who speak different languages. This diversity often requires that publishing sites be tailored for different cultures, markets, and geographic regions.

Multiple Devices In addition, the importance of new internet connected devices like mobile phones, PDAs and internet enabled media players becomes more and more important – so presenting the same information in a different layout on different target devices is mandatory for many customers.

Coordinating Content Creation and Update Maintaining a number of different versions, or “variations,” of publishing sites or pages is difficult and time consuming because it can be difficult to coordinate the creation and updating of content between the variations.

Accuracy of Content Another important factor is the accuracy of the content in the different languages, which requires the integration with individual workflows, and an export and import functionality of the content for the purpose of translation through external companies.

Understanding Variations [The terms used in this paragraph are explained in the Terminology section below] SharePoint Variations allows copying sites and content from the source variation label to one or more target variation labels. By default, the variations feature copies only the site structure and publishing pages from the Pages library of the source variation label.

The variations feature does not copy other site content, such as lists or other document libraries, unlike the content deployment feature, which copies all content, including lists and other document libraries, from one site to another.

It is possible to configure the variation feature to copy resources like images and documents bound to publishing pages also to target variation sites – but this will only work for documents and images which reside in libraries and folders which also exist in the target site with the same site relative Url.

Another important difference between the variation feature and content deployment is that the copied content in the target variation labels can be changed, unlike the content deployment feature, for which changing copied content on the target is discouraged.

By default, when users navigate to the Variation Root Site, they are redirected to the appropriate top site of a variation label, based on the language setting of their Web browser. For example, if a user’s default browser language is French, SharePoint Server 2010 redirects that user to the top site of the French variation label.

It is possible to customize this behavior by replacing or updating the redirection page responsible for the routing with a different page. This new page can implement custom logic to redirect the user based on other criteria (e.g. information from the User-Agent string).

We will discuss the details about how to achieve this in a later chapter.

Page 3: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Terminology The Variation Feature allows tailoring publishing sites for different cultures, markets, languages, devices or any other criteria defined by a customer.

Variation settings enable site owners to create and maintain a number of different “variations,” of the same publishing sites or pages.

Variation Hierarchy Exactly one variation hierarchy can be defined per site collection. It consists of a Variation Root – and sub trees for each of the “variations” which we refer to as variation labels.

Variation Root Site Each site collection can have a maximum of one hierarchical structure, which supports variations. Each variation label defines the top site of a sub-tree of this hierarchy. The site, which contains the different site structures (e.g. one structure for English and one for German) of the different variation labels, is the variation root site.

As only one hierarchical structure supporting variations can exist in a site collection it also means that there can only be one variation root per site collection.

The variation root site contains the landing page that contains the logic, which redirects users to the correct label (more details in a later chapter).

The variation root site can be a site at any level in a site collection, including the top-level site. It is not possible to change the variation root site after the variation hierarchy has been created.

Variation Labels Variation labels are the names given to each of the variants. For example, variant labels could be language names – such as English, French, or German – or devices – such as PDA, mobile phone, Internet Explorer – or a combination of both like Spanish mobile phone, English Internet Explorer etc.

The flexibility is endless as the Variation system allows customers to define a custom routing logic to decide to which label to redirect a user who browses the site (more details in a later chapter).

Up to 50 variation labels are supported in a site collection.

There are two different types of variation labels:

• Source Variation Label The source variation label holds the sites where content is authored, published, and later pushed to the target labels. There can be only one source variation label per variation hierarchy. After a source variation label has been defined and its hierarchy has been created, it cannot be changed.

• Target Variation Label The target variation labels receive most or all of their content from the source variation label. Although new content can be created on a target label, that content is not shared with other labels and is unique to the label in which it was created.

Variation Top Site

Page 4: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The Variation Top site is the root or upper most site in a variation label. All Variation Top sites in a hierarchy are direct children of the Variation Root site and define the root of the hierarchy within a variation label.

Variation Pages Variation pages are the publishing pages that are stored in the Pages library of the source variation sites and the target variation sites. These pages and any dependent resources such as images and documents are the only content that is copied from the source label to the target labels.

Important: Storing non-publishing pages inside the Pages library of a site is unsupported! Non-publishing pages inside the Pages

label can cause the Variations Create Hierarchies Job Definition timer job to fail.

Page Variants These are the peer pages bound together by the variation feature. Each variation label can contain one variant of a page in the source label. If the item in the source label is updated the content of the source page is automatically populated to the page variants in the target labels.

Variation Group Each source site or page defines a separate variation group. All variants of the site or page in the different labels belong to the same Variation Group.

Relationships List The variation system needs to keep track about peer sites and pages to ensure that updates performed in the source label are correctly transferred to the target label.

This tracking information is stored in the Relationships List. Each page or site in the variation hierarchy is represented in the relationships list as a separate list item: the Relationships List Entry.

We will discuss the Relationships List in more detail in a later chapter.

Page 5: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Figure 1: Variation Hierarchy

SharePoint Variations – The complete

Guide – Part 2 – User Interface

★★★★★

★★★★

★★★

★★

Page 6: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

November 15, 2011 by Stefan Goßner // 2 Comments

• 0

• 0

• 0

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

The variation system is integrated in the user interface of a site collection in five different locations:

• Site Settings page

• Master Pages

• Page Layouts

• Site Manager (Manage Content and Structure)

• Ribbon

Site Settings

The variation system adds three links to the site collection administration section of the site settings page

which will be discussed in further chapters:

Page 7: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Master pages

The variation system registers a delegate control in each of the default master pages to allow easy

integration of a variation label menu on publishing pages in the variation hierarchy:

Page 8: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Page Layouts

The variation system allows to associate page layouts with specific variation labels to allow the

implementation of different designs in different labels, to support different layouts for different devices,

languages (e.g. LTR vs. RTL support) and cultures:

Page 9: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Manage content and structure

The variation system integrates into the context menu of sites and pages in the variation system to

support spawning new sites and pages from this dialog. In addition, manage content and structure shows

variation sites with a different icon than other sites:

Page 10: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation
Page 11: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Ribbon

The variation system extends the ribbon with additional operations related to the current publishing

page:

SharePoint Variations – The complete

Guide – Part 3 – Triggers

★★★★★

★★★★

★★★

★★

November 15, 2011 by Stefan Goßner // 4 Comments

• 0

• 0

• 0

Part 1 – The Basics

Part 2 – User Interface

Part 3 – Triggers

Part 4 – Timer Jobs

Part 5 – Configuration Overview

Part 6 – Configuration Internals

Page 12: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

The variation system in SharePoint allows automatically creating and updating content in target variation

labels.

Some of these actions are performed silently without a user requesting variation updates explicitly

through UI interaction.

In order to perform these updates it is necessary for the variation system to be informed about content

changes and changes in the variation hierarchy to keep the links between the variation peers intact.

To achieve this, the variation system registers different event handlers, which trigger content updates

and the maintenance of the underlying data structures:

ItemAdded event on Pages Library

This event is used to restore and update relationships list entries in case that a publishing page was

restored from the recycle bin.

ItemUpdated event on Pages Library

This event is used to trigger the peer page creation and peer page update if automatic content creation

and propagation is enabled for Pages libraries which have minor versions and/or content moderation

enabled.

ItemCheckedIn event on Pages Library

This event is used to trigger the peer page creation and peer page update if automatic content creation

and propagation is enabled for Pages libraries which have minor versions and content moderation

disabled.

Page 13: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

ItemDeleting event on Pages Library

This event is used to collect the information about the variation group the publishing page which is about

to be deleted belongs to – to make it available in the ItemDeleted event firing after the delete operation.

Inside the ItemDeleted event it is not possible to get this information directly from the publishing page

as this page has already been deleted at this time.

ItemDeleted event on Pages Library

This event is used to update the relationships list entries for deleted and recycled publishing pages.

• If a publishing page which resided in the source variation label is deleted or recycled then all

relationships list entries referencing the variation group of the deleted/recycled page are

recycled as well.

• If a publishing page which resided in a target variation label was deleted or recycled then its

relationships list entry is marked as deleted by setting the value of the “Deleted” column of the

relationships list entry to “Yes”.

In case of a restore of a deleted page from the recycle bin, these actions have to be reverted. See

the ItemAdded event for details.

FeatureActivated event on PublishingWeb

This event is used to trigger source site variation to target labels when the Publishing feature is activated

on a site. This happens as well when a new Publishing site is provisioned inside the source label or if the

feature is manually activated on a site that resides in the source label.

FeatureDeactivating event on PublishingWeb

This event is used to delete the relationship list entries and the variation specific properties when

deactivating the publishing feature on a site.

WebDeleting event on PublishingWeb

This event is used to cancel a delete operation in case that the site being deleted is the Root Site of the

Variation Hierarchy (if spawned labels exist) or a Top site of a Variation Label. In all other cases, the

variation system uses this event to clean up the relationship list items for the deleted site and its pages.

Page 14: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

WebMoving event on PublishingWeb

This event is used to cancel the move operation in case that the site being moved is the Top site of a

Variation Label, as moving a Variation Top site would destroy the variation label it belongs to.

WebMoved event on PublishingWeb

This event is used to trigger source site variation to target labels if a site is moved from outside the

source label into the source label. In addition, it will cleanup the information in the relationship list in

case that a site is moved out of a variation label.

SharePoint Variations – The complete

Guide – Part 4 – Timer Jobs

★★★★★

★★★★

★★★

★★

November 17, 2011 by Stefan Goßner // 9 Comments

• 0

• 0

• 0

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

Page 15: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Part 16 – Translation Support Part 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ Timer jobs are a great feature of SharePoint to use when you need to perform background execution at regular or specific times or when you need to execute code on all or selected servers in the farm.

The Variations feature uses specific SharePoint timer jobs to perform tasks such as creating and propagating sites and pages. The Variation Timer jobs are bound to each web application which contain (or contained in the past) a site collection which has the publishing feature enabled.

You can change the Schedule for each job on the Job Definitions page on the Central Administration Web site. The following timer jobs are used to with Variations:

The different Variation Timer Jobs

Variations Create Hierarchies Job Definition This timer job is responsible to create the variation hierarchy of unspawned labels by creating peers in the new label of sites and pages in the source variation label. By default, this timer job runs once a day.

Class: Microsoft.SharePoint.Publishing.Internal.CreateVariationHierarchiesJobDefinition

Variations Create Page Job Definition This timer job creates peer pages on the target variation sites whenever a user explicitly requests the creation of a variant of a page using the UI (Ribbon or Site Manager) – e.g. if the Automatic Creation option has been disabled and a user decides that a page needs to have a page variant in a different label. By default, this timer job runs hourly.

Class: Microsoft.SharePoint.Publishing.Internal.CreateVariationPageJobDefinition

Variations Create Site Job Definition This timer job creates peer sites when the Automatic Creation option has been disabled and a user manually creates a new variation site using Site Manager. By default, this timer job runs every 5 minutes.

Class: Microsoft.SharePoint.Publishing.Internal.CreateVariationSiteJobDefinition

Variations Propagate Page Job Definition Creates and updates peer pages in target variation label after a page in the source variation label has been approved or after the update has been manually requested by a user through the Ribbon. By default, this timer job runs hourly.

Class: Microsoft.SharePoint.Publishing.Internal.PropogateVariationPageJobDefinition

Variations Propagate Site Job Definition Creates peer sites when the Automatic Creation option is enabled. By default, this timer job runs every 5 minutes.

Page 16: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Class: Microsoft.SharePoint.Publishing.Internal.SpawnSitesJobDefinition

Communication between worker process and Timer Jobs Creating variation hierarchies, spawning sites and pages manually or automatically – all these operations are usually triggered from within the worker process. As the worker process account is often not allowed to write into the configuration database where SharePoint timer jobs live, it is not possible to configure the timer jobs directly.

To overcome this limitation, the configuration data for the timer jobs has to be stored within the current content database and the timer job will pick up the data from there.

WSS provides a built in mechanism for this by providing the SPWorkItemJobDefinition class. Timer job definitions derived from this class are able to read configuration data from work items, which are

stored in the ScheduledWorkItems table in the content database. The Sharepoint object model allows adding, reading and removing work items to/from this table.

As many different timer jobs can work on the same ScheduledWorkItems table it is necessary to ensure

that each ScheduledWorkItemscarries a type information (a unique id) to ensure that the timer job picks up the correct work items. Related to variations this means that each site or page spawn request and each variation hierarchy creation request is represented by a specific work item in the scheduled work item table. When the appropriate timer job runs the next time, it reads all work items related to this timer job from

the ScheduledWorkItems table and processes them one by one. After the timer job has completed the

processing of a work item, it removes the work item from the ScheduledWorkItems table.

Underlying WSS Timer Job framework

SPJobDefinition

All timer job are persistable objects derived from the SPJobDefinition class.

SPPausableJobDefinition

In SharePoint 2010, a new abstract class derived from SPJobDefinition has been included, which

supports pausing and restart of timer jobs:SPPausableJobDefinition.

This class declares a second Execute method, which allows to hand-in a job state to the timer job. Timer jobs derived from SPPausableJobDefinition can use this job state (SPJobState) to store values when the job is paused, which can be retrieved later when the job is resumed.

SPWorkItemJobDefinition

SharePoint 2007 introduced a SPWorkItemJobDefinition Timer job class derived

from SPJobDefinition which provided a framework which allowed the implementation of Timer jobs which process a list of work items of a specific type.

With SharePoint 2010, SPWorkItemJobDefinition now also supports the pause and resume

functionality and is now derived fromSPPausableJobDefinition.

Page 17: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

For backward compatibility reasons the class still supports Timer job definitions developed without the pausing functionality in mind.

In SharePoint 2010 the actual Timer job derived from SPWorkItemJobDefinition only has to

implement two methods: WorkItemType() which returns the unique ID of the work item type that

should be processed in the timer job, and ProcessWorkItem() which processes one single work item of the defined type.

The framework provided in the SPWorkItemJobDefinition base class handles the rest of the processing like reading the work items from the database, updating the Timer job progress (visible as progress bar in the central admin), pausing and resume.

Variation Timer Jobs Framework

All variation timer jobs implement the SPWorkItemDefinition class. As many variation timer jobs perform very similar operations, an additional intermediate abstract

class VariationsSpawnJobDefinitionBase has been implemented which acts as base class to four of the five variation timer jobs:

Page 18: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Work Item type for Scheduled Variation Work Items

Timer Job Workitem Type

CreateVariationHierarchiesJobDefinition E7496BE8-22A8-45BF-843A-D1BD83ACEB25

CreateVariationSiteJobDefinition 943D4A28-4147-4A73-B4D1-4A9162D4ECE2

CreateVariationPageJobDefinition 726ddd8f-0e23-4c35-88b5-4fba39482515

PropogateVariationPageJobDefinition EA95AB64-3857-4403-96D0-3AEB3DBDB123

SpawnSitesJobDefinition 5A4B0E0E-0579-4a5d-B233-C2932F031912

SharePoint Variations – The complete

Guide – Part 5 – Configuration Overview

★★★★★

★★★★

★★★

★★

Page 19: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

November 18, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

Variation Settings page Most of the Variation settings can be configured in the Site Collection Administration section of the Site

Settings page.

The variation settings page looks as follows:

Page 20: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The Variations Settings page allows to configure the following options:

Variation Home

Here you can configure the Variation Root Site. After the variation root site has been selected and a

variations hierarchy has been created, the root site cannot be changed.

Automatic Creation

Determines whether sites and pages on the source variation site are created automatically on the target

variation sites. By default, this option is enabled.

Page 21: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

If you disable this option, sites and pages that are created on the source variation site are not

automatically variated to the target. You have to create the site and page variants manually using UI

actions provided by the variation system.

Note: This option only controls the creation of peer pages – not the update. If a user decided to create a peer page in a targetautomatically), all updates to the source page will still automatically be propagated to the target label. This functionality wasMOSS 2007 and led to different workarounds like disabling the page propagation timerjob (which is responsible to copy thelabels) or creating a dummy source label to allow updates in all productive labels without affecting the content in the target

In SP2010 the additional configuration the Disable Automatic Propagation option has been introduced to overcome thiscontrol whether content updates in the source label will be automatically propagated to the target label or not. If automatic

disabled then the Automatic Creation option is ignored for pages (but it is still used for sites). Neither new nor updated pagestarget labels. Unfortunately this option is not available in the UI – it has to be set using object model: Disable automatic propagation: $rootWeb = Get-SPWeb http://url-to-sitecollection $relationshipsList = $rootWeb.Lists[“Relationships List”] $propertyStore = $relationshipsList.RootFolder $propertyStore.Properties.Add(“DisableAutomaticPropagation”, “True”) $propertyStore.Update(); Enable automatic propagation: $propertyStore = $relationshipsList.RootFolder $propertyStore.Properties.Remove(“DisableAutomaticPropagation”) $relationshipsList = $rootWeb.Lists[“Relationships List”] $rootWeb = Get-SPWeb http://url-to-sitecollection $propertyStore.Update();

Recreate Deleted Target Page

Determines whether a page should be re-created on a target variation site if the page was deleted from

the target variation site, and the page on the source variation site has been republished. By default, this

option is enabled. If you disable this option, deleted pages are not recreated on target variation sites.

Update Target Page Web Parts

Determines whether changes made to Web Parts on pages on a source variation site are also made on

pages on target variation sites. By default, this option is enabled.

Notification

Sends e-mail to the contact of the welcome page of a target variation site when a new page or site is

created or to the contact person of the specified page when a page is updated. By default, this option is

enabled.

Page 22: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Resources

Specifies whether to use the same resources on the source variation site when pages are copied to target

label or to copy them to the target label as well. Only Resources in libraries, which are provisioned with

the containing site, can be copied to the target, as the variation system does not have an option to vary

libraries. For standard publishing sites, only images and documents in the Publishing Images and

Documents library can be copied. By default, this option is set to reference existing resources.

Variation Labels page Similar to the Variation Settings the configuration option for the Variation Labels is available in the Site

Collection Administration section of the site settings page.

The Variation Labels page for a typical variation site looks as follows:

Using the variation labels page it is possible to create new variation labels, to edit or delete existing

variation labels and to initiate the creation of the variation hierarchy for the defined variation labels.

Creating a new variation label A new variation label can be created using the New Label option from the Variation Labels page, which

will open the Create Variation Label dialog:

Page 23: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The Create Variation Label page allows to configure the following options:

Label Name

The label name will be used as URL name of the variation top site for the new variation label. Only

characters which are allowed in a URL can be used for the Label name. A friendly name with other

characters can be configured as the Display Name.

Display Name

The display name is the friendly name of the new variation label. Here you can use also characters,

which are not allowed in an URL. The friendly name will be used as Title for the variation top site of the

label.

Page 24: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Site Template Language

This setting allows to configure the language pack to be used when provisioning sites within the new

variation label. This setting will only be available if more than one language pack is installed (base

language + at least one language pack).

Locale

This setting allows to configure the locale settings for the sites provisioned in the new variation label.

Hierarchy Creation

This setting is not available in the UI if a source variation label has been defined but the hierarchy of the

source variation hierarchy has not yet been created.

This setting influences the creation of the hierarchy of labels added after the initial hierarchy creation

was done.

In such a situation, it is possible to define whether the new label:

• should get a copy of all sites and pages in the source hierarchy, or

• if only the site structure should be replicated, or

• if only the top site should be created

Source Variation

The options in this section are disabled as soon as a source variation label has been defined as only one

source variation label can exist per site collection.

Using the settings in this section, you can define whether the new label will be the source variation label

or a target label.

If the new label is the source label, you can also select a publishing site template to be used when

provisioning the variation top site of the different labels.

SharePoint Variations – The complete

Guide – Part 6 – Configuration Internals

Page 25: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

★★★★★

★★★★

★★★

★★

November 21, 2011 by Stefan Goßner // 12 Comments

• 0

• 0

• 0

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 supportedIf you find an inconsistency in one of these settings and you cannot resolve it using the UI you should open a support case with Microsoftanalyzed and fixed in a supported manner.

Page 26: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

Page 27: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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.

Page 28: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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 variationfeature of site manager will automatically adjust all links to the moved item – including the link in the RelationshipsThe same benefit applies to all peered sites and pages. Moving them around using site manager will not breakpages 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.

Page 29: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

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.

Page 30: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

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

theMicrosoft.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 theCreateVariationHierarchiesJobDefinition timer job after the

top site for the label has been created.

Page 31: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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 templatelabel uses normal SharePoint provisioning methods using the same template to create the site in the target label.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.

SharePoint Variations – The complete

Guide – Part 7 – Variation Hierarchy

Creation

★★★★★

★★★★

★★★

★★

November 22, 2011 by Stefan Goßner // 12 Comments

• 0

• 0

• 0

Part 1 – The Basics

Part 2 – User Interface

Part 3 – Triggers

Part 4 – Timer Jobs

Part 5 – Configuration Overview

Page 32: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

Overview In order to create the hierarchies you first need to configure the variation labels, which should be

spawned. At least the source Variation Label has to be configured in order to create the hierarchies.

Important: The creation of the hierarchies will fail if a site exists inside the Variation root site with the same name as one of the variationto be spawned.

The Create Hierarchies button in the UI will create a Scheduled Work Item in the Content Database of

the site collection which is later retrieved by the CreateVariationHierarchiesJobDefinition timer job to

do the actual creation of the hierarchy.

Per default, the timer job is configured to run once a day between 12 AM and 3 AM – that means a user

will usually have to wait until the next day for the hierarchy creation to happen.

Page 33: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Alternatively, a farm administrator can run the job manually at any given time from the central admin

site.

What happens during Timer Job execution? Source variation and target variation top sites are always created one level below the variation root site.

Each variation top site is using the site template configured when defining the source variation label.

To change the look and feel between the different top sites you can either use a different theme and/or a

different master page.

When the variations hierarchy is first created, only the variation top sites are created. Afterwards you

can create the sub sites in the variation source hierarchy. Variants of these sites are then created in the

target labels – either automatically or manually.

If sites or pages are created directly in a target label, they will not be part of the variation hierarchy and

content in these sites and pages will be independent from other labels.

If a new label is added to the variation hierarchy after the variations hierarchy of the source label has

been first created, a new top variation site is created for the new label and in addition, (default setting)

pages and sites in the source label are automatically variated to the new label.

Creating the variation hierarchy involved three major steps:

1. Create the VariationRoot.aspx landing page which contains the logic to redirect to the

different label and configure this page as welcome page for the Variation Root site

1. Create the Variation Top site for the source variation label underneath the Variation

Root site

2. Replicate the site structure and the publishing pages from the Source Variation label

to new configured target and not yet spawned variation labels

Here are more details about the three steps:

Configuring the Variation landing page

The Timer Job first verifies if a page with name VariationRoot.aspx exists in the Pages library of the

Variation root site.

If this is not the case, it will create, check-in, publish and approve a new Publishing Page at this location

based on theVariationRootPageLayout.aspx page layout, which is part of the SharePoint Server

Publishing Infrastructure feature.

The last step is to configure the VariationRoot.aspx page as welcome page for the variation root site.

Page 34: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Creating the Variation Top site for the source variation label

The Timer Job first verifies if the top site of the source label already exists and will skip the rest of the

steps if yes.

After checking that the top site does not exist, it will disable the automatic spawning of new created sites

to the target labels to ensure that the Timer Job responsible to perform the site spawning does not pick

up the new site while the hierarchy is not fully created.

The next step is to provision a new publishing site based on site template, locale and language

configured in the variation settings. The title of the site will be the configured display name of the

variation label.

The new site will then be marked as being a member of the variation hierarchy and a new entry for the

site is created in the global Relationships List.

Afterwards the new site is configured as variation top site of the label and the hierarchy of the label will

be marked as created.

The final step is to re-enable the automatic spawning of new created sites to the target labels.

Replicating content from source to target labels

This is the most complex step as it is possible to add new labels long after the source hierarchy is created

and new sites and pages have been added to the source label it is not sufficient to just replicate the

variation top site to the target labels.

Depending on the variation settings, it might be necessary to replicate the following information:

• Just the top level sites

• The whole site structure without pages

• The whole site structure including all pages

The default is to replicate the whole site structure including all pages.

Here is the high-level description of how the replication is done by the timer job. Be aware that some of

these operations are also performed in the other timer jobs, which are responsible to replicate only sites

or pages:

For each unspawned target label, we perform the following steps:

1. Provision the top site in the target label using the same template as on the source

label using the Display Name, locale and language configured for the target label

Page 35: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

2. Ensure that the new site has the same configuration (variation group id, welcome

page, features, navigation, UIVersion, Master page, Theme…) as the peer site in the

source label

3. The new site will then be marked as being a member of the variation hierarchy and a

new entry for the site is created in the global Relationships List

4. Pair up the pages created while provisioning the site with the equivalent items in the

source site by assigning the same variation group ID to both and copy the page

content from source to target label using the content deployment and migration API

5. Recursively provision all sites that exist below the variation top site in the source

label to the target label and copy all pages in the pages library using the content

deployment and migration API. If required adjust the page layout of the page based on

the page layout configuration for the different labels

6. Afterwards the new top site is configured as variation top site of the label and the

hierarchy of the label will be marked as created

Note: Be aware that the pages in the target label will not be a one-to-one copy of the pages in the source label. Certain field and properties

has to be possible to have different values in source and target. Here is a list of the fields which are not overwritten when creating/updating

Title, Description, StartDate, EndDate, Layout, Audience, Contact, LocalContactName, LocalContactEmail, LocalContactImage,

PreviousSpawnSourcePageVersion, FieldId.DocumentId, FieldId.AverageRatings, FieldId.RatingsCount

SharePoint Variations – The complete

Guide – Part 8 – Creating Page Variants

★★★★★

★★★★

★★★

★★

November 23, 2011 by Stefan Goßner // 15 Comments

• 0

• 0

• 0

Part 1 – The Basics

Part 2 – User Interface

Part 3 – Triggers

Part 4 – Timer Jobs

Part 5 – Configuration Overview

Page 36: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

Automatic Creation of Page Variants Usually a page variation is automatically created for a page in the following situations:

• A new page is added to the source variation label and the following settings are configured:

• Automatically create site and page variations is enabled

• The DisableAutomaticPropagation option is not set to True

• A page is updated in the source variation label while the shadow page in the target label has been

deleted and the following settings are configured:

• Automatically create site and page variations is enabled

• Recreate a new target page when the source page is republished is enabled

• The DisableAutomaticPropagation option is not set to True

The automatic creation is initiated from either the ItemUpdated event or ItemCheckedIn event

implemented in the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver class, which are

bound to the Pages library.

If moderation and minor versions are disabled on a Pages library, the ItemCheckedIn event will initiate

the content propagation.

If moderation and/or minor versions are enabled on the Pages library, the ItemUpdated event will

initiate the content propagation if the item is in either in approved or scheduled moderation state.

Note: Be aware that automatic propagation will not happen if moderation and minor versions are disabled and also the requirement

items when updating the item is disabled. The reason is that in this situation the ItemCheckedIn event will not fire as not check-in

As discussed in an Part 4 the event receiver will create a Scheduled Work Item for

the PropogateVariationPageJobDefinition which will perform the content propagation. The same

timer job is also responsible to propagate changes done to existing pages in the source label to the target

label.

Page 37: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Manual Creation of Page Variants There are certain situations where customers do not want to have automatic page creation or recreation

in the target labels. Therefore automatic page variant creation might be disabled.

In case that automatic page variant creation is disabled it is required to create a variant manually using

one of the following options:

a) From the Publish Tab of the Ribbon while

browsing the page

Note: You can also create page variants using the Update button in the ribbon. Be aware that this will automatically create/update

labels. This option does not only update existing peers but also create new peers in labels where the page has not been variated to usingsimilar to the automatic creation mode.

This behavior prevents granular content updates to existing peers in case that DisableAutomaticPropagation is set to True.

b) From Site Manager:

Page 38: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Both options redirect to the _layouts/CreatePage.aspx page passing in details about the original item

for which the variant should be created like item id, list id, web id and folder the item resides in:

Page 39: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

When creating a page variant manually it is possible to select a different but compatible page layout

(means a page layout associated with the same content type). You can also choose a different Url name,

title and description but not a different site and folder relative path. The page will be created in the peer

site of the source site and the same folder in the pages library as the item in the source site. If a different

folder location is required you can move the item to the desired folder after it got replicate to the target

label.

It is also possible to specify for each created page variant whether to copy the resources used in the page

to the target label or to reference them in the source label.

Page 40: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The settings choosen on the page will be passed to the CreateVariationPageJobDefinition timer job

within the Scheduled Work Item.

Manual Update of page variants using the UI Usually content changes are automatically propagated to all existing page variants through

the PropagateVariationPageJobDefinition.

Except if automatic content change propagation is disabled by settings

the DisableAutomaticPropagation option to False.

In case that automatic propagation is disabled, the only way to force a content update in the target labels

is to use the Update Variationsoption in the Ribbon.

From the Publish Tab of the Ribbon while browsing the page:

Important: Using this action the page will be propagated to all target variation labels. Unlike automatic update operations that means

be created in labels which did not have a page variant before the update operation.

The content propagation will be performed by the PropogateVariationPageJobDefinition timer job.

SharePoint Variations – The complete

Guide – Part 9 – Creating Site Variants

★★★★★

★★★★

Page 41: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

★★★

★★

November 24, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

Automatic Creation of Site Variants Usually a site variation is automatically created for a site if the automatically create site and page

variations option is enabled in the following situations:

• A new Publishing Site is provisioned within the source hierarchy

In this case, the site creation activates the Publishing Feature, which is invokes

theFeatureActivated event handler of the

Microsoft.SharePoint.Publishing.PublishingFeatureHandler class which initiates the spawning of

the site.

• The Publishing Feature is activated on a site which resides in the source hierarchy

In this case, the creation is the same as for the previous scenario. That means activating the

Publishing feature on a site (e.g. team) in the variation source hierarchy will automatically initiate

the creation of variant sites in the target labels.

• A site which has the Publishing feature activated is moved into the source hierarchy

Page 42: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

In this case, the spawning of the site is initiated from the WebMoved event implemented in the

Microsoft.SharePoint.Publishing.CPVAreaEventReceiver class. This event is bound to all sites

that have the Publishing feature activated.

As discussed in Part 4 the event receivers above will create a Scheduled Work Item for

theSpawnSitesJobDefinition timer job which will perform the site propagation.

Manually Creation of Site Variants There are certain situations where customers do not want to have automatic site creation in the target

labels. So the option might be disabled.

In case that automatic site variant creation is not enabled, it is possible to create a variant manually using

the following option in Site Manager:

Page 43: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

This option redirects to http://url-to-source-site/_layouts/NewVariationSite.aspx page passing in

details about the original site for which the variant should be created:

When creating a site variant manually it is possible to select a different Title and a different URL name

for the site in the target label. The site will always be created in the peer site of the parent site in the

source label. If a different location in the target label is required it is possible to move the site to a

different location later without breaking the variation link between the sites and without affecting the

ability to create variant pages later.

The settings chosen on the page will be passed to the CreateVariationSiteJobDefinition timer job

within the Scheduled Work Item.

Page 44: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

SharePoint Variations – The complete

Guide – Part 10 – Restructuring the

Hierarchy

★★★★★

★★★★

★★★

★★

November 25, 2011 by Stefan Goßner // 2 Comments

• 0

• 0

• 0

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

This module explains the actions performed when applying structural changes to the content in the

variation hierarchy. This includes moving and deleting of sites and pages as well as recoveries from

recycle bin.

Page 45: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

I will explain the actions performed when restructuring the source hierarchy, discuss how the variation

consistency is preserved when the structural changes are applied and explain which actions can break the

consistency between source and target labels

The following actions are covered in this article:

• Moving a Publishing Page

• Moving a Publishing Site

• Deleting/Restoring a Publishing Page

• Deleting/Restoring a Publishing Site

• Deleting a Variation Label

Moving a Publishing Page The actions performed when moving a publishing page are different based on whether the move

operation is within the same label or goes beyond the boundaries of a variation label.

It is important to understand that WSS does not support moving items outside of the current site. Due to

this limitation the move operations for publishing pages has been implemented as a copy&delete

operation. When a page is “moved” around in a site collection using Site Manager the Move action in

Site Manager updates all links pointing to the page to reflect the new location. That also includes the

links in ObjectID column of the Relationships List.

In addition, the move action is variation aware – means it updates the variation specific columns in case

that a move operation ends in a different variation label or outside the variation hierarchy.

The move is divided into four steps:

1. Copy to the new location using content deployment and migration API

2. Update Links pointing to the item to point to the new location

3. Delete of the old item

4. Maintain the relationships list items for the variation group of the moved item

Copy to the new location

This step is performed using an export/import operation using the content deployment and migration

API. Between export and import, the manifest files are modified to update variation specific fields in

case that the move operation goes outside the original variation label.

That demonstrates the tight integration of the variation system into other operations in Site Manager.

Updating Links to the moved item

Page 46: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

I will not go into the details of the link management as I have explained these details in the following

blog already: Deep Dive into the SharePoint Content Deployment and Migration API – Part 4

One specialty in this operation is that the link management checks if the link to the item comes from an

item in the relationships list. If the link comes from the relationships list, the link management verifies if

the move operations went beyond the boundary of a variation label and only updates the link if source

and target of the move operation is in the same variation label.

This is necessary to support the maintenance of relationships list items in the final step of the move

operation, which is discussed below.

Deleting the old item

The delete operation itself is a trivial task. However, the delete operation triggers two events, which are

responsible to perform the next step:ItemDeleting and ItemDeleted.

Maintenance of Relationships List items

In case that a move operation went beyond the boundary of a variation label additional operations are

required as the moved item is no longer part of the previous variation group. To detect whether a move

operation went beyond the boundary of a variation label we check whether the relationships list

reference points to the deleted item or to the new created item (see “Updating Links to the moved item”

above).

The variation system hooks up to the following events to handle this:

• ItemDeleting – This event fires after Site Manager has copied the item to the new location, fixed

the links pointing to the item and is about to delete the original item to complete the move

operation.

The publishing feature has bound

the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver.ItemDeleting event receiver

to this event to gather the Variation Group Id from the page that is going to be deleted and make it

available to the ItemDeleted event handler, which fires after the delete operation has been

completed.

• ItemDeleted – This event is fired after the original page has been deleted.

The publishing feature has bound

the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver.ItemDeleted event receiver

to this event, which is responsible to maintain the relationships list references in case that the move

operation moved an item out of a variation label. In this situation, the item is no longer a member

of the previous variation group and the relationships list entry has to be updated accordingly.

In case that an item that resided in the source variation label was moved out of the source label all

relationships list entries for the variation group of the moved items will be recycled – means

Page 47: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

neither the item in the source label nor the items in the target labels are variation hierarchy items

after the move.

In case that the move operation for an item in the target variation label went beyond the boundaries

of its label the list item in the Relationships List is marked as deleted (Deleted column gets value

Yes). This flag is used in combination of the setting, which controls whether to recreate deleted

target items, or not.

Moving a Publishing Site Unlike moving pages, WSS support move operations for sites natively. No export/import is required.

Important to understand is that when a site is moved around in a site collection, WSS updates all links

pointing to the site to reflect the new location. That also includes the links in ObjectID column of the

Relationships List.

In addition, the move action is variation aware – means it updates the variation specific columns in case

that a move operation ends in a different variation label or outside the variation hierarchy.

The move is divided into three steps:

• Move the site

• Update Links pointing to the site

• Maintain the relationships list items for the variation group of the moved site

Moving the site

That step is done by simply assigning a new Url to the ServerRelativeUrl property of the managed

SPWeb object. The real move operation is performed as soon as the property change is committed using

SPWeb.Update.

There is one special situation, which needs to be taken care of: that is the scenario where the site being

moved is the top site of a variation label. As moving this site would invalidate the variation label such a

move is not allowed.

The variation system hooks up to the following event to handle this:

• WebMoving – This event fires before the actual move operation is performed within the COM

layer.

The publishing feature has bound

the Microsoft.SharePoint.Publishing.CPVAreaEventReceiver.WebMoving event receiver to

this event, which checks if the site being moved is a variation top site and cancels the move

operation in this case.

Page 48: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Updating links pointing to the site

This operation is performed automatically in when changing the ServerRelativeUrl property of a site.

That means that no special action has to be done to perform this link fixup.

Note: In case that the Variation Root site is not identical with the root site of the site collection it is possible to move the Variation

well. The configuration setting for the variation root site will automatically be updates as it is stored as hyperlink in a list item in thebe adjusted through the same mechanism as other hyperlinks pointing to the site.

Maintenance of Relationships List items

In case that a move operation went beyond the boundary of a variation label, additional operations are

required as the moved site is no longer part of the previous variation group. To detect whether a move

operation went beyond the boundary of a variation label we check the label the item is in before and

after the move.

The variation system hooks up to the following event to handle this:

• WebMoved – This event handler fires after the move operation has been completed.

The publishing feature has bound

the Microsoft.SharePoint.Publishing.CPVAreaEventReceiver.WebMoved event receiver to this

event which is responsible to maintain the relationships list references in case that the move

operation moved a site out of a variation label. In this situation, the site is no longer a member of

the previous variation group and the relationships list entries of the site and all child sites and child

pages have to be deleted.

In case that a move operation moved a site, from outside the source label into the source label (as

well from a target label and from a location outside the variation hierarchy), this event handler is

responsible to mark the site as being a part of the source label and will also initiate the spawn of

the moved site to the target labels.

Important: Moving a site out of the variation hierarchy – especially moving it out of the source label is a not reversible

removed from the site and all included sub sites and pages and as the relationships list entries are removed you cannot location and assume that everything is back to normal. If such a move is performed by accident it usually requires to restore a backup taken before the move operation to roll

Deleting/Restoring a Publishing Page Delete Operation

When a publishing page which resides in a target variation label is deleted it is important to mark its

relationships list item as deleted to ensure that future update operations work correct and can either

recreate the deleted item (if configured) or to allow a user to manually create a page variant in the label

the deleted item resided in.

Page 49: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

In case that a publishing page in the source variation label has been deleted it is necessary to recycle all

relationships list entries for the variation group of the deleted page as these pages can no longer be

updated after their source page has been deleted.

Delete operations for Publishing pages through the UI or through object model can either use the recycle

bin (SPFile.Recycle method) or can be a final delete without a chance to recover the item

(SPFile.Delete method). Both methods will raise the ItemDeleting and ItemDeletedevents.

The variation system hooks up to the following events to maintain the relationships list items during a

delete operation:

• ItemDeleting – This event fires when the WSS object model is about to delete or recycles the

page

The publishing feature has bound

the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver.ItemDeleting event receiver

to this event to gather the Variation Group Id from the page that is going to be deleted and make it

available to the ItemDeleted event handler, which fires after the delete operation has been

completed.

• ItemDeleted – This event fires after the WSS object model has deleted the page

The publishing feature has bound

the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver.ItemDeleted event receiver

to this event, which is responsible to maintain the relationships list references for the deleted items.

In case that a page in the source variation label has been deleted, all relationships list entries for

the variation group of the deleted item are recycled – means neither the item which was deleted in

the source label nor the items in the target labels are variation hierarchy items after the delete.

In case that a page in a target label has been deleted, the list item in the Relationships List is

marked as deleted (Deleted column set to Yes). This flag is used in combination of the setting,

which controls whether to recreate deleted target items, or not.

Restore Operation

In case of a restore operation it is necessary to ensure that the deleted status in its relationships list item

is removed to ensure that future updates work correct and that a user cannot create a new page variant in

the same label.

Important: Take special care when restoring a page in a target label. If the page has been moved to a different location before it got

been recreated in the target label, you will end up with two pages in the same label for the same variation group. This is not supported and can lead to exceptions.

The restore operation fires the ItemAdded event in the list where the restored item gets restored into.

The variation system hooks up to the following events to maintain the relationships list items during a

delete operation:

• ItemAdded - This event fires after the item has been successfully restored in the pages library

Page 50: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The publishing feature has bound

the Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver.ItemAdded event receiver

to this event change the deleted status on the relationships list entries associated with the restored

page, and also uses this event to restore the recycled relationships list entries of the variation group

of the restored page, in case that the restored page resides in the source label.

Deleting/Restoring a Publishing Site Delete Operation

When deleting a publishing site, which is part of the variation hierarchy, a couple of important checks

and clean-up steps are required. For example, it is important to verify if the site is a mandatory site for

the variations system and prevent the deletion in such situation.

In addition, the relationships list items referencing the deleted sites and the pages in these sites have to

be deleted as well.

The variation system hooks up to the following event to fulfill this duty:

• WebDeleting – This event fires for each site that is going to be deleted. In case that a site is

deleted, which contains subsites, and then this event fires for each subsite as well. When

performing the delete from within Site Manager the delete starts at the leaves – meaning, the

deepest sites in the hierarchy are deleted first and the WebDeleting event for these leave sites fires

first as well.

The publishing feature has bound

the Microsoft.SharePoint.Publishing.CPVAreaEventReceiver.WebDeleting event receiver to

this event which first checks if the site being deleted is the variation root site and cancels the delete

in case that there are any spawned variation labels. If there are no spawned variation labels, the

event handler removes the variation root site URL from the variation settings and allows the delete

operation to continue.

The next thing checked is if the site being deleted is a variation top site of a variation label and

cancels the delete in this case as the delete of the top site would invalidate the variation label

Important: As mentioned above the delete will start at the leaves when deleting the site in Site Manager. That means that

when the event handler cancels the delete operation because it identifies that the site to be deleted is the top site of a labelhierarchy.

In case, that the delete operation is valid the WebDeleting event handler cleans up the

relationships list items for the site and all included pages.

Note: Unlike the delete operation for sites the cleanup of relationships list entries does not happen in the “after” event

“before” event. That means if the delete is not performed for whatever reason (e.g. because another event handler cancelsinconsistent relationships list as the relationships list entries for the site and all it’s pages is already gone.

Page 51: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Restore Operation

The option to restore sites and site collections has been added with SharePoint 2010 Service Pack 1.

Unfortunately the Variation Feature currently does not support this functionality which means that a site

restore from the recycle bin will not be part of the variation hierarchy as the relationships list entries for

the site and included pages will not be recreated.

Important: Similar to move operations which went beyond outside of a variation label it usually requires to restore a backup from

to roll back the changes. You cannot just restore the site from the recycle bin as the relationships list entries will not be recreated.

Deleting a Variation Label From a variation perspective, the actions required when deleting a variation label are nearly identical to

the actions performed when deleting a site: the variation top site and all its child sites and pages have to

be removed from the relationships list recursively.

In addition to this step, the variation label itself has to be removed by deleting the list item representing

the variation label in the variation labels list.

Deletion of a variation label is a synchronous operation, which is handled within the http request that initiated it. The operation is not performed in a timer job and is not implemented as a long running operation, which would be executed on a separateThe side effect of this limitation is that with large hierarchies it can happen that the operation takes more time than the standard requestseconds). In such a situation, the variation cleanup operation will not be completed successfully before ASP.NET terminates the http request.Workaround: You can increase the execution timeout value by modifying the web.config file in the _layouts directory by adding the10 hours): <configuration> … <location path=”VariationLabels.aspx”> <system.web> <httpRuntime executionTimeout=”36000″ /> </system.web> </location> … <configuration> You also should disable application pool recycling option while the label delete operation is executed.

SharePoint Variations – The complete

Guide – Part 11 – Variations Fixup Tool

★★★★★

★★★★

Page 52: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

★★★

★★

November 28, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

The Variations Fixup Tool has been integrated into stsadm.exe to allow administrators to fix

common variation problems, which are caused by inconsistencies between the actual site structure

and the data stored in the relationships list. This article will

• explain the different operation modes of the variations fixup tool

• allow you to understand which type of problems can be fixed using the tool

Usage The Variations Fixup Tool has been integrated into stsadm.exe to allow administrators to fix common

variation problems, which are caused by inconsistencies between the actual site structure and the data

stored in the relationships list.

The tool has four different operation modes:

Page 53: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

• Scan – This operation mode can be used to analyze the variations hierarchy and report identified

problems

This parameter provides functionality that cannot be accessed using the Central Administration

Web site.

• Fix – Corrects identified problems. If the recurse parameter is used, fixes are done recursively for

all sub-sites

This parameter provides functionality that cannot be accessed using the Central Administration

Web site.

• Spawn – This operation mode creates new variations for a site in the source variation label

specified by the URL parameter. New peers are created for either all or one specific target

variations label. If the recurse parameter is used, variations for sub-sites and pages are also created

This operation mode is equivalent to the New Variation Site user interface setting that is located

on the Site Content and Structure page.

• ShowRunningJobs – Displays current status of Variations Propagate Page Job Definition and

Variations Propagate Site Job Definition timer jobs that are located on the Timer Job Status page

of the SharePoint Central Administration Web site

The command supports the following parameters to configure these operation modes:

• URL – The URL of a site in the source variation label where variations system data is being

analyzed or corrected. This parameter is required for all operation modes

• Label – the variation label to operate on. This parameter is supported by the following operation

modes: Scan, Fix, Spawn

• Recurse – whether to perform the operation recursively or not. This parameter is supported by the

following operation modes: Scan, Fix, Spawn

The command syntax is as follows:

stsadm -o variationsfixuptool

-url <absolute web URL>

[-fix]

[-scan]

[-spawn]

[-showrunningjobs]

[-recurse]

[-label <label to fix or spawn>]

The different operation modes

Page 54: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

In order to use the command correctly it is important to understand what the different operation modes

do.

ShowRunningJobs

This command enumerates all running jobs for all the automatic propagation jobs for sites and pages:

• Variations Propagate Page Job Definition

• Variations Propagate Site Job Definition

This command will not report any of the other “manual” variation jobs:

• Variations Create Hierarchies Job Definition

• Variations Create Page Job Definition

• Variations Create Site Job Definition

Scan

This command analyzes sites and pages in the variation source hierarchy.

For each Site/Page, it reports:

• If the source site is marked as being in the source variation hierarchy

(SPWeb.AllProperties[“__InSourceHierarchy”] == True ?). If the site is marked as being in the

source hierarchy means that the page is part of the source hierarchy.

• The Variation Group Id of the source site or page

(SPWeb.AllProperties[“Variation Group Id”] or

PublishingPage.ListItem[FieldId.VariationGroupId])

• Which peers are registered in the relationships list with same Variation Group Id

• If a variation peer exists in the configured labels (default is all spawned labels) by first checking if

a peer is configured in the relationships list with the same variation group ID for the given label. If

no peer can be found using the relationships list we try to lookup the peer using the default URL

that would be used when creating a variant in the given label

• The variation group id of the variation peers in the target labels (SPWeb.AllProperties[“Variation

Group Id”] or PublishingPage.ListItem[FieldId.VariationGroupId])

• If the source site/page is configured in the relationships list

In addition the command reports the variation labels used for the peer check (default is all spawned

labels).

The tool will not identify any issues – it is required to analyze the report in detail and interpret it in order

to find problems.

Fix

Page 55: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

This operation mode invokes the same method as the Scan operation mode but beside analyzing and

reporting the issues it will invoke fix routines for sites and pages.

It is important to understand which types of issues are fixed and which are not.

The following issues are automatically fixed:

• Missing Variation Group ID on source site or source page

• Missing relationships list entry for source or target page or site

• Missing Variation Group ID on target site or target page

• Different Variation Group ID in source site/page and target site/page (source ID will win)

Any other problem in the variation hierarchy is not fixed by this operation mode. E.g. fix mode will not

create missing variation peers.

Spawn

This operation mode allows spawning an existing site in the source label to one or all spawned target

labels. The operation mode is similar to the New Variation Site option available in Site Content and

Structure.

Be aware that this operation mode cannot be used to spawn pages in already spawned sites. In case that page variations are missingvariations fixup tool to recreate them. You have to manually create/recreate them using the UI.

The command initiates the site spawn operation by creating a scheduled work item for the

SpawnSiteJobDefinition timerjob. The spawn will be performed as soon as the timerjob runs.

The difference between the scheduled work item created by the CPVAreaEventReceiver and the

Variationsfixuptool is that the tool has the option to create a workitem, which only spawns the site to one

specific variation rather than to all spawned variation labels.

A common use scenario is to configure the source variation label with the Hierarchy Creation option to

create only the root site and not the complete hierarchy and later to spawn the hierarchy or parts of the

hierarchy from the source label using the STSADM command.

In MOSS 2007, this command was a major benefit compared to the automatic hierarchy creation in the

UI, as it was the only way to force the creation in OWSTIMER rather than W3WP.

With SharePoint 2010 where all actions are already in OWSTIMER the benefit of using the STSADM

command rather than the UI is rather limited.

Page 56: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Summary The variations fixup tool allows to create a report (-Scan) about all items in the source label including

their variation group id, whether they have a reference in the relationships list and all peer pages with the

same variation group id in the configured labels. The tool will not automatically report problems but

requires an engineer to analyze the report and identify issues bases on his experiences.

The tool also allows to report which site and page propagation jobs are running (-ShowRunningJobs)

when the command is executed and the status the job is in. On the other hand, the tool does not report

anything regarding the other variation timer jobs (create hierarchy, create site, create page).

The tool allows to fix issues related to inconsistencies between items in the source and target site and the

relationships list (-Fix).

On the other hand, this command will not fix any other types of inconsistencies – e.g. missing items in

the source or target label.

The tool also allows to spawn a site or a site hierarchy including the pages from the source to either all

spawned target labels or a specific target label by creating a scheduled work item for the

SpawnSiteJobDefinition timer job.

SharePoint Variations – The complete

Guide – Part 12 – Customization

★★★★★

★★★★

★★★

★★

November 29, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

Part 1 – The Basics

Part 2 – User Interface

Page 57: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

This module explains supported ways to implement customizations in the variation system.

You can apply the following types of customization:

• Custom routing logic for the landing page in the variation root site

• A custom menu to allow switching between the variation labels

• Implement Variation Aware web parts

• Add event receivers to apply modification to items in the target label after they got replicated.

Customizing the Variation Landing Page Overview

The following actions are performed while creating the variation hierarchy:

• A page named VariationRoot.aspx is created in the pages library of the variation root site based

on the VariationRootPageLayout.aspx page layout file in the Master Page and Page Layouts

Gallery

• The Welcome page URL of the Variation root site is configured to point to the VariationRoot.aspx

page

If a user navigates to the Variation root site, SharePoint Server 2010 looks up the configure Welcome

Page of the site and redirects to the VariationRoot.aspx page. As this page is based on

VariationRootPageLayout.aspx, it executes the logic in the page layout file.

The VariationRootPageLayout.aspx page layout contains a reference to a file

called VariationsRootLanding.ascx file, which resides on the file system in

Page 58: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

the …\14\template\controltemplates folder. The VariationsRootLanding.ascx file implements the

logic, which redirects the user to a Variation site.

The default logic used in the VariationsRootLanding.ascx file is to redirect the user to the Variation site

that matches the browser’s accepted languages.

How to customize the Variation Root logic

If you want the Variation root landing page logic to redirect the user to a Variation site that is not based

on the accept language, you can do this in one of three ways. Each option has its own advantages and

disadvantages, and you should consider them carefully before deciding which approach to use:

Directly edit the VariationsRootLanding.ascx

Benefits:

This is the quickest way to edit the logic, as you only have to edit the logic in the

VariationsRootLanding.ascx file in the file system of each Web front-end (WFE) server.

Caveats:

All site collections in the farm will use the same logic to redirect to a variation label.

The change has to be done on all WFEs and if a change is required, it is necessary to update the files on

all WFEs.

Page 59: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Use a copy of the VariationsRootLanding.ascx

This method requires changing the reference to user control in the VariationRootPageLayout.aspx using

SharePoint Designer.

Benefits:

You can easily update the logic by replacing the logic in the custom ascx file on the file system.

Each site collection can have a different logic for the redirection.

Caveats:

The copy has to be created on all WFEs and if a change is required, it is necessary to update the files on

all WFEs.

You have to update the VariationRootPageLayout.aspx to reference the updated user control.

Move logic directly into the VariationRootPageLayout.aspx

This can be achieved by copying and adjusting the content from the VariationsRootLanding.ascx file

into the VariationRootPageLayout.aspx in the Master Page and Page Layouts Gallery.

Benefits:

Like the previous approach, this approach also provides rapid customization through direct editing.

Changes have to be done only at one single location as the logic is in the database.

Each site collection can have a different logic for the redirection.

Caveats:

To complete this process, it is required to modify the web.config to allow inline code in the

VariationRootPageLayout.aspx page.

<SharePoint>

<SafeMode … >

<!– Enable ASP.NET compilation for variation root logic –>

<PageParserPath

VirtualPath=”/_catalogs/masterpage/VariationRootPageLayout.aspx”

CompilationMode=”Always”

AllowServerSideScript=”True”

AllowUnsafeControls=”False”

IncludeSubFolders=”False”/>

</PageParserPaths>

</SafeMode>

</SharePoint>

Page 60: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

An additional customization might be to place the logic into a custom assembly and deploy this using a

feature into the Global Assembly Cache of all machines. Then you can reference this custom code either

from the user control or directly from the VariationRootPageLayout.aspx page.

Creating a Variation Label Menu Control Overview

Many websites allow a reader to switch to a different language version of the same page using a

hyperlink – either textual or as an image (e.g. the country flag).

SharePoint 2010 provides a framework to implement the required functionality quickly:

Master Page

Each of the default master pages contains a reference to a file called VariationsLabelMenu.ascx, through

a DelegateControl element in their markup:

<SharePoint:DelegateControl runat=”server” ID=”GlobalDelegate0″

ControlId=”GlobalSiteLink0″ />

Delegate Control

The publishing feature registers the DelegateControl GlobalSiteLink0 element

in …\14\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml. This XML file points to the

VariationsLabelMenu.ascx file, which causes all sites provisioned with the publishing feature to have the

rendering provided by VariationsLabelMenu.ascx. This also causes the master pages for all publishing

site collections in the server farm to contain the same rendering provided by VariationsLabelMenu.ascx.

…\14\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml

<!– _lcid=”1033″ _version=”14.0.4750″ _dal=”1″ –>

<!– _LocalBinding –>

<Elements xmlns=”http://schemas.microsoft.com/sharepoint/”>

<Control

Sequence=”50″

Id=”GlobalSiteLink0”

ControlSrc=”~/_controltemplates/VariationsLabelMenu.ascx”>

</Control>

<Control

Sequence=”50″

Page 61: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Id=”VariationsFlagControl”

ControlSrc=”~/_controltemplates/VariationsLabelMenu.ascx”>

</Control>

</Elements>

As you can see the same user control is registered with two different control Ids: GlobalSiteLink0 and

VariationsFlagControl. It does not matter which Id you use in your master pages – both will work.

Because the Delegate controls are the same for all publishing sites in all site collections, they all

reference the same user control on the file system, the rendering cannot vary from site collection to site

collection with default setup.

VariationsLabelMenu.ascx

The VariationsLabelMenu.ascx file needs to contain the logic to render variation label menu on the page.

Per default only the VariationDataSource control is embedded in this control but not a rendering control

to leverage this data source. So per default no variation labels menu is displayed.

In order to display the variation labels menu it is required to update the VariationsLabelMenu.ascx and

add a reference to a rendering control for the data source.

We will discuss supported methods to customize this control in the next sections.

VariationDataSource

The VariationDataSource control is not a rendering control. It acts as data source for other web controls,

which support data binding like a Repeater, or a DataList control.

It provides information about peers of the current page in other variation labels.

This data source can be utilized by different controls like an ASP.NET Repeater or a DataList control or

the VariationsLabelEcbMenu shipped with SharePoint.

<cms:VariationDataSource id=”LabelMenuDataSource” LabelMenuConfiguration=”1″

Filter=”” runat=”server”/>

Label Menu Configuration

The VariationDataSource control supports three different operation modes using the

LabelMenuConfiguration attribute:

• Link to Peers: this is the default and most common operation mode. In this mode, the data source

returns links to peer pages of the current page.

LabelMenuConfiguration=”1″

Page 62: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

• Link to Parent: using this operation mode the data source returns links to the peers of the parent

site. That link will not point to the peer page but to the peer site of the current site.

LabelMenuConfiguration=”2″

• Link to Top Site: using this operation mode the data source returns links to the top sites of peer

labels.

LabelMenuConfiguration=”3″

Filtering

The variation data source supports filtering on the label result set. If e.g. administrative labels exist in the

hierarchy, which should not be exposed to users, then you can create a regular expression filter on the

label name to exclude them from the view, which means that the data source will not return links to peer

pages in the filtered labels. A simple filter could be “^\w”. This filter will only display labels which start

with alphanumeric characters (a-z, A-Z, 0-9). Labels starting (e.g.) with a special character like “-” will

not be displayed.

Rendering Control

We will discuss how to use the VariationDataSource with a rendering control in the next sections.

Page 63: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Customizing the variation label menu logic

In the previous section, we discussed the different instances involved in rendering a variation label

menu. However, without customization no menu is displayed, as no rendering control is included in the

out-of-the-box user control.

Different customizations are possible – each with individual advantages and disadvantages:

Directly edit the VariationsLabelMenu.ascx

Benefits:

This is the quickest way to edit the logic, as you only have to edit the logic in the

VariationsLabelMenu.ascx file in the file system of each front-end Web server.

Caveats:

All site collections in the farm will use the same logic to render the variation label menu.

Page 64: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The change has to be done on all WFEs and if a change is required, it is necessary to update the files on

all WFEs.

Use a copy of the VariationsLabelMenu.ascx

This method requires changing the reference to the user control in the master page using SharePoint

designer and/or to register a new control for the delegate control using a custom feature.

Benefits:

You can easily update the logic by replacing the logic in the custom .ascx file on the file system.

Each site collection can have a different logic for the redirection.

Caveats:

The copy has to be created on all WFEs and if a change is required, it is necessary to update the files on

all WFEs.

Copy the user control into the master page gallery

This method also requires changing the reference to the user control in the master page using sharepoint

designer and/or to register a new control for the delegate control using a custom feature.

Benefits:

Like the previous approach, this approach also provides rapid customization through direct editing using

SharePoint designer.

Changes have to be done only at one single location as the logic is in the database.

Each site collection can have a different logic for the redirection.

Caveats:

To complete this process, it is required to modify the web.config to allow inline code in the

VariationLabelMenu.ascx user control in the master page gallery.

<SharePoint>

<SafeControls>

<!– Marks the VariationsLabelMenu.ascx as safe. –>

<SafeControl

src=”http://blogs.technet.com/_catalogs/masterpage/VariationsLabelMenu

.ascx”

Safe=”True” AllowRemoteDesigner=”True” />

</SafeControls>

Page 65: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

<SafeMode … >

<!– Marks VariationsLabelMenu.ascx for compilation. –>

<PageParserPaths>

<PageParserPath

VirtualPath=”/_catalogs/masterpage/VariationsLabelMenu.ascx”

CompilationMode=”Always”

AllowServerSideScript=”True”

AllowUnsafeControls=”False” />

</PageParserPaths>

</SafeMode>

</SharePoint>

Render the variation label menu

After we have discussed different way to modify the VariationsLabelMenu.ascx we need to look into the

specific changes that have to be done to this file to enable rendering of the variation label menu.

Per default, the content of the VariationsLabelMenu.ascx looks as follows:

<%@ Control Language=”C#” %>

<%@Assembly Name=”Microsoft.SharePoint.Publishing, Version=14.0.0.0,

Culture=neutral, PublicKeyToken=71e9bce111e9429c”%>

<%@Register TagPrefix=”CMS” Assembly=”Microsoft.SharePoint.Publishing,

Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”

namespace=”Microsoft.SharePoint.Publishing.WebControls”%>

<cms:VariationDataSource id=”LabelMenuDataSource” LabelMenuConfiguration=”1″

Filter=”” runat=”server”/>

As you can see, the VariationDataSource control is included but no rendering control is available to

render links to peer pages or sites.

VariationsLabelEcbMenu

In SharePoint 2007, the file looked slightly different:

<%@ Control Language=”C#” %>

<%@Assembly Name=”Microsoft.SharePoint.Publishing, Version=12.0.0.0,

Culture=neutral, PublicKeyToken=71e9bce111e9429c”%>

<%@Register TagPrefix=”CMS” Assembly=”Microsoft.SharePoint.Publishing,

Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”

namespace=”Microsoft.SharePoint.Publishing.WebControls”%>

<%– <cms:VariationsLabelEcbMenu id =”varlabelmenu1″ DataSourceID=”LabelMenuDataSource”

Page 66: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

DisplayText=”<%$Resources:cms,VariationLabelMenuTitle%>” IsCallbackMode=”true”

runat=”server” /> –%>

<cms:VariationDataSource id=”LabelMenuDataSource” LabelMenuConfiguration=”1″

Filter=”” runat=”server”/>

As you can see, the user control contained a commented reference to the VariationsLabelEcbMenu,

which utilized the VariationDataSource.

In SharePoint 2010, the VariationsLabelEcbMenu is still available but marked as deprecated.

That means your existing applications still work (at least with the current version) but it is recommended

to use a different control for future implementations.

Many customer have special needs to render the variation labels (e.g. to render a flag beside the label

name) which cannot be done with this control.

Using the standard ASP.NET controls gives much more control of the generated html.

ASP.NET Repeater or DataList control

The main difference between these two controls is that the Repeater allows a more flexible formatting

while the DataList renders each entry in a table rows or table columns.

Both controls use templates and data binding for the rendering.

Here is a simple example for the Repeater control:

<asp:Repeater ID=”Repeater1″ runat=”server”

DataSourceID=”LabelMenuDataSource” EnableViewState=”False”>

<ItemTemplate>

<a href=”<%# DataBinder.Eval(Container.DataItem, “NavigateUrl”) %>”>

<%# DataBinder.Eval(Container.DataItem, “DisplayText”) %></a>

</ItemTemplate>

<SeparatorTemplate> | </SeparatorTemplate>

</asp:Repeater>

Each Container object in the item template supports the following public properties:

• DisplayText - DisplayName of the label

• Name – Title of the label

• NavigateUrl – the URL of the peer item, the peer site or the top site in the label

• ToolTip – returns the same as NavigateUrl

Each of these properties can be used inside the ItemTemplate for the rendering of the current Variation

link node.

Page 67: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The Repeater control supports two different templates: one to be used for each of the elements in the

collection the repeater iterates over, and one, which will be used as a separator between the elements.

In the sample above, we just use a vertical bar as separator, which is a nice way to separate entries in a

horizontal list. Alternatively, you can embed the repeater in a html table and use column/row end/start

tags in the separator template.

Common problem using the VariationDataSource

After implementing a custom label menu using the VariationDataSource and one of the ASP.NET

controls you will notice the following problem when using the View or Edit properties from the ribbon

(callstack enabled and custom errors disabled in web.config to get a better error message):

This error occurs as with all controls, which perform databinding on first load – including the

VariationsLabelEcbMenu if CallbackMode is disabled.

Note: The IsCallbackMode attribute of the VariationLabelEcbMenu controls whether databinding is performed with everyuser clicks the dropdown rendered by the menu.

Page 68: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

See my previous post for more details and workaround of this problem.

Implementing Variation Aware Web Parts Web Parts are a black box for the content deployment and migration API. Only the web part itself knows

what type of content is stored inside it. When variating pages from source to target it might be that the

content of the web part has to be adjusted to work correct at the new location.

The content deployment and migration API cannot directly perform these modifications as it does not

know which operations to perform to make the web part content compatible with the new location.

To overcome this problem the developer of a web part can implement

the IWebPartVariationUpdate interface. Using this interface it is possible to implement an Update

method which can then be called by the variation feature after the page holding the web part has been

replicated to the target label to ensure that the web part can fix its internal data.

From the web parts shipped with SharePoint only the ContentByQueryWebPart and

the TableOfContentsWebPart implement this interface.

Customizing using Event Receivers You can apply event receivers to the Sites or Pages libraries of the target label – e.g. through Feature

stapling – and perform specific operations.

A good example of such a modification has been demonstrated by Vamsi Krishna Rallabhandi on his

recent blog post:

• Handling incorrect link propagation in Site Variations in SharePoint 2010

harePoint Variations – The complete Guide

– Part 13 – Logging

★★★★★

★★★★

★★★

★★

November 30, 2011 by Stefan Goßner // 0 Comments

Page 69: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

• 0

• 0

• 0

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

This part highlights the different logging options for the SharePoint variation system.

Variation Logs The variation system logs status information into the hidden Long Running Operation Status list in the

root of the site collection. Most problems related to variations are reflected in this log.

The Variation logs can be inspected through a link in the Site Collection Administration section of the

Site Settings page:

Page 70: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The variation log uses a GridView control to display a filtered view of the Long Running Operation

Status list using a SPDataSource control. The data source returns all rows from the Long Running

Operation Status list where the Type Of Job column contains the string “Variation”. Newest entries are

listed first.

Success messages and Failures are listed in separate columns, which give easy access to the information

if a problem has occurred with recent propagations:

Page 71: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

ULS Log In case that the information in the Variation Log is not sufficient to isolate a variation problem, it is

possible to leverage the SharePoint Unified Logging Service (ULS) to get additional logging

information.

Both the Variations Infrastructure and the Content Deployment and Migration API (which is used to

perform export and import operations during page propagation) use the ULS log to report problems

using the following categories:

For the Content Deployment and Migration API:

• SharePoint Foundation\Content Migration

• SharePoint Foundation\Topology

For the Variations Feature:

• Web Content Management\Site Management

• Web Content Management\Publishing Provisioning

To troubleshoot, variation related issues these four categories should be set to Verbose in the central

administration page.

You can use ULS Viewer to conveniently analyze ULS log files.

Page 72: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The most important category is Site Management. You should filter the ULS log for this category first. If

this does not give you relevant information, add the other two WCM categories on top. If the problem is

related to problems occurring during export/import, you need to add the two SharePoint Foundation

categories as well.

SharePoint Variations – The complete

Guide – Part 14 – Troubleshooting

★★★★★

★★★★

★★★

★★

November 30, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

Page 73: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Part 17 – MOSS 2007 vs. SP 2010

Part 18 – FAQ

This part will provide troubleshooting steps for the following common type of problems:

• Propagation Problems

• Variation Hierarchy is not created

• Automatic Page/Site propagation does not work

• Manual Page/Site propagation does not work

• Variation Label menu does not show correct results

• Variation landing page redirection does not work correct

Troubleshoot propagation problems

Propagation problems can be caused either in the application pool or in the SharePoint timer services. So

the first troubleshooting step has to be to determine if the problem occurs in the application pool or in

the timer service.

The following sequence of troubleshooting steps should be applied:

General steps

1. Check the Variation Log (see part 13 for details)

2. Check the ULS log for problems (see part 13 for the required categories)

3. Use STSADM -o variationsfixuptool -scan to analyze variation inconsistencies which might be

related to the problem

Isolate if worker process or timerjob

If the Variation Log indicates that the timer job is not executed:

1. Check if the relevant timerjob for the web application is enabled and correctly scheduled

Note: You can use powershell to dump a filtered timerjob list for your web application, which contains the relevant information.

command dumps the information about the variation timerjobs for the web application on port 1007: PS> (get-spwebapplication http://servername).JobDefinitions | where {$_.DisplayName -matchDisplayName, IsDisabled, LastRunTime, Schedule | fl

2. Check if the relevant timerjob has been executed successfully in the relevant timeframe

Note: You can use powershell to dump a filtered timerjob history for your web application. E.g. the following command dumps

variation timerjobs for the web application on port 1007: PS> (get-spwebapplication http://servername).JobHistoryEntries | where {$_.JobDefinitionTitle“variation”} The following command dumps the history for the create hierarchies timer job:

Page 74: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

PS> (get-spwebapplication http://servername).JobHistoryEntries | where {$_.JobDefinitionTitleCreate Hierarchies Job Definition”}

3. Check if a scheduled work item for the specific type and is created in the ScheduledWorkItems

table when the relevant action is performed. See the table at the end of Part 4 to identify the

Work item to look for.

4. Check if the scheduled work item is removed from the Scheduled Work Items table after the

timerjob has been started and ended.

Warning: Direct read access to a production SharePoint database can affect the performance of the site. It is recommendedMicrosoft to do this type of troubleshooting on a production system.

5.

Troubleshoot propagation problems in variation timerjobs

If problems occur within a timerjob you usually have to rely on the information provided by the

Variation Log or ULS logs to isolate the problem. If this information is not sufficient to isolate the issue

you should consider to open a support call with Microsoft as advanced debugging skills will be required

to further isolate the problem.

Troubleshooting propagation problems in the worker process

The following steps are relevant for spawn/hierarchy creation problems where the workitem is not added

to the ScheduledWorkItems table in the content database.

In this case, the problem is caused inside the IIS worker process.

If an event handler should initiate the failing operation verify if the event handler is properly bound to

the relevant Pages library or site.

Note: You can use the following powershell command to dump all event receivers registered on a specific Pages library. PS> (get-spweb http://servername/en).Lists[“Pages”].EventReceivers | select Type,Class | fl

The following event handlers need to be registered on the Pages library to ensure that the variation

system works correct:

Type : ItemDeleting

Class : Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver

Type : ItemAdded

Class : Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver

Type : ItemUpdated

Class : Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver

Page 75: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Type : ItemDeleted

Class : Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver

Type : ItemCheckedIn

Class : Microsoft.SharePoint.Publishing.PagesListCPVEventReceiver

Note: You can use the following powershell command to dump all event receivers registered on a specific Site: PS> (get-spweb http://servername/en).EventReceivers | select Type,Class | fl

The following event handlers need to be registered on the site to ensure that the variation system works

correct:

Type : WebDeleting

Class : Microsoft.SharePoint.Publishing.CPVAreaEventReceiver

Type : WebMoving

Class : Microsoft.SharePoint.Publishing.CPVAreaEventReceiver

Type : WebMoved

Class : Microsoft.SharePoint.Publishing.CPVAreaEventReceiver

Be careful if you find that custom event receivers are listening to the same events as the logic in the

custom event receivers might badly interact with the event receivers registered by the variation system.

For the manual spawn/hierarchy creation actions, you usually have to rely on the information provided

by the Variation Log or ULS logs to isolate the problem. If this information is not sufficient to isolate

the issue you should consider to open a support call with Microsoft as advanced debugging skills will be

required to further isolate the problem.

Troubleshoot Variation Label menu related problems

Here we need to differentiate between two different problems:

The variation labels menu never shows up

This is a common scenario if there is a problem in the VariationsLabelMenu.ascx, which causes the

dynamic compilation to fail. E.g., incorrect assembly references can cause this problem. Unfortunately,

SharePoint consumes such compile time problems and just silently hides the affected user control rather

than showing the error.

Page 76: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The “easiest” way I found to troubleshoot these issues is to attach a debugger (e.g. Visual Studio) to the

worker process and monitor the status messages while loading a page with the variation labels menu.

Usually problems are reported as System.Web.HttpParseExceptions.

You might see messages like these:

(9ac.15d4): CLR exception – code e0434f4d (first chance)

CLR exception type: System.Web.HttpParseException

“Unknown server tag ‘CMS:VariationsLabelEcbMenuX’.”

(9ac.1268): CLR exception – code e0434f4d (first chance)

CLR exception type: System.Web.HttpParseException

“Could not load file or assembly ‘Microsoft.SharePoint.Publishing,

Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one

of its dependencies. The system cannot find the file specified.”

You will have to analyze and correct the parser errors reported with the exception to fix the problem.

The variation labels menu does not show links to all existing peers

This usually indicates a problem in the relationship between the peer pages. Either site/page properties

are not correctly set or entries in the relationships list are missing or incorrect.

The best way to isolate such problems is to use STSADM -o variationsfixuptool -scan to analyze the

problems and STSADM -o variationsfixuptool -fix to solve the problem.

Troubleshoot Variation landing page related problems

The first important step is to check from which location the VariationRoot.aspx receives the logic to

perform the routing.

As outlined in Part 10 it is possible to move the logic out of the VariationRootLanding.ascx into other

controls or even into libraries in the SharePoint content database.

Verify the welcome page settings of the variation root site and ensure that it points to the

VariationRoot.aspx page. Verify if the VariationRoot.aspx page uses the VariationRootPageLayout.aspx

page. If customization has been applied to the variation root logic, use SharePoint designer or

Powershell to inspect the content of the VariationRootPageLayout.aspx

Note: You can use the following powershell command sequence to dump the binary content from the SPFile object of the VariationRootPageLayout.aspxlayout to the file system: PS> $byteArr = ((get-spweb http://server).Lists[“Master Page Gallery”].Items | where{$_.Name -match“VariationRootPageLayout.aspx” }).File.OpenBinary()

Page 77: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

PS> [System.IO.File]::WriteAllBytes( “c:VariationRootPageLayout.aspx”, $byteArr)

Possible Reasons for routing problems with the variation landing page

In general, there are five different reasons, which can cause routing problems with the Variation landing

page:

Problem in the variation label definition

Analyze using a custom view if the hierarchy for the desired target label is created and that the correct

language, locale and top site is configured in the list item.

Problem with the relationship between variation peers

Either site/page properties are not correctly set or entries in the relationships list are missing or incorrect.

The best way to isolate such problems is to use STSADM -o variationsfixuptool -scan to analyze the

problems and STSADM -o variationsfixuptool -fix to solve the problem.

Permission problems

If the logic in the VariationsRootLanding.ascx is using security trimmed API (e.g.

Variations.Current.UserAccessibleLabels), it is possible the routine is influenced by different

permissions of the users and whether they arrive on the page anonymous or authenticated.

Test if the users can navigate to the variation top site of the desired label using the direct URL.

Browser configuration problems

The default routing logic uses the language settings configured in the browser to determine the target

label. If the user has changed these settings, the routing might not be as expected. A network monitor

trace reveals the language settings configured by the user and can help to isolate such problems.

Problems in the logic of the landing page

Often the default routing logic does not fulfill the customer’s requirement and needs to be adjusted.

Alternatively, customers have already implemented a custom logic, which does not work as expected.

Page 78: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

SharePoint Variations – The complete

Guide – Part 15 – "View Changes" Button

★★★★★

★★★★

★★★

★★

December 1, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

This lesson gives insights into the Variation specific View Changes ribbon action and how it determines

the versions to compare.

It is important to understand that this button is always disabled if you see the button in context of a page

which does not reside in a target variation label. You cannot use it (e.g.) in the source label. It is also

disabled if the current page in the target label is a major version or if only one version has been

propagated from source to target.

Page 79: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

What the button allows you to do is to compare the most recently propagated source page version with

the version of the source page which was last used to create an approved version in the target.

To give you an example:

The Diagram above shows the following actions:

1. A user created a page in the source label (version 1.0)

2. The page was approved (version 1.0) which caused automatic propagation to the target where

the page arrives as version 0.1

3. A translator worked on the page in the target label and approved it (Version 1.0)

4. In the source label someone changed something in the page (Version 1.1)

5. Later the page is approved again (version 2.0) which causes automatic replication to the target

label (version 1.1)

Page 80: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

6. Before a translator was able to work on the updated propagated page in the target another

change is done in the source and approved (version 3.0) which causes another automatic

propagation to the target (Version 1.2)

7. Another change is done on source but is not yet approved (version 3.1)

8. Now a translator starts to work on the page (version 1.2 and 1.3).

9. The translator would like to know what has changed in the source page since he last translated

the content. He uses the View Changes button which shows him the difference between version

1.0 and version 3.0 in the source page.

The question is now: how does SharePoint know which versions to compare?

Propagation Version Tracking The variation system keeps track about the last propagated page version in two different places:

In a column of the Relationships List Entry

When a new version is variated to the target label the variation system adds/updates the relationships list

entry of the created/updated target page.

The LastPropagateSourcePageVersion column of the relationships list entry will receive the version

of the source page of the variation

In a property of the target peer page

When a new version is variated to the target label the variation system preserves the previous value of

thePreviousSpawnSourcePageVersion property of the list item in the target page.

This property is changed by the ItemUpdated event receiver when the page is either approved or

scheduled to go live in the future. The event receiver will then copy the value of

the LastPropagateSourcePageVersion from the relationships list entry into this property.

That means the LastPropagateSourcePageVersion column in the relationships list always contains the

version of the source page which was last variated to the target while

the PreviousSpawnSourcePageVersion property of the target page always contains the version of the

source page which was last propagated for the currently approved version in the target.

If both versions are the same, then the published version of the page in the target label is based on the

last propagated source version.

If both versions are different, then at least one update has been propagated from source to target since

the last version was published in target.

The View Changes ribbon action

Page 81: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The View Changes ribbon action evaluates the version information stored in

the LastPropagateSourcePageVersion column of the relationships list entry and in

the PreviousSpawnSourcePageVersion property of the page.

If both are different it generates an url to the _layouts/VersionDiff.aspx page passing in information

about the source page (list id and item id) and the information about the two different versions stored as

listed above to create a comparison.

The VersionDiff.aspx page comes with SharePoint Foundation and allows to compare the content in the

different columns of a list item using the VersionDiffIterator control.

SharePoint Variations – The complete

Guide – Part 16 – Translation Support

★★★★★

★★★★

★★★

★★

December 2, 2011 by Stefan Goßner // 2 Comments

• 0

• 0

• 0

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

Page 82: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Part 17 – MOSS 2007 vs. SP 2010

Part 18 – FAQ

Today I will explains how translatable columns and the variation export/import functionality can be used

to support content translation

We will cover the following topics:

• Explain the purpose of translatable columns

• Explain how to enable export/import functionality in manage content and structure

• Explain how to translate content and create a new import package

Translatable columns The site settings menu contains another option which belongs to Variations which we did not yet

discuss:

Although not obvious from the name Translatable Columns are part of the Variation Infrastructure.

The purpose of translatable columns is to allow to flag which columns in publishing pages of a site

collection should be translated.

Be aware that SharePoint itself does not take care of translation! It also does not support different

languages in the same column as the option might imply.

Page 83: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Translatable columns are only used to flag specific columns as translatable when an export package is

created to allow an external company to translate the content.

Important: The translateable columns information is only for information to the translator. There is nothing that could prevent the

any other column beside the one marked as being translatable. All changes to any column will be applied when importing the package back into the variation system. As well those columns markedthose which are not marked as translatable.

TranslateFields property

The information about the translatable columns is stored in Xml format the TranslateFields property in

the property bag of the root folder of the relationships list in the root site of the site collection:

<Fields>

<Field Id=”52578fc3-1f01-4f4d-b016-94ccbcf428cf”>Comments</Field>

<Field Id=”34a72e09-3ca6-4931-b2e3-f81c40bb87bd”>Description</Field>

<Field Id=”f55c4d88-1f2e-4ad9-19af4ee7ee8″>Page Content</Field>

</Fields>

Export/Import of a variation label for translation Export/Import using the UI

Page 84: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Looking at a site in a target label in site manager in MOSS 2007 you can see the following two options:

Comparing this with the menu options of a site in a target label on SharePoint 2010 you will miss these

options:

To use the Export Variation and Import variation dialog options in SharePoint 2010 it is required to

enable these options by editing the_layouts/SiteManager.aspx file:

<SharePoint:MenuItemTemplate UseShortId=false id=”OLWebExport”

runat=”server” Text=”<%$Resources:cms,SmtExport%>”

ClientOnClickScript=”SmtVariationExportWarning(‘%WebExportUrl%’)” Visible=”false

” />

Page 85: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

<SharePoint:MenuItemTemplate UseShortId=false id=”OLWebImport” runat=”server”

Text=”<%$Resources:cms,SmtImport%>”

ClientOnClickNavigateUrl=”%WebImportUrl%&%SourceParam%” Visible=”false” />

After changing the value of the Visible attribute to true the options are available also on SharePoint

2010.

After choosing the Export Variation option the server will export all pages in the pages library of the site

into a content migration package which is streamed back as response to the post request.

Choosing the Import Variation option redirects to a dialog that allow to pick the content migration

package holding the translated content.

Important: The dialog seems to imply that the import will be performed into the selected site – but that is not what happens.The Import

with RetainObjectIdentity = true – which means that the items in the package will be imported with the same Guid and Url as they

if you exported site1 and then select the import option in site2 the import will still be performed into site1. That also means that thebeing imported have a different URL as before – e.g. because their Url name has changed or because the site was moved.

Export/Import using the PublishingService

To allow automated translation of content SharePoint provides the export and import funcationality also

through the ExportObjects andImportObjects methods of the PublishingService web service which

can be accessed using the following URL:

http://servername/site/_vti_bin/PublishingService.asmx

There is good documentation on how to use the web service for export and import on MSDN:

• PublishingService.ExportObjects Method

• PublishingService.ImportObjects Method

Content Migration Package for translation We will not go into all the details of the content migration package here. But I will highlight the relevant

parts which are required to implement a translation service.

ExportSettings.xml

The ExportSettings.xml file contains the information about the settings used to export the package and

the objects selected to be exported:

<?xml version=”1.0″ encoding=”utf-8″?>

<ExportSettings

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

Page 86: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

xmlns:xsd=”http://www.w3.org/2001/XMLSchema”

SiteUrl=”http://servername/”

FileLocation=”C:\Temp\b3c42cb3-922a-4738-878a-bb4df62bd86b”

BaseFileName=”f265b29f-dbb5-4b71-93c6-3e6ed9a89add.cmp”

IncludeSecurity=”None” IncludeVersions=”CurrentVersion”

ExportPublicSchema=”true” ExportFrontEndFileStreams=”true”

ExportMethod=”ExportAll” ExcludeDependencies=”false”

xmlns=”urn:deployment-exportsettings-schema”>

<ExportObjects>

<DeploymentObject Id=”00000000-0000-0000-0000-000000000000″

Type=”ListItem” ParentId=”00000000-0000-0000-0000-000000000000″

Url=”/VarRoot/target/site1/Pages/default.aspx“

ExcludeChildren=”false” IncludeDescendants=”All” />

</ExportObjects>

</ExportSettings>

You will find one DeploymentObject per exported page as the Translation export functionality selects

each page explicitly for export.

VariationsLanguageSettings.xml

This file only exists in content migration packages, which are created with the export for translation

option.

The file contains the information about source and desired target language to be used for the translation.

The information is taken from the configuration of the source label and the exported target label.

<LanguageSettings>

<SourceLanguage>en-US</SourceLanguage>

<TargetLanguage>de-DE</TargetLanguage>

</LanguageSettings>

TranslatableFieldSettings.xml

This file only exists in content migration packages, which are created with the export for translation

option – and only if translatable columns are defined in the site collection.

The content of this file will be an exact copy of the value of the TranslateFields property in the property

bag of the root folder of the relationships list in the root site of the site collection:

<Fields>

<Field Id=”52578fc3-1f01-4f4d-b016-94ccbcf428cf”>Comments</Field>

<Field Id=”34a72e09-3ca6-4931-b2e3-f81c40bb87bd”>Description</Field>

<Field Id=”f55c4d88-1f2e-4ad9-19af4ee7ee8″>Page Content</Field>

</Fields>

Page 87: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

The information in this file should be used by translators – or 3rd party editing tools supporting

translators to allow them to decide which column values to translate.

Manifest.xml

This is the file which translators have to work on to translate the content. As changing the markup would

cause problems during re-import it is recommended to read the file with a custom tool which provides

access only to those columns defined in TranslatableFieldSettings.xml.

<?xml version=”1.0″ encoding=”utf-8″?>

<SPObjects xmlns=”urn:deployment-manifest-schema”>

<SPObject Id=”04f122ee-aeb6-017f-99a7-7447d09414a1″

ObjectType=”SPContentType” …

Url=”/VarRoot/target/site1/Pages”>

<ContentType ID=”0x010100C568DB…” …>

<Fields>

<Field ID=”{f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8}”

Name=”PublishingPageContent” StaticName=”PublishingPageContent”

SourceID=”http://schemas.microsoft.com/sharepoint/v3″

Group=”Page Layout Columns” DisplayName=”Page Content”

Type=”HTML” Required=”FALSE” Sealed=”TRUE” RichText=”TRUE”

RichTextMode=”FullHtml” Customization=”” ColName=”ntext6″

RowOrdinal=”0″ />

<SPObject Id=”7bda6573-027d-4670-9ebb-c588483b9143″

ObjectType=”SPFile” …

Url=”/VarRoot/target/site1/Pages/default.aspx”>

<File Url=”Pages/default.aspx”…>

<Properties>

<Property Name=”PublishingPageContent” Type=”String”

Access=”ReadWrite”

Value=”Content to be translated” />

<SPObject Id=”cf8a9bfd-5892-4938-908f-ed9328e305d5″

ObjectType=”SPListItem” …

Url=”/VarRoot/target/site1/Pages/default.aspx”>

<ListItem FileUrl=”Pages/default.aspx” …>

<Fields>

<Field Name=”PublishingPageContent”

Page 88: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Value=”Content to be translated”

FieldId=”f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8” />

Identifying the relevant fields to be translated is not completely straight forward: first you have to

identify which field to translate from the TranslatableFieldSettings.xml. Here you can use the Field Id or

the field Display Name to find the Field information in the SPContentType object in the Manifest.xml

file.

This will allow you to get the Name property of the SPField which is referenced later in the SPListItem

and SPFile objects in the manifest.xml file which hold the actual content to be translated.

It is important that as well the content in the SPFile and in the SPListItem object is translated (both will

hold the same information).

SharePoint Variations – The complete

Guide – Part 17 – MOSS 2007 vs. SP 2010

★★★★★

★★★★

★★★

★★

December 5, 2011 by Stefan Goßner // 0 Comments

• 0

• 0

• 0

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

Page 89: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

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

Timerjob changes In MOSS 2007, various variation specific operations were executed in the worker process of the actual

web application rather than in a timer job. That caused a problem with large sites – especially on 32-bit

systems – as the memory resources available to the worker process had to be shared between the

variation operations and worker threads, which were handling web requests.

In MOSS 2007, only two operations were handled in timer jobs:

• Automatic creation of site variants (handled in the SpawnSitesJobDefinition timer job)

• Automatic creation of page variants (handled in the PropagateVariationPageJobDefinition timer

job)

As some of the remaining operations – e.g. creating new variation hierarchies for an existing variation

system – could run for many hours, it was possible that the configured application pool recycling

intercepted the variation operations, which led to partially propagated content between source and target.

With SharePoint 2010, the design has been changed in a way that the critical functionality has been

moved out of the worker process and into a timer job.

The following operations are affected by this design change:

• Creation of variation hierarchies (now handled in the CreateVariationHierarchiesJobDefinition

timer job)

• Manual creation of sites and pages (now handled in the CreateVariationPageJobDefinition timer

job)

• Manual update of a page variant (now handled in the CreateVariationSiteJobDefinition timer

job)

Another important change is that all the variation timer jobs are now pausable and support recycling of

the SharePoint timer service.

UI Changes Most of the remaining differences are a side effect of the fact that the operations are now no longer

executed as long running operations (LRO) but as timer jobs executed in a different process.

Page 90: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Due to this change, operations executed in the UI are now no longer executed when the user request the

operation in the UI but when the timer job runs next.

That means that UI actions, which previously started a long running operation in the worker process

have been changed to an action which only enqueues the operation for a scheduled timer job.

For a user, this change can have a significant impact on the workflow of an author as he now has to wait

for the timer job to be executed before he can work on the target items.

If the default schedule of the timer jobs is used that means, the user has to wait until the next day for the

creation of a variation hierarchy when a new label is created, and for up to one hour for each page that

needs to be variated.

Logging Changes Variations logs are much more stable and reliable in SharePoint 2010 than in MOSS 2007. In MOSS

2007 there were many situations where variation propagation failed without helpful information in the

Variation log – sometimes the entry was there but empty.

In SharePoint 2010 the variation log is much more stable and usually it is possible to pinpoint the reason

for a failed propagation through just this log.

Another change in logging are the ULS log categories used by the content deployment and migration

API.

In MOSS 2007 the Content Deployment and Migration API used mainly the Upgrade category while in

SharePoint 2010 it uses the Content Migration and Topology category.

harePoint Variations – The complete Guide

– Part 18 – FAQ

★★★★★

★★★★

★★★

★★

December 6, 2011 by Stefan Goßner // 26 Comments

Page 91: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

• 0

• 0

• 0

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 this last part of the article series I would like to address common questions I receive from customers.

You might want to check for updates on this page in the future as I will update this part with new

questions as they arise.

Common Questions Question: Are permissions replicated from source to target label?

Answer: No. Permissions are not replicated as it is expected that the same user can have a different role

in a different label.

Question: Are manually activated features replicated from source to target label?

Answer: This depends: if the features activation is done before the site has been created in the target

label through the variation engine then the features will also be activated on the target label. Features

activated on the sites later will not get replicated as the variation engine only supports updates to pages

but not to sites.

Question: Is the content of minor versions of pages replicated to the target label?

Page 92: SharePoint Variations – The complete Guide – Part 1 – The ...docshare01.docshare.tips/files/31013/310130871.pdfPart 17 – MOSS 2007 vs. SP 2010 Part 18 – FAQ The variation

Answer: In general the answer is no. Only major versions are replicated to the target label. The only

exception is during initial replication of a site from source to target when pages are provisioned through

the site templates. During the replication the content of the current version of the related pages in the

source label is replicated to the target label – even if this is a minor version.

Question: Is there a list of columns and properties which do not get overwritten during replication?

Answer: See in the note at the bottom of Part 7

Question: Are properties in the site property bag replicated from source to target?

Answer: No, site properties are not replicated.

Question: Are changes to navigation settings replicated between source and target labels?

Answer: This depends: if the navigation setting changes are done before the site has been created in the

target label through the variation engine then the navigation settings will be replicated to the target label.

Navigation changes done later will not get replicated as the variation engine only supports updates to

pages but not to sites.

https://blogs.technet.microsoft.com/stefan_gossner/2011/11/14/sharepoint-variations-the-

complete-guide-part-1-the-basics/