<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Back in Hack</title>
	<atom:link href="http://gavinmckay.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gavinmckay.wordpress.com</link>
	<description>I am not paranoid.  But I'm working on it.</description>
	<lastBuildDate>Tue, 17 Jan 2012 05:15:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gavinmckay.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Back in Hack</title>
		<link>http://gavinmckay.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gavinmckay.wordpress.com/osd.xml" title="Back in Hack" />
	<atom:link rel='hub' href='http://gavinmckay.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Using the ULS Viewer for your custom application</title>
		<link>http://gavinmckay.wordpress.com/2012/01/08/using-the-uls-viewer-for-your-custom-application/</link>
		<comments>http://gavinmckay.wordpress.com/2012/01/08/using-the-uls-viewer-for-your-custom-application/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 08:48:59 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Stepwise]]></category>
		<category><![CDATA[Windows Communication Foundation (WCF)]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=401</guid>
		<description><![CDATA[The ULS Viewer is a wonderful tool that all SharePoint admins absolutely should have on their servers. There is no other utility that is as quick and easy to use for ULS log viewing &#8211; and more importantly, it&#8217;s free! I am helping develop some custom Remote Blob Storage services for SQL Server 2008 and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=401&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The ULS Viewer is a wonderful tool that all SharePoint admins absolutely should have on their servers. There is no other utility that is as quick and easy to use for ULS log viewing &#8211; and more importantly, it&#8217;s free!</p>
<p>I am helping develop some custom Remote Blob Storage services for SQL Server 2008 and SharePoint 2010 (Stepwise Enterprise Storage &#8211; imminent release!) and I wanted to be able to use the ULS log viewer, but I didn&#8217;t want to spam the SharePoint logs and our services don&#8217;t need to be installed on SharePoint itself.</p>
<p>I set up the Microsoft Enterprise Library Logging Application Block and the Rolling Flat File Trace Listener to do the job for me. The rolling flat file trace listener automatically creates a new file when the current file meets certain criteria, such as size or age.  Note the hard-coded [fileName="MyService-20200101-0000.log"], this is required because the ULS Log Viewer is hard-coded to look for files matching the format *-????????-?????.log i.e. MyService-yyyymmdd-HHmmss.log. You can set this to something different, but I thought this would be fairly safe.</p>
<p>First I added a Rolling Flat File Trace Listener:</p>
<pre>&lt;add name="Rolling Flat File Trace Listener"
fileName="MyService-20200101-0000.log"
footer=""
formatter="ULS SingleLine Text Formatter"
header=""
rollFileExistsBehavior="Increment"
rollInterval="Day"
rollSizeKB="2048"
timeStampPattern="-yyyyMMdd-HHmm"
traceOutputOptions="None"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
filter="All"
type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
/&gt;</pre>
<p>then I need to make sure the format for the output was correct. ULS wants the following fields supplied:</p>
<p>•Timestamp: Equivalent to the “TimeGenerated” field in the “Application” event Log</p>
<p>•Process: the image name of the process logging its activity followed by its process ID (PID) between parentheses.</p>
<p>•TID: Thread ID</p>
<p>•Area: This maps the “Source” field in the “Application” event Log</p>
<p>•Category: this maps the “Category” field in the “Application” event Log</p>
<p>•EventID: A unique internal Event ID (which you can generate)</p>
<p>•Level: Logging level i.e. Information, Verbose, Error, etc.</p>
<p>•Message: Text message</p>
<p>•Correlation: may contain a link to the the EventID of another logged event, which again you can generate</p>
<p>so this is the formatter I used:</p>
<pre>&lt;add
template="{timestamp(local:dd/MM/yyyy HH:mm:ss.fff)} {tab}{appDomain} {tab}{win32ThreadId} {tab}{source} {tab}{category} {tab}{eventid} {tab}{severity} {tab}{message} - {priority} - {dictionary({key} - {value}|)}"           
type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"           
name="ULS SingleLine Text Formatter" /&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/401/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=401&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2012/01/08/using-the-uls-viewer-for-your-custom-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating Windows Server 2008 DNS Zones to Resolve External URLs to Internal IP Addresses</title>
		<link>http://gavinmckay.wordpress.com/2011/11/18/creating-windows-server-2008-dns-zones-to-resolve-external-urls-to-internal-ip-addresses/</link>
		<comments>http://gavinmckay.wordpress.com/2011/11/18/creating-windows-server-2008-dns-zones-to-resolve-external-urls-to-internal-ip-addresses/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 00:26:33 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=387</guid>
		<description><![CDATA[In our public-facing website environment we resolve URLs via our gateway to a hardware load balancer, and then on to our web front-end SharePoint 2010 servers. This all works well, and externally we can resolve www.mydomain.com. Internally however, I wanted to resolve the same URL to my internal IP addresses without having to hack hosts [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=387&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In our public-facing website environment we resolve URLs via our gateway to a hardware load balancer, and then on to our web front-end SharePoint 2010 servers. This all works well, and externally we can resolve <a href="http://www.mydomain.com">www.mydomain.com</a>. Internally however, I wanted to resolve the same URL to my internal IP addresses without having to hack hosts files or make other nasty changes.</p>
<p>This can be done via Windows 2008 DNS server when creating a default primary authorative zone. Normally you would create a zone for mydomain.com and then add a host entry for &#8220;www&#8221;. This would however have the effect that the DNS server became authoratative for the entire mydomain.com domain, which I did not want as there are other mydomain.com addresses that our environment does not host.</p>
<p>The solution is to create a primary DNS zone matching the full URL, <a href="http://www.mydomain.com">www.mydomain.com</a>.</p>
<div id="attachment_388" class="wp-caption alignnone" style="width: 460px"><a href="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com.png"><img class="size-full wp-image-388" title="www-mydomain-com" src="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com.png?w=450&#038;h=339" alt="DNS primary zone entry" width="450" height="339" /></a><p class="wp-caption-text">DNS primary zone entry</p></div>
<p>Then, you create a blank A record pointing to the internal IP address of your website:</p>
<div id="attachment_389" class="wp-caption alignnone" style="width: 354px"><a href="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com-1-2-3-4.png"><img class="size-full wp-image-389" title="www-mydomain-com-1-2-3-4" src="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com-1-2-3-4.png?w=450" alt="Create a blank A record"   /></a><p class="wp-caption-text">Create a blank A record</p></div>
<p>This A record becomes the default entry for the zone, so internal requests for <a href="http://www.mydomain.com">www.mydomain.com</a> will resolve to your A-record, but any requests for other URLS in the mydomain.com space will be forwarded via normal DNS processes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=387&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/11/18/creating-windows-server-2008-dns-zones-to-resolve-external-urls-to-internal-ip-addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>

		<media:content url="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com.png" medium="image">
			<media:title type="html">www-mydomain-com</media:title>
		</media:content>

		<media:content url="http://gavinmckay.files.wordpress.com/2011/11/www-mydomain-com-1-2-3-4.png" medium="image">
			<media:title type="html">www-mydomain-com-1-2-3-4</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint 2010 Content Deployment &#8211; System.NullReferenceException: Object reference not set to an instance of an object</title>
		<link>http://gavinmckay.wordpress.com/2011/11/08/sharepoint-2010-content-deployment-system-nullreferenceexception-object-reference-not-set-to-an-instance-of-an-object/</link>
		<comments>http://gavinmckay.wordpress.com/2011/11/08/sharepoint-2010-content-deployment-system-nullreferenceexception-object-reference-not-set-to-an-instance-of-an-object/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:38:31 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010 Enterprise]]></category>
		<category><![CDATA[SharePoint 2010 Foundation]]></category>
		<category><![CDATA[SharePoint 2010 Standard]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=371</guid>
		<description><![CDATA[Content deployment in SharePoint 2010 works fantastically well. Once it is working. Getting to the &#8216;working&#8217; stage however is a path that can cause a lot of pain, not the least of which is getting a generic error! My configuration for our SharePoint publishing farm is as follows: SharePoint central admin site (PUB01) 2 x [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=371&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Content deployment in SharePoint 2010 works fantastically well. Once it is working. Getting to the &#8216;working&#8217; stage however is a path that can cause a lot of pain, not the least of which is getting a generic error!<br />
My configuration for our SharePoint publishing farm is as follows:</p>
<ol>
<li>SharePoint central admin site (PUB01)</li>
<li>2 x SharePoint web front-ends serving content (WFE01 and WFE02)</li>
<li>Radware load balance (LOAD01)</li>
</ol>
<p>I&#8217;m mentioning these items because they impacted how my content deployment was not working, and also the resolution required.</p>
<h2>What You Absolutely Need To Have</h2>
<p>There is ample documentation on setting up Content Deployment, but from a high level you must have the following in place:</p>
<ol>
<li>Your source Central Admin website must be able to access the destination Central Admin website, including setting the destination CA to accept content deployment. This includes the IP address and port of course!</li>
<li>The account you use to deploy content on the destination server must have the appropriate permissions</li>
<li>Your source and destination farms must be the same SharePoint version (right down to the Cumulate Update if applicable!)</li>
<li>The destination CA must have enough room to store the content in a temporary location (check hard drive space on the destination server that hosts the Central Admin site)</li>
<li>The destination CA must have the Microsoft SharePoint Foundation Web Application service &#8220;Started&#8221; on the server (destination CA uses this to check IIS configuration &#8211; more on this later)</li>
</ol>
<h2>Content Deployment Process</h2>
<p>Content deployment goes through several high-level stages when it deploys content:</p>
<ol>
<li>The Source CA packages up the content into one or more CAB files</li>
<li>The Source CA pushes the CAB files to the Destination CA, which stores them in a temporary location</li>
<li>The Destination CA validates the IIS site and destination site collection</li>
<li>The Destination CA unpacks the cab files and individually pushes the content into the destination site collection</li>
</ol>
<p>The import log file shows the results of the attempted import and will display any warnings or errors that occurred.</p>
<h2>System.NullReferenceException: Object reference not set to an instance of an object</h2>
<p>In my environment, this error occurs very quickly after the data has been transferred to the destination farm. I dialed up the ULS diagnostic monitoring by editing the Monitoring, &#8220;Configure diagnostic logging&#8221;, &#8220;Category &#8211; Web Content Management/Content Deployment&#8221; setting to Verbose. Your ULS log file will then show much more detail about the process, including whether the CAB content files are being copied up properly from the source to the destination CA. Look for entries such as:</p>
<pre>Upload file 'C:\SPDeploy\1c8b92e5-975c-4d30-b38e-04c25975e2bb\ExportedFiles9.cab' succeeded</pre>
<p>The &#8220;System.NullReferenceException&#8221; error occurs very soon after the final CAB file has been deployed.</p>
<p>The thing that tripped me up was the load-balanced url I had set up in the Radware load-balancer and DNS settings. My destination URL DNS entry was pointing to the load-balancer virtual IP address, which then load-balanced requests to my two web front-end servers. My suspicion is that the destination Central Admin content deployment process checks IIS to see if it is configured correctly, and because it is traveling via a virtual IP address it doesn&#8217;t resolve to a local IIS metabase entry. In the ULS logs I saw entries such as:</p>
<pre>Saving CachingSettings for SiteUrl 'http://your.sharepoint.url/'</pre>
<p>immediately followed by the dreaded:</p>
<pre>Failed import operation for Content Deployment job 'Remote import job for job with sourceID = 409e7be7-7694-496d-8469-eb472e5070f6'. Exception was: 'System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.SharePoint.SPSite.PreinitializeServer(SPRequest request)
at Microsoft.SharePoint.SPWeb.InitializeSPRequest()
at Microsoft.SharePoint.SPWeb.get_AllProperties()
at Microsoft.SharePoint.Publishing.SiteCacheSettings..ctor(SPSite site)
at Microsoft.SharePoint.Publishing.SiteCacheSettingsWriter..ctor(SPSite site)
at Microsoft.SharePoint.Publishing.SiteCacheSettingsWriter.SaveCacheSettingsBeforeImport(String importSiteUrl)
at Microsoft.SharePoint.Publishing.Administration.ContentDeploymentJob.DoImport()'</pre>
<p>I checked the &#8220;PreInitializeServer&#8221; code using <a href="http://wiki.sharpdevelop.net/ilspy.ashx">ILSpy</a> (an improved, and more importantly free, replacement for Reflector), which wasn&#8217;t doing anything particularly complex but does use the SPRequest object. My thinking at this point was that the CA was unable to connect to IIS &#8211; it possibly does an IIS metabase lookup to get configuration settings, and because it was being bounced to the load-balancer and then down to the web front-ends, this step was failing. This occurs immediately after the cab files have been uploaded to the destination server.</p>
<p>The fix I put in was to edit the &#8220;hosts.&#8221; file (C:\Windows\System32\Drivers\etc\hosts.) and add an entry for the CA destination server IP address against the URL I was publishing to. This forces the destination CA to use the local server instead of trying to go via the load-balancer. This won&#8217;t affect the content being served, the web front-ends are configured via the load-balancer, and the destination CA doesn&#8217;t actually participate in this process. If your destination CA is also a web front-end, this would also still work as the URL resolves properly anyway.</p>
<p>After I set up my hosts file and re-ran the content deployment, it all worked perfectly! At least, on this occasion <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A second &#8220;fix&#8221; I have had to use is to create another host-header site collection on my destination CA. I didn&#8217;t need to use this new site collection &#8211; I just created a blank one (see powershell script below). I&#8217;m not sure what happens in the background, but when I next tried my content deployment, it immediately changed from FAILED to SUCCESS. It&#8217;s possible that the act of creating another site collection resets Something(tm) so that content deployment can connect correctly.</p>
<h2>Additional Content Deployment Troubleshooting Tips</h2>
<p>While trying to diagnose the problem I also came up against the following issues (in no particular order):</p>
<ol>
<li>When creating a destination site collection, do not add a template to the site. In essence, you are creating an empty site collection, not a site collection with the blank or blank internet template. This breaks content deployment. I use the following Powershell script to auto-create a host-header (multi-tenancy) site collection:
<pre>$contentDbName = “Your.Database.Name”
$webName = “Your web app name”
$url = “http://your.url”
# Get the web application
$webApp = Get-SPWebApplication –Identity $webName
# Create content database
New-SPContentDatabase –Name $contentDbName -WebApplication $webApp
# Create the site
$contentDb = Get-SPContentDatabase –Identity $contentDbName
New-SPSite –Url $url –OwnerAlias “DOMAIN\gavin.mckay” –OwnerEmail <a href="mailto:“gavin.mckay@domain.local">“gavin.mckay@domain.local</a>” –ContentDatabase $contentDb –HostHeaderWebApplication $webApp</pre>
<p>The important point here is not to use the &#8220;-Template &lt;template name&gt;&#8221; parameter in New-SPSite. This will break content deployment and you will get a stack of errors about being unable to overwrite content. Deployment failure!</li>
<li>If you recreate your site collection, you will need to delete your content deployment job and path from the source CA server. The destination site collection id is stored as part of the job/path, and if you recreate your destination site collection it will have a new id. Deployment failure!</li>
<li>If you delete your content database and recreate it, you will have to do an IISRESET on your CA and web front-ends to get them to resolve properly. You will recognise this by trying to connect to the destination URL and getting the following in your browser:<br />
&#8220;HTTP/1.1 200 OK Server: Microsoft-IIS/7.5 Date: Tue, 08 Nov 2011 02:41:04 GMT Connection: close&#8221;<br />
SharePoint is confused. Deployment failure!</li>
<li>If you have Office Web Apps enabled on your source site collection, but not on the destination site collection, you will get:&#8217;Microsoft.SharePoint.SPException&#8217; : &#8216;Could not find Feature MobilePowerPointViewer.&#8217;<br />
Deployment failure! Use Site settings, Site collection features, to disable Office Web Apps in the source site collection, then start your deployment job again.</li>
<li>&#8220;The exception thrown was &#8216;Microsoft.SharePoint.SPException&#8217; : &#8216;Unable to import the folder _catalogs/fpdatasources. There is already an object with the Id &lt;Guid&gt; in the database from another site collection.&#8217;&#8221;<br />
Deployment failure! This seems to occur if you have previously had a failed content deployment for a new site collection/content database.<br />
Using your destination CA remove the content database then re-add it again. This will restore the previous empty site collection ready for content deployment.</li>
<li>Warning &#8220;A minor version has been exported with no corresponding major version. It is possible that this item was unpublished then published again. If this item is meant to be published, publish a new version and export/import it again&#8221;<br />
This is reasonably straight-forward. Either indivudally (or via a batch job) publish a major version, or turn off major/minor version control for the list/library.</li>
<li>Warning &#8220;Cannot revert to the site definition version of this file&#8221;<br />
Currently unknown how to fix this&#8230;</li>
<li>Error &#8220;A file with the name [filename] already exists&#8221;<br />
Currently unknown how to fix this&#8230;</li>
</ol>
<h2>More (Excruciating) Detail</h2>
<p>The Content Deployment jobs are stored in the source farm SharePoint_Config database. You can view the details in a SQL query via:</p>
<p>Select top 100</p>
<p>id</p>
<p>,classid</p>
<p>,parentid</p>
<p>,name</p>
<p>,status</p>
<p>,version</p>
<p>,properties</p>
<p>FROM [dbo].[Objects]</p>
<p>WHERE Properties like &#8216;%ContentDeploymentJobDefinition%&#8217;</p>
<p>The Properties field is an XML data string that defines the job information.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=371&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/11/08/sharepoint-2010-content-deployment-system-nullreferenceexception-object-reference-not-set-to-an-instance-of-an-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>Kerberos Authentication for SharePoint 2010 on Windows Server 2008 R2 with IIS7</title>
		<link>http://gavinmckay.wordpress.com/2011/11/02/kerberos-authentication-for-sharepoint-2010-on-windows-server-2008-r2-with-iis7/</link>
		<comments>http://gavinmckay.wordpress.com/2011/11/02/kerberos-authentication-for-sharepoint-2010-on-windows-server-2008-r2-with-iis7/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 03:51:28 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=360</guid>
		<description><![CDATA[SharePoint 2010 by default allows Kerberos authentication when you select NTLM/Negotiate in the authentication scheme. However, there are some additional steps that you can use to force Kerberos authentication to be used. This has advantages in performance as well as increasing security, and is particularly useful in Intranet scenarios. The requirements for enabling this are: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=360&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SharePoint 2010 by default allows Kerberos authentication when you select NTLM/Negotiate in the authentication scheme. However, there are some additional steps that you can use to force Kerberos authentication to be used. This has advantages in performance as well as increasing security, and is particularly useful in Intranet scenarios.</p>
<p>The requirements for enabling this are:</p>
<p>- Kerberos is enabled in your domain (Windows Server 2003 and up general support this automatically)</p>
<p>- You have application pools that use Domain accounts, insted of Local accounts</p>
<p>In this configuration, Kerberos uses the application pool identity to decrypt Kerberos tickets.</p>
<h2>Viewing Logon Sessions in Event Viewer</h2>
<p>You can check what authentication is being used by viewing the logon sessions in the Security event log. You should see entries logged with Event ID 4624 and a Task category of Logon. If NTML is being used, in the details you will see an entry like:</p>
<pre>
Detailed Authentication Information:
	Logon Process:		NtLmSsp
	Authentication Package:	NTLM
	Transited Services:	-
	Package Name (NTLM only):	NTLM V1
	Key Length:		0
</pre>
<p>Whereas if Kerberos is being used, the entry will be similar to:</p>
<pre>
Detailed Authentication Information:
	Logon Process:		Kerberos
	Authentication Package:	Kerberos
	Transited Services:	-
	Package Name (NTLM only):	-
	Key Length:		0
</pre>
<h2>Viewing Kerberos Tickets</h2>
<p>When a session is created to a Kerberos-enabled application, the client receives a Kerberos ticket that is used to authenticate the user&#8217;s account. In Windows 7 and Windows Server 2008, you can use the KLIST application to view Kerberos tickets from the command line. A typical output would be something like:</p>
<pre>
Current LogonId is 0:0x2510zzz

Cached Tickets: (2)

#0&gt;     Client: gavin.mckay @ YOUR.DOMAIN.LOCAL
        Server: krbtgt/YOUR.DOMAIN.LOCAL @ YOUR.DOMAIN.LOCAL
        KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
        Ticket Flags 0x40e00000 -&gt; forwardable renewable initial pre_authent
        Start Time: 11/4/2011 8:02:36 (local)
        End Time:   11/4/2011 18:02:36 (local)
        Renew Time: 11/11/2011 8:02:36 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96

#1&gt;     Client: gavin.mckay @ YOUR.DOMAIN.LOCAL
        Server: ldap/SERVER1.YOUR.DOMAIN.LOCAL/YOUR.DOMAIN.LOCAL @ YOUR.DOMAIN.LOCAL
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40a40000 -&gt; forwardable renewable pre_authent ok_as_deleg
ate
        Start Time: 11/4/2011 8:02:36 (local)
        End Time:   11/4/2011 18:02:36 (local)
        Renew Time: 11/11/2011 8:02:36 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
</pre>
<p>As Kerberos tickets are cached, you may need to use the command:</p>
<pre>KLIST purge</pre>
<p>to remove any current tickets and force new ones to be generated.</p>
<h2>Create Service Principal Names (SPNs)</h2>
<p>NOTE: In the commands below, the HTTP refers to the service type, NOT the protocol type. So if you have <a href="https://your.intranet.local">https://your.intranet.local</a>, the entry below would be HTTP/your.intranet.local:443. The HTTPS is not included in the service name, but the port number is.</p>
<p>1. Use the command:</p>
<pre>(Windows Server 2008)
setspn -S HTTP/your.intranet.local DOMAINNAME/AccountName</pre>
<p>(Windows Server 2003)</p>
<pre>setspn -A HTTP/your.intranet.local DOMAINNAME/AccountName</pre>
<h2>Enable Kernel Mode Authentication in IIS 7</h2>
<p>From the IIS Manager description:</p>
<blockquote><p>By default, IIS enables kernel-mode authentication, which may improve authentication performance and prevent authentication problems with application pools configured to use a custom identity. As a best practice, do not disable this setting if Kerberos authentication is used in your environment and the application pool is configured to use a custom identity.</p></blockquote>
<p>1. Open IIS Manager<br />
2. Select the website you want to enable Kernel Mode authentication for<br />
3. In the IIS group, select Authentication<br />
4. Select Windows Authentication<br />
5. In the Actions area, select Advanced Settings<br />
6. Ensure &#8220;Enable Kernel-mode authentication&#8221; is ticked<br />
7. Click OK</p>
<h2>Update the Authentication in applicationHost.config</h2>
<p>1. Using Notepad, open the applicationHost.config (by default this is in C:\Windows\System32\inetsrv\config)</p>
<p>2. Find your website entry, generally this should be similar to:</p>
<pre>&lt;location path="your.sharepoint.url"&gt;</pre>
<p>i.e. if you access your site via <a href="http://your.sharepoint.url">http://your.sharepoint.url</a>, look for the location path as above</p>
<p>3. Update the tag &lt;windowsAuthentication&#8230;&gt; to:</p>
<pre>&lt;windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true"&gt;</pre>
<p>4. Save the file</p>
<h2>Additional Troubleshooting</h2>
<p><a href="http://technet.microsoft.com/en-us/library/gg502602.aspx">Configuring Kerberos authentication: Core configuration (SharePoint Server 2010)</a><br />
<a href="http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/delegconfig-delegation-configuration-reporting-tool.aspx">Kerberos Delegation Configuration Reporting Tool</a> (ASP.NET web app)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/360/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=360&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/11/02/kerberos-authentication-for-sharepoint-2010-on-windows-server-2008-r2-with-iis7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>Error replacing self-signed search certificate for FAST &#8211; Could not set access rights on certificates private keys</title>
		<link>http://gavinmckay.wordpress.com/2011/10/31/error-replacing-self-signed-search-certificate-for-fast-could-not-set-access-rights-on-certificates-private-keys/</link>
		<comments>http://gavinmckay.wordpress.com/2011/10/31/error-replacing-self-signed-search-certificate-for-fast-could-not-set-access-rights-on-certificates-private-keys/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 22:50:08 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[FAST for SharePoint 2010]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=354</guid>
		<description><![CDATA[I have a test environment with SharePoint 2010 and FAST installed, and am using the self-signed certificates to enable FAST to communicate with SharePoint and vice-versa. My self-signed certificate expired, so I generated a new one using: .\ReplaceDefaultCertificate.ps1 -generateNewCertificate $true When I then tried to secure the FAST search connector via the Powershell command: .\securefastsearchconnector.ps1 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=354&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have a test environment with SharePoint 2010 and FAST installed, and am using the self-signed certificates to enable FAST to communicate with SharePoint and vice-versa. My self-signed certificate expired, so I generated a new one using:</p>
<p><code>.\ReplaceDefaultCertificate.ps1 -generateNewCertificate $true</code></p>
<p>When I then tried to secure the FAST search connector via the Powershell command:</p>
<p><code>.\securefastsearchconnector.ps1 -certPath "" -ssaName "FASTSSA" -userName "&lt;user name for osearch14&quot;</code></p>
<p>I got an error when the script was trying to set Read/Execute permission on the certificate private key:</p>
<blockquote><p>Could not set access rights on certificates private keys. Script can be rerun to only set access rights when reason for error is detected.</p></blockquote>
<p>as well as:</p>
<blockquote><p>Set-Acl : Attempted to perform an unauthorized operation</p></blockquote>
<p>I tried several different methods to resolve, including setting the ownership of the file in script use TAKEOWN, but it wouldn&#8217;t work. Eventually I had to hack the securefastsearchconnector.ps1 file and comment out the line that set the ACL, as well as printing out what it was trying to do:</p>
<p><code>write-host "setting ACL for " $keypath$keyname " to " $script:userName<br />
#set-acl -aclobject $acl $keypath$keyname</code></p>
<p>the output was then:</p>
<blockquote><p>setting ACL for [full path to cert private key] to [user account of osearch14]</p></blockquote>
<p>This effectively bypasses the setting of the ACL, and I then used the full path of the cert private key to manually add Read/Execute permission to my osearch14 account.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=354&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/10/31/error-replacing-self-signed-search-certificate-for-fast-could-not-set-access-rights-on-certificates-private-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft Lync 2010 Client – Cannot sign in because the server version is incompatible</title>
		<link>http://gavinmckay.wordpress.com/2011/10/19/microsoft-lync-2010-client-%e2%80%93-cannot-sign-in-because-the-server-version-is-incompatible/</link>
		<comments>http://gavinmckay.wordpress.com/2011/10/19/microsoft-lync-2010-client-%e2%80%93-cannot-sign-in-because-the-server-version-is-incompatible/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 06:31:15 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Lync 2010]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=351</guid>
		<description><![CDATA[I am using Lync 2010 to access an Office Communications Server 2007 server and received the above error. In general Greg Olsen&#8217;s blog post helped me, but my registry entry was slightly different. Might be a configuration thing with the environment we have here&#8230; Instead of: HKEY_CURRENT_USER &#62; Software &#62; Policies &#62; Microsoft &#62; Communicator [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=351&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am using Lync 2010 to access an Office Communications Server 2007 server and received the above error. In general <a href="http://yellowduckguy.wordpress.com/category/microsoft-lync/">Greg Olsen&#8217;s blog post</a> helped me, but my registry entry was slightly different. Might be a configuration thing with the environment we have here&#8230;</p>
<p>Instead of:<br />
HKEY_CURRENT_USER &gt; Software &gt; Policies &gt; Microsoft &gt; Communicator</p>
<p>I had to use:<br />
HKU &gt; S-1-5-21-[more long code here] &gt; Software &gt; Policies &gt; Microsoft &gt; Communicator</p>
<p>I discovered this by using the <a href="http://technet.microsoft.com/en-us/sysinternals/bb896645">Windows Process Monitor</a> and tracking what registry key it was looking for. A quick search for DisableServerCheck in the monitor found the appropriate key.</p>
<p>HTH</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=351&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/10/19/microsoft-lync-2010-client-%e2%80%93-cannot-sign-in-because-the-server-version-is-incompatible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>HOWTO Move Forefront Identity Manager 2010 Databases to a Different SQL Server</title>
		<link>http://gavinmckay.wordpress.com/2011/10/03/howto-move-forefront-identity-manager-2010-databases-to-a-different-sql-server/</link>
		<comments>http://gavinmckay.wordpress.com/2011/10/03/howto-move-forefront-identity-manager-2010-databases-to-a-different-sql-server/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 03:25:45 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Forefront Identity Manager 2010]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[FIM2010; SQL]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=342</guid>
		<description><![CDATA[I had installed FIM 2010 using an SQL Server alias, which worked fine &#8211; I use the same process when installing SharePoint and it has helped before, so I thought &#8220;why not with FIM?&#8221;. Famous last words. I tried to deploy FIM 2010 Cumulate Update 1 and it failed, citing &#8220;Cannot connect to SQL Server&#8221;. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=342&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/download/en/details.aspx?id=26728"></a><a href="http://www.microsoft.com/download/en/details.aspx?id=26728"></a>I had installed FIM 2010 using an SQL Server alias, which worked fine &#8211; I use the same process when installing SharePoint and it has helped before, so I thought &#8220;why not with FIM?&#8221;. Famous last words.</p>
<p>I tried to deploy FIM 2010 Cumulate Update 1 and it failed, citing &#8220;Cannot connect to SQL Server&#8221;. I had the nasty suspicion that while FIM 2010 seemed to support SQL Server aliases, the Cumulate Update process did not.</p>
<p>FIM 2010 maintains information on SQL Server connections in the Registry under the hives:</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FIMService<br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FIMSynchronizationService\Parameters</p>
<p>The FIM services use these keys to establish database connections. Likewise, the Cumulative Update process accesses these locations to perform database updates.</p>
<p>A final note &#8211; after changing to a SQL Server instance instead of an alias, I got some errors when trying to upgrade the database via the Cumulative Update 1:</p>
<p>25070 Invalid class string</p>
<p>Installing the latest SQL Server Native Client from the Microsoft SQL Server 2008 R2 SP1 Feature Pack fixed these errors.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=342&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/10/03/howto-move-forefront-identity-manager-2010-databases-to-a-different-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>HOWTO Create a Content Index for a Host Header Site Collection</title>
		<link>http://gavinmckay.wordpress.com/2011/09/20/howto-create-a-content-index-for-a-host-header-site-collection/</link>
		<comments>http://gavinmckay.wordpress.com/2011/09/20/howto-create-a-content-index-for-a-host-header-site-collection/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 06:55:09 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[FAST for SharePoint 2010]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=340</guid>
		<description><![CDATA[We have an environment with several web applications that have a number of host header site collections attached to them. This reduces the resources required by your server (you have fewer physical IIS web applications) while still allowing you to have 100s/1000s/lots of site collections each with their own URL. We wanted to be able [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=340&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We have an environment with several web applications that have a number of host header site collections attached to them. This reduces the resources required by your server (you have fewer physical IIS web applications) while still allowing you to have 100s/1000s/lots of site collections each with their own URL.</p>
<p>We wanted to be able to search these site collections, but host header site collections cannot be searched on their own. Your content indexer has to access the site collections via the web application itself. As an example, lets assume you have a web application that resolves to &#8220;my.sharepoint.local&#8221; and you create a host-header site collection &#8220;site.sharepoint.local&#8221; using the following powershell script:</p>
<p>$formsContentDbName = “WSS_Content_SiteLocal”<br />
$webName = “my.sharepoint.local”<br />
$url = “http://site.sharepoint.local”</p>
<p># Get the web application<br />
$webApp = Get-SPWebApplication –Identity $webName</p>
<p># Create content database<br />
New-SPContentDatabase –Name $formsContentDbName -WebApplication $webApp</p>
<p># Create the site<br />
$contentDb = Get-SPContentDatabase –Identity $formsContentDbName<br />
New-SPSite –Url $url –OwnerAlias “myalias” –OwnerEmail “my.email@somewhere.com” –ContentDatabase $contentDb –HostHeaderWebApplication $webApp –Template “STS#0”</p>
<p>You will now be able to access the host-header site collection via http://site.sharepoint.local. </p>
<p>If you create a content source however using the url &#8220;http://site.sharepoint.local&#8221; and run a full crawl, you&#8217;ll get the following warning in your crawl log <strong>if you don&#8217;t have a site collection attached </strong>to http://my.sharepoint.local:</p>
<p><em>This URL is part of a host header SharePoint deployment and the search application is not configured to crawl individual host header sites. This will be crawled as a part of the host header Web application if configured as a start address</em></p>
<p>As the warning states, the trick here is to create a site collection for the web application, in this case my.sharepoint.local. Then in the content source add <strong>only </strong>the url http://my.sharepoint.local. Your content source will then happily index the in your host header site collection, as well as the base site collection.</p>
<p>This however has some implications. Lets assume you have a large site collection (say 100GB) and a smaller site collection (say 10MB). They are both attached to a web application. You cannot do a full reindex of the smaller site collection without also reindexing the larger site collection.</p>
<p>I&#8217;ve raised a support incident with Microsoft to try and find a resolution. Stay tuned&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/340/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=340&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/09/20/howto-create-a-content-index-for-a-host-header-site-collection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint 2010 Restore-SPSite Error: The site collection could not be restored</title>
		<link>http://gavinmckay.wordpress.com/2011/09/07/sharepoint-2010-restore-spsite-error-the-site-collection-could-not-be-restored/</link>
		<comments>http://gavinmckay.wordpress.com/2011/09/07/sharepoint-2010-restore-spsite-error-the-site-collection-could-not-be-restored/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 22:43:53 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=330</guid>
		<description><![CDATA[We have an internal web content authoring environment (http://author.local) which has a number of site collections, each of which is used to create and author content for a different external-facing website i.e. http://author.local/sites/web1, http://author.local/sites/web2. This was causing some issues with relative site paths when publishing i.e. /sites/web1 internal, but / external so links were breaking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=330&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We have an internal web content authoring environment (<a href="http://author.local">http://author.local</a>) which has a number of site collections, each of which is used to create and author content for a different external-facing website i.e. <a href="http://author.local/sites/web1">http://author.local/sites/web1</a>, <a href="http://author.local/sites/web2">http://author.local/sites/web2</a>. This was causing some issues with relative site paths when publishing i.e. /sites/web1 internal, but / external so links were breaking that had been hard-coded. A notable example was we had set a different search results page via site settings, and this broke when using the site on the published environment.</p>
<p>There are a number of solutions to this, but we felt the easiest way was to create replacement host-header site collections instead i.e. <a href="http://author-web1.local/">http://author-web1.local/</a> instead. This lets us create as many site collections as we want while still using the same physical web application <a href="http://author.local">http://author.local</a>.</p>
<p>I backed up the site collection <a href="http://author.local/sites/web1">http://author.local/sites/web1</a> using Backup-SPSite, and then tried to restore the site collection using Restore-SPSite via the following:</p>
<p><code>Restore-SPSite -identity <a href="http://author-web1.local">http://author-web1.local</a> -path &lt;physical path&gt; -contentdatabase &lt;contentdb&gt; -hostheaderwebapplication <a href="http://author.local/">http://author.local/</a></code></p>
<p>However I got the following error from powershell:</p>
<p><code>Restore-SPSite : The site collection could not be restored. If this problem persists, please make sure the content databases are available and have sufficient free space.<br />
At line:1 char:15<br />
+ Restore-SPSite &lt;&lt;&lt;&lt;  -identity <a href="http://author-web1.local">http://author-web1.local</a> -path 'C:\site.bak' -contentdatabase MyDb -hostheaderwebapplication <a href="http://author.local">http://author.local</a><br />
+ CategoryInfo          : InvalidData: (Microsoft.Share...dletRestoreSite:<br />
SPCmdletRestoreSite) [Restore-SPSite], SPException<br />
+ FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletRestoreS<br />
ite</code></p>
<p>ULS reported the following error in the log files:</p>
<p><code>System.Data.SqlClient.SqlException: Violation of UNIQUE KEY constraint 'Docs_IdLevelUnique'. Cannot insert duplicate key in object 'dbo.AllDocs'.  The statement has been terminated.</p>
<p>at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)</p>
<p>at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)</p>
<p>at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)</p>
<p>at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()</p>
<p>at System.Data.SqlClient.SqlDataReader.get_MetaData()</p>
<p>at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)</p>
<p>at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)</p>
<p>at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)</p>
<p>at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)</p>
<p>at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)</p>
<p>at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)</p>
<p>at Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command, CommandBehavior behavior, SqlQueryData monitoringData, Boo</code></p>
<p>It turned out that I had a previous site collection from a failed restore attempt before. No problem, I deleted the site collection so there were none in there at all, then tried again. Same result. I checked in the content database, and there were indeed files in the AllDocs tables even though the site collection had been deleted. I went the Big Bang approach and deleted the content database. After creating a new content database, the restore worked perfectly.</p>
<p>My guess at this stage is that I may have been a victim of the site collection recycle bin! SP1 includes the ability to restore deleted sites and site collections via PowerShell, so there may still have been deleted references in the content database. Regardless, it works now. I don&#8217;t know how to fix this issue if you only have the one content database, but I always try and split out site collections in host-header web applications to different databases so this didn&#8217;t affect me in this case.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=330&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/09/07/sharepoint-2010-restore-spsite-error-the-site-collection-could-not-be-restored/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
		<item>
		<title>HOWTO Move or Migrate SharePoint 2010 List-based Workflows between Sites and Site Collections</title>
		<link>http://gavinmckay.wordpress.com/2011/08/29/howto-move-or-migrate-sharepoint-2010-list-based-workflows-between-sites-and-site-collections/</link>
		<comments>http://gavinmckay.wordpress.com/2011/08/29/howto-move-or-migrate-sharepoint-2010-list-based-workflows-between-sites-and-site-collections/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 07:22:27 +0000</pubDate>
		<dc:creator>gavinmckay</dc:creator>
				<category><![CDATA[InfoPath 2010]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://gavinmckay.wordpress.com/?p=326</guid>
		<description><![CDATA[I&#8217;ve experienced this issue a lot when trying to migrate workflows between test SharePoint 2010 farms and production farms, in particular with workflows attached to lists. When moving a workflow to another site collection or server farm, the association to the list is broken and the workflow cannot be attached to the list. You also [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=326&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve experienced this issue a lot when trying to migrate workflows between test SharePoint 2010 farms and production farms, in particular with workflows attached to lists. When moving a workflow to another site collection or server farm, the association to the list is broken and the workflow cannot be attached to the list. You also cannot use SharePoint designer to fix this via the standard methods as the unattached workflow cannot be reattached to the list.</p>
<p>List-based workflows are tied to three different lists &#8211; the &#8220;main&#8221; source list where the data is held (such as a Forms library or custom list), a task list, and a workflow history list. The latter in particular is tricky, because it is a hidden list and cannot be viewed via the normal interface.</p>
<p>The fix for this is to modify the source workflow files to force the workflow to reattach to the list. The following method assumes that your new site/location that you are moving the workflow too does not yet have any workflows already attached to any lists on the site. When a workflow is created in a site for the first time, a Tasks list and a Workflow History list are automatically created/used by the workflow. These lists must exist before you can force your migrated workflow to attach to the list.</p>
<h2>Step 1 &#8211; Create a Blank Workflow</h2>
<ol>
<li>Using SharePoint designer, connect to your destination site</li>
<li>Create a new list-based workflow called &#8220;test&#8221; (or whatever), attaching it to your migrated list</li>
<li>Create one condition (i.e. if 1 = 1)</li>
<li>Create one action (i.e. add comment &#8220;hello&#8221;)</li>
<li>Save and publish the workflow</li>
</ol>
<p>After this step has been completed, your site will now have a Tasks list and Workflow History list.</p>
<h2>Step 2 &#8211; Get the list ids for your new workflow</h2>
<p>The list ids are required to configure your migrated workflow.</p>
<ol>
<li>Using SharePoint Designer, connect to your destination site</li>
<li>in the left-hand side, in Site Objects, select All Files</li>
<li>in the All Files list, select Workflows</li>
<li>Select your new workflow that you just created (in this example, &#8220;test&#8221;)</li>
<li>You should see (at least) four files:<br />
text.xoml<br />
test.xoml.rules<br />
test.xoml.wfconfig.xml<br />
test.xsn</li>
<li>Right-click on test.xoml.wfconfig.xml and select Open With, Notepad</li>
<li>Look for the &lt;Association&#8230;&gt; tag in the xml:<br />
&lt;Association ListID=&#8221;{7DC232FD-4D0B-4F7B-AC72-3D4D6399147C}&#8221; StartManually=&#8221;true&#8221; TaskListID=&#8221;{CB551A8B-F1E1-49F9-A8F8-A2C8EDC241C7}&#8221; HistoryListID=&#8221;{04B19F9D-5A47-4E14-B85E-53FFF06CFA63}&#8221; StartOnCreate=&#8221;true&#8221; StartOnChange=&#8221;true&#8221;/&gt;</li>
<li>Record the Guid entries for ListID, TaskListID, and HistoryListID</li>
</ol>
<h2>Step 3 &#8211; Update the migrated workflow</h2>
<ol>
<li>Still using SharePoint Designer, All Files, Workflows, this time select your migrated workflow</li>
<li>You should again see (at least) four files. Right-click on &#8220;your-workflow.xoml.wfconfig.xml&#8221; and select Open with SharePoint Designer (As XML)</li>
<li>Find the Association tag and <strong>very carefully</strong> change the Guids so that your migrated List IDs are the same as the &#8220;test&#8221; workflow List IDs.</li>
<li>Save the file</li>
<li>Close SharePoint Designer</li>
<li>Open SharePoint Designer again and open your site</li>
<li>Instead of All Files, this time click on Workflows</li>
<li>Select your workflow</li>
<li>Save the workflow</li>
<li>Publish the workflow</li>
</ol>
<p>Your workflow should now be reassociated with your list on your new site.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gavinmckay.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gavinmckay.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gavinmckay.wordpress.com/326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gavinmckay.wordpress.com&amp;blog=3968928&amp;post=326&amp;subd=gavinmckay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gavinmckay.wordpress.com/2011/08/29/howto-move-or-migrate-sharepoint-2010-list-based-workflows-between-sites-and-site-collections/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/931e6a7e839ebdf462063c4b16c6780e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gavinmckay</media:title>
		</media:content>
	</item>
	</channel>
</rss>
