Category Archives: Content Deployment

How to Fix – Publishing Site Content Deployment Error – Duplicate First Name Column

Content Deployment was failing with the following error in the logs:

Title: Field name already exists. The name used for this field is already used by another field in the list. Select another name and try again.

Severity: Error

Object: User Information List

We had a publishing site that was upgraded from SharePoint 2007 to SharePoint 2010 that was using content deployent from a staging site to a deployed site.

We could see using SharePoint Manager 2010 that we had duplicates in the destination site that were not in the source site.

Duplicates in destination server

We opened a job with Microsoft and we found someone with a similar issue on the msdn forums

Microsoft gave us an executable ‘RemoveDuplicateColumn64‘ to remove the duplicates, we ran it for each duplicate.

The exe prompts you for all the required parameters, one of which is the duplicate internal name which in our case was FirstName0, again we used SharePoint Manager to find the internal name.

We have no idea how these duplicates got there but since removing them a couple of months ago there have been no problems with the content deployment.

This problem could likely be avoided by using the new snapshot content deployment available in SharePoint 2010.

Advertisements

Bulk/Batch Approval/Rejection in a SharePoint 2010 library

My client had the requirement to bulk approve or reject items in a document library or list.  Using document sets wasn’t the solution as the only thing they had in common was that they all need to be approved at the same time.

I found this excellent solution from Sohel’s blog which was almost perfect…

http://ranaictiu-technicalblog.blogspot.co.nz/2011/05/sharepoint-2010-approvereject-multiple.html

It handles workflow if they are running which other solutions I found didn’t.  One limitation was that it only worked for document libraries, not lists.

All I needed to do was update the elements file to below and I had it on both document libraries and lists.

<?xmlversion=1.0encoding=utf-8?>

<Elementsxmlns=http://schemas.microsoft.com/sharepoint/>

<CustomAction

Id=COB.SharePoint.Ribbon.NewControlInExistingGroup

Location=CommandUI.Ribbon

RegistrationType=ContentType

RegistrationId=0x01>

<CommandUIExtension>

<CommandUIDefinitions>

<CommandUIDefinitionLocation=Ribbon.ListItem.Workflow.Controls._children>

<ButtonId=COB.SharePoint.Ribbon.NewControlInExistingGroup.Notify

Command=COB.Command.NewControlInExistingGroup.Notify

Sequence=21

Image16by16=/_layouts/$Resources:core,Language;/images/formatmap16x16.png

Image16by16Top=-48Image16by16Left=-240

Image32by32=/_layouts/$Resources:core,Language;/images/formatmap32x32.png

Image32by32Top=-448Image32by32Left=-384

Description=Uses the notification area to display a message.

LabelText=Approve/Reject Selection

TemplateAlias=o1

/>

</CommandUIDefinition>

<CommandUIDefinitionLocation=Ribbon.Documents.Workflow.Controls._children>

<ButtonId=Ribbon.Documents.Workflow.ApproveDoc

Alt=Approve multiple items

Command=COB.Command.NewControlInExistingGroup.Notify

LabelText=Approve/Reject Selection

Image16by16=/_layouts/$Resources:core,Language;/images/formatmap16x16.png

Image16by16Top=-48Image16by16Left=-240

Image32by32=/_layouts/$Resources:core,Language;/images/formatmap32x32.png

Image32by32Top=-448Image32by32Left=-384

TemplateAlias=o1

/>

</CommandUIDefinition>

</CommandUIDefinitions>

<CommandUIHandlers>

<CommandUIHandler

Command=COB.Command.NewControlInExistingGroup.Notify

EnabledScript=javascript:enableApprovalAll();

CommandAction=javascript: showApproveAll();

/>

</CommandUIHandlers>

</CommandUIExtension>

</CustomAction>

<CustomAction

Id=COB.Command.NewControlInExistingGroup.Notify.Script

Location=ScriptLink

ScriptSrc =/_layouts/SharePoint.ApproveRejectTest/Scripts/ApproveReject.js/>

</Elements>

The Easy Way to Restore a SharePoint 2010 Content Database to a Different Domain.

If you are migrating your SharePoint site to a new domain or if you have parallel environments in another domain (e.g. for testing, development etc.)  You may wish to move a content database and all its permissions to the new domain.

Here is an easy way to do it.

  1. Create a SQL backup of the source content database
  2. Stop the SharePoint services on the destination server
  3. In SQL Management Studio restore the content database back over the destination content database
  4. Start the SharePoint services on the server
  5. Run the user migration script by SharePoint Voodoo.  WARNING:- Users need to exist in both the old and new domain.
  6. You may need to go into SharePoint designer and resave and republish your workflow, if you don’t you may get a ‘user not found’ when starting a workflow or accessing workflow settings

P.S. I doubt if this is the Microsoft recommended method!  You could also run a content deployment from the source to destination server.

How to create a empty destination site collection for content deployment

To perform a successful initial content deployment from a publishing site the destination has to be an empty site.

This is not to be confused with the <blank> site template.

I have had some success when picking the <choose template later> option in the site creation page in Central Admin but sometimes even this  fails.

The only sure way of creating a blank site is to use the following stsadm command


STSADM.EXE -o createsite -url <site-collection-url> -ownerlogin <domain\username> -owneremail <email@address>