sprocsSchemaVersion must not be null – SharePoint 2016 Upgrade

You may run across this error.  I inadvertently did.  It happens when the content database upgrade process fails expectantly and then the Mount-ContentDatabase won't execute the upgrade again because it thinks it is already upgraded. Unfortunately, this is a catastrophic failure and will require you to restore your Content database and rerun the content database upgrade. 

How did I run into this?  Well, I opened many powershell windows to be "multi-threaded" in my upgrade and the upgrade code didn't like that at all.  It complained about a shared log file and killed off half the threads.  I guess you shouldn't fire that off more than one instance like you could in 2013 and 2010!

Be sure you always backup your databases before you upgrade in case you need to rollback!
Chris 

Action 16.1.1.0 of Microsoft.Office.Project.Server.Database.Extension.Upgrade.PDEUpgradeSequence failed – SharePoint 2016 Upgrade

What a crazy error. 

There are a few posts about this but very little that tell you what is going on.  When you attempt to upgrade the farm with the following command (after applying a public update or even after the 2016 upgrade):

PSConfig.exe -cmd upgrade -inplace b2b -wait -force -cmd applicationcontent -install -cmd installfeatures -cmd secureresources

You could get the above error in one of the final upgrade stepsactions.  Psconfig.exe is attempting to upgrade all your service application and content databases to your current binary level.  This particular error will show up if someone in your organization was "smart" enough to decided to make a content database a project server database.  You will see this by looking at the tables in the database.  If you see any that are related to Project Server, then you know someone did something really dumb.

You can get your farm to upgrade by simple removing the offending database (aka detach it), then run the command to upgrade everything else.  

Resolution would be to remove all the project server based tables (make a backup of course) and then try your upgrade again. You could also attempt to tell SharePoint that the database is a "Project Server" database and attempt to upgrade it via Project Server but no guarantee that will work especially if the databases are from 2007/2010 days.  You would need a Project Server environment to upgrade all the way from the old version to the latest.

Enjoy, 
Chris 

1 Year Anniversary Tribute – eBay upgrade video

As a tribute to the 1-year anniversary of the start of the eBay upgrade project, I thought I would share the video I created to show at our celebration party in San Jose.  It is a great video, and shows how much fun we had (and you should too) when we did the upgrade.  The team deserves a tremendous amout of credit for the work and effort they put in…so here it is:

http://youtu.be/EnK2c_lntOY

As a run down, here is what occurs in the video:

  • The SharePoint odessey – the 2001 to 2010 evolution.  When the monkey discovers the monolith and evolves.  Simiarly, eBay's discovery of SharePoint 2010 starts with a monolithic-white board (its only appropriate that we use Richard Struass's Also sprach Zarathustra to show this)
  • You see that it really is a love of "SharePoint" that progresses the joining of all parties
  • As we drive through the initial requirements (found and un-found), you will realize that this project was done in 3.5 months (when similar quotes were at 14 months at 4x the cost).  This drives the selection of Queen's…"Under Pressure"
  • At one point you will see Ramin and I on the ground with our hands in the air…it was a fun moment as we were not really knowing what was going to happen…
  • You will see photos of our countdown timer of the night we went live (we had an upgrade window of the weekend to finish the upgrade successfully).  It slowly winds down until the "GO-NOGO Moment"
  • As the pictures are displayed, you will see various moments over the 3.5 months of us working intent-ly getting the job done
  • Not everything went as planned and hence you see the "GO-NOGO" which occured at least 4-5 times (some elements include NDR64 discoveries and the infamous Search ResultsProvider that has claimed countless develpers…
  • Katy Perry's song of "Firework" is perfect for our dispay of the team members that worked so very hard to make the upgrade happen and thusly are amazingly bright and wonderful people that randomly came together to accomplish something amazing (NOTE: there are moments in the song lyrics that relate to hidden moments)
  • Let me be the first to say that eBay has an amazing NetOps team that just kicks butt (Kenny Cheng and Ken MacIntosh), they saved our a$$ a few times…
  • You will see a snapshot of a fortune cookie that "I" got…it was the week of the upgrade and it said "Your hard work is about to pay off", it was the best fortune EVER!
  • There were some times when we had some pretty "interesting" dinners…hence the snapshot of the menu…
  • The video ends with 00:00:00 and pictures of the eBay intranet running SharePoint 2010 and our SharePoint Conference 2011 session – "How eBay successfully upgrade their intranet to 2010"

Enjoy!
Chris

Fixing: Action 4.0.23.0 of Microsoft.SharePoint.Upgrade.SPSiteWssSequence failed.

This was a tough error, THAT IS AN UPGRADE SHOWSTOPPER, that I ran into a few months ago.  Just now getting around to blogging it.  Here's the full error:

[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Action 4.0.23.0 of Microsoft.SharePoint.Upgrade.SPSiteWssSequence failed.
[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Inner Exception: Field name already exists.

The name used for this field is already used by another field in the list.  Select another name and try again.<nativehr>0x81020013</nativehr><nativestack></nativestack>
[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]:    at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML)
   at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)
[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Exception: Field name already exists.

The name used for this field is already used by another field in the list.  Select another name and try again.
[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]:    at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)
   at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)
   at Microsoft.SharePoint.SPField.UpdateCore(Boolean bToggleSealed)
   at Microsoft.SharePoint.SPField.Update()
   at Microsoft.SharePoint.SPFieldIndexCollection.IndexOneField(Object field, Boolean bIndexed)
   at Microsoft.SharePoint.SPFieldIndexCollection.Add(SPField field)
   at Microsoft.SharePoint.Upgrade.RestoreWorkflowAndDatasourceLibraryPermissions.Upgrade()
   at Microsoft.SharePoint.Upgrade.SPActionSequence.Upgrade()

What causes this?  Diving into the upgrade code I find that it is obviously trying to add a column to a list.  But which one?  The hint was in the name of one of the methods – "RestoreWorkflowAndDatasourceLibraryPermissions".  Looking at this, it is checking for all task lists in each site that are setup for workflow.

I reran the code in powershell and eventually found the offending list:

foreach($web in $site.allwebs)

{

$ht = new-object system.collections.hashtable

foreach($list in $web.lists)

{

foreach($ct in $list.ContentTypes)

{

if ($ct.Id.IsCHildof([Microsoft.SHarePoint.SPBuiltInContentTYpeId]::WorkflowTask))

{

$ht.add($list.id, $list.id)

"Web:" + $web.TItle

"List: " + $list.Title

"Content Type:" + $ct.Name

} #end if

} #end ct

} #end list

foreach($id in $ht.values)

{

$l1 = $web.lists[$id]

#$g = new-object system.guid ([Microsoft.SHarePoint.SPBuiltInFieldId]::WorkflowInstanceID.tostring())

$g = new-object system.guid ("de8beacf-5505-47cd-80a6-aa44e7ffe2f4")

#$l1.FieldIndexes.delete($g);

$l1.FieldIndexes.add($list.fields[[Microsoft.SHarePoint.SPBuiltInFieldId]::WorkflowInstanceID]);

$l1.update()

#$g = new-object system.guid([Microsoft.SHarePoint.SPBuiltInFieldId]::Guid.tostring())

$g = new-object system.guid("ae069f25-3ac2-4256-b9c3-15dbc15da0e0")

#$l1.FieldIndexes.delete($g);

$l1.FieldIndexes.add($list.fields[[Microsoft.SHarePoint.SPBuiltInFieldId]::Guid]);

$l1.update() 

} #end hashtable

} #end web

What was the cause?   When you create a workflow, it asks for a task list.  You can point the workflow at an existing task list or create a new one.  It seems that not only did the users create a workflow that pointed to an existing list, but that list in fact was the task list that the workflow was using for task tracking!!  This causes a loop in the upgrade code and hence the failure.

Fixing it requires deleting some of the fields that were added by the workflow.

Enjoy!

Chris


Just another Don’t Do this when Developing SharePoint Blog Post – IT IS NEEDED!

Ok, you hear over and over and over again, don't do this, don't do that when developing SharePoint.  But it seems that not too many people listen to all that wonderful best practice guidance.  As part of the eBay project, we inherited A LOT of code from previous developers and consultants (which will remain unnamed, but ask me at SPC and I'll tell you).  This code has so many bad components to it it was unbelieveable.  Every SharePoint rule was broken.  There were so many broken things that we couldn't fix them all, so we focused on the most important and visable items. 

Maarten has done a great job of summarizing all the things we had to do to fix this code.  Check out his blog post here:

http://withinsharepoint.com/archives/186

Enjoy!
Chris

How I Successfully Upgraded eBay to SharePoint 2010

And so it begins!  This is my first blog post in a few months…where have I been?  As some of you know, I have been the Sr. Architect of the eBay SharePoint 2010 Upgrade Project.  One of 3 *major* upgrades that are occuring in the United States in 2011.  I will be presenting a series of blog posts on how we did what we did and what challenges we ran into over the project.  This is the first of about 15-20 blog posts of material you have not seen before on any MVP, MCM or anyone else's blog post because I know for 100% fact, we were the first to do many of these things!  Which makes me think we were the first to really do a major upgrade with all the pieces (DR, DMZ, data center move, firewalls, etc).

First, a little background. The project started in early March and we were given a target completion date of mid July.  Several vendors bid on the process, but none had a response as deep and technical as ours, with several other carrots and goodies built in.  Also, all of them but ours said it was impossible to do in 3.5 months.  Many quoted 3x as long and 4x as much in price..WOW.  I was also well known by the eBay team for my work at other companies and the ACS SharePoint Courseware.  So my reputation preceeded me, which is good and bad depending on who you are (wink wink to Microsoft).

I started off the project in a very Avanade like manner (I worked at Avanade for about 1.5 years) using the ACM methodology, which is very similar to Microsoft's MOF.  The phases include:

  • Envisioning
  • Planning
  • Executing
  • Stabalizing
  • Deploying

As part of the Envisioning phase, I utilized a series of tools that I had built over the past few months that would do a DIFF of their SharePoint servers.  I will have a whole blog post on this tool in the next couple of weeks, and I can tell you right now, MCS was drooling to get their hands on it.  This tool determined EVERYTHING they had done to the environment.  Using this data, I was able to map it to the code and solutions and determine what items we didn't have code for.  This was a great process step as we learned where the code was, what it mapped too and where it was used.  All very vital elements to making sure the upgrade would be a success.

As part of the Planning phase, we needed to start to get an idea of the reasons behind moving to SharePoint 2010 and what changes MUST be made to the environment moving forward.  This evolved into building out a massive Governance document FROM SCRATCH, utilizing elements from our ACS Governance course.  It is much more details than anything out there today (sorry Nuedesic, Slalom et all).  This doucment really got the converstations going between the management and us to figure out what really had to happen and what the final Farm needed to look like.  We also had to identify what code needed to be refactored (and let me tell you, don't ever hire an accounting company to do SharePoint code – some of the worst code I have ever seen).

The executing phase, my favorite phase!  Once we knew what needed to happen, we started to do trial upgrades on the envrionments.  As part of this, we needed a moc development 2007 environment and a 2010 environment.  This was not an easy task.  There were several elements such as custom code, 3rd party applications and just a lot of random changes to the SharePoint root that weren't really documented.  Once we installed everything we thought we needed, it became impractial for us to click on every page in the farm to determine if there were any issues/errors.  Utilizing another tool I had built from other projects, I modified it to hit every page in the farm and record if any errors were occuring.  It gave us back nearly perfect data.  We were able to find several components that needed to have extra settings or code installed.  As part of this entire process, I started to create the most amazing document of the project…THE PRODUCTION BUILD GUIDE.   This document has every single step for a network/server admin to perform to get the farm installed and up and running with no interaction from us.  This document is pure GOLD.  We utilized this document to build out two more environments, QA and STAGING.  By this time, I and my friend Satya had built out and upgraded the environment 4 times (you should expect at a minimum to do the same).

Stabalizing.  This was probably the most important step of the project.  As a consultant, I can make anything work and fix any error, but when it comes to the functionality of the sites and components, I can't possibly know that.  This means that business owners must step in and look at the QA and Staging environments to determine if their components are working correctly.  In the end, everything worked out fine due to the stellar team we had, but honestly, we could have given alot more time to this vital piece.

Deployment:  Getting the hardware installed was somewhat of an easy part of the process, one of the hard parts was specing out the hardware that would be needed to support 10s of thousands of users.  I did the first configuration of the hardware and then eBay decided to bring in some MCS folks just to validate.  They unneedingly added in double the memory to the WFEs and APP servers, but hey…memory is cheap so blah (By the way, utilization of the servers shows my config was spot on).  Another thing we had to deal with was the movement of data centers.  We needed to move alot of large content databases to a new data center.  Our upgrade window was 60 hours.  I'll tell you, trying to ensure that a massive farm environment is only down for 60 hours is a REAL challenge.  We had to get really creative to make that happen.  I brought a lot to the table in terms of getting things into that window.  As part of the deployment phase, we needed to build a project timeline with all the steps of the build guide in it.  Each step was a taks with its respective timing (thank god MS Project can do hourly).  After I had built out this AWESOME document, I realized that tasks had to be started the next monday (this was Thrusday evening of the week).  We had to have a mandatory meeting to make sure everyone knew what needed to happen.  Everything went through perfectly, the build guide was the document that really drove the project timelines.  I'l tell you, every step we did out of order or did not do….bit us in the ASS.  I'll never not follow my build guide again!

In summary, the upgrade is complete.  The system is running great, but now we have hit the training aspect for the business users.  It has been quite a shock (even to me, the writer of the first SP2010 courses for End Users) to learn about all the things that the SharePoint team changed between 2007 and 2010.  Some are really great, some are *really* bad.  We have had numerous tickets coming in asking how to do this, how to do that and what the heck is this "ribbon" thing.  Next phase is to build out custom courseware for the users using the great tools we have built at ACS and have utilized for other customers like Exxon Mobil, Abbott Labs and very large government organizations. 

It has been/was a GREAT project.  And although the title of the blog is "How I Successfully Upgraded eBay to SharePoint 2010", you can't do something like that alone (you need at least 4-5 superstars).  The team at eBay was OUTSTANDING to work with and I have to say, the stars aligned for this project to be succesful.  I am confident, no one else on the planet could have executed like we did, I am truely grateful to eBay and the 3rd parties (Corasworks, AvePoint, etc) that we had to engage with on the project.  Only one person on the team actually has another public blog and that is Maarten Sundman.  He was pivotal in a lot of our code review, code modification and branding aspects of the project.  He was also a "get it done" type of person, which is great to have on a project like this.

Watch for the next blog post in this KILLER series,
Chris

Also, come find me at the SP Conference, we will have a session on our eBay upgrade project, feel free to ask some deep and technical questions at the session!

And lastly, if you need help with your SharePoint Upgrade, there isn't anything I don't know about the process, drop me a line and I'll be happy to help!

Continue to next blog post in this series – Upgrading UserProfiles – the non-database attach method

 

Upgrading UserProfiles to SharePoint 2010 Non Database Attach

Blog Post #2 of How I Successfully Upgraded eBay to SharePoint 2010 – Previous Blog in this series

One of the decisions I made as the Sr Architect of the eBay upgrade project, was to NOT do a database attach upgrade of the SSP.  I viewed the whole process as not very reliable and we didn't want a bunch of junk moving foward to 2010.  So, we went down the path of build it all from scratch.  This presents some interesting problems and this blog post will focus on the UserProfile Service Application component of the SSP.  In summary it entails:

  • Custom properties added in 2007 must be moved to 2010 (definition and data)
  • Custom profile privacy settings
  • All connections must be redone (BDC, Active Directory)
  • Migrate old custom user data

As part of the process, the first thing you have to do is to identify all the custom properties that were added in 2007.  This is actually an easy part as you can simply run a query against the SSP database and the PropertyList table.  Anything over a certain ID value is a custom property.  This definitely gets you the list, but what do you do with the list?  You COULD manually add each one to the UPS service application, or, you could write a lovely PowerShell Script to do the work for you.  How do the scripts work?

  1. We built a custom tab delimited file of their names, values, descriptions, privacy settings and connection information.
  2. We create a script that reads the data and will setup the properties – this was HUGE time saving as the property editing page in UPS is one of the worst designed pages in all of Central Administration
  3. Setup all BDC connections using SharePoint Designer (this includes assigning the proper permissions to the UPS service application accounts to be able to execute the BDC and retrieve data)
  4. We create another script that will setup the property connections (after BDC has been created)
  5. Custom profile privacy settings

That gets the basics done, but what about the data of the users in the 2007 farm?  Just so happens the SharePoint team though very hard about this one.  As part of the SharePoint Admin ToolKit, you have a User Profile replication tool.  This tool will grab the data in a target SharePoint farm (2007 or 2010) and move the data based on the account name of the user (not the recordid as that would change in each farm).

The only problem with this tool is that is doesn't like special characters very much.  These would include the main culprit the 'appersand' (ie '&').  We had to edit all the properties in the production farm that had this in the PropertyVal (of the UserPropertyValue table) to remove it and put 'and' in its place.  Once this was done, the tool was able to use it's error log to rerun for just those users.  You could slowly find all the special characters and remove them to have the users data get moved over successfully.

The last step, and this really is the most important one, is that you ensure that all the privacy settings came over.  We were told the Admin Toolkit would do this, but we found out that wasn't the case.  It is very simple to get these values from the older 2007 farm by joing the UserProfile_Full and the UserProfileValue tables on recordid and getting the "privacy" column.  Then all you have to do is to update the same values in the 2010 farm and BAM…you are DONE!

Enjoy, 
Chris

Check out the next blog in this series – Changing your Host headers

Upgrading SharePoint 2010 – Changing Your Host Headers – What It Means To Your Consultant

Part 3 of How I Successfully Upgraded eBay – Previous Blog Post

So what does it mean for you to "retire" an older web application for branding purposes?  It is a simple change in Central Administration, but a nasty proposition when it comes to content in the site and most consultants will take the easy way out and say, no you can't do that (because they know how much work it is and don't really know what will break).  What am I talking about?  Let me give you an example:

  • In 2007, the web application host header was http://abc.contoso.com
  • In 2010, you want it to be http://xyz.contoso.com
  • Moving a content database from one web applicaiton to another with a different name (for service delivery reasons)
  • Moving a site collection from one content database to another content database in a different web application

Again, it is easy to do via Central Administration.  It is easy to do the DNS and add an AAM, but did you think about content?  Huh, what about the content…here's what you didn't think about:

  • Non relative links used in 3rd Party applications (Corasworks) 
  • ASPX pages with non-relative links
  • Content Editor web parts with non-relative links
  • Update custom web part properties with non-relative links
  • Navigation nodes with existing non-relative links
  • Excel and InfoPath with Data Connections

The problem is non-relative links.  It was a big problem in 2007 and in most vendors products that they didn't check the URL of where the code was running and convert the saved content into relative links!  This is a major pain in the ass!  Now you will see in 2010 and in most vendor products, they have learned a VERY valuable lesson.  ALWAYS USE RELATIVE LINKS!

How does one upgrade 10s of 1000s of pages, 1000s of content editor web parts and navigation nodes with the new URLs?  You build a tool of course!  The tool is simple in its requirements:

  • Take an input file of old url to new url 
  • Update all aspx pages with the new links – CHECK
  • Update Content Editor web parts with the new links – CHECK
  • Update custom web parts with links – CHECK
  • Update Navigation nodes with new links – CHECK
  • Update….wait…how to you update Excel and InfoPath? – OH MY…(the topic of the next blog post)

The tool is easy to build, but add in 1000s of sites, 1000s of pages and web parts…you have some problems:

  1. It will take too long for it to update all your resources before the upgrade is finished.  So what do you do to meet your upgrade window?
  2. You have external links that still point to these older urls

The problem has a simple solution.  HttpModules.  All you have to do is intercept the HTTP request and redirect to the proper place.  How do you know where to redirect them?  Same as the tool, use the input file for the tool.  Create a SharePoint list that the HttpModule pulls from that will redirect the request to the proper place.  Here is a coule of examples:

There is an issue here.  You would have two entries in the configuration list:

In this case, the order of replacement matters. If the first entry is applied, they will incorrectly get redirected to http://xyz/HelloWorld.  This is not the desired outcome.  You must redirect in order of most specific first, then to the most generic.  You must also be careful with generic entries.  Suppose you have two web applications:

If you have the following in your configuration list:

You can expect that the requests to http://abc will be redirected properly, but the http://abcdef, will also get redirected and not the way you want.  Also in the case of http://abc->http://abcdef, you would be in a continuous loop of adding http://abc to the redirect and of course, you will eventually overrun the address line in the browser!

Enjoy,
Chris

See next blog post in this series

Upgrading to SharePoint 2010 – Excel Workbooks And InfoPath Forms With Data Connections

Blog #4 in How I Successfully Upgraded eBay to SharePoint 2010 – See Previous Blog In Series

So you decided to move your content databases around eh?  The urls for the site collections and webs are different?  Did you ever think about all those lonely lost users that created InfoPath Forms and Excel Workbooks with Data Connections to lists?   Hmm…probably not!

So what would be the steps to start this massive endeavour?  Well, the first would be to identify all the Excel and InfoPath workbooks in your farm, then you should download all of them, check if they have a data connection, then update them if they do.  Wha?  What if you have 1000s of them?  Damn…you will spend months doing that…good luck!

Wait…Microsoft built us a commandlet for it.  It is called "Update-SPInfoPathUserFileUrl".  What does it do you ask?  Well, it will iterate through all the infopath forms and data connection libraries in your farm and update similar to the Url Updater I talked about in the previous post.  The only problem with this commandlet…IT DOESN"T WORK!  Yes, you heard it right, it doesn't work.  After serveral calls with the product support team, they finally conceded to us this fact.  What is wrong with it you ask, here's a run down:

  • If the data connection library has anything else other than an ODC file, it will fail
  • If the ODC file has a CDATA tag in it (or is not a standard everyday XML file), the tool fails when it tries to create an XMLDocument of the file
  • For no reason at all, it won't update all the files

They submitted some internal bug requests and told us they would try to get us a hotfix (but it would take several weeks).  Unfortunately, that didn't fly very well with us as we had to do the upgrade in two weeks!  So, I wrote our own tool to do it programmatically!  I'll summarize the steps:

  • Find all the InfoPath and Data Connection files in the Farm (across all content databases)
  • Run the tool passing in the same input file of replacement URLs
  • Update the InfoPath Files (which are CAB files by the way) in place in their respective libraries
  • Update the Data Connection (ODC) files, which are simply XML in place

So finding the files is the easy part, here's the script:

#export all aspx files to temp directory
$cdbs = get-spcontentdatabase

$count=0
foreach($cdb in $cdbs)
{
"Exporting file list from " + $cdb.Name

$conn = new-object system.data.sqlclient.sqlconnection $cdb.legacydatabaseconnectionstring.replace("Timeout=15","")
$conn.open()
$cmd = $conn.CreateCommand()
$cmd.CommandTimeout = 4000
$cmd.commandtext = "select DirName, leafname from AllDocs where extensionforfile in ('xsn', 'odc')";
$reader = $cmd.executereader()
$i = 0

while ($reader.read())
{
$line = $cdb.WebApplication.Url + $reader["dirname"] + "/" + $reader["leafname"]
add-content "InfoPathFilesToUpDate.txt" $line
$i++
}

$reader.CLose()
$conn.CLose()
}

Once you have the list of the files you need to update, the rest is easy….relatively speaking [:D].  So what's the next step?  You gotta loop through all these files and determine if they have the old URLs in them.  For an xml file, that is pretty easy.  It's just a text file, but most ODC files are not valid XML files…YUK.  But that's beside the point, its easy to replace the ODC file connection info, just look for the <odc:Connection> element.  Inside of it will be a connection string with the url you are looking for.

Now on to the InfoPath files.  How does one update an InfoPath file without opening it in InfoPath and changing the Data Connection?  You could download it and use the "extract.exe" tool to output the file contents, then rebuild it using "makecab.exe", but wow, that is just too much work.  And yes, I tried it, and it sucked.  Basically Windows still has the ability to have a folder to be "tagged".  Did you ever have that problem with hackers hitting your FTP server and "tagging" it?  You couldn't delete their tag without wipping the entire drive.  Guess what…when extracting certain InfoPath files, you can "tag" your directory.  When making a scrip with a "delete all" files in a folder command errors out more RED than you ever care to see.  So how do you successfully update an InfoPath CAB file?

  • Use the awesome Reflector tool to get the CabinetExtractor class out of the SharePoint dlls for the CommandLet.

This is an entire set of classes specifcally designed to update CAB files in memory. PERFECT!

Once I had the code working, I simply passed in the list of files, checked the manifest.xml file in the InfoPath CAB package for any offending URLs and if they were found, updated the file and then streamed it back into the CAB file.  Then I just upload to the library.  Everything worked like a charm!

NOTE:  Site and List templates are CAB files…internally, they have a version called "3" in them.  Magically, if you change this value to "4", a majority of them will work in 2010…HINT HINT…

Enjoy,
Chris

See next blog post in this series here

SharePoint 2010 Upgrade Steps

Here's a reference for the complete steps of a 2007 to 2010 upgrade:

4.001
Revert all document content streams.
4.01
Alter tables to support mobile service
Create central admin health rule libraries.
Deprecate features.
Provisioning minimal master page in site:
Provisioning V4 master page in site:
Remove AllDocStreams.Size.
Remove list items that do not belong to any lists or site, or a document library item that does not have an associated document.
Setting UIVersion metadata on existing default master page
Upgrade actions that must act on all Webs.
4.0101
Set wiki pages dirty
Upgrade action to convert the Central Administration site to V4UI.
4.0103
Add Assembly and Class columns to the AllWebParts table.
4.0105
Remove DisallowContentType flag for Posts, Comments list.
4.0106
Remove NameValuePair_NoListId.
4.0107
Add SolutionId column to ContentTypes table.
4.0108
Increasing the column width of SiteUrl Column in ImmedSubscriptions & SchedSubscriptions tables
4.0109
Make Features.Version column non-nullable.
4.011
Adds the Solutions Gallery to the Root Web.
Create the AllLookupRelationships table
Remove document streams that do not belong to any document or item.
4.0111
Update the tp_WebPartTypeId column in AllWebParts table for GroupBoard webparts (again)
4.0112
Update resource usage schema for Beta1
4.0113
Remove columns and procedures related to the obsolete E-Mail Inserts feature.
4.0114
add PointsToDir as part of Links_Backward index.
4.0115
Add WebpartIdProperty column to the AllWebParts table.
4.0116
Upgrade version-related columns in AllDocs table.
4.0117
Add ValidationErrorUrl and ValidationErrorMessage columns to Solutions table.
4.0118
Alter AllDocStreams.InternalVersion to be NOT NULL
4.0119
Add new collations from Windows 2005.
4.012
Add tp_NoThrottleListOperations to AllLists table.
Adds EventReceiver to the Solutions Gallery.
Rename AllDocs.Version to AllDocs.ETagVersion.
4.0121
Alter AllFileFragments table so LOB data is in-row.
4.0122
Add FFMConsistent column to AllDocs.
4.0123
Update computed columns AllDocs.ETagVersion and AllDocs.EffectiveVersion.
4.0124
update Folder's children ItemCount and children folder count
4.0125
Change tp_IsCurrentVersion column to be non computed persisted in AllWebParts table.
4.0126
Marks the Master Page Gallery and Web Page Libraries as Application Lists.
4.0127
Update event receiver assembly registration info for GroupBoard.
4.0128
Creates the FeatureTracking table.
4.0129
Delete the admin tasks webpart from central admin.
This content database does not belong to the admin web application.  Skipping.
4.013
Add Synchronization column to EventReceivers table.
Sets two flags on this SPSite so the Visual Upgrade UI is shown.
4.0131
Remove spurious links from ghosted file content
4.0133
Update event receivers to have WorkflowList HostType.
4.0134
Add ContentVersion column to AllDocs.
4.0135
Add EverEnableDraftListFlags to AllLists.
4.0136
Convert RecycleBin.EffectiveDeleteTransactionId to non-computed column.
4.0137
Mark Navigation cache as dirty since the cache format has changed.
4.0138
Delete AllDocVersions rows with null Content and RbsId.
4.0139
Drop Index for EventSubsMatches table .
4.014
Add AllFileFragments table.
Add ItemId and HostType to EventReceivers index
Removes the farm topology webpart from Central Administration.
4.0142
Refresh file fragment mappings in configuration database.
4.0144
Remove obsolete site-scope instances of gbwwebparts feature from content dabatase.
4.0145
Remove obsolete FileFragment stored procedures, and ensure existing ones are updated due to parameter changes.
4.015
Create the Resources table and add new columns to existing tables for MUI.
Upgrade action to handle updating Product Help Content.
4.016
Adds the Theme Gallery to the Root Web.
Create the AllListUniqueFields table
4.017
Alter the RecycleBin table to support Cascade Deletes
Ensures that features specifying a true value for AutoActivateInCentralAdmin are activated in the Central Admin site.
4.019
Add UIVersion to Webs table and set to 3
Upgrade Quick Launch and the top navigation bar of GroupBoard sites.
4.02
Activate the central admin help collection.
Add Feature version support.
Remove tp_ContentType from AllLists table's tp_Fields column.
The current web application is not the administration web application.  Skipping.
4.021
Delete obsolete list instances of GroupBoard sites.
4.022
Add SolutionId column to EventReceivers and AllWebParts table.
Upgrade the Central Admin site branding.
4.023
Creates the Solutions table.
Restores permissions inheritance to Workflow and Datasource libraries.
4.024
Add a subscription Id column to the Sites table.
Index the DiscussionLastUpdated field in discussion boards.
4.025
Change AssignTo field in Project Task Lists from type User to type MultiUser.
4.026
Add FileFormatMetaInfo column to AllDocs table.
4.028
Change AllFileFragments data column types.
4.0291
Remove unnecessary security table indicies.
4.03
Add upload form for wiki library.
Add WebPart version support.
Upgrade action to handle Central Administration UI changes.
4.031
Drop unused image0x table
4.032
Alter the columns with the type of image, ntext to varbinary(max) and nvarchar(max)
4.033
Ensure SolutionId in EventReceivers clustered index.
4.034
Ensure unique indicies are marked as unique.
4.035
Add resource usage columns to DB
4.036
Add Hash column to Solutions table.
4.037
Create the Aux table and add new columns to existing tables .
4.038
Add MetaInfoVersion column to AllDocs table.
4.039
Add SessionID column to SiteQuota table.
4.04
Adds the Style Library to the Root Web.
Create table DataInformation and populate it with the Id of the database.
Modify LockedBy column to use server id instead of the server name.
4.041
Add Partition column and alter indicies to AllFileFragments.
4.042
Creates the CustomActions table.
4.043
Update uncustomized listview in AllWebParts table to dataview
4.044
Add ValidatorsHash column to Solutions table.
4.045
Add SolutionId column to the Features table.
Update the ParentId column in AllDocs to reflect Discussion Board changes.
4.046
Add Name and Definitions column to the Solutions table.
4.049
Drop tables for document categories feature, which is obsoleted.
4.05
Alter the ntext columns in ContentTypes and AllListsPlus to nvarchar(max)
Narrow the CI – Stage 1 and 2; Replace DirName / LeafName with ParentId / DocId in AllUserdata, AllUserdataJunctions and AllLinks table; Fix indices appropriately
Turning on RBS settings on each content database.
4.051
Add new columns to the AllListsPlus table for list data validation.
4.052
Add the AlternateMUICultures and OverwriteMUICultures columns to the WebsPlus table
4.056
Upgrade the ContentTypes and ContentTypeUsage tables from refactoring work.
4.058
Add new columns to the Workflow table to store the activity details for status visualization.
4.06
Alter the Value column in the DatabaseInformation table from nvarchar(1023) to nvarchar(max).
Update SetupPathVersion Default Constraint from 3 to 4
4.061
Add SolutionGalleryItemId column to the Solutions table.
4.062
Upgrade AllWebParts table and indicies.
4.063
Add SolutionGalleryItemId column to the Solutions table.
4.064
Upgrade AllLists tp_Fields and the tp_ContentTypes field to compressed format.
4.065
Add the SortBehavior column to the AllDocs table.
4.067
Upgrade security tables.
4.068
Sets the NeedToRunFirstInitUpgradeActions flag on all webs so that on their next init, they run the necessary upgrade actions
4.069
Set DefaultItemOpenUseListSetting flag.
4.07
Add tp_Flags column to UserInfo table.
Adding blog month quick launch view web part to page:URL
Adding BlogMonthQuickLaunch web part to page: URL
Begin upgrading blog site collection: URL
Begin Upgrading blog site:
Begin Upgrading Comment List: Comments
Begin Upgrading Field: Post Title
Begin Upgrading Field: Published
Begin Upgrading Lookup Field: Category
Begin Upgrading Lookup Field: Category Id
Begin upgrading module MonthlyViewPage and MonthlyArchivePage
Begin upgrading moduleBasicHome
Begin upgrading moduleCategoryPage
Begin upgrading modulePostPage
Begin Upgrading Post List: Posts
End Adding BlogMonthQuickLaunch web part to page: URL
End upgrading all comment lists fields schema in this blog site
End upgrading all post lists fields schema in this blog site
End upgrading blog site:
End Upgrading Comment List: Comments
End Upgrading Field: Post Title
End Upgrading Field: Published
End upgrading list fields schema in blog site
End Upgrading Lookup Field: Category
End Upgrading Lookup Field: Category Id
End upgrading module: MonthlyViewPage and MonthlyArchivePage
End Upgrading Post List: Posts
Makes sure master pages are marked as dirty so content is upgraded on request.
Upgrade blog sites.
4.071
Upgrade webs to new UI or allow site owners to choose (based on PSConfig option)
4.072
clear tp_ExternalToken because the format is updated.
4.073
Add RBS columns and indexes to DB
4.074
Add FeatureId to customactions table
4.076
Add SharedAccessRequests table.
4.077
Update event receiver assembly registration info from verision 12 to 14.
4.0771
Upgrade EventReceiver table indicies.
4.078
Upgrade indicies on Workflow tables.
4.079
Add the EntityId column to the AllListsPlus table.
4.08
Update Alternate Access Mapping information in database.
4.081
Upgrade indicies on CustomActions table.
4.082
Upgrade partitioning indicies and columns on AllFileFragments table.
4.083
Upgrade ALLWebParts tp_View  to compressed format.
4.085
Upgrade indicies on Docs and Webs.
4.086
Update the tp_WebPartTypeId column in AllWebParts table for GroupBoard webparts
4.087
Change the Properties column in the CustomActions table from xml to nvarchar datatype
4.088
Upgrade indicies on NVP tables.
4.089
Add the CliendId column to the Docs and EventCache tables.
4.09
Add the tp_SourceListId column to UserDataJunctions table.
Change tp_IsCurrentVersion column to be persisted in AllWebParts table.
Getting lookup fields and adding rows to the LookupRelationships table.
4.091
Add SiteDeletion table.
4.092
Changes the Id column in the CustomActions table from a unique index to a nonunique index.
4.093
Upgrade the AuditData indices.
4.094
Change the SortBehavior column in the AllDocs table to be a physical column.
4.095
Add ClientTag to Webs table
4.096
Alter the image column tp_token in userinfo to varbinary(max)
4.097
Set the VIEWFLAG_TABULARVIEW bit in tp_Flags for every HTML WebPart in AllWebParts table, except for a set of SharePoint Foundation lists that explicitly opt out.
4.098
Upgrade AllDocStreams.
4.099
Adds HasAssemblies to the Solutions table.
13.01
Activate new O14 MOSS CMS features
Activate site collection feature f63b7696-9afc-4e51-9dfd-3111015e9a60 on site URL
Begin CmsVersionToVersionFeatureActivationUpgradeAction::UpgradePublishingSite() on site URL.
End CmsVersionToVersionFeatureActivationUpgradeAction::UpgradePublishingSite() on site URL.
OfficeServerBaseSite feature is active, upgrading site URL.
OfficeServerBaseSite or PublishingResources feature is active, upgrading site collection URL.
PublishingResources feature is active, upgrading site URL.
Skipping activate of site-feature 4bcccd62-dcaf-46dc-a7d4-e38277ef33f4 on site URL since it is already active
This site is a PublishingSite, upgrade will be performed.
13.014
Add the picture library to mysitehost
13.016
AssetLibrary.UpgradeDocumentLibrary: Adding field 'ImageHeight' to view 'All Documents' at position '6' on doclib 'Site Collection Images' to replace obsolete O12 field 'ImageHeight'
AssetLibrary.UpgradeDocumentLibrary: Adding field 'ImageWidth' to view 'All Documents' at position '5' on doclib 'Site Collection Images' to replace obsolete O12 field 'ImageWidth'
AssetLibrary.UpgradeDocumentLibrary: Adding field 'ThumbnailOnForm' to view 'All Documents' at position '4' on doclib 'Site Collection Images' to replace obsolete O12 field 'ImageThumbnailDisplay'
AssetLibrary.UpgradeDocumentLibrary: Adding New View
AssetLibrary.UpgradeDocumentLibrary: Found O12 view with name 'All Documents' on doclib 'Site Collection Images' which contains obsolete O12 field 'ImageHeight'
AssetLibrary.UpgradeDocumentLibrary: Found O12 view with name 'All Documents' on doclib 'Site Collection Images' which contains obsolete O12 field 'ImageThumbnailDisplay'
AssetLibrary.UpgradeDocumentLibrary: Found O12 view with name 'All Documents' on doclib 'Site Collection Images' which contains obsolete O12 field 'ImageWidth'
AssetLibrary.UpgradeDocumentLibrary: Retrieving Asset Library Feature
AssetLibrary.UpgradeDocumentLibrary: Retrieving Asset Library Schema
AssetLibrary.UpgradeDocumentLibrary: Retrieving attribute Hidden
AssetLibrary.UpgradeDocumentLibrary: Retrieving Base View ID
AssetLibrary.UpgradeDocumentLibrary: Retrieving Empty View
AssetLibrary.UpgradeDocumentLibrary: Retrieving Parameter Bindings
AssetLibrary.UpgradeDocumentLibrary: Retrieving Parameter Body
AssetLibrary.UpgradeDocumentLibrary: Retrieving Parameter Header
AssetLibrary.UpgradeDocumentLibrary: Retrieving Query
AssetLibrary.UpgradeDocumentLibrary: Retrieving Row Limit
AssetLibrary.UpgradeDocumentLibrary: Retrieving Toolbar
AssetLibrary.UpgradeDocumentLibrary: Retrieving View Name
AssetLibrary.UpgradeDocumentLibrary: Retrieving View Style
AssetLibrary.UpgradeDocumentLibrary: Retrieving view Url to get web part manager
AssetLibrary.UpgradeDocumentLibrary: Retrieving View: All Documents
AssetLibrary.UpgradeDocumentLibrary: Retrieving View: Explorer View
AssetLibrary.UpgradeDocumentLibrary: Retrieving View: Merge Documents
AssetLibrary.UpgradeDocumentLibrary: Retrieving View: Relink Documents
AssetLibrary.UpgradeDocumentLibrary: Retrieving ViewFileds
AssetLibrary.UpgradeDocumentLibrary: Retrieving Views
AssetLibrary.UpgradeDocumentLibrary: Retrieving XslLink
AssetLibrary.UpgradeDocumentLibrary: Revised View Name <Summary Views>
AssetLibrary.UpgradeDocumentLibrary: Revised View Name All Assets
AssetLibrary.UpgradeDocumentLibrary: Revised View Name Approve/reject Items
AssetLibrary.UpgradeDocumentLibrary: Revised View Name Explorer View1
AssetLibrary.UpgradeDocumentLibrary: Revised View Name File Dialog View
AssetLibrary.UpgradeDocumentLibrary: Revised View Name My submissions
AssetLibrary.UpgradeDocumentLibrary: Revised View Name Thumbnails
AssetLibrary.UpgradeDocumentLibrary: Saving View
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: '<Summary Views>'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'All Assets'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'Approve/reject Items'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'Explorer View1'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'File Dialog View'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'My submissions'
AssetLibrary.UpgradeDocumentLibrary: Upgraded Site Collection Images by adding new view: 'Thumbnails'
AssetLibrary.UpgradeDocumentLibrary: View <Summary Views> found
AssetLibrary.UpgradeDocumentLibrary: View All Assets found
AssetLibrary.UpgradeDocumentLibrary: View Approve/reject Items found
AssetLibrary.UpgradeDocumentLibrary: View Explorer View found
AssetLibrary.UpgradeDocumentLibrary: View File Dialog View found
AssetLibrary.UpgradeDocumentLibrary: View My submissions found
AssetLibrary.UpgradeDocumentLibrary: View Thumbnails found
Begin CmsVersionToVersionImageLibraryUpgradeAction::UpgradePublishingSite() on site URL.
Begin Delete field 664151a8-54ff-434c-a59a-401d3a00dd79
Begin Delete field abb77a79-8021-405c-8bd1-45403fd6cf98
Begin Delete field bcde52ea-bd4f-4a2a-9f50-3224d3bd2778
Begin Delete field fe5429dc-cd77-4dc4-b24c-c82105ae3b36
Begin Delete field if internal name different 1944c034-d61b-42af-aa84-647f2e74ca70 – ImageHeight
Begin Delete field if internal name different 7e68a0f9-af76-404c-9613-6f82bc6dc28c – ImageWidth
Begin Delete field if internal name different 922551b8-c7e0-46a6-b7e3-3cf02917f68a – ImageSize
Begin: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00291D173ECE694D56B19D111489C4369D to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
Begin: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B006973ACD696DC4858A76371B2FB2F439A to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
Begin: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00AADE34325A8B49CDA8BB4DB53328F214 to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
End CmsVersionToVersionImageLibraryUpgradeAction::UpgradePublishingSite() on site URL.
End Delete field 664151a8-54ff-434c-a59a-401d3a00dd79
End Delete field abb77a79-8021-405c-8bd1-45403fd6cf98
End Delete field bcde52ea-bd4f-4a2a-9f50-3224d3bd2778
End Delete field fe5429dc-cd77-4dc4-b24c-c82105ae3b36
End Delete field if internal name different 1944c034-d61b-42af-aa84-647f2e74ca70 – ImageHeight
End Delete field if internal name different 7e68a0f9-af76-404c-9613-6f82bc6dc28c – ImageWidth
End Delete field if internal name different 922551b8-c7e0-46a6-b7e3-3cf02917f68a – ImageSize
End: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00291D173ECE694D56B19D111489C4369D to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
End: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B006973ACD696DC4858A76371B2FB2F439A to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
End: Add Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00AADE34325A8B49CDA8BB4DB53328F214 to list Site Collection Images (6d9b8a64-f93d-4436-9c5c-8e5daac0e2be).
Field not found. fieldId: 1944c034-d61b-42af-aa84-647f2e74ca70
Field not found. fieldId: 7e68a0f9-af76-404c-9613-6f82bc6dc28c
Field not found. fieldId: 922551b8-c7e0-46a6-b7e3-3cf02917f68a
Found Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00291D173ECE694D56B19D111489C4369D.
Found Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B006973ACD696DC4858A76371B2FB2F439A.
Found Content Type 0x0101009148F5A04DDD49CBA7127AADA5FB792B00AADE34325A8B49CDA8BB4DB53328F214.
This site is a PublishingSite, upgrade will be performed.
Upgrade site collection and web images doclibs to add new content types and views
13.018
Add tagprofile.aspx page to My Site Host
13.02
Add indexes on fields in O12 lists that are required in O14
Adding index to field: 'DeliveryDate' for list: 'Notification Pages'
Adding index to field: 'JobId' for list: 'Quick Deploy Items'
Adding index to web.Fields[
Adding NVP indexes for fields on lists in web: URL
ENTER —  CmsVersionToVersionFieldIndexSiteAction::Upgrade(SPSite)
ENTER —  CmsVersionToVersionFieldIndexSiteAction::Upgrade, site = URL
ENTER —  V2VRecordCenterUpgradeSiteAction::Upgrade, site = URL
EXIT —  CmsVersionToVersionFieldIndexSiteAction::Upgrade(SPSite)
Finished adding NVP indexes for fields on lists in web: URL
Finished indexing web fields on web: URL
Indexing web fields on web: URL
LEAVE —  CmsVersionToVersionFieldIndexSiteAction::Upgrade, site = URL
LEAVE —  V2VRecordCenterUpgradeSiteAction::Upgrade, site = URL
PublishingResources feature is active.  Creating indexes.
Setting field 'DeliveryDate' to be indexed
Setting field 'JobId' to be indexed
Setting field 'Show in drop-down menu' to be indexed and pushing changes down to lists.
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
SiteAction: ShouldUpgradeWebs() returned true, iterating over the webs.
SiteAction: Skipping upgrade of web: URL
This site has PublishingResources active, upgrading
Upgrade Record Centers to have new features activated and use new advanced routing.
V2VRecordCenterUpgradeSiteAction::ShouldUpgradeWeb(SPWeb), web = URL is not a Record Center.  Skipping.
13.021
Activate feature 73ef14b1-13a9-416b-a9b5-ececa2b0604c on URL
Activate new O14 MOSS features
ENTER —  VersionToVersionFeatureActivationSiteAction::Upgrade, site = URL
LEAVE —  VersionToVersionFeatureActivationSiteAction::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Upgrading site collection URL for taxonomy.
13.022
Removing the PortalLayouts feature from MySite and MySiteHost Site Collections
13.026
Activate new post-M1DF O14 CMS features
Begin CmsPostM1DFFeatureActivationSiteAction::Upgrade() on site URL.
End CmsPostM1DFFeatureActivationSiteAction::Upgrade() on site URL.
ENTER —  CmsPostM1DFFeatureActivationSiteAction::Upgrade, site = URL
LEAVE —  CmsPostM1DFFeatureActivationSiteAction::Upgrade, site = URL
OfficeServerBaseSite feature is active, upgrading site collection URL.
OfficeServerBaseSite feature is active, upgrading site URL.
PublishingResources feature is active, upgrading site URL.
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Skipping activate of feature 068bc832-4951-11dc-8314-0800200c9a66 on URL since it is already active
13.03
ENTER —  V2VReportTemplatesUpgradeSiteAction::Upgrade, site = URL
ENTER — V2VReportTemplatesUpgradeSiteAction::Upgrade(SPSite), site = URL
LEAVE —  V2VReportTemplatesUpgradeSiteAction::Upgrade, site = URL
LEAVE — V2VReportTemplatesUpgradeSiteAction::Upgrade(SPSite), site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
V2VReportTemplatesUpgradeSiteAction: Root web URL has a reporting gallery provisioned already.
V2VReportTemplatesUpgradeSiteAction: Updating report templates for root web URL
13.032
ENTER —  Upgrade QuickAddGroups field
ENTER —  UpgradeQuickAddGroups::Upgrade, site = URL
EXIT —  Upgrade QuickAddGroups field
LEAVE —  UpgradeQuickAddGroups::Upgrade, site = URL
Removing all existing choices
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Upgrade QuickAddGroups field
Upgrading web part catalog on site: URL
13.033
ENTER —  CmsContentDeploymentSiteAction::Upgrade, site = URL
LEAVE —  CmsContentDeploymentSiteAction::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned false, skip upgrade.
Upgrade lists used by the Content Deployment feature.
13.034
Change PartOrder in tagprofile.aspx page to My Site Host
13.036
ENTER —  VersionToVersionModifyFieldIndexOnRelationshipListSiteAction::Upgrade(SPSite)
ENTER —  VersionToVersionModifyFieldIndexOnRelationshipListSiteAction::Upgrade, site = URL
EXIT —  VersionToVersionModifyFieldIndexOnRelationshipListSiteAction::Upgrade(SPSite)
LEAVE —  VersionToVersionModifyFieldIndexOnRelationshipListSiteAction::Upgrade, site = URL
PublishingResources feature is active.  Check the Relationship List.
Remove the index on the GroupID column, then add two new columns: GroupGuid (indexed) and LastPropagatedSourcePageVersion in the Relationship List
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Successfully add and index the GroupGuid field on the relationship list in site URL
Successfully add the LastPropagatedSourcePageVersion field on the relationship list in site URL
Successfully fill-in the GroupGuid field with GroupID field on the relationship list in site URL
Successfully un-index the GroupID field and set it as Non-required field on the relationship list in site URL
This site has PublishingResources active, upgrading
13.037
ENTER —  RemoveReportCenterCreation::Upgrade, site = URL
LEAVE —  RemoveReportCenterCreation::Upgrade, site = URL
Remove Report Center Creation
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
SiteAction: ShouldUpgradeWebs() returned true, iterating over the webs.
13.038
Activate Ratings feature
ENTER —  RatingsActivationSiteAction::Upgrade, site = URL
Force activate feature 915c240e-a6cc-49b8-8b2c-0bff8b553ed3 on URL
Force deactivate feature 915c240e-a6cc-49b8-8b2c-0bff8b553ed3 on global portal /
LEAVE —  RatingsActivationSiteAction::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
13.042
ENTER —  MySiteWebPartGalleryUpgrader::Upgrade, site = URL
LEAVE —  MySiteWebPartGalleryUpgrader::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Upgrade MySite Webpart gallery to remove the 'Get Started with My Site' webpart
13.043
Ensure the deprecated MOSS v3 templates continue to use v3 UI by default
13.046
Add the Sites node to the quick launch of all My Sites.
13.047
Remove Organization.aspx page from My Site Host.
13.048
Upgrade MySite Host TopNavigation and Quicklaunch
13.05
Activate any new O14 features that are stapled to all site templates. Also activate any O14 features that are stapled to Records Center site templates.
Activate feature 7201d6a4-a5d3-49a1-8c19-19c4bac6e668 on URL
ENTER —  V2VFeatureActivation2UpgradeSiteAction::Upgrade, site = URL
ENTER — V2VFeatureActivation2UpgradeSiteAction::Upgrade(SPSite), site = URL
ENTER — V2VFeatureActivation2UpgradeSiteAction::UpgradeWeb(SPWeb), web = URL
LEAVE —  V2VFeatureActivation2UpgradeSiteAction::Upgrade, site = URL
LEAVE — V2VFeatureActivation2UpgradeSiteAction::Upgrade(SPSite), site = URL
LEAVE — V2VFeatureActivation2UpgradeSiteAction::UpgradeWeb(SPWeb), web = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
SiteAction: ShouldUpgradeWebs() returned true, iterating over the webs.
SiteAction: Upgrading web: URL
Skipping activate of feature 0c8a9a47-22a9-4798-82f1-00e62a96006e on URL since it is already active
Skipping activate of feature 5bccb9a4-b903-4fd1-8620-b795fa33c9ba on URL since it is already active
V2VFeatureActivation2UpgradeSiteAction: Site URL has DocumentRoutingResources (0c8a9a47-22a9-4798-82f1-00e62a96006e) active. Skipping because Routing Rule content type is up-to-date.
V2VFeatureActivation2UpgradeSiteAction::ShouldUpgradeWeb(SPWeb), web = URL not a blank site. Activating the webFeaturesToActivateEverywhereExceptBlank feature collection.
13.051
Upgrade My Site Personal Page webparts
13.052
Upgrade MySite Blog Sites
13.053
Activating feature 6928b0e5-5707-46a1-ae16-d6e52522d52b
Entering MySitePersonalizationUpgrader upgrade for site collection URL
Entering MySitePersonalizationUpgrader upgrade for site URL
Reactivating feature 6adff05c-d581-4c05-a6b9-920f15ec6fd9
Setting web masterpage to mysite.master for URL
Upgrade MySite Personalization Sites
Upgrading Web UIVersion
13.054
Upgrade My Site Network Page webparts
13.055
Upgrade My Site Public Page webparts
13.056
ENTER —  MySiteWebPartDwpUpgrader::Upgrade, site = URL
Force upload the new dwp files to personal site webpart gallery
LEAVE —  MySiteWebPartDwpUpgrader::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
13.057
ENTER —  TaxonomyAllowDeletionUpgrader::Upgrade, site = URL
LEAVE —  TaxonomyAllowDeletionUpgrader::Upgrade, site = URL
Not upgrading on V2V upgrade, skipping  URL
SiteAction: ShouldUpgrade() returned false, skip upgrade.
Upgrade Taxonomy features to Beta 2
13.058
ENTER —  MySiteQuickLaunchUpgrader::Upgrade, site = URL
LEAVE —  MySiteQuickLaunchUpgrader::Upgrade, site = URL
Remove empty Lists, Discussions, Surveys and Sites nodes from MySite Quicklaunch
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
13.059
Change the default Site Logo Url for MySite, MySiteHost and Personalization site templates
ENTER —  MySiteSiteLogoUrlUpgrader::Upgrade, site = URL
LEAVE —  MySiteSiteLogoUrlUpgrader::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
13.06
Activate the Taxonomy Term Management Tool link on tenant admin webs.
ENTER —  ActivateTaxonomyTenantAdminLinkFeature::Upgrade, site = URL
ENTER —  V2VHoldsUpgradeSiteAction::Upgrade, site = URL
LEAVE —  ActivateTaxonomyTenantAdminLinkFeature::Upgrade, site = URL
LEAVE —  V2VHoldsUpgradeSiteAction::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
SiteAction: ShouldUpgradeWebs() returned true, iterating over the webs.
SiteAction: Skipping upgrade of web: URL
Upgrade Record Centers to have holds feature work for O14
V2VHoldsUpgradeSiteAction::ShouldUpgradeWeb(SPWeb), web = URL is not a Record Center or does not contain holds.  Skipping.
13.061
ENTER —  ContentTypeSyndicationListUpgrader::Upgrade, site = URL
Found syndication log list on site URL
LEAVE —  ContentTypeSyndicationListUpgrader::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Updated the content type subscriber site. URL
Updates lists used in content type syndication
Updating the content type subscriber site. URL
13.062
Change PartOrder on tagprofile.aspx for Beta2 UX
13.063
Remove tagexplorer.aspx page from My Site Host.
13.064
Allow users to edit master pages and layouts by default on Publishing sites.
ENTER —  AllowMasterPageEditingAction::Upgrade(SPSite)
ENTER —  AllowMasterPageEditingAction::Upgrade, site = URL
EXIT —  AllowMasterPageEditingAction::Upgrade(SPSite)
LEAVE —  AllowMasterPageEditingAction::Upgrade, site = URL
PublishingResources feature is active.  Set the SPSite's AllowMasterPageEditing property.
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
This site has PublishingResources active, upgrading
13.065
Checking syndication log list on URL
Creates content type syndication log list if it does not exist.
ENTER —  ContentTypeSyndicationLogListUpgrader::Upgrade, site = URL
LEAVE —  ContentTypeSyndicationLogListUpgrader::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
The syndication log list looks good on URL
13.066
Adjust permissions on publishing root site.
Attempting to find Style Resource Readers group, localized name: Style Resource Readers
Enabled AllowEveryoneViewItems on SiteCollectionImages library.
ENTER —  PublishingPermissionsAction::Upgrade(SPSite)
ENTER —  PublishingPermissionsAction::Upgrade, site = URL
EXIT —  PublishingPermissionsAction::Upgrade(SPSite)
LEAVE —  PublishingPermissionsAction::Upgrade, site = URL
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
This site has PublishingResources active, upgrading
13.067
ENTER —  B2BUpgradeKeywordsField::Upgrade(SPSite)
ENTER —  B2BUpgradeKeywordsField::Upgrade, site = URL
EXIT —  B2BUpgradeKeywordsField::Upgrade(SPSite)
LEAVE —  B2BUpgradeKeywordsField::Upgrade, site = URL
Site URL has TaxonomyFeature, upgrading
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Updating keywords field for Site URL
Upgrade the name and description of the existing Managed Keywords field
13.07
Begin CmsVersionToVersionPublishedLinksListUpgradeAction::UpgradePublishingSite() on site URL.
End CmsVersionToVersionPublishedLinksListUpgradeAction::UpgradePublishingSite() on site URL.
ENTER —  V2VRetentionPolicyUpgradeSiteAction::Upgrade, site = URL
Finished creating Published Links list on site URL.
LEAVE —  V2VRetentionPolicyUpgradeSiteAction::Upgrade, site = URL
Published Links list does not exist on Site URL, creating it.
Site URL is a PublishingSite, checking for the PublishedLinks list.
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
SiteAction: ShouldUpgradeWebs() returned true, iterating over the webs.
SiteAction: Upgrading web: URL
This site is a PublishingSite, upgrade will be performed.
Upgrade Record Center policies to no longer be able to set expiration date externally
Upgrade SSP Published Links list to add Asset Library as a link type
V2VRetentionPolicyUpgradeSiteAction. Content type System skipped since it does not contain policy
V2VRetentionPolicyUpgradeSiteAction. Site URL skipped since it does not contain site collection policy
V2VRetentionPolicyUpgradeSiteAction::ShouldUpgradeWebs(): Site URL has retention policy. Upgrading.
13.08
Activate new OOB workflows with existing sites on V2V upgrade.
14.01
1.Add tabs list to the SearchCenterLite site template 2.Visual upgrade search center 3.Remove site admin links in search center webs
Activate feature c04234f4-13b8-4462-9108-b4f5159beae6 on URL
Activate feature e995e28b-9ba8-4668-9933-cf5c146d7a9f on URL
Activate Mobile Wac feature
Activate Web Analytics feature
ENTER —  WebAnalyticsActivationSiteAction::Upgrade, site = URL
Enter: ConsolidatedSearchCenterSiteActions:Upgrade()
Excel Mobile Viewer upgrade completed.
Executing site action 'SearchCenterVisualUpgrade'
Exit: ConsolidatedSearchCenterSiteActions:Upgrade()
Feature e995e28b-9ba8-4668-9933-cf5c146d7a9f is activated on URL
Found a SPWeb based on the SRCHCEN or SRCHCENTERLITE site template 'Search Center'. The UIVersion of SRCHCEN or SRCHCENLITE is: '3'
LEAVE —  WebAnalyticsActivationSiteAction::Upgrade, site = URL
Perform Excel Mobile Viewer upgrade.
SiteAction: ShouldUpgrade() returned true, upgrade will be performed.
Upgrading BI Monitoring KPIs from V14 Beta 1 to V14 Beta2
14.02
Upgrading BI Monitoring Filters from V14 Beta 1 to V14 Beta2
14.03
Upgrading BI Monitoring Excel Services Reports from V14 Beta 1 to V14 Beta2
14.05
AdminReports library recreation
Enter: SearchHealthReportUpgrade:Upgrade()
Exit: SearchHealthReportUpgrade:Upgrade()
SearchHealthReportUpgrade: get site
14.06
Beta2 -> RTM AdminReports library upgrade
Enter: SearchHealthReportB2RTMUpgrade:Upgrade()
Exit: SearchHealthReportB2RTMUpgrade:Upgrade()
SearchHealthReportB2RTMUpgrade: get site

   

Enjoy,
Chris