<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Mark Arend : MySites</title><link>http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx</link><description>Tags: MySites</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Colleagues, Social Distance &amp; Relevance in People Search; Social Networking tools</title><link>http://blogs.msdn.com/markarend/archive/2008/05/01/colleagues-social-distance-relevance-in-people-search-social-networking-tools.aspx</link><pubDate>Thu, 01 May 2008 16:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447018</guid><dc:creator>markarend</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/markarend/comments/8447018.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=8447018</wfw:commentRss><description>&lt;P&gt;MOSS provides some very powerful features to enable the new buzzword "social networking."&amp;nbsp; Discussions about these can be found pretty easily, and I give an overview of some tools near the end of this posting.&amp;nbsp; But specifics about how some of the details work has been devilishly hard to find... until now.&amp;nbsp; Through discussions with various people in-the-know, I've been able to assemble answers to common questions around People Search and MySite web parts.&lt;/P&gt;
&lt;H3&gt;Social Distance&lt;/H3&gt;
&lt;P&gt;By default, the results on the People Search page are ordered by Social Distance.&amp;nbsp; What the heck is that?&amp;nbsp; It's an ordering of results based on colleague relationships.&amp;nbsp; Here's how it's computed:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Search results are always returned to the search results page sorted by &lt;B&gt;relevance&lt;/B&gt;. &lt;/LI&gt;
&lt;LI&gt;When viewing results by &lt;STRONG&gt;social distance&lt;/STRONG&gt;, additional processing on the search results page is used to group the results: 
&lt;UL&gt;
&lt;LI&gt;The &lt;EM&gt;first 3 pages &lt;/EM&gt;of search results are grouped by colleague-ness: first your colleagues appear, then colleagues of your colleagues, then everyone else. &lt;/LI&gt;
&lt;LI&gt;Within each group, the ordering is still by relevance. &lt;/LI&gt;
&lt;LI&gt;When paging through results, another 3 pages of results will be grouped once you reach page 4, then page 7, etc. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;By default, 10 results appear per page, so this groups people in batches of 30.&amp;nbsp; If you customized the People Search results page to show 25 results per page, this would group people in batches of 75.&lt;/P&gt;
&lt;P&gt;There are potentially some quirks with this algorithm that was designed to give the best value in a lightweight manner.&amp;nbsp; Your colleagues will appear at the top of the list on page 1, but if you have lots of colleagues, more of them might appear on page 4.&amp;nbsp; This is because the colleague grouping takes place on the client, starting with a relevance ranking.&amp;nbsp; So if some of your colleagues are relevance-ranked after 3 pages worth of results, these will be grouped once you get to the next set of 3 pages (page 4, page 7, etc).&amp;nbsp; Based on relevance, these people should be less relevant to your query.&lt;/P&gt;
&lt;P&gt;The People Search results page allows you to toggle the results ordering to only Relevance, ignoring the Social Distance grouping.&lt;/P&gt;
&lt;H3&gt;Relevance&lt;/H3&gt;
&lt;P&gt;Relevance ranking in people search is the same as that used in regular search across lists and documents.&amp;nbsp; I'm told that the ranking algorithm MOSS uses in all cases is &lt;A title="Wikipedia entry on BM25 and BM25F ranking algorithms" href="http://en.wikipedia.org/wiki/Okapi_BM25" target=_blank mce_href="http://en.wikipedia.org/wiki/Okapi_BM25"&gt;BM25F&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Conceptually, a user's profile is treated as a document about that person with their name as the title.&amp;nbsp; At a basic level, the more search query terms that appear in the person's profile, the more relevant the result.&amp;nbsp; Matches against a few special fields (e.g. name, alias) are returned in the high confidence webpart.&lt;/P&gt;
&lt;P&gt;Note that the names of discussion lists that a user belongs to are included in that user's profile information.&amp;nbsp; This means that a people search for "rock climbers" should return all of the people who are members of a distribution list named "Rock Climbers at Contoso" as well as anyone who has the phrase "rock climbers" in their profile information, such as in their "About Me" field.&lt;/P&gt;
&lt;H3&gt;Colleagues&lt;/H3&gt;
&lt;P&gt;Here's where the real value of social distance and other meaningful relationships is computed.&lt;/P&gt;
&lt;P&gt;A list of your colleagues is stored in the profile database.&amp;nbsp; During a profile import, this list is initially populated with a set of "immediate colleagues" that are computed from your profile properties: manager, peers and direct reports.&amp;nbsp; This way, when you first look at your Colleagues web part, it's not blank.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Then, from an editing page on your Profile, you can edit your colleagues list to add &amp;amp; remove specific people, and to group them and set their visibility to other people.&amp;nbsp; Also from here, you can ask SharePoint to suggest other colleagues, and these suggestions are collected from several places.&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=400 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=162&gt;&lt;A href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=311 alt=image src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb_2.png" width=146 border=0 mce_src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb_2.png"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=236&gt;
&lt;P&gt;My Microsoft badge photo, 1999!&lt;/P&gt;
&lt;P&gt;From your MySite page (or your Profile page, which is available even if MySites are turned off), click &lt;FONT color=#0000ff&gt;Colleagues&lt;/FONT&gt; to edit your colleague list.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H4&gt;Where do colleagues come from?&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Immediate colleagues &lt;BR&gt;&lt;/STRONG&gt;&lt;EM&gt;...automatic: during profile import; comprised of:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Your manager &lt;/LI&gt;
&lt;LI&gt;Your peers (others who report to your manager) &lt;/LI&gt;
&lt;LI&gt;Your direct reports &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Colleagues added &lt;/STRONG&gt;by you &lt;BR&gt;&lt;EM&gt;...manual: via editing page on your Profile&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Suggested colleagues&lt;/STRONG&gt; &lt;BR&gt;&lt;EM&gt;...lookup: manually guided via editing page on your Profile; comprised of:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Sent items &lt;/STRONG&gt;in Outlook. Periodically (every 5 days or so, depending on usage) Outlook analyzes Sent Items for common recipients, weighted by frequency of contacts and other factors. This is how Outlook is able to suggest likely recipients when you begin typing their name in the To: line, and in my experience, it seems to work pretty well.&amp;nbsp; When you click Suggested colleagues, it collects these names from Outlook via an ActiveX control, and adds them to the list of suggestions. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Office Communicator &lt;/STRONG&gt;contacts are examined; that is, those contacts that you've added to your Office Communicator client from the company directory.&amp;nbsp; These are also collected from the Communicator client via an ActiveX control. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Site Memberships &lt;/STRONG&gt;are all sites &lt;EM&gt;in which you are explicitly included &lt;/EM&gt;in the "~Members" group for the site (where ~ is your site name).&amp;nbsp; Other users who are also explicitly included in the ~Members group on those sites are suggested as your colleagues.&amp;nbsp; This information is collected by a WSS profile synchronization timer job. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;DG (Distribution Group) Memberships &lt;/STRONG&gt;are examined for suggestions.&amp;nbsp; Distribution groups stored in AD are collected during the AD import. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Colleagues from these sources are collected and the top 20 or so are displayed as suggestions when you click "Add Colleague" on your colleague editing page.&amp;nbsp; It's not fruitful to pursue a more detailed understanding of this calculation, because the recommendation for improving the "quality" of colleagues found is the same: people associated with items you access more often are more likely to be suggested as your colleagues.&amp;nbsp; If you don't like the suggestions, you can remove individuals from the suggestion list one by one or all at once from this page, then get a new list of suggestions.&lt;/P&gt;
&lt;H4&gt;Privacy&lt;/H4&gt;
&lt;P&gt;Whoa!&amp;nbsp; Is SharePoint looking at my email?&amp;nbsp; I don't want that, how do I prevent it?&lt;/P&gt;
&lt;P&gt;First, SharePoint's not looking at your emails.&amp;nbsp; It gets information about who you sent emails to by asking Outlook for that information.&amp;nbsp; Second, it will never do this without asking your permission.&amp;nbsp; You can always say no:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_3.png" mce_href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_3.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=182 alt=image src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb.png" width=469 border=0 mce_src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;If you say Yes, then SharePoint will assemble a list of suggested colleagues for you, and you can accept or reject these suggestions.&amp;nbsp; But even if you say No, you can still edit your colleagues to search for and add new people, and to set the privacy of who should see that they are your colleague (Everyone, My Colleagues, My Workgroup, My Manager and Only Me):&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_7.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=297 alt=image src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb_1.png" width=541 border=0 mce_src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/05526a0e7f85_CF27/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Social Networking tools&lt;/H3&gt;
&lt;P&gt;Why did we go through all this trouble to try and figure out who your colleagues are?&amp;nbsp; Social Networking, baby!&amp;nbsp; We spent a good bit of time on the inputs and the outputs of this to make it a really useful function, instead of just paying lip service to it.&lt;/P&gt;
&lt;P&gt;The &lt;EM&gt;inputs&lt;/EM&gt; are the information about who your colleagues really are.&amp;nbsp; A simple option would have been to just provide a place for you to register your colleagues, and not go through all this supposedly intelligent guesswork.&amp;nbsp; But that would have made it almost useless, because most people are just not going to take the time to populate this list, and even fewer will maintain it as their colleagues change over time, which is natural.&amp;nbsp; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT size=3&gt;SharePoint uses the information already embedded in your company's infrastructure and the changing data you deal with on a daily basis to help you connect with the right people.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Sounds like market-speak, but that's really the goal and I think it does an amazing job.&lt;/P&gt;
&lt;P&gt;The &lt;EM&gt;outputs&lt;/EM&gt; are the tools that SharePoint can provide based on this colleague information.&amp;nbsp; Consider some of these details:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;People Search&lt;/FONT&gt;&lt;/STRONG&gt; ranking by Social Distance.&amp;nbsp; By default, the top people returned when you search for a name will be the people you most likely want to find: people you've communicated with recently, perhaps as a participant on an email thread or a collaborator on a site, and now you want to find more information about them. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;In Common with You&lt;/FONT&gt;&lt;/STRONG&gt; web part on My Profile page.&amp;nbsp; When you view someone else's profile (for example, by clicking their People Search result), this web part shows you a list of people that you both may have in common.&amp;nbsp; This is useful to quickly understand business relationships that you may need to know about.&amp;nbsp; Categories shown are 
&lt;UL&gt;
&lt;LI&gt;Manager we both report under &lt;/LI&gt;
&lt;LI&gt;Colleagues we both know &lt;/LI&gt;
&lt;LI&gt;Memberships we both share &lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;Colleague Tracker&lt;/FONT&gt;&lt;/STRONG&gt; web part on MySite.&amp;nbsp; This shows you recent changes to user properties of your colleagues, effectively a newsletter of what's new with people you work with.&amp;nbsp; Information you can track includes 
&lt;UL&gt;
&lt;LI&gt;Anniversaries &lt;/LI&gt;
&lt;LI&gt;Profile property changes &lt;/LI&gt;
&lt;LI&gt;Membership changes &lt;/LI&gt;
&lt;LI&gt;New documents this person has posted &lt;/LI&gt;
&lt;LI&gt;Out of Office status &lt;/LI&gt;
&lt;LI&gt;Blog postings from this person &lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;Colleagues&lt;/FONT&gt; &lt;/STRONG&gt;web part on My Profile page.&amp;nbsp; This displays your current list of colleagues, grouped into categories that you may have applied. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;Memberships&lt;/FONT&gt; &lt;/STRONG&gt;web part on MySite.&amp;nbsp; This shows Distribution Lists and SharePoint Sites of which you are an explicit member.&amp;nbsp; For SharePoint Sites, it is rather specific: you must appear as an individual member of the ~Members group on the site (where ~ is the site name).&amp;nbsp; If you have access to the site through a different configuration, such as being a member of the ~Owners group, or being a member of an Active Directory Security Group that is a member of the ~Members group, this is not counted.&amp;nbsp; Otherwise, everyone would very likely see all the portal sites displayed as their memberships, and that would not be useful. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ea7500&gt;Organization Hierarchy&lt;/FONT&gt; &lt;/STRONG&gt;web part on My Profile page.&amp;nbsp; This shows your manager, your peers (others who report to your manager) and your direct reports, if you have any. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These are &lt;EM&gt;some &lt;/EM&gt;of the tools that MOSS provides for Social Networking; I've highlighted the ones that use profile data and the powerful "colleague" pattern to show meaningful relationships among people.&amp;nbsp; For a better introduction to the full set, see the product team's&amp;nbsp;&lt;A class="" href="http://blogs.msdn.com/sharepoint/archive/2007/10/24/enabling-and-managing-social-networks-for-business-use-with-microsoft-office-sharepoint-server-2007.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2007/10/24/enabling-and-managing-social-networks-for-business-use-with-microsoft-office-sharepoint-server-2007.aspx"&gt;Enabling and Managing Social Networks for Business use with MOSS&lt;/A&gt;.&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a92c1118-4c90-4941-b4ec-057a433765ed style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/SharePoint" rel=tag mce_href="http://technorati.com/tags/SharePoint"&gt;SharePoint&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Social%20Networking" rel=tag mce_href="http://technorati.com/tags/Social%20Networking"&gt;Social Networking&lt;/A&gt;,&lt;A href="http://technorati.com/tags/MySites" rel=tag mce_href="http://technorati.com/tags/MySites"&gt;MySites&lt;/A&gt;,&lt;A href="http://technorati.com/tags/People%20Search" rel=tag mce_href="http://technorati.com/tags/People%20Search"&gt;People Search&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Social%20Distance" rel=tag mce_href="http://technorati.com/tags/Social%20Distance"&gt;Social Distance&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447018" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Search/default.aspx">Search</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Web+Parts/default.aspx">Web Parts</category><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Social+Networking/default.aspx">Social Networking</category></item><item><title>Scaling MySites; How Many MySites per Content DB?</title><link>http://blogs.msdn.com/markarend/archive/2008/04/14/scaling-mysites-how-many-mysites-per-content-db.aspx</link><pubDate>Tue, 15 Apr 2008 00:43:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8394888</guid><dc:creator>markarend</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/markarend/comments/8394888.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=8394888</wfw:commentRss><description>&lt;p&gt;I've worked with several companies who have between 100,000 and 200,000 employees.&amp;#160; Naturally, they want to architect a solution for MySites that can accommodate everyone in the company.&amp;#160; TechNet has information in the &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx"&gt;Plan for software boundaries&lt;/a&gt; article, but a few numbers are ambiguous or conflicting.&amp;#160; In this post I'll try to clear some of that up.&lt;/p&gt;  &lt;p&gt;The limits I'll respect from this article are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;100 GB maximum size for Content Database (DB) &lt;/li&gt;    &lt;li&gt;50,000 site collections per Content DB &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Scale-out&lt;/h5&gt;  &lt;p&gt;The primary &lt;i&gt;scale-out&lt;/i&gt; strategy is to use multiple content databases in the MySite web application.&amp;#160; To meet the guideline of 50,000 site collections per DB, you should plan a minimum of 2 content databases to handle 100,000 MySites.&lt;/p&gt;  &lt;p&gt;Next, consider Throughput vs. Site Collections discussed in the TechNet article.&amp;#160; The most striking visual impact of this graph (reproduced below) is that performance appears to drop off dramatically as the number of site collections per content database grows to 50,000.&amp;#160; It looks a bit alarming.&amp;#160; But it's important to examine the numbers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/ScalingMySites_6FF0/Throughput%20vs%20Site%20Collections_7.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="392" alt="Throughput vs Site Collections" src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/ScalingMySites_6FF0/Throughput%20vs%20Site%20Collections_thumb_2.jpg" width="575" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Let's look at some points on the graph.&amp;#160; Note this is a sample from testing; your specific numbers may vary, but we'll assume inflection points are in roughly the same places.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;At 10,000 site collections per content database, the number of requests per second (rps) is still above 100. &lt;/li&gt;    &lt;li&gt;From about 14,000 - 16,000 site collections, throughput decreases very rapidly. &lt;/li&gt;    &lt;li&gt;After 16,000 site collections, throughput &amp;quot;bottoms out&amp;quot; near 50 rps &lt;em&gt;and stays pretty much the same through 50,000 site collections.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As a general approach to optimizing throughput for &lt;em&gt;any &lt;/em&gt;arbitrary scenario, we might say that limiting content databases to 10,000 site collections is a good rule of thumb, because adding 50% more databases at this point cuts throughput in half.&amp;#160; But you should think through anticipated usage patterns for the particular web application and site collections.&lt;/p&gt;  &lt;p&gt;MySites have a common usage pattern: these site collections tend to have relatively small quotas, and don't get a lot of concurrent traffic.&amp;#160; A relatively small percentage of MySites are used heavily; these tend to be people who enjoy publishing material or experimenting with information techniques.&amp;#160; In many situations, 50 rps will be sufficient for MySite traffic.&amp;#160; This means we're free to set the limit of site collections per content database on the MySite host at any value up to the recommended limit of 50,000.&lt;/p&gt;  &lt;p&gt;The next limiting factor is the overall size of the content database: 100 GB is recommended as the maximum.&amp;#160; This, plus the desired MySite storage quota, will let us compute the optimum number of databases.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="515" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="281"&gt;Individual MySite quota (MB)&lt;/td&gt;        &lt;td valign="top" width="46"&gt;2&lt;/td&gt;        &lt;td valign="top" width="51"&gt;5&lt;/td&gt;        &lt;td valign="top" width="50"&gt;10&lt;/td&gt;        &lt;td valign="top" width="43"&gt;20&lt;/td&gt;        &lt;td valign="top" width="42"&gt;25&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="261"&gt;Number of MySites per 100 GB content DB&lt;/td&gt;        &lt;td valign="top" width="51"&gt;51,200&lt;/td&gt;        &lt;td valign="top" width="55"&gt;20,480&lt;/td&gt;        &lt;td valign="top" width="54"&gt;10,240&lt;/td&gt;        &lt;td valign="top" width="47"&gt;5,120&lt;/td&gt;        &lt;td valign="top" width="46"&gt;4,096&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="248"&gt;# content DBs per 100,000 users&lt;/td&gt;        &lt;td valign="top" width="55"&gt;2&lt;/td&gt;        &lt;td valign="top" width="58"&gt;5&lt;/td&gt;        &lt;td valign="top" width="57"&gt;10&lt;/td&gt;        &lt;td valign="top" width="50"&gt;20&lt;/td&gt;        &lt;td valign="top" width="49"&gt;25&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Cool Rule: &lt;/strong&gt;Assuming 100GB as the maximum size of a content database, the number of databases you should plan for&amp;#8212;per 100,000 users&amp;#8212;is equal to the quota of each site collection in MB!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Other combinations of maximum content DB size or number of users will not line up this way.&amp;#160; To compute the number of content databases, the following formulas may be used.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;# site collections per DB = (Max size of DB in GB * 1024) / (MySite quota in MB) &lt;/li&gt;    &lt;li&gt;# content DBs = (Number of MySites) / (# site collections per DB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For the second formula, you must always round fractions up to the next whole number (use the &lt;em&gt;ceiling &lt;/em&gt;function in Excel).&lt;/p&gt;  &lt;h5&gt;Scale-up&lt;/h5&gt;  &lt;p&gt;To further ensure the overall performance of SharePoint when using multiple content databases, configure SQL Server so that the databases are hosted on different physical drives (spindles).&amp;#160; This is usually possible with SAN storage solutions also.&amp;#160; My instinct is that you'd want to balance this with the scale-out strategies and usage patterns.&amp;#160; If you had 200,000 users with MySites and a large portion really began to use MySites heavily, then you might want to use 20 content databases distributed across 5 or 10 physical drives.&lt;/p&gt;  &lt;p&gt;Next, note that MySites usually cause significantly more transactions in the User Profile database than collaboration or publishing sites, because more web parts that present and manipulate profile information are available on MySites.&amp;#160; As you grow the number of MySites, the CPU, memory, storage and IOPS available for your User Profile DB becomes more important.&amp;#160; Therefore you want to consider putting this database on a separate physical drive also.&amp;#160; For very large user populations and/or heavy anticipated use of MySites, you could even consider using a separate instance of SQL Server for the Profile DB.&lt;/p&gt;  &lt;p&gt;The whitepaper &lt;a href="http://go.microsoft.com/fwlink/?LinkID=105623&amp;amp;clcid=0x409"&gt;SharePoint database performance recommendations&lt;/a&gt; gives specific recommendations for increasing performance via the database.&lt;/p&gt;  &lt;p&gt;What about TechNet&amp;#8217;s limit of 150,000 site collections per web app?&amp;#160; Well, as of this writing, the article shows two different numbers for the same limit (the other is 50,000)... clearly, there is still some ambiguity over this.&amp;#160; Recent anecdotal evidence hints that 200,000 site collections can be hosted on one web application and still perform well.&amp;#160; If I find more details about this I'll post another entry.&lt;/p&gt;  &lt;p&gt;Areas a performance hit might be seen due to larger numbers are those that enumerate site collections in a web app.&amp;#160; There are pages in Central Administration (CA) that do this, and it can be mitigated by using the &amp;quot;find&amp;quot; function in the CA page or by using stsadm commands to perform some functions such as MySite deletion.&lt;/p&gt;  &lt;p&gt;If you want to plan for growth toward heavy MySite usage, you may want to consider using more than one web application to host them.&amp;#160; It's&amp;#160; possible to configure multiple web applications to host MySites.&amp;#160; When doing this, audiences can be defined to map users to MySite web apps.&amp;#160; A very common approach is to use geography as the audience, especially when a company has datacenters around the world that service users in their part of the world.&amp;#160; This has the added benefit of hosting a user's MySite from a datacenter nearer to them.&amp;#160; Refer to TechNet article &lt;a href="http://technet.microsoft.com/en-us/library/cc263115.aspx#Section2"&gt;Manage My Site host locations&lt;/a&gt; for much more detailed information on enabling this scenario.&lt;/p&gt;  &lt;p&gt;However, this may not be as balanced an approach for a domestic as it is for global companies.&amp;#160; The ideal arrangement is to find a natural organization of people that splits the whole population into just a few categories of reasonably equal quantities, and is reflected in user profile data.&amp;#160; Such a perfect arrangement may not exist; review your user profile database to look for natural categories that can uniquely classify everyone.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:00db2be6-61e1-4062-959f-e569270b6aa6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MySites" rel="tag"&gt;MySites&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint%20Capacity" rel="tag"&gt;SharePoint Capacity&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8394888" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Capacity+Planning/default.aspx">Capacity Planning</category></item><item><title>Modifying MySite Owner Security</title><link>http://blogs.msdn.com/markarend/archive/2008/04/10/modifying-mysite-owner-security.aspx</link><pubDate>Thu, 10 Apr 2008 07:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8374056</guid><dc:creator>markarend</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/markarend/comments/8374056.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=8374056</wfw:commentRss><description>&lt;P&gt;When someone creates a MySite, they are automatically given full control of that site.&amp;nbsp; More accurately: a MySite is a site collection; the creator becomes the first &amp;amp; only Site Collection Administrator; the creator is made a member of the Owners group.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Some people feel that this is too much control, and they'd like to limit it in some way.&amp;nbsp; My first piece of advice in this situation is: don't.&amp;nbsp; MySites are built with dependencies on the permissions and identity of the owner, the person who created the site.&amp;nbsp; Changing this can introduce undesirable or confusing behavior.&amp;nbsp; Then, if requirements later change, after hundreds or thousands of people have created their MySite, more code must be written to effect those changes.&amp;nbsp; But if you insist on going down this path, I found a way to meet this seemingly simple request.&amp;nbsp; The answer is most certainly not simple.&lt;/P&gt;
&lt;P&gt;Basically, you have to follow Steve Peschka’s approach described in the blog entry &lt;A href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx"&gt;customizing My Sites&lt;/A&gt; as the framework for doing this.&amp;nbsp; Then, add code to that scheme that knows how to change the security.&amp;nbsp; There are a few added challenges:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You must do two things: 1) change the creator’s group membership and 2) remove them as a Site Collection Administrator. &lt;/LI&gt;
&lt;LI&gt;To give the creator of the MySite specific privileges, you typically want to create a custom privilege level and add the user into that group.&amp;nbsp; The benefit is that you can tweak this to allow/prevent actions at a fairly granular level, such as being able to block the ability to add subsites. &lt;/LI&gt;
&lt;LI&gt;The creator of the MySite is the &lt;EM&gt;only &lt;/EM&gt;Site Collection Administrator, so you can’t remove this person from this role until you first put someone else in there.&amp;nbsp; For best governance, this should be a user account that’s not really associated with an individual, but shared among trusted admins.&amp;nbsp; Unfortunately it must be a user account, not a group. &lt;/LI&gt;
&lt;LI&gt;There seems to be a timer job that fixes up the title of the MySite to match the name of the site administrator… so you need some code that resets this back every time the user opens the site. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Why can’t we just change the MySite site definition (template)?&amp;nbsp; Two reasons:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Modifying the MySite site definition is “unsupported” by Microsoft.&amp;nbsp; If you did it, then wanted help with problems related to it, the support engineer would make a best effort, but could not guarantee a fix.&amp;nbsp; Steve’s article talks more about this. &lt;/LI&gt;
&lt;LI&gt;Moot point!&amp;nbsp; User security is not stored in the site definition, so even if it were supported to modify it, there would be nothing to do. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Below are code samples that address the challenges listed above.&amp;nbsp; Your job would be to integrate them with Steve Peschka’s &lt;A href="http://www.codeplex.com/CKS/Release/ProjectReleases.aspx?ReleaseId=2824" mce_href="http://www.codeplex.com/CKS/Release/ProjectReleases.aspx?ReleaseId=2824"&gt;code&lt;/A&gt;.&amp;nbsp; Sorry I can’t give a more complete solution.&amp;nbsp; This is one task that is very difficult to accomplish in SharePoint, and the methods described are the only way we know of doing it in a supported way.&lt;/P&gt;
&lt;P&gt;(BTW, I use lots of try...catch blocks here to get the most granular logging.&amp;nbsp; You can implement Utility.LogMessage any way you like; I use MSDN's &lt;A href="http://msdn2.microsoft.com/en-us/library/aa979522.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa979522.aspx"&gt;Trace Log Example&lt;/A&gt; to write to the ULS logs, and CodePlex's &lt;A href="http://www.codeplex.com/features/Release/ProjectReleases.aspx?ReleaseId=2502" mce_href="http://www.codeplex.com/features/Release/ProjectReleases.aspx?ReleaseId=2502"&gt;Log Viewer Feature&lt;/A&gt; to read them.)&lt;/P&gt;
&lt;STYLE type=text/css&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;
&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; RestrictMySiteOwner()
{
    SPUserInfo originalOwnerInfo = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SPUserInfo();
    SPUserInfo newOwnerInfo = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SPUserInfo();&lt;BR&gt;
    &lt;SPAN class=rem&gt;// Store the original owner in site properties so we can restore it later if necessary&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        StoreValueInSiteProperty(_curWeb, &lt;SPAN class=str&gt;"OriginalOwner"&lt;/SPAN&gt;, MakeUserInfoString(originalOwnerInfo));
        Utility.LogMessage(&lt;SPAN class=str&gt;"Stored original administrator in site property."&lt;/SPAN&gt;);
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't store original administrator in site property.  "&lt;/SPAN&gt; + ex.Message);
    }&lt;BR&gt;
    &lt;SPAN class=rem&gt;// Switch out the primary site administrator with a pre-defined one.&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        newOwnerInfo.LoginName = &lt;SPAN class=str&gt;"DOMAIN\MySitesAdmin"&lt;/SPAN&gt;;
        newOwnerInfo.Email = &lt;SPAN class=str&gt;"mysitesadmin@customer.com"&lt;/SPAN&gt;;
        newOwnerInfo.Name = &lt;SPAN class=str&gt;"MySites domain manager"&lt;/SPAN&gt;;
        newOwnerInfo.Notes = &lt;SPAN class=str&gt;"Owner of all MySites"&lt;/SPAN&gt;;
        originalOwnerInfo = ReplacePrimarySiteAdministrator(_curWeb, newOwnerInfo);
        Utility.LogMessage(&lt;SPAN class=str&gt;"Switched primary administrator."&lt;/SPAN&gt;);
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't replace primary administrator.  "&lt;/SPAN&gt; + ex.Message);
    }&lt;BR&gt;
    &lt;SPAN class=rem&gt;// Add the My Site creator to a group with limited permissions to control what is permissible on the site&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        ChangeCurrentUserPermission(_curWeb, &lt;SPAN class=str&gt;"Restricted Owner"&lt;/SPAN&gt;);
        Utility.LogMessage(&lt;SPAN class=str&gt;"Changed current user permissions."&lt;/SPAN&gt;);
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't change current user permissions.  "&lt;/SPAN&gt; + ex.Message);
    }&lt;BR&gt;
    &lt;SPAN class=rem&gt;// Reset the name of the site back to original owner (was changed by switching primary site admin)&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        SetSiteTitle(_curWeb, originalOwnerInfo.Name);
        Utility.LogMessage(&lt;SPAN class=str&gt;"Reset site title."&lt;/SPAN&gt;);
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't reset site title.  "&lt;/SPAN&gt; + ex.Message);
    }
}


&lt;SPAN class=kwrd&gt;protected&lt;/SPAN&gt; SPUserInfo ReplacePrimarySiteAdministrator(SPWeb site, &lt;SPAN class=kwrd&gt;SPUserInfo&lt;/SPAN&gt; newAdminInfo)
{
    SPUser originalOwner = &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;
    SPUserInfo originalOwnerInfo = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SPUserInfo();
 
    SPSecurity.RunWithElevatedPrivileges(&lt;SPAN class=kwrd&gt;delegate&lt;/SPAN&gt;()
    {
        &lt;SPAN class=rem&gt;// Get the parent site collection&lt;/SPAN&gt;
        SPSite sitecollection = site.Site;&lt;BR&gt;
        originalOwner = sitecollection.Owner;
        originalOwnerInfo = Utility.GetUserInfo(originalOwner);

        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (newAdminInfo.LoginName != originalOwnerInfo.LoginName)
        {
            &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
            {
                &lt;SPAN class=rem&gt;// Add new admin to Full Control group&lt;/SPAN&gt;
                SPRoleDefinition admins = site.RoleDefinitions[&lt;SPAN class=str&gt;"Full Control"&lt;/SPAN&gt;];
                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (admins != &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;)
                {
                    SPRoleAssignment roleAssignment = &lt;BR&gt;&lt;SPAN class=kwrd&gt;                        new&lt;/SPAN&gt; SPRoleAssignment(newAdminInfo.LoginName, newAdminInfo.Email, &lt;BR&gt;                        newAdminInfo.Name, newAdminInfo.Notes);
                   SPRoleDefinitionBindingCollection roleDefBindings = &lt;BR&gt;                        roleAssignment.RoleDefinitionBindings;
                    roleDefBindings.Add(admins);
                    site.RoleAssignments.Add(roleAssignment);
                    &lt;SPAN class=rem&gt;//site.Update(); // Don't need to do this&lt;/SPAN&gt;
                }

                &lt;SPAN class=rem&gt;// Reset owner of site collection to new admin&lt;/SPAN&gt;
                sitecollection.Owner = site.Users[newAdminInfo.LoginName];
                sitecollection.Owner.Update();

                &lt;SPAN class=rem&gt;//change the userprofile guid of the site&lt;/SPAN&gt;
                sitecollection.Properties["urn:schemas-microsoft-com:sharepoint:portal:profile:userprofile_guid"] = toProfile.ID.ToString().Replace("{", string.Empty).Replace("}", string.Empty); 
                sitecollection.Properties.Update(); 

            }
            &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (SPException ex)
            {
                &lt;SPAN class=rem&gt;// We may get here if the user running this thread is the same as the &lt;BR&gt;                // aministrator we're trying to remove.&lt;/SPAN&gt;
                Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't replace primary administrator.  "&lt;/SPAN&gt; + ex.Message);
            }
        }
    });

    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; originalOwnerInfo;
}


&lt;SPAN class=kwrd&gt;protected&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; ChangeCurrentUserPermission(SPWeb site, &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; roleDefinitionName)
{
    SPUser curUser = site.CurrentUser;
    &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; curUserName = curUser.LoginName;

    SPRoleDefinition roleDefFull = &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;         &lt;SPAN class=rem&gt;// Full control privilege level&lt;/SPAN&gt;
    SPRoleDefinition roleDefContributor = &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;  &lt;SPAN class=rem&gt;// Contributor privilege level&lt;/SPAN&gt;
    SPRoleDefinition roleDefLimitedOwner = &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;; &lt;SPAN class=rem&gt;// Our new privilege level&lt;/SPAN&gt;
            
    &lt;SPAN class=rem&gt;// Create new role definition&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        &lt;SPAN class=rem&gt;// Get existing role definitions&lt;/SPAN&gt;
        roleDefFull = site.RoleDefinitions[&lt;SPAN class=str&gt;"Full Control"&lt;/SPAN&gt;];
        roleDefContributor = site.RoleDefinitions[&lt;SPAN class=str&gt;"Contribute"&lt;/SPAN&gt;];

        &lt;SPAN class=rem&gt;// Create custom role definition&lt;/SPAN&gt;
        roleDefLimitedOwner = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SPRoleDefinition();
        roleDefLimitedOwner.Name = roleDefinitionName;
        roleDefLimitedOwner.Description = &lt;SPAN class=str&gt;"Permission settings for the owner of this MySite."&lt;/SPAN&gt;;
        site.FirstUniqueRoleDefinitionWeb.RoleDefinitions.Add(roleDefLimitedOwner);
        site.FirstUniqueRoleDefinitionWeb.Update();

        &lt;SPAN class=rem&gt;// Get the new role definition again... makes sure the Update took all the way or something.&lt;/SPAN&gt;
        roleDefLimitedOwner = site.FirstUniqueRoleDefinitionWeb.RoleDefinitions[roleDefinitionName];

        &lt;SPAN class=rem&gt;// Set permissions of new role... start from Contributor as base.&lt;/SPAN&gt;
        roleDefLimitedOwner.BasePermissions = roleDefContributor.BasePermissions;
        &lt;SPAN class=rem&gt;// To ADD a permission, use Bitwise-Or assignment:       permissions |= permission&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;// To REMOVE, use Bitwise-And assignment to Complement:  permissions &amp;amp;= ~permission&lt;/SPAN&gt;
        roleDefLimitedOwner.BasePermissions |= SPBasePermissions.CancelCheckout;
        roleDefLimitedOwner.BasePermissions &amp;amp;= ~SPBasePermissions.AddDelPrivateWebParts;
        roleDefLimitedOwner.BasePermissions &amp;amp;= ~SPBasePermissions.UpdatePersonalWebParts;
        roleDefLimitedOwner.Update();
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't create new permission group \""&lt;/SPAN&gt; &lt;BR&gt;            + roleDefinitionName + &lt;SPAN class=str&gt;"\". "&lt;/SPAN&gt; + ex.Message);
    }
            
    &lt;SPAN class=rem&gt;// Add owner to new role definition&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        SPRoleAssignment assignment = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SPRoleAssignment(curUser);
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (roleDefLimitedOwner != &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;)
        {
            assignment.RoleDefinitionBindings.Add(roleDefLimitedOwner);
        }
        &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        {
            &lt;SPAN class=rem&gt;//Workaround: for now we just make owner a contributor&lt;/SPAN&gt;
            assignment.RoleDefinitionBindings.Add(roleDefContributor);
        }
        site.RoleAssignments.Add(assignment);
&lt;SPAN class=rem&gt;        //site.Update();&lt;/SPAN&gt; // Don't need to do this&lt;BR&gt;    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't add user \""&lt;/SPAN&gt; + curUserName &lt;BR&gt;            + &lt;SPAN class=str&gt;"\" to new permission group \"" &lt;/SPAN&gt;+ roleDefinitionName + &lt;SPAN class=str&gt;"\".  "&lt;/SPAN&gt; + ex.Message);
    }

    &lt;SPAN class=rem&gt;// Remove owner from Full Control&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        SPRoleAssignment userRoleAssignment = UserRoleAssignment(site, curUser, roleDefFull);
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (userRoleAssignment != &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;)
        {
            userRoleAssignment.RoleDefinitionBindings.Remove(roleDefFull);
            userRoleAssignment.Update();
        }
        &lt;SPAN class=rem&gt;//site.Update(); // Don't need to do this&lt;/SPAN&gt;
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't remove user \""&lt;/SPAN&gt; + curUserName &lt;BR&gt;            + &lt;SPAN class=str&gt;"\" from default permission groups.  "&lt;/SPAN&gt; + ex.Message);
    }
}&lt;BR&gt; &lt;BR&gt; &lt;BR&gt;&lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; SPRoleAssignment UserRoleAssignment(SPWeb site, SPUser curUser, SPRoleDefinition curRoleDef)
{
    &lt;SPAN class=kwrd&gt;foreach&lt;/SPAN&gt; (SPRoleAssignment roleAssignment &lt;SPAN class=kwrd&gt;in&lt;/SPAN&gt; site.RoleAssignments)
    {
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (roleAssignment.Member.ID == curUser.ID)
        {
            &lt;SPAN class=kwrd&gt;foreach&lt;/SPAN&gt; (SPRoleDefinition roleDefinition &lt;SPAN class=kwrd&gt;in&lt;/SPAN&gt; roleAssignment.RoleDefinitionBindings)
            {
                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (roleDefinition.Id == curRoleDef.Id)
                {
                    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; roleAssignment;
                }
            }
        }
    }
    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;
}


&lt;SPAN class=kwrd&gt;protected&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; StoreValueInSiteProperty(SPWeb site, &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; propertyName, &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; propertyValue)
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (site.Properties.ContainsKey(propertyName))
        site.Properties[propertyName] = propertyValue;
    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        site.Properties.Add(propertyName, propertyValue);
    site.Properties.Update();
}


&lt;SPAN class=kwrd&gt;protected&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; SetSiteTitle(SPWeb site, &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; title)
{
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        site.Title = title;
        &lt;SPAN class=rem&gt;//site.Update(); // Don't need to do this&lt;/SPAN&gt;
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception ex)
    {
        Utility.LogMessage(&lt;SPAN class=str&gt;"Error: can't set site title to \""&lt;/SPAN&gt; + title + &lt;SPAN class=str&gt;"\".  "&lt;/SPAN&gt; + ex.Message);
    }
}
 &lt;/PRE&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ee094114-a2a2-48b8-893a-c059149ed214 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/MySite" rel=tag mce_href="http://technorati.com/tags/MySite"&gt;MySite&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SharePoint%20Security" rel=tag mce_href="http://technorati.com/tags/SharePoint%20Security"&gt;SharePoint Security&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SharePoint%20Development" rel=tag mce_href="http://technorati.com/tags/SharePoint%20Development"&gt;SharePoint Development&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8374056" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Security/default.aspx">Security</category></item><item><title>MySite Pages and Architecture</title><link>http://blogs.msdn.com/markarend/archive/2008/02/22/mysite-pages-and-architecture.aspx</link><pubDate>Sat, 23 Feb 2008 07:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7853842</guid><dc:creator>markarend</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/markarend/comments/7853842.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=7853842</wfw:commentRss><description>&lt;P&gt;MySites are very interesting on many levels.&amp;nbsp; When you start to think about how to architect, deploy or customize them, you may encounter some initial confusion and a lack of detailed information.&amp;nbsp; For instance, did you know that your MySite's Home page and the My Profile page are in completely&amp;nbsp;different site collections?&amp;nbsp; What's up with that?&lt;/P&gt;
&lt;P&gt;The reason is that&amp;nbsp;a My Profile page is provided for every user in the portal regardless of whether they have a MySite, or even if MySites is disabled.&amp;nbsp; Actually,&amp;nbsp;a single page renders every MyProfile page: &lt;U&gt;http://mysite/person.aspx&lt;/U&gt;. This page has code that displays a "Home" tab linking to the user's MySite at &lt;U&gt;http://mysite/personal/userid/default.aspx&lt;/U&gt; if it exists.&amp;nbsp; The Home tab makes it &lt;EM&gt;appear&lt;/EM&gt; that these two pages are&amp;nbsp;part of&amp;nbsp;the same site.&amp;nbsp; But the URLs hint at the truth: the My Profile page is on&amp;nbsp;one site collection, while the user's MySite Home page is on another.&lt;/P&gt;
&lt;P&gt;You knew&amp;nbsp;each MySite is hosted in its own site collection, right?&amp;nbsp; When a MySite is created for a user (see below), that user is added to the Owners group for the new site collection, and is also added to the Site Administrators list.&amp;nbsp; This user has full power over their MySite.&amp;nbsp; To customize that is a bit difficult, but possible.&lt;/P&gt;
&lt;P&gt;I created a Visio diagram that depicts the relationships between the pages, where profile information is used on them, and how the links between them interact.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Screenshot (click to download the diagram)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="MySite Pages + Architecture.vsd" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=ReferenceTopics&amp;amp;DownloadId=840" target=_blank mce_href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=ReferenceTopics&amp;amp;DownloadId=840"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=362 alt="MySite page relationships" src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/MySitePagesandArchitecture_1442B/image6.png" width=399 border=0 mce_src="http://blogs.msdn.com/blogfiles/markarend/WindowsLiveWriter/MySitePagesandArchitecture_1442B/image6.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What happens when you browse to &lt;U&gt;http://mysite/&lt;/U&gt;?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Whenever you browse to &lt;U&gt;http://mysite/&lt;/U&gt;, you're redirected to &lt;U&gt;http://mysite/personal/userid/default.aspx&lt;/U&gt; through a few steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt" 10.1pt? 10pt 0in 12pt MARGIN:&gt;&lt;U&gt;http://mysite/default.aspx&lt;/U&gt; inherits from Microsoft.SharePoint.Portal.WebControls.MySiteHostHomePage.&amp;nbsp; This assembly authorizes the user against the MySite shared service rights (can be enabled/disabled by users or groups), then emits an HttpResponse.Redirect to either /_layouts/MySite.aspx or /_layouts/AccessDenied.aspx, accordingly.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt" 10.1pt? 10pt 0in 12pt MARGIN:&gt;&lt;U&gt;/_layouts/MySite.aspx&lt;/U&gt; inherits from Microsoft.SharePoint.Portal.WebControls.CreatePersonalSpace.&amp;nbsp; This assembly&amp;nbsp;examines the user profile property &lt;STRONG&gt;Personal site&lt;/STRONG&gt;.&amp;nbsp; &lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt"&gt;If the Personal site property is blank, CreatePersonalSpace creates a new MySite site collection for this user, then stores its relative URL&amp;nbsp;(e.g. "/personal/userid/")&amp;nbsp;in the Personal site property.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt"&gt;CreatePersonalSpace then emits an HttpResponse.Redirect to the URL in the Personal site property.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt"&gt;You arrive at &lt;U&gt;http://mysite/personal/userid/default.aspx&lt;/U&gt;, where "mysite" is the URL of the web application hosting your MySites, and "userid" is your user id.&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 12pt 0in 10pt 10.1pt"&gt;Note, other configurations could change this URL, such as the Personal Site Location ("personal") and the Site Naming Format (whether "userid" should include your domain.)&amp;nbsp; These settings are found on the SSP Admin page "My Site settings."&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Customizing MySite&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Steve Peschka has the best information for &lt;A title="Link to the SharePoint Product Team's blog" href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx" target=_blank mce_href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx"&gt;customizing MySites&lt;/A&gt;, including how to set&amp;nbsp;a custom&amp;nbsp;master page automatically for all new MySites being created... this one's not obvious!&amp;nbsp; Steve has a very clever approach that uploads an XML file to each new MySite, containing instructions on what should be modified.&amp;nbsp; Then, a control in the custom master page reads the XML file and performs the customizations.&amp;nbsp; He explains why this approach is necessary.&lt;/P&gt;
&lt;P&gt;His XML spec for customizations provides several things you can do, such as removing/adding web parts and&amp;nbsp;modifying QuickLaunch links.&amp;nbsp; He doesn't provide a way to change the permissions of the owner... look for another blog posting from me on how to do that when you want to restrict the rights of&amp;nbsp;each MySite's owner.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;See also&lt;BR&gt;&lt;/STRONG&gt;To enable/disable MySites, &lt;/EM&gt;&lt;A id=ctl00___ctl00___ctl02___Results___postlist___EntryItems_ctl01_PostTitle href="http://blogs.msdn.com/markarend/archive/2007/04/26/managing-mysite-creation-and-usage.aspx"&gt;&lt;EM&gt;Managing MySite Creation and Usage&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;BR&gt;If MySites are disabled, &lt;/EM&gt;&lt;A id=ctl00___ctl00___ctl02___Results___postlist___EntryItems_ctl00_PostTitle href="http://blogs.msdn.com/markarend/archive/2007/11/08/where-is-my-picture-stored-what-if-mysites-are-off.aspx"&gt;&lt;EM&gt;Where is My Picture stored? What if MySites are off?&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7853842" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category></item><item><title>Where is My Picture stored?  What if MySites are off?</title><link>http://blogs.msdn.com/markarend/archive/2007/11/08/where-is-my-picture-stored-what-if-mysites-are-off.aspx</link><pubDate>Thu, 08 Nov 2007 17:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5988143</guid><dc:creator>markarend</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markarend/comments/5988143.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=5988143</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;MOSS user profiles have a property called Picture, which can store&amp;nbsp;the URL of an image file.&amp;nbsp; When this property&amp;nbsp;is filled in, other MOSS features display the user's picture at useful times: in search results, or on a MySite.&amp;nbsp; But where's the image file stored?&amp;nbsp; It depends on whether MySites are enabled or not.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;If MySites are enabled&lt;/STRONG&gt;, then the&amp;nbsp;profile editing page provides a &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;"Choose Picture" control that allows you to easily upload a picture to be associated with your profile:&amp;nbsp;just click the control, browse to a picture on your PC, and click Ok.&amp;nbsp; This control uploads the image file, stores it&amp;nbsp;into the Shared Pictures library of&amp;nbsp;your MySite, then copies its URL into the Picture property of your profile.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;But what if you haven't created a MySite yet, or&amp;nbsp;if MySites are disabled?&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;If you haven't created a MySite yet&lt;/STRONG&gt;, then chances are you won't be on the profile&amp;nbsp;editing&amp;nbsp;page.&amp;nbsp; The typical path to get to the page where you choose a picture is to go to your MySite first.&amp;nbsp; If you have no MySite, it will be created for you at that time.&amp;nbsp; From there, click the Detail link on MySite to edit your profile information.&amp;nbsp; But it's still possible you could get to this page without going to MySite first.&amp;nbsp; In that case, either MySites are disabled (see next case), or you got here by entering the URL directly.&amp;nbsp; In that case, you'll see an error message in the upload control indicating that you don't have a MySite yet.&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;If MySites are disabled&lt;/STRONG&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;you can still browse to &lt;A href="http://mysite/Person.aspx"&gt;&lt;FONT face="Times New Roman" color=#0000ff&gt;http://mysite/Person.aspx&lt;/FONT&gt;&lt;/A&gt; to view your My Profile page, then click the Details link to edit your profile data including Picture.&amp;nbsp; This time, the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;Picture field is still present, but the "Choose Picture" button is gone.&amp;nbsp; In its place is a plain&amp;nbsp;text field, so you can enter the URL of an image file.&amp;nbsp; This means you have to upload the image file to a site you can access, then copy its URL into this field.&amp;nbsp; This is probably not the smoothest experience for most users.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;Administrators planning to disable MySites should be aware of this, if they're also planning to allow users to edit their profile.&amp;nbsp; One choice might be to edit the behavior of profile properties via Central Admin to lock the My Picture field against edits, or even hide it completely if desired.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;&lt;STRONG&gt;See also&lt;BR&gt;&lt;/STRONG&gt;How MySite pages are organized: &lt;A class="" href="http://blogs.msdn.com/markarend/archive/2008/02/22/mysite-pages-and-architecture.aspx" mce_href="http://blogs.msdn.com/markarend/archive/2008/02/22/mysite-pages-and-architecture.aspx"&gt;MySite Pages and Architecture&lt;/A&gt;.&lt;BR&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;To enable/disable MySites: &lt;/EM&gt;&lt;A id=ctl00___ctl00___ctl02___Results___postlist___EntryItems_ctl01_PostTitle href="http://blogs.msdn.com/markarend/archive/2007/04/26/managing-mysite-creation-and-usage.aspx"&gt;&lt;EM&gt;Managing MySite Creation and Usage&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/P&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5988143" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Configuration/default.aspx">Configuration</category></item><item><title>Managing MySite Creation and Usage</title><link>http://blogs.msdn.com/markarend/archive/2007/04/26/managing-mysite-creation-and-usage.aspx</link><pubDate>Thu, 26 Apr 2007 22:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2289621</guid><dc:creator>markarend</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/markarend/comments/2289621.aspx</comments><wfw:commentRss>http://blogs.msdn.com/markarend/commentrss.aspx?PostID=2289621</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Permissions may be tailored to control creation MySites separately from the ability to use the MyProfile page.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This allows creation of MySites to be blocked, but still allow users to access their own profile information, and to search for and view profiles of other users.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;(SharePoint Central Admin &amp;gt;&amp;gt;&lt;/FONT&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;[SharedServices1] &amp;gt;&amp;gt;&lt;/FONT&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;User Profiles and My Sites &amp;gt;&amp;gt;&lt;/FONT&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;Personalization services permissions)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Default settings are shown here.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Grayed-out settings don’t apply to this discussion.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;þ&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; Create personal site – enabled by default; clear this to prevent creation of MySites&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;þ&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; Use personal features – enabled by default; clear this to prevent use of existing MySites&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="COLOR: #a6a6a6; FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: background1; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings; mso-themeshade: 166"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;¨&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a6a6a6; mso-themecolor: background1; mso-themeshade: 166"&gt;&lt;FONT face=Calibri&gt; Manage user profiles&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="COLOR: #a6a6a6; FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: background1; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings; mso-themeshade: 166"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;¨&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a6a6a6; mso-themecolor: background1; mso-themeshade: 166"&gt;&lt;FONT face=Calibri&gt; Manage audiences&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="COLOR: #a6a6a6; FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: background1; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings; mso-themeshade: 166"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;þ&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a6a6a6; mso-themecolor: background1; mso-themeshade: 166"&gt;&lt;FONT face=Calibri&gt; Manage permissions&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;SPAN style="COLOR: #a6a6a6; FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: background1; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings; mso-themeshade: 166"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;þ&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a6a6a6; mso-themecolor: background1; mso-themeshade: 166"&gt;&lt;FONT face=Calibri&gt; Manage usage analytics&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When the “Create personal site” permission is cleared, the MySite link at the top of all pages is hidden, and the “My Home” tab that appears on MySite web application sites is hidden.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If someone enters a URL directly to a MySite that was already created, they will be able to open that page and use it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To prevent this, also clear the “Use personal features” permission.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In both of these cases, the “My Profile” link is still available, and appears by clicking links of user names from site settings of users or search results for users.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;EM&gt;&lt;STRONG&gt;See also&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;EM&gt;&lt;FONT size=3&gt;How MySite pages are organized: &lt;/FONT&gt;&lt;A class="" href="http://blogs.msdn.com/markarend/archive/2008/02/22/mysite-pages-and-architecture.aspx" mce_href="http://blogs.msdn.com/markarend/archive/2008/02/22/mysite-pages-and-architecture.aspx"&gt;&lt;FONT size=3&gt;MySite Pages and Architecture&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;BR&gt;If MySites are disabled, &lt;A id=ctl00___ctl00___ctl02___Results___postlist___EntryItems_ctl00_PostTitle href="http://blogs.msdn.com/markarend/archive/2007/11/08/where-is-my-picture-stored-what-if-mysites-are-off.aspx"&gt;&lt;EM&gt;Where is My Picture stored? What if MySites are off?&lt;/EM&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2289621" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/markarend/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/markarend/archive/tags/MySites/default.aspx">MySites</category><category domain="http://blogs.msdn.com/markarend/archive/tags/Configuration/default.aspx">Configuration</category></item></channel></rss>