[ISSUE]
During a database upgrade from SP2007 to SP2010 I encountered an issue, which blocked a succesful upgrade. Several features could not be upgraded because of an issue with content types.
[ERROR]
[powershell] [SPSiteWssSequence2] [ERROR] [7/15/2011 1:14:56 PM]: Feature upgrade incomplete for Feature 'PublishingSite' (Id: 'f6924d36-2fa8-4f0b-b16d-06b7250180fa') in Site 'http://www.domain.com/sites/sitecollectionname'. Exception: The parent content type specified by content type identifier 0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39 does not exist.
[CAUSE]
This issue is caused by the fact that:
- The publishing features (“SharePoint Server Publishing Infrastructure” and the features it is depending on) have been enabled and disabled in the past
- Content types have been deleted the incorrect way: Deleted while other components were still using them.
[SOLUTION]
The mentioned content type ID is the ID of the content type “Page”, which does not exist anymore in the Site Content Types. To recreate these, run the following stsadm commands for each site collection that is experiencing the issue (retrieve the list from the upgrade log file):
stsadm -o activatefeature -name PublishingSite -url <url> -force
stsadm -o activatefeature -name PublishingResources -url <url> -force
Tuesday, September 13, 2011
Wednesday, August 10, 2011
[SP2010] Service Pack 1 data storage changes
With the release of Service Pack 1 of SharePoint 2010, Microsoft has changed the Data Storage limitations of SharePoint 2010. The 200GB is no longer a hard limit:
Source: http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=988
- For a SharePoint content database up to 200 GB there are no special requirements and this limit is included for consistency.
- For a SharePoint content database up to 4 TB you need to additionally plan for the following two requirements:
- Requires disk sub-system performance of 0.25 IOPS per GB, 2 IOPS per GB is recommended for optimal performance.
- Requires the customer to have plans for high availability, disaster recovery, future capacity, and performance testing.
- And you need to review additional considerations in the TechNet Boundaries and Limits article.
- For a SharePoint content database over 4TB specifically for a Document Archive scenario you are required to additionally plan for the following:
- SharePoint sites must be based on Document Center or Records Center site templates and must be an archive scenario where less than 5% of content is actively read from each month and less than 1% of content is actively written to.
- Do not use alerts, workflows, link fix-ups, or item level security on any SharePoint objects in the content database. Note: document archive content databases can be the recipient of documents as a result of Content Routing workflow.
- Other specific limits changes being made at the same time:
- A new limit of 60million items in any one SharePoint content database
- The specific 5 TB limit per SQL Server instance has been removed. Instead you should work with a SQL Server professional to plan for database storage
Source: http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=988
Wednesday, July 20, 2011
[SP2010] Upgrade SharePoint 2007 content to SharePoint 2010 via the Database Attach method
Last week I performed an upgrade of SharePoint 2007 to SharePoint 2010 using the Database Attach method. Unfortunately the database upgrade "Completed with errors". However, the site collections were available in SP2010 without errors. Also changing the visual style to SP2010 worked just fine. Detaching the database and reattaching did not give me any error, but it didn't restart or continue the upgrade process. Then how to fix this:
Troubleshoot upgrade errors
Each upgrade process produces an upgrade log file, which displays each error and warning that is found during the upgrade. To successfully complete the upgrade process you will have to fix each error and restart the upgrade process to upgrade the remaining, not yet upgraded, site collections.
Restart/resume the database upgrade
Once you have fixed all upgrade issues, you have to restart the upgrade process. This can be done using the following PowerShell script:
Source: http://technet.microsoft.com/en-us/library/ff382638.aspx
However if the database still contains issues, the upgrade will fail again. Review the generated log file to check what the errors are and retrieve more info for troubleshooting.
Verify upgrade status
To verify if all components in the environment are upgraded successfully, run the following command:
This command generates a report that contains a summary at the bottom. The part marked bold is the important part and specifies that in all databases there are 16 site collections not upgraded yet, this number should be zero.
If you send the output of the command to file and search for the text "Needs Upgrade", you will find the site collections that aren’t upgraded yet:
Troubleshoot upgrade errors
Each upgrade process produces an upgrade log file, which displays each error and warning that is found during the upgrade. To successfully complete the upgrade process you will have to fix each error and restart the upgrade process to upgrade the remaining, not yet upgraded, site collections.
Restart/resume the database upgrade
Once you have fixed all upgrade issues, you have to restart the upgrade process. This can be done using the following PowerShell script:
Source: http://technet.microsoft.com/en-us/library/ff382638.aspx
$guid = Get-SPContentDatabase -Identity <dbname>
upgrade-spcontentdatabase -id $guid
However if the database still contains issues, the upgrade will fail again. Review the generated log file to check what the errors are and retrieve more info for troubleshooting.
Verify upgrade status
To verify if all components in the environment are upgraded successfully, run the following command:
stsadm -o localupgradestatus
This command generates a report that contains a summary at the bottom. The part marked bold is the important part and specifies that in all databases there are 16 site collections not upgraded yet, this number should be zero.
[9] content database(s) encountered.
[0] content database(s) still need upgrade or cannot be upgraded.
[43] site collection(s) are contained in the content databases.
[16] site collection(s) still need upgrade.
[82] other objects encountered, [0] of them still need upgrade or cannot be upgraded.
If you send the output of the command to file and search for the text "Needs Upgrade", you will find the site collections that aren’t upgraded yet:
<object>
<name>https://www.domain.com/sites/sitecollectionname</name>
<type>Microsoft.SharePoint.SPSite</type>
<level>6</level>
<status>Needs Upgrade</status>
</object>
Monday, July 04, 2011
[SP2010] Guidance on implementation of Service Pack 1 for SP2010
Check out SharePoint 2010 SP1 and the June Cumulative Update for SharePoint 2010 for guidance on implementing SP2010 Service Pack 1 and the June 2011 Cumulative Update
I use SharePoint
Released last week: I Use SharePoint
A lot of information (howto's, Quick Reference Cards, etc) on how to use SharePoint!
A lot of information (howto's, Quick Reference Cards, etc) on how to use SharePoint!
Wednesday, June 29, 2011
Wednesday, June 08, 2011
Two very good SharePoint articles
Yesterday I ran into two very good SharePoint articles, that describe an often forgotten part of a SharePoint implementation: Governance!
Tuesday, June 07, 2011
[SP2007/SP2010] Migrate SharePoint across domains
A while ago I worked on a project where we had to migrate a customer’s SharePoint 2007 environment from another service provider to a newly created environment in our own datacenter. The challenge we had during this project was that the new environment was built from scratch, meaning that the Active Directory would be a different one than the original environment was located in. Unfortunately there were no possibilities to create a trust between the two domains.
The above would mean that since the Active Directory changed, , the domain name would change as well as all user accounts (or SIDs). This meant that all security permissions, alerts and ownerships would become unusable. These had to be migrated to the new accounts in the new AD.
For migrating users, SharePoint offers a stsadm operation called “migrateuser”. However, at the time of the project there was no operation for groups migration, so we needed a solution for that as well.
[PROJECT INFO]
The preparation steps we took were:
Environment setup
The above would mean that since the Active Directory changed, , the domain name would change as well as all user accounts (or SIDs). This meant that all security permissions, alerts and ownerships would become unusable. These had to be migrated to the new accounts in the new AD.
For migrating users, SharePoint offers a stsadm operation called “migrateuser”. However, at the time of the project there was no operation for groups migration, so we needed a solution for that as well.
[PROJECT INFO]
- The web application URL's would not change
- The user account format would not change in the new Active Directory. User1 in the old AD, would be User1 in the new AD.
- MIIS was used to create the users in the source environment. ILM2007 would be used in the new environment. Any custom code used in MIIS could be migrated to the ILM2007 environment, however some changes and updates would be made in the process.
- The old environment was based on 32 bit SharePoint 2007 on Windows Server 2003. The new environment would be based on 64 bit SharePoint 2007 on Windows Server 2008.
- The source SharePoint environment contained a SSP. Unfortunately there is no way to copy the SSP or its settings to the new environment automatically. The SSP had to be recreated manually.
- The user profiles in the SSP had to be migrated as well. There was no tool available that was able to export the user profiles and import in our new environment. We had to create a tool for this. On Codeplex we found a Profile Import tool (MOSS Profile Importer), but that was unable to export the information from an existing SharePoint farm. We used this code as a starting point for our own tool.
- The migrategroup command did not exist yet, fortunately only seven different AD groups were used. These needed to be migrated manually.
- The stsadm operation migrateuser has to be run for each user id. A custom solution is required to generate a script for all users. Running this script consumes much time and needs to be shortened as much as possible.
The preparation steps we took were:
- Create the custom tooling require to perform the migration (profile export/import, migrateuser script)
- Perform a test migration in order to validate the migration steps and target environments.
Environment setup
- Setup the new SharePoint 2007 environment and use same patch level as the original farm
- Install all custom solutions on the target environment
- Create all users in the new Active Directory
- Setup the SSP in the target environment and configure it according to the settings of the old environment (user profile properties, profile import, audiences, search, etc)
- Import all users from AD into the SSP
- Backup all user profile information to file
- The import tool is using the user id to import the data to the correct profile, so we had to replace the old domain name with the new domain name in the export file
- Restore all user profile information into the new SSP
- Create SQL backup of the source content databases (web applications and MySites) to a USB disk
- Ship the disk to the other datacenter and connect it to the server
- Restore the SQL backups on the target SQL server from USB disk
- Connect the content databases to the correct web applications
- Test the site collections for correct operation of the databases
- Run the migrateuser script generation tool. This tool created three script files, which we could run on three different servers to speed up the migration process.
- Run the migration scripts
- Manually change group membership for each used group (add new group, grant permissions and remove old group) in the entire site structure
- Test, test, test
- Since the August 2009 Cumulative Update, SharePoint 2007 stsadm includes the migrategroup operation, which is able to migrate groups the same way migrateuser does for users.
Monday, April 04, 2011
[MOSS2007/WSSv3] PowerShell Library - List where a feature is activated
[DESCRIPTION]
Microsoft recommends to deactivate a feature everywhere before you remove the feature from the environment. Unfortunately there is no way of determining where the feature is activated.
To solve this issue, I have created a PowerShell script.
How to use it:
Microsoft recommends to deactivate a feature everywhere before you remove the feature from the environment. Unfortunately there is no way of determining where the feature is activated.
To solve this issue, I have created a PowerShell script.
How to use it:
- Download the PowerShell script
- Open the script in Notepad and edit the <featureid> text to match the id of the feature you are interested in
- Run the script
- Open the output in Microsoft Excel and use "*" as separator
- Based on the Scope column you can determine if the specific feature is a site or web feature
Thursday, March 31, 2011
[SP2010] SharePoint Timer service crashes constantly
[SYMPTOMS]
I tried to retract a solution, but the status remained "Retracting" and never changed. After some investigation I found out that the SharePoint Timer service on one of the servers crashed every couple of minutes. The event log showed the following errors:
After searching the Internet I found one article where someone explained that this was caused by the fact that the Configuration Cache directory (C:\ProgramData\Microsoft\SharePoint\Config) did not contain a folder with the farm GUID as the name. After checking the configuration cache folder, that folder was indeed missing.
I then remembered I had to clear the configuration cache last week because the implementation of the February 2011 Cumulative Update failed during the Configuration Wizard step. Clearing the configuration cache fixed this issue. As it turned out, I was a little too enthousiastic with deleting the folders :-)
[Resolution]
I tried to retract a solution, but the status remained "Retracting" and never changed. After some investigation I found out that the SharePoint Timer service on one of the servers crashed every couple of minutes. The event log showed the following errors:
Log Name: Systemand
Source: Service Control Manager
Date: 3/31/2011 9:24:55 AM
Event ID: 7024
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: [Server name]
Description:
The SharePoint 2010 Timer service terminated with service-specific error %%-2147467259.
Log Name: SystemThe ULS log showed the following errors:
Source: Service Control Manager
Date: 3/31/2011 9:24:55 AM
Event ID: 7031
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: [Server name]
Description:
The SharePoint 2010 Timer service terminated unexpectedly. It has done this 3 time(s). The following corrective action will be taken in 30000 milliseconds: Restart the service.
- The timer service could not initialize its configuration, please check the configuration database. Will retry later.[CAUSE]
- Exiting the process because the timer could not be initialized after multiple attempts.
- The timer service is stopping
After searching the Internet I found one article where someone explained that this was caused by the fact that the Configuration Cache directory (C:\ProgramData\Microsoft\SharePoint\Config) did not contain a folder with the farm GUID as the name. After checking the configuration cache folder, that folder was indeed missing.
I then remembered I had to clear the configuration cache last week because the implementation of the February 2011 Cumulative Update failed during the Configuration Wizard step. Clearing the configuration cache fixed this issue. As it turned out, I was a little too enthousiastic with deleting the folders :-)
[Resolution]
- Open the Registry Editor
- Browse to HKLM > SOFTWARE > Microsoft > Shared Tools > Web Server Extensions > 14.0 > Secure > ConfigDB
- Copy the value in the property "Id"
- Browse to folder C:\ProgramData\Microsoft\SharePoint\Config and create a folder with the name of the previously copied value
- Restart the SharePoint Timer service
- The folder should be populated with XML files within a minute.
Subscribe to:
Posts (Atom)