SharePoint MySite/Personal Site – the light version

In a large intranet project we are currently facing an interesting scenario:

  • Every user needs a "My Intranet" area that he can individualize and that shows personalized content.
  • This page will be the startup page the the browser of every user – it must show up lightning fast
  • The "My Intranet" area is part of a large intranet that includes company-wide content as well as area-specific content – a consistent navigation must be ensured
  • The layout of all pages are heavily customized / the intranet is publishing-scentric.
  • There are elements that are the same for every user (but with personalized content) and that cannot be (re-)moved and others where the users are free to decided whether to add, minimize, move or remove them.
  • Very sparce collaboration features are needed (no personal documents etc.)

Of course, the first thought was to use the MySite of SharePoint. But what about performance? There will be more than 20'000 site collections and whenever a user opens a browser, exactly his or her site collection must be displayed. And since we don't need the documents, links and other collaborative elements of the MySite, should we really go for this overhead?

We started to evaluate possible alternatives:

  • Profiles: Not an issue as they are not depending on the "physical" presence of a MySite-Site Collection. The pages reside either in the "_layouts" path or they are at the root of the public profile path using "person.aspx?…"
  • MySite controls and WebParts cannot be used on just any other WebPart- or Publishing page, they depend on a page that implements the IPersonablePage interface.

Possible solution: The MySite "Light":
We want to use one (or multiple) pages within the existing site collection that keeps the publishing content of the intranet. By using the personalization feature of SharePoint, we allow the users to personalize their "My Intranet", while allowing Content Managers to manage the elements (= WebParts) that are relevant and not to customize in the Shared View of the page. And – our page must support all WebParts and Controls that are used on the MySite, especially the "Collegues" WebParts.

So, within the multi-language publishing site construct that builds the body of our intranet architecture, we create a subsite "My Inranet" that is of type publishing site. However, we copied the "default.aspx" page of the site definition SPERS (…12TEMPLATESiteTemplatesSPSPERS) into the root directoy of the "My Intranet" site (using SharePoint Designer for prototyping). All you need to do is to adjust the placeholders that are used on that page and to set the correct masterpage (we did it manually for the prototype). Here is an example of the working page, consider it as "minimal page":

<%@ Page language="C#" MasterPageFile="/_catalogs/masterpage/BlueBand.master" Inherits="Microsoft.SharePoint.Portal.WebControls.PersonalWebPartPage,Microsoft.SharePoint.Portal,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="OSRVWC" Namespace="Microsoft.Office.Server.WebControls" Assembly="Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="SEARCHWC" Namespace="Microsoft.Office.Server.Search.WebControls" Assembly="Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<asp:Content contentplaceholderid="PlaceHolderPageTitle" runat="server">

<SPSWC:PersonalSpaceMainHeading TitleMode="true" runat="server" /> </asp:Content>

<asp:Content contentplaceholderid="PlaceHolderMain" runat="server">

<table border="0" cellpadding="3" cellspacing="0" ID="ZoneTable" width="100%"> <tr ID="TopRow" > <td valign="top" ID="TopCell" width="100%" colspan="3"> <WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" AllowPersonalization="true" ID="TopZone" Title="<%$Resources:sps,LayoutPageZone_TopZone%>" Orientation="Vertical" QuickAdd-GroupNames="Dashboard" QuickAdd-ShowListsAndLibraries="true"/> </td> </tr> <tr ID="MiddleRow"> <td valign="top" ID="MiddleLeftCell" width="70%"> <WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" AllowPersonalization="true" ID="MiddleLeftZone" Title="<%$Resources:sps,LayoutPageZone_MiddleLeftZone%>" Orientation="Vertical" QuickAdd-GroupNames="Default" QuickAdd-ShowListsAndLibraries="true"/> &nbsp; </td> <td>&nbsp;</td> <td valign="top" ID="MiddleRightCell" width="30%"> <WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" AllowPersonalization="true" ID="MiddleRightZone" Title="<%$Resources:sps,LayoutPageZone_MiddleRightZone%>" Orientation="Vertical" QuickAdd-GroupNames="Outlook Web Access" QuickAdd-ShowListsAndLibraries="false"/> &nbsp; </td> <td>&nbsp;</td> </tr> <tr ID="BottomRow" class="ms-tzbottom"> <td valign="top" ID="BottomCell" width="100%" colspan="3"> <WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" AllowPersonalization="true" ID="BottomZone" Title="<%$Resources:sps,LayoutPageZone_BottomZone%>" Orientation="Vertical" QuickAdd-GroupNames="None" QuickAdd-ShowListsAndLibraries="true"/> </td> </tr> </table>

</asp:Content>

We set then also the Welcome Page URL of the "My Intranet" site to this page.

So what did we achieve?

  • A personal(izable) page that can contain all WebParts a SharePoint MySite, even user-specific ones like "Colleagues".
  • Ultra-fast loading as SharePoint needs to load and cache only one Site Collection
  • A flexible and standard mecanisms for Content Managers to administrate the "My Intranet" area of all users, providing them with mandatory elements (f.e. Company News) etc.
  • A consistent navigation and branding experience, using all features of a standard SharePoint Publishing Site.

However, as with everything, consider the following when going for this solution:

  • Personalization has its limits: Consider 10'000 personalizations of a page as an reasonable boundary for good performance.
  • If you need the collaboration features (documents, links, etc.) of a MySite, consider to create the MySites separately and include link-pointers to the collaborative elements of a link to "My Workspace" (that's how i would call it) from the MySite-Light page.
  • You cannot use the SharePoint Standard MySite-Link and other features that depend on the MySite.

Have fun exploring this solution approach – we are following it and i will update on new findings!

Leave a Reply