Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Posted Tuesday, January 25, 2011 4:36 PM by CoreyRoth

One thing I find annoying after attaching a SharePoint 2007 content database is that several of the new cool SharePoint 2010 web parts are simply not present on your upgraded site.  This includes the new social web parts such as the Tag Cloud, Organization Browser, and Note Board.  On an upgraded site, you may find that your Social Collaboration category looks like this:

SharePoint2010UpgradeMissingWebParts

I have talked about this in the past, but I’ve changed how I resolve the issue so I thought I would share a quick update.  Before we begin, it’s a good idea to understand what has happened.   In SharePoint 2007, you had site templates and they likely activated a feature called PortalLayouts.  This feature still exists in SharePoint 2010, but it has changed.  Specifically the file that we are interested in, webpartdwpfiles.xml, activates different web parts now.

Excuse me for the large display of XML here, but I think seeing it will make more sense.  In SharePoint 2007, webpartdwpfiles.xml contained the following XML.  Each File element installs a specific web part into the web parts gallery.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <Module Name="WebPartPopulation" Url="_catalogs/wp" Path="dwp" RootWebOnly="TRUE">

    <File Url="siteFramer.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,ContentRollupWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Miscellaneous;#" />

    </File>

    <File Url="owa.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,OutlookWebAccessWebPartGroup;"></Property>

    </File>

    <File Url="owainbox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,OutlookWebAccessWebPartGroup;"></Property>

    </File>

    <File Url="owacalendar.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,OutlookWebAccessWebPartGroup;"></Property>

    </File>

    <File Url="owatasks.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,OutlookWebAccessWebPartGroup;"></Property>

    </File>

    <File Url="owacontacts.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,OutlookWebAccessWebPartGroup;"></Property>

    </File>

    <File Url="contactwp.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MiscellaneousWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Miscellaneous;#" />

    </File>

    <File Url="AdvancedSearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="PeopleSearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchCoreResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchHighConfidence.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchsummary.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchstats.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchpaging.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="PeopleSearchCoreResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchBestBets.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchActionLinks.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="CategoryWebPart.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SiteDirectoryWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Site Directory;#" />

    </File>

    <File Url="CategoryResultsWebPart.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SiteDirectoryWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Site Directory;#" />

    </File>

    <File Url="TopSitesWebPart.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SiteDirectoryWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Site Directory;#" />

    </File>

    <File Url="ThisWeekInPictures.DWP" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,DefaultWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="TasksAndTools.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,DefaultWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="RssViewer.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,DefaultWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="TopAnswer.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SummaryResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

  </Module>

</Elements>

Here is what the file looks like in SharePoint 2010.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <Module Name="WebPartPopulation" Url="_catalogs/wp" Path="dwp" RootWebOnly="TRUE">

    <File Url="siteFramer.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,ContentRollupWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Miscellaneous;#" />

    </File>

    <File Url="owa.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MyInformationWebPartGroup;"></Property>

    </File>

    <File Url="owainbox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MyInformationWebPartGroup;"></Property>

    </File>

    <File Url="owacalendar.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MyInformationWebPartGroup;"></Property>

    </File>

    <File Url="owatasks.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MyInformationWebPartGroup;"></Property>

    </File>

    <File Url="owacontacts.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:spscore,MyInformationWebPartGroup;"></Property>

    </File>

    <File Url="contactwp.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,PeopleWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Miscellaneous;#" />

    </File>

    <File Url="AdvancedSearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="PeopleSearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchBox.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchCoreResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchsummary.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchstats.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="searchpaging.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="PeopleSearchCoreResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchBestBets.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SearchActionLinks.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="TopAnswer.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="SummaryResults.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="Refinement.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="PeopleRefinement.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="QuerySuggestions.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

    <File Url="CategoryWebPart.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,ContentRollupWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Site Directory;#" />

    </File>

    <File Url="CategoryResultsWebPart.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,ContentRollupWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Site Directory;#" />

    </File>

    <File Url="RssViewer.webpart" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,ContentRollupWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="TagCloud.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,PeopleWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="SocialComment.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,PeopleWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="ProfileBrowser.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:core,PeopleWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Default;#"/>

    </File>

    <File Url="DualChineseSearch.dwp" Type="GhostableInLibrary">

      <Property Name="Group" Value="$Resources:Microsoft.Office.Server.Search,SearchWebPartGroup;"></Property>

      <Property Name="QuickAddGroups" Value=";#Search;#" />

    </File>

  </Module>

</Elements> 

If you look at some of the differences, you’ll notice that several web parts have been added in 2010, but several have also been removed.  Web Parts that have been added include:

  • Tag Cloud (TagCloud.dwp)
  • Note Board (SocialComment.dwp)
  • Organization Browser (ProfileBrowser.dwp)
  • Dual Chinese Search (DualChineseSearch.dwp)
  • Refinement Panel (Refinement.dwp)
  • People Refinement Panel (PeopleRefinement.dwp)

Web Parts that have been removed in SharePoint 2010 include:

  • This Week in Pictures (ThisWeekInPictures.dwp)
  • Top Sites (TopSitesWebPart.webpart)
  • I need to… (TaskAndTools.webpart)

When you do an upgrade, you’ll still have your removed web parts in the gallery.  However, if you are on a new installation and want one of those old web parts, you’ll have to do a little work.  From what I have read, you can export the .webpart or .dwp file of the web part and upload it to the solution gallery manually on your new server. It appears the underlying code is still present in the assemblies, just the web parts definitions have been removed from the web part gallery.

However, we’re interested in adding the new SharePoint 2010 web parts to the site collection’s web part gallery.  You can manually upload them if you so choose.  However, I’m not really a fan of that solution, but it will work in a pinch.  Instead my solution now is to activate the PortalLayouts feature again.  The feature is hidden, so your best bet to do this is with PowerShell.  We do this with the Enable-SPFeature cmdlet.  Since the feature was technically already activated in SharePoint 2007, we have to use the –force parameter.  Here is the complete command for a root site located at http://sp2010

Enable-SPFeature –Identity PortalLayouts –url http://sp2010 –force

If the command worked successfully, you should receive no errors and another command prompt.  At this point, you can add your new web parts to an existing page.  You should see three new ones in the Social section as shown.

SharePoint2010UpgradeRestoredWebParts

I have not encountered any issues by reactivating this feature yet.  It works for me and hopefully it works for you too.  If you are missing web parts, try it out and see how it works for you.

Comments

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Tuesday, February 8, 2011 9:18 AM by henrik t

thank you for this post, it solved my problem

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Wednesday, February 16, 2011 4:57 AM by Rich

Thanks for taking time to post this Corey.  Solved a problem I've had for a couple of days.  Worked perfectly first time

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Tuesday, March 1, 2011 2:43 PM by Donal

Thanks Cory.  However I finding the same from a new install, no upgrade in sight.

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Tuesday, March 8, 2011 11:17 AM by CoreyRoth

@Donal Interesting.  Did running the PowerShell command work?  Do you see any of the web parts in the gallery?

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, April 21, 2011 10:00 AM by Ben

Do you have to do this for every content database, or is there a way for the whole farm to be activated, and when a new content database is brought into the fold, the webparts will automatically appear?

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, April 21, 2011 12:55 PM by CoreyRoth

@Ben you would have to do this for every site collection in each content database that you upgraded.  However, it's quite easy to write a PowerShell script to iterate through all sites and activate it.

# Missing Search Refinement Webpart in SP2010 Site Collection

Tuesday, September 13, 2011 9:33 AM by Jeroen Derde's Blog

Missing Search Refinement Webpart in SP2010 Site Collection

# Moss this week in pictures

Wednesday, September 14, 2011 1:32 PM by Moss this week in pictures

Pingback from  Moss this week in pictures

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, September 15, 2011 4:51 AM by Hiranmoy Das

Thank You !!  U are a Life Saver !!

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, September 15, 2011 5:31 PM by CoreyRoth

Glad I could help.

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Monday, September 26, 2011 4:34 AM by Doros Georgiou

I have the Sharepoint 2010 installed to begin with. But some webparts that are supposedly out of the box included, are missing.(e.g. the rss viewer web part) Am I facing a similar problem? Is your solution gonna work for me too?

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Tuesday, September 27, 2011 6:03 PM by CoreyRoth

@Doros That might just be a feature instead.  Go make sure that your SharePoint Standard Web Parts feature is activated.  If you have Enterprise, be sure and activate that feature as well on your site collection.

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Wednesday, December 14, 2011 10:58 AM by Christoph Weber

Hi,

Well we are missing those webparts to and Iam a little scared to just shoot at the sitecollection with this command since this thing is the productive sitecollection and has a size of 10 GB. Do you have any idea what could go wrong? Or is it really just that the webparts appear in the catalogue?

Thanks for your help.

Christoph

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, January 5, 2012 4:01 PM by CoreyRoth

@Christoph well always take a backup if you are unsure of things.  I have never seen it cause an issue.  If all else fails, you can manually upload the .webpart files to the web part gallery but that is kind of a painful process.

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Monday, March 5, 2012 6:02 AM by Dhiya

Great thanks. You post helps me a lot :)

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Tuesday, February 5, 2013 1:48 PM by shilezi

hi CoreyRoth,  i don't see a tagcloud.dwp on my CA server after upgrade from wss3? nothing in the portalLayoutsfolder either regarding the tagcloud. I would even rather upload it but i cant find it anywhere to download. could you please upload the ootb tagcloud.dwp   so i could use it? thanks

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Monday, July 22, 2013 5:32 AM by Sayali

Worked perfectly! Thanks!

# re: Adding missing web parts with the PortalLayouts feature after SharePoint 2007 upgrade

Thursday, September 5, 2013 10:49 AM by Paul

THANKS you saved soooo much frustration, I truly appreciate it

Leave a Comment

(required)
(required)
(optional)
(required)