<?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/"
	>

<channel>
	<title>elorg.net &#187; SharePoint</title>
	<atom:link href="http://www.elorg.net/tag/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.elorg.net</link>
	<description>Ramblings and other miscellany.</description>
	<lastBuildDate>Wed, 23 Nov 2011 20:55:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quick Tip: Display Number as Month</title>
		<link>http://www.elorg.net/2011/02/quick-tip-display-number-as-month/</link>
		<comments>http://www.elorg.net/2011/02/quick-tip-display-number-as-month/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 17:08:29 +0000</pubDate>
		<dc:creator>elorg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.elorg.net/?p=643</guid>
		<description><![CDATA[Quick tip for you today! I need to do some math on months and don&#8217;t want require the users to enter a full date. I created the &#8220;Month&#8221; column as a number field, no decimals, not required, min value 1, max value 12. Now I&#8217;m able to do any calculation that I want on the [...]]]></description>
			<content:encoded><![CDATA[<p>Quick tip for you today! I need to do some math on months and don&#8217;t want require the users to enter a full date. I created the &#8220;Month&#8221; column as a number field, no decimals, not required, min value 1, max value 12. Now I&#8217;m able to do any calculation that I want on the month value, but my views and DVWPs display the number, and I want to be able to display it as the actual month from time to time.</p>
<p>Attempts:<br />
I created a calculated column that I titled &#8220;MonthName&#8221;. Here are some quick formulas that you can use in your calculated column that will convert your 1-12 number into a month name.</p>
<p><code>=TEXT([MonthNumColumn],"mmmm")</code> will give you &#8220;December&#8221; for a value of &#8220;12&#8243;<br />
<code>=TEXT([MonthNumColumn],"mmm")</code> will give you &#8220;Dec&#8221; for a value of &#8220;12&#8243;<br />
HOWEVER, this seemed to only return values for December and January &#8211; and they were not actually accurate.</p>
<p>I thought that perhaps it was because the numbers were not all 2 digit, so I created a second calculated column that I titled &#8220;MonthNN&#8221; and used this formula (I know, starting to go down the rabbit hole):<br />
<code>=TEXT([Month],"00")</code><br />
And then adjusted the above calculated MonthName field to refer to this new calculated column. No change.</p>
<p>Then I attempted to use the &#8220;CHOOSE&#8221; function, but the &#8220;Month&#8221; field was not required and returned &#8220;#VALUE!&#8221; for any blank fields.</p>
<p>So I nested the CHOOSE function inside an IF statement, and it&#8217;s not the most elegant, but it works:<br />
<code>=IF(Month="","NA",CHOOSE(Month,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))</code></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elorg.net/2011/02/quick-tip-display-number-as-month/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPSearch Unable to Index WSS 3.0 Content Source</title>
		<link>http://www.elorg.net/2011/01/spsearch-unable-to-index-wss-3-0-content-source/</link>
		<comments>http://www.elorg.net/2011/01/spsearch-unable-to-index-wss-3-0-content-source/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 20:32:49 +0000</pubDate>
		<dc:creator>elorg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[spsearch]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://www.elorg.net/?p=636</guid>
		<description><![CDATA[I&#8217;ve recently been running into problems with search on several WSS 3.0 SharePoint sites. It simply wasn&#8217;t returning results. They&#8217;re all configured the same way, so it&#8217;s no surprise that they&#8217;re all experiencing this problem. If it was MOSS, I would&#8217;ve had this resolved by now. I&#8217;m just not as fluent with WSS and familiar [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been running into problems with search on several WSS 3.0 SharePoint sites. It simply wasn&#8217;t returning results. They&#8217;re all configured the same way, so it&#8217;s no surprise that they&#8217;re all experiencing this problem. If it was MOSS, I would&#8217;ve had this resolved by now. I&#8217;m just not as fluent with WSS and familiar with its limitations. I&#8217;ve run out of GoogleFu mojo on this one, and ended up having to go through trial-by-error and spending several days banging my head on my desk before I figured it out. So here it is!<span id="more-636"></span></p>
<p>There are tons of discussions and HowTos out there that have a lot of great info and starting points. Those did not help with my scenario.</p>
<p>Sure, I verified that search was configured and that I had an Index server defined. I&#8217;ve even reconfigured search several times (I think the database name is appended with &#8220;_5&#8243; or so by now). I&#8217;ve tried the different loopbackcheck fixes to no avail. Literally, no change. The default AAM zone is NTLM. This was not a permissions issue for us. Our AAMs are configured properly and the portal works great in every other aspect. I&#8217;ve stepped through just about every search troubleshooting checklist that I&#8217;ve found, with no impact.</p>
<p>Here&#8217;s the scenario, and ultimately the root of the problem:</p>
<p>Single server farm. Pretty standard, except the web app was extended to have FBA. There&#8217;s an external HTTPS URL being redirected via ISA. The site&#8217;s internal URL is HTTP://servername:##/sites/yaddayaddaortal/</p>
<p>And there it is. The cause. Check this out:</p>
<p>The event log reports that it cannot crawl the content source at sps://servername:##/ (minus the /sites/&#8230;). Well, yeah, of course not. There&#8217;s no site there. I looked everywhere to see if I could configure the search content sources to change that. This appears to be a hard-coded assumption on behalf of WSS? I have yet to find a way to change this. The kicker is that this appears to be a road block for the search crawl. If no site is found there, then it simply stops before it even gets started.</p>
<p><strong>Solution:</strong><br />
Make sure you have a site defined at &#8220;/&#8221; &#8211; even if it&#8217;s not THE site collection that you&#8217;re using. And make sure that it&#8217;s NTLM. I created a blank site, titled &#8220;Search&#8221; with a description to simply state that it&#8217;s required for search to work. No users actually have access to this site collection except for the admin. I ran another full crawl &#8211; fixed!  No more errors in the event log, and now search returns results.</p>
<p>This was so simple, that I&#8217;m not sure what took me so long to try it. I was definitely overthinking it. We could just not have created these sites under the /sites/ managed path to begin with, but it was a business requirement, so I was stuck with it (for now). <img src='http://www.elorg.net/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elorg.net/2011/01/spsearch-unable-to-index-wss-3-0-content-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make &#8220;Choice&#8221; Fields Easier to be Managed by Users</title>
		<link>http://www.elorg.net/2010/08/make-choice-fields-easier-to-be-managed-by-users/</link>
		<comments>http://www.elorg.net/2010/08/make-choice-fields-easier-to-be-managed-by-users/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 02:42:00 +0000</pubDate>
		<dc:creator>elorg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://www.elorg.net/?p=588</guid>
		<description><![CDATA[If there&#8217;s one thing that I&#8217;ve learned about SharePoint, it&#8217;s that there&#8217;s about a dozen different approaches that you can take to implement just about anything in it. The &#8220;choice&#8221; field in SharePoint is no different. The direct approach is to open the settings of your list or library, and add a new column of [...]]]></description>
			<content:encoded><![CDATA[<p>If there&#8217;s one thing that I&#8217;ve learned about SharePoint, it&#8217;s that there&#8217;s about a dozen different approaches that you can take to implement just about anything in it. The &#8220;choice&#8221; field in SharePoint is no different.</p>
<p><strong>The direct approach</strong> is to open the settings of your list or library, and add a new column of type &#8220;Choice&#8221;. Populate the choice options in the settings, and choose your choice &#8220;type&#8221; (dropdown, radio, checkbox). The down side to that is in order to edit or add new choices, more than contributor access is required. In many cases, the power users want to be able to add new choices without having to ask for assistance, but we don&#8217;t necessarily want to grant additional access in most cases.<span id="more-588"></span></p>
<p><strong>Enter the Lookup field.</strong></p>
<p>I create a new custom list and give it an appropriate name like &#8220;Types&#8221;, &#8220;Choices&#8221;, &#8220;Business Unit Names&#8221; &#8211; you get the idea.  If the site will have multiple choice options that I&#8217;ll want to &#8220;delegate&#8221; user control on (to a specific few users, of course) I&#8217;ll name it something more generic.  The column names don&#8217;t matter &#8211; you can keep the &#8220;Title&#8221; field as-is, or you can rename it (e.g. to something like &#8220;Business Unit Names&#8221;). If you&#8217;re going to want to use this single list for all of your choice fields in a site, add more columns (of type &#8220;single line of text&#8221;) with names that will be intuitive for your users. Also, make sure to make NONE of the columns a required field! This is important if you&#8217;re using multiple columns.</p>
<p>So, for example you&#8217;ll have a list titled &#8220;My Choice Field Options&#8221;, with columns &#8220;Choices A&#8221;, &#8220;Choices B&#8221;, &#8220;Choices C&#8221;, etc. Again, none of which are required. Now, each column can have any number of &#8220;options&#8221; entered &#8211; all independent of each other. It looks counter-intuitive at first glance, but works like a charm.</p>
<div id="attachment_607" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.elorg.net/wp/wp-content/uploads/2010/08/MyChoiceFieldOptions.png"><img src="http://www.elorg.net/wp/wp-content/uploads/2010/08/MyChoiceFieldOptions-300x87.png" alt="Example screenshot of the list with options added." title="MyChoiceFieldOptions" width="300" height="87" class="aligncenter size-medium wp-image-607" /></a><p class="wp-caption-text">My example list with some options populated</p></div>
<p>Now that that&#8217;s all setup, navigate to your list or library where you want to use these options.  Create a new field &#8211; of type &#8220;lookup&#8221;. Set the field requirement, title, and description as you like. For the &#8220;get information from&#8221; field, select your new custom list that you&#8217;ve prepped.</p>
<p><strong>NOTE: This will only work if the list or library using these choices is located in the SAME site as the custom list containing the choice options.</strong> See below for more on this.</p>
<p>For the &#8220;in this column&#8221; field, select the appropriate column from your prepped list (&#8220;Column A&#8221;, &#8220;Column B&#8221;, etc.). Allow multiple items if you prefer, and click OK.</p>
<p>Now, as soon as options are added to your new custom list, there will be options available to choose from (as seen in my screenshot above). You can reuse these columns on lists and libraries throughout your site without duplicating the data! As soon as a new option is added to your custom list, it&#8217;ll be available for all of these places.</p>
<p>The most access that you will need to grant is Contributor. Heck, you could be a real stickler and create a custom permission level to allow read + add, but not edit or delete. The users will be able to see the options available, and add to them, but nothing more. (Admittedly, this is not the <em>best</em> option if you&#8217;re using a single list to host multiple choice field lookups.)</p>
<p><strong>Going a step further&#8230;</strong></p>
<p>The plain old &#8220;lookup&#8221; will only work within the <strong>same</strong> site. But what if you want to use and reuse these lookups in your subsites too? Site columns!</p>
<p>Choosing the location of a lookup field is a no-brainer since it has to be located within the same site that it&#8217;s content will be consumed. However, the location of your custom list when using site columns needs a little forethought. Consider the highest level where you&#8217;re planning on using it, and who will need to have access to update the choices.</p>
<p>Let&#8217;s just say that we setup our custom list at the root of our portal. We create it, setup the columns, and grant the necessary access. Initial prep work done.</p>
<p>Now go to <strong>Site Actions > Site Settings > Galleries > Site columns > Create</strong></p>
<p>Set your column name as appropriate. Set it as type &#8220;lookup&#8221; the same way mentioned earlier. I like to put my site columns in a custom group &#8211; usually the name of the client or department to help me find them later. And that&#8217;s it for the prep work. To put it to use, you&#8217;ll need to take a slightly different approach.</p>
<p>Open your list or library that will need to use this site column. This can now be within the same site, or any sub-site. Open the list settings, scroll down to the &#8220;Columns&#8221; section and &#8220;Add from existing site columns&#8221;. If you put it in a custom group, you can filter the available site columns by group to find it easier. Select the site column, click the &#8220;Add >&#8221; button and click OK. If you don&#8217;t like the site column&#8217;s name or description, once it&#8217;s added to your list or library you can go back to the list settings and click on the column&#8217;s name to edit those properties, set it to a required field, allow multiple options, etc.</p>
<p><strong>One weird thing to note.</strong></p>
<p>In either case (plain lookup, or lookup by way of site column), since these &#8220;options&#8221; are actually referring back to <strong>list items</strong>, these options will have <em>links</em> back to the original item&#8230; It&#8217;s confusing to the users that may stumble onto it, and click the link to see what it does, but makes complete sense from an admin/configuration perspective. It&#8217;s harmless, but a potential cause of questions or confusion. I haven&#8217;t had the time to figure out a way to strip that link. If you know of one that doesn&#8217;t require coding your own custom web part from scratch, let me know!</p>
<div id="attachment_614" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.elorg.net/wp/wp-content/uploads/2010/08/underlined_choice.png"><img src="http://www.elorg.net/wp/wp-content/uploads/2010/08/underlined_choice-300x77.png" alt="Screenshot of underline example" title="underlined_choice" width="300" height="77" class="size-medium wp-image-614" /></a><p class="wp-caption-text">Screenshot of underline example</p></div>
<p><strong>Keep it clean.</strong></p>
<p>I can be a bit of a perfectionist at times. I like to keep things clean and orderly, and remove or disable anything unnecessary. While you&#8217;re configuring the custom list, remove it from the QuickNav &#8211; the normal portal users don&#8217;t need to be aware of it. Disable attachments and folders. That should be it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elorg.net/2010/08/make-choice-fields-easier-to-be-managed-by-users/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problems with SharePoint Site and Folder Names</title>
		<link>http://www.elorg.net/2010/07/problems-with-sharepoint-site-and-folder-names/</link>
		<comments>http://www.elorg.net/2010/07/problems-with-sharepoint-site-and-folder-names/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:54:43 +0000</pubDate>
		<dc:creator>elorg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[frustrations]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.elorg.net/?p=580</guid>
		<description><![CDATA[Sure, you can find posts and articles out there with lists of character limitations and restrictions for List and Site names and URLs for SharePoint, but what about combinations of legal characters that will cause you problems? A long while ago I learned the hard way never to create a folder titled &#8220;Forms&#8221; within a [...]]]></description>
			<content:encoded><![CDATA[<p>Sure, you can find posts and articles out there with lists of <a href="http://blogs.msdn.com/b/joelo/archive/2007/06/27/file-name-length-size-and-invalid-character-restrictions-and-recommendations.aspx">character limitations and restrictions</a> for List and Site names and URLs for SharePoint, but what about combinations of <strong>legal</strong> characters that will cause you problems?<span id="more-580"></span></p>
<p>A long while ago I learned the hard way never to create a folder titled &#8220;Forms&#8221; within a document library. SharePoint will let you &#8220;create&#8221; this folder (even though it already exists as hidden for internal purposes), but then will not let you delete it, rename it, and will exhibit other weird behavior.</p>
<p>This week I&#8217;ve found another interesting combination.  If you create a site and set the URL to &#8220;con&#8221; the site will be useless.  You can set the title to &#8220;con&#8221; &#8211; you just can&#8217;t set the URL to that value.  I still haven&#8217;t figured out why &#8211; I haven&#8217;t found any mention of this anywhere online.</p>
<p>It&#8217;s not related to the template, site permissions, which parent site you&#8217;re creating it in, or title. There were no other sites or lists with that name or URL anywhere I&#8217;ve tested to cause a conflict. I can use other 3-letter titles, just not that specific one.  I&#8217;ve tried creating a site with this URL in various locations on the portal as well as another portal entirely.  Both portals are running MOSS 2007, one is using AD authentication while the other is using FBA.</p>
<p>On one portal I receive an error that the resource cannot be found when trying to complete the site creation, or attempting to view anything inside the site (including the site settings).  When trying to open the mostly-created site in SharePoint Designer I receive an error that &#8220;the version of windows sharepoint services running on the server is more recent than the version of sharepoint designer you are using&#8221; &#8211; only on this one site.  I receive just a blank page on the other portal when trying to open the site.</p>
<p>I&#8217;m assuming that this is similar to the &#8220;Forms&#8221; folder issue that I&#8217;ve run into before, though I don&#8217;t have any hard evidence.</p>
<p>Has anyone else experienced this behavior? Have you found any other &#8220;problem&#8221; names or URLs?</p>
<blockquote><p><strong>Update!</strong><br />
Thanks to my awesome friend Jim, this does appear to be a known issue&#8230; of sorts.  I&#8217;ve tested this with some of the other &#8220;reserved words&#8221; (e.g. &#8220;AUX&#8221;) and confirmed that it&#8217;s consistent.  See here for more details:<br />
<a href="http://www.windowsitpro.com/article/dns/windows-xp-and-2000-tips-tricks-update-august-26-2002.aspx">http://www.windowsitpro.com/article/dns/windows-xp-and-2000-tips-tricks-update-august-26-2002.aspx</a>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.elorg.net/2010/07/problems-with-sharepoint-site-and-folder-names/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fun With SharePoint Migrations</title>
		<link>http://www.elorg.net/2010/06/fun-with-sharepoint-migrations/</link>
		<comments>http://www.elorg.net/2010/06/fun-with-sharepoint-migrations/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 00:19:38 +0000</pubDate>
		<dc:creator>elorg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.elorg.net/?p=543</guid>
		<description><![CDATA[In my latest project, we have installed MOSS 2007 in a client&#8217;s environment and are working on upgrading/migrating their old WSS 2003 content over. This is somewhere between a parallel and in-place upgrade. I&#8217;ve learned quite a bit along the way &#8211; mostly through trial and error. Lots of issues. Lots of quirks. Lots of [...]]]></description>
			<content:encoded><![CDATA[<p>In my latest project, we have installed MOSS 2007 in a client&#8217;s environment and are working on upgrading/migrating their old WSS 2003 content over.  This is somewhere between a parallel and in-place upgrade. I&#8217;ve learned quite a bit along the way &#8211; mostly through trial and error. Lots of issues. Lots of quirks. Lots of workarounds.</p>
<p>This is a very long, and involved process &#8211; so far (it&#8217;s still in process) using nothing more than out of the box commands, and SharePoint Designer.<span id="more-543"></span></p>
<p>The original data is in a single WSS site collection. Their end goal is to break things up and better organize their content using multiple site collections. Initially we were hoping to be able to use stsadm&#8217;s export/import to migrate the original sites over individually, and directly into their end destination in MOSS.  After much research and testing, that does not appear to be possible.</p>
<ul>
<li>The &#8220;backup&#8221; and &#8220;restore&#8221; options for stsadm are available in both 2003 and 2007, but they will only work for an entire site collection. This was not an option for us.</li>
<li>The stsadm &#8220;export&#8221; and &#8220;import&#8221; options that will save permissions, versions, and modified meta &#8211; is only available in 2007.</li>
<li>2003 has &#8220;smigrate&#8221;, but 2007 does not.</li>
<li>&#8220;smigrate&#8221; saves in a file format that&#8217;s incompatible with 2007&#8242;s stsadm &#8220;import&#8221; &#8211; so we can&#8217;t combine the two to go directly from one to the other.</li>
<li>SharePoint Designer has backup &#038; restore capabilities, but you can&#8217;t use it as a method of upgrading a site. The SPD backup on 2003 creates the same file type as the &#8220;smigrate&#8221; method, while creating the same file type as the stsadm &#8220;export&#8221; method for a 2007 backup. You can only use SPD&#8217;s backup/restore to migrate within the same type of portal, and of the same version (e.g., WSS 3.0 to WSS 3.0, MOSS 3.0 to MOSS 3.0, WSS 2.0 to WSS 2.0 &#8211; you get the idea). We need to go from WSS 2.0 to MOSS 3.0, so this is definitely out.</li>
</ul>
<p>Migration options then become:</p>
<ol>
<li>Backup &#038; restore the entire portal to the new environment. Then perform the cleanup.</li>
<ul>
<li>This will do an in-place upgrade of the portal&#8217;s content.</li>
<li>We would either need to take one long &#8220;outage&#8221;, or do this in batches and backup/restore the database multiple times to make sure we have the most current data.</li>
</ul>
<li>Or the slower, more tedious manual methods:</li>
<ul>
<li>Save each site as a template, copy over, and recreate site using new template.</li>
<li>Save each List and Library as a template individually, and copy them over&#8230;</li>
<li>Or manually recreate each site, and each library, and copy/paste the content across.</li>
<ul>
<li>Down sides to all are that the templates have file size limitations (but you may be able to get around this by changing settings in Central Admin).</li>
<li>It&#8217;s SLOW.</li>
<li>You lose all of the creation/modified meta.</li>
<li>Web parts will most likely need to be recreated &#8211; at least on each site&#8217;s landing pages unless you can copy the default.aspx file over without too much fuss.</li>
<li>Beware of custom columns using these methods if not saving as templates.</li>
<li>Custom column meta may be lost with file types like PDFs when copying/pasting across.</li>
<li>Also &#8211; you will need to recreate your views if not saving as templates.</li>
</ul>
</ul>
</ol>
<p>The client has already been through a SharePoint upgrade to 2003 &#8211; and lost all of their created/modified meta.  Retaining as much meta as possible was our priority, so we opted to go the first route. We performed a test migration and had hashed out a plan for the real migration. The steps have since evolved quite a bit through a lot of trial &#038; error. Also, as things progressed we found that some of our previous steps had stopped working properly so we had to get creative and alter our migration steps accordingly.</p>
<p><strong>** Don&#8217;t forget to run the <a href="http://technet.microsoft.com/en-us/library/cc262231(office.12).aspx">pre-upgrade scan tool</a> before starting! **</strong></p>
<p>This process becomes significantly faster and easier if you perform a thorough review of your content, make note of the permission structure (where it&#8217;s inherited, where it&#8217;s not), plan out the starting location vs. final destination, remove any DVWPs (data view web parts) from web part pages, etc.</p>
<p>Now, let&#8217;s get started.</p>
<p><strong>First &#8211; Backing Up:</strong><br />
Scheduled an &#8220;outage&#8221; with the users (in quotes because the data would still be available to <em><strong>view</strong></em>). We attempted to set the site collection as read-only via SharePoint&#8217;s commandline tools, but GetSiteLock didn&#8217;t appear to be a valid command for 2003?  We ended up locating the content database in SQL (2000) and setting the database read-only <a href="http://www.sharepointjoel.com/Lists/Posts/Post.aspx?List=0cd1a63d-183c-4fc2-8320-ba5369008acb&#038;ID=329">very similar to these instructions</a>.  When we were satisfied that the old portal was no longer being written to, we used SQL to backup the database, copied it over to the new location, and restored it to a new database in SQL 2008.</p>
<p><strong>Second &#8211; Upgrading:</strong><br />
The upgrade was actually the easiest part (though I&#8217;m sure there&#8217;s an easier, more direct method than the following steps).</p>
<ol>
<li>Login to Central Admin and create a new temporary site collection.</li>
<li>Remove the database that was created for this site collection.</li>
<p><code>stsadm -o deletecontentdb -url http://MyPortal/MyTempSiteCollectionURL/ -databasename SPAutoDBName -databaseserver MySQLServerName</code></p>
<li>Set the old portal&#8217;s database that was restored to the new environment to be used as the temporary site collection&#8217;s database.</li>
<p><code>stsadm -o addcontentdb -url http://MyPortal/MyTempSiteCollectionURL/ -databasename MyOldPortalsDBName -databaseserver MySQLServerName\MyCustomInstance</code></p>
<ul>
<li>This will take quite a while depending on how much content you have. This is where it upgrades your content.</li>
<li>We actually had to &#8220;<a href="http://technet.microsoft.com/en-us/library/cc262449(office.12).aspx">deletecontentdb</a>&#8221; and then &#8220;<a href="http://technet.microsoft.com/en-us/library/cc263422(office.12).aspx">addcontentdb</a>&#8221; a second time during our initial test. Not during the real migration though. If your site collection doesn&#8217;t seem to have content, give that a quick try.</li>
</ul>
</ol>
<p><strong>Third &#8211; Preparations:</strong><br />
We found that we had to perform the following steps to each site to clean things up and &#8220;2007-ify&#8221; everything.</p>
<ul>
<li>In Site Actions > Site Settings</li>
<li>Reset all pages to the site definition.</li>
<li>Reset the theme to the default.</li>
<ul>
<li>In some cases this is already done.</li>
<li>In some cases it appears to be done, but isn&#8217;t.</li>
<li>In most cases, it&#8217;s very obvious that it needs to be done.</li>
</ul>
<li>Inherit the global navigation.</li>
<li>Grant full control to any accounts that will be used to perform any exports/imports, etc.! This will save headaches.</li>
<li>It&#8217;s a good idea to look through the web parts on your pages for web parts with errors and delete them. Don&#8217;t forget to check for this in your &#8220;closed&#8221; web parts or you may run into warnings/failures in your export/import.</li>
</ul>
<p>In our case, to help down the road we had to also:</p>
<ul>
<li>Add the accounts that we were using to the Site Collection Admins.</li>
<li>The upgraded portal was not Publishing.  We enabled the Enterprise features to have access to the &#8220;Manage Content &#038; Structure&#8221; functionality.</li>
<ul>
<li>Site Actions > Site Settings > All Site Settings</li>
<li>Site Collection Features > end enable the Office SharePoint Server Enterprise Site Collection features.</li>
</ul>
</ul>
<p><strong>Fourth &#8211; The Migration!</strong><br />
Initially we exported and imported via <code>stsadm</code>, but it was giving us errors on the first few sites that we tried.  I don&#8217;t recall the exact details at this point, but we eventually tried SharePoint Designer which seemed to do the trick.</p>
<ul>
<li>Open SharePoint Designer.</li>
<ul>
<li>If the account that you&#8217;re logged into your computer with does not have appropriate access, right-click on the SPD shortcut and &#8220;run as&#8230;&#8221; an account that does.</li>
<li>File > Open Site > type in the URL of the site to be migrated > click &#8220;Open&#8221;</li>
<li>In the SPD menus open Site > Administration > Backup&#8230;</li>
<li>File > New&#8230; > Web site</li>
<li>Specify &#8220;Empty Web Site&#8221; and enter the full URL to the destination site on the appropriate site collection.</li>
<li>Site > Administration > Restore&#8230;</li>
</ul>
</ul>
<p>Voila! If you don&#8217;t run into issues with file sizes, or a number of other misc. errors, you have just upgraded &#038; migrated your first site.</p>
<p><strong>Fifth &#8211; Oops, Missing Documents:</strong><br />
The above steps seemed to work just fine for a while. Then when reviewing our migrated sites in more detail, we started noticing that Document &#038; Picture Libraries were randomly missing files.  Lists appeared fine.</p>
<p>None of the libraries in the original portal had versioning or content approval enabled or required. However it seems as though during the upgrade process SharePoint believed some of the files to be drafts? This is the only explanation that I have been able to think of that makes sense.</p>
<p>The solution was to use <code>stsadm</code> to export the sites. SPD is essentially using <code>stsadm</code> already, but with some default settings. In order to set other options (like setting the version levels to export) you will need to use <code>stsadm</code>:</p>
<p><code>stsadm -o export -url http://MyPortal/MyTempSiteCollectionURL/MySite/ -filename MyFileName -versions 4 -includeusersecurity</code></p>
<p>I won&#8217;t spell out the details of importing via <code>stsadm</code> because&#8230;</p>
<p><strong>Sixth &#8211; Oops, Now What Happened to the Meta?</strong><br />
That worked great. For a few sites. Then for some reason (still to be determined?) all of the created/modified meta was reset to the import user account and timestamp.</p>
<p>After further testing, the best combination appeared to be:</p>
<ol>
<li>Export via commandline as above.</li>
<li>Using SPD, create an empty site at the destination.</li>
<li>Restore using SPD.</li>
</ol>
<p><strong>Seventh &#8211; Where&#8217;s the Love for Workspaces?</strong><br />
Workspace migration was a different story. They seem to be tied to their parent site and could not be exported &#038; restored like the other sites.  Given that I could not find an option in <code>stsadm</code> to &#8220;include children&#8221; &#8211; I assumed that this was not available. When in fact, <code>stsadm</code> appears to include child sites and workspaces automatically.</p>
<p>Before we figured this out, we started  using SPD and checked the option to include subsites.  This lost us a few of our files, but in those cases we weren&#8217;t overly concerned about the meta and manually copied those over.</p>
<p>Another option (especially if you&#8217;re relocating the workspace within your site structure) is to:</p>
<ul>
<li>Use <code>stsadm</code> to export the parent site</li>
<li>Use SPD to create an empty site.</li>
<li>Use SPD to restore the parent &#038; subsites.</li>
<li>Use &#8220;Content &#038; Structure&#8221; to move the workspace from its imported location to its final destination.</li>
</ul>
<p><strong>Another few notes:</strong><br />
Some sites would duplicate their list items (and in one case, triplicate) on import. When possible, using SPD to perform the import seemed to do the trick. If you prefer the <code>stsadm</code> method, try using the <a href="http://technet.microsoft.com/en-us/library/cc261866(office.12).aspx">updateversions</a> option.</p>
<p>There are a few other &#8220;quirks&#8221; that we&#8217;ve run into while migrating content, but I&#8217;ll save that for the next post.</p>
<p><strong>Update:</strong><br />
For some reason, reverting back to the stsadm import method worked just fine after returning from the weekend. Not sure why this stopped working in the first place &#8211; but very happy that it&#8217;s behaving now.</p>
<p>Lesson? SharePoint Designer and stsadm are finicky and fragile. When one starts acting up, try using the other to see if it does the trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elorg.net/2010/06/fun-with-sharepoint-migrations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

