Tag: MySites

MySite Provisioning Methods

A number of times over the past few years I have stumbled into discussions (in person or online) about how to automate the creation of MySites for all users in the organization.  Creating the sites programmatically is actually pretty simple, but the real question is “Why do you want to do that?”  There are advantages and disadvantages to automating the process, but for me it almost always comes down to two big things; Governance and Business Reason. 

MySite Governance

MySites present an interesting challenge with regards to governance.  While most of the topics are outside the scope of this article there are a few important topics that relate to the number of MySites within an organization.

Storage Considerations – Even with quotas in place it is easy to see exponential growth for the storage requirements.  In larger environments with 1,000s of users serious planning needs to take place to build out a SQL environment to support the site collections.  Planning should also be done to manage the number of sites per content database to ensure long term maintainability. 

When you provision all of the sites at once all of the planning has to be done up front, where conversely if you provision the sites slowly over time you spend a little time planning out the long term assumptions and then tweak the strategy over time as the sites and their usage evolves.  It is much easier to make corrections with the slow approach.

User Support and Training – A MySite is very different than an email account which is something nearly all computer users are familiar with at this point.  The average SharePoint user has never received any formal training and has little understanding of the capabilities of a site collection.  Without proper training it is unlikely that user will be able to take advantage of any of the real benefits of the MySite leaving them to just use it as a replacement for a personal network share (see Storage Considerations above). 

In my experience site owners or administrators for traditional collaboration or department sites are much more likely to have success and less likely to need extra support.  That narrower group of people is a much better starting point, and they are also sophisticated enough to initiate the automatic provisioning process themselves.

Business Reason

Each organization should develop a user story for what the purpose of a MySite is within their organization.  Like any site collection, it can be used for many different purposes such as; Landing Page, Dashboard, Personal Site, etc.  The user story may help establish how the MySite will be used, who is expected to use it, and ultimately if customization is needed to provide the functionality and content.  The answers to those questions should help guide the decision about how to provision the sites. 

Closing

While I tend to like the go slow and make adjustments path, there are valid reasons for needing to auto-provision sites for large groups of users.  Hopefully the guidance here will help to guide the team through proper planning so that the implementation can be successful.

Related Posts

My Sites in the Enterprise: Today and Tomorrow

As we inch closer to SharePoint 2010 and the vast improvements made to the My Sites feature set I thought it might be time to revisit some key concepts when looking to leverage My Sites in an organization.  In many organizations I see My Sites as still under deployed and under utilized.  In some cases it is because leaders do not know what to do with it while in others they are not sure how to support it.  I hope to address both of those issues here along with offering some other advice.  By addressing the topic now I hope that business can get a jump on implementing the tools based on the current technology as well as bring it to the forefront of the 2010 upgrade planning so that they will be able to better leverage the tools in the years to come.

What is the purpose of My Sites?

In its simplest form, My Site is a SharePoint site collection owned by an individual giving them the ability to have both personal and shared content.  It also includes the bases for many personalization features including a Colleague tracker, My Links, and the ability to aggregate content like tasks and documents they are involved with throughout the entire farm.  Since the sites can be automatically provisioned in most environments it takes little or no IT interaction for a user to get started.

In some environments the the feature is limited to IT and some power users, while in others the service is available but its benefits have never been communicated to the organization as a whole.  By widening the audience and its participants more value can be derived from the tools.

Enterprise 2.0

These tools are a good foundation for an Enterprise 2.0 strategy helping your users find and communicate with each other.  In most organizations people are already using these types of tools, but they are doing it for different purposes and with tools hosted outside your company’s network.  Look at LinkedIn, Facebook, and Twitter which probably already have unofficial groups or networks organized around your company.  By pulling some of this into your network you can expand productivity around internal information assets, provide some level of information security, and increase the overall socialization activities.

In a recent post I wrote about Overcoming Obstacles in SharePoint and Ent 2.0 which addresses a few of the biggest issues; Fear of Change, Information Power, and Lack of Interest.

Governance

Like most SharePoint topics we cannot have a full discussion without mentioning Governance.  Oddly enough, this is one area that I think perhaps can be over governed.  The cornerstone to Social Computing is social interactions and for it to be social there needs to be room for an individual’s creativity.  That isn’t to say that anything goes, but in many cases things should be generalized into more of an appropriate use policy. 

Personal Photo – One of the most personal aspects of personal computing is the individual’s photo or avatar.  Hopefully within an organization people feel comfortable enough to have a photo or at least an avatar.  While a photo of the person is great it probably shouldn’t be a requirement and hopefully isn’t their mug shot from the badge or security system. 

Dressing up the My Site – The individual should be allowed to change the theme to personalize the color scheme and select a personal icon or banner for the site.  Even if the rest of the SharePoint sites are fully branded with the corporate identity, small things like this can really increase the interest level since it gives them a chance to be creative and truly gives them ownership of the site. 

Quotas – Quotas should be set at a reasonable amount.  Too little and users will end up going back to Shared Drives which will undermine use of the tool.  Of course too much and there is the possibility that storage costs can escalate quickly along with backup and recovery times. 

If used appropriately it should draw down the storage requirements in email and shared drive storage thereby just shifting storage from one system to another.

Taking it to the Next Level

SharePoint 2010 will add in both the Facebook “Wall” concept as well as some enhanced social bookmarking, both of which have been painfully missing from the 2007 offering. 

While both of those features are welcomed additions, there are more opportunities to extend the system as well.  One of the things I like best about systems like Facebook and LinkedIn is there are all kinds of tools that have been created to help interact with the platforms.  This includes everything from mobile browsers to make posting updates easier to the LinkedIn Outlook Toolbar that can expose user’s LinkedIn profile, status, and network information in Outlook.  The Outlook team has responded by offering the Outlook Social Connector which promises to offer an extensible provider platform for integrating with multiple social platforms including SharePoint 2010 as well as Windows Live and anyone else that can create a provider. 

Other extensions and tools are still needed though.  In the past I wrote a bookmarking component that supported adding items to My Links from both inside of SharePoint as well as other ASP.NET applications.  As soon as I get a handle on the final features of SharePoint 2010 I plan on updating that and making it available as a project on CodePlex.

Simple content components like a Quote of the Day or slide shows can also increase the personalization of the system. 

Isn’t this for Business?

This is for business, but it can still be fun.  Increasing the fun factor will get people to be more engaged and interactive.  Also, it is a proven fact that teams that know each other at a personal level and can maintain relationships function at a higher level.

Related Posts

Using jQuery to Customize the User Profile Display

The User Profile engine in MOSS Enterprise is pretty powerful.  Out of the box it has some great capabilities and is very easy to setup.  There is support for wide range of field level attributes along with global and personal privacy policies.  The main profile block rendered on the page is very dynamic.

The one big short coming of this approach is a lack of formatting control in the output.  You have the option of a custom display but then you have to try and reproduce all of the logic for each field.

jQuery offers up a nice alternative.  Instead of changing the underlying logic, you can simply adjust what is rendered to the page.

 

Some Background

The organization I’m currently working with uses Skype for collaboration and as their primary IM platform.  Early this year, long before I made the jump to jQuery, I wrote a custom web part that was added to my organizations My Profile page (person.aspx).  Its sole purpose was to show the user’s Skype information, status and some simple Skype commands.  The web part called the UserProfileService in order to grab the SkypeID listed in the profile and then rendered the output.  The web service call was somewhat redundant since the information was already on the page.  The web part worked well, but in the end the Skype info was shown in multiple places, which is not desirable.  It would be best to be able to integrate it into the main profile.  In the time since I have gotten a few other requests to modify the output of certain fields.  I recently took the opportunity to revisit this topic and used the Skype field as the test bed.

 

Step 1 – Create or Identify the field

The Skype ID (SkypeID) field is a simple string field that the user is able to edit.  It is pretty similar to the phone number fields.

 

Step 2 – Write the Script

I’ve referenced the GoogleAPIs library.  I run all of our jQuery scripts off a localized copy to reduce dependencies.  This also depends on a Skype script as well as seen below.

The main selector can probably be improved, but it seems the system consistently sticks with the identification referenced.

Our environment runs with SSL so the status field could not be supported in this implementation.  For implementations where SSL is not used you can grab user’s status by linking an image to this path:  http://mystatus.skype.com/smallicon/skypename







$(document).ready(function() {

var cntID = $("#ctl00_PlaceHolderMain_ctl00_PlaceHolderMain_ProfileViewerValueSkypeID").text()

var mOutput = "   Add   ";

$("#ctl00_PlaceHolderMain_ctl00_PlaceHolderMain_ProfileViewerValueSkypeID").append(mOutput);

mOutput = "Chat";

$("#ctl00_PlaceHolderMain_ctl00_PlaceHolderMain_ProfileViewerValueSkypeID").append(mOutput);

})


Step 3 – Prepare the Web Part

I’ve placed the script in a Content Editor Web Part on another site and then added it to the catalog on the Personalization site collection.  Be sure to set the title, and I recommend setting the Chrome type to “None.”

Step 4 – Add the Web Part the Person.aspx Page

The Web part can now be added to the page.  Its placement really doesn’t matter since it will not render anything to this section.  Once on the page it will show the updated output if the value is present.  If the referenced field is not shown, doesn’t have a value, then it will not modify anything.

Here is a sample.  The “[Add]   [Chat]” links were added which give visitors the option to add the user to their Skype contact list or to initiate a chat with them.

Summary

While this example is pretty simple, it should do a good job of illustrating some of the capabilities developers and customizers now have. In addition, I now have one less web part and assembly to manage on the server.

This same process can be applied to each field to change the connection to the people search, integrate with other systems, or to simply reformat the text returned.

Resolving the MySite File Exists Error

I have seen this error come up a few times, and reported frequently on the MSDN/TechNet Forums. Once the problem is understood, it is fairly easy to correct.

There are a few different pieces that come into play when a user clicks on the My Site link at the top of a MOSS page. The user goes through a centralized MySite.aspx page that acts as a redirect. A check is done to see if the user already has a My Site specified in their profile. If there is a site specified it sends them to the site, if the site is not specified it sends them through the site creation process.

Error
On a couple of occasions I have seen the following error:

The file exists. (Exception from HRESULT: 0x80070050)

Troubleshoot issues with Windows SharePoint Services.

This happens because the user’s profile does not contain a valid path in the Personal site field. The user is then pushed into the site provisioning process, but since the site paths have to be unique, the process is unable to create a new site.

For some reason the profile field was reset or corrupted leaving it blank or filled with something like an error code or invalid statement.

Resolution
To resolve this issue, you want to first validate the path to the user’s site. The path will vary depending on your setup and naming conventions, but it should be something like http://servername/personal/juser

Once you know what the valid path is, update the Personal site property to include the valid path. Ex. “/personal/juser”

To update the user’s profile:

  • Navigate to the Shared Service Provider
  • Click the User profiles and properties link
  • Click the View user profile link
  • Search for the user’s profile
  • Click the Edit option in the item’s menu
  • Update the Personal site property
  • Click the Save and close option in the toolbar

What causes the error?
On a few occasions the cause could not be determined. Since it was easy to fix we didn’t spend a whole lot of time looking into the cause. The majority of the instances happened after an Active Directory migration where the user’s profile was migrated incorrectly.

When going through an account migration either through Active Directory, or in switching to something like Forms Based Authentication (FBA), make sure you migrate the user profiles using Migrate User. Additional information can be found on that topic at the blog post titled SharePoint AD Migrations: Users and Servers.

SharePoint MyLinks Listing

MyLinks is an important MOSS feature that is well used in many organizations. Unfortuantely many administrators incorrectly believe that the data is stored in the MySite collections when its actually stored in the Shared Service Provider as part of the user’s shared profile. That is what allows the data to be shared between the different site collections and web apps.

I have on occassion, more than I would care to admit, had to recreate the Shared Service Provider to repair search related issues. Creating a new SSP means that this profile data will be wiped out. In this case I think its a good proactive step to pull a list of the links that are being used. Reviewing the list not only gives the administrator a good idea of how the feature is being used, but it would then be possible to supply the users with a list of the links that need to be setup when the maintenance is complete.

The following script can be used to gather the data. The UserLinks and UserProfile_Full tables are in the Shared Service Provider database.

Select Prof.NTName, Prof.PreferredName, Prof.Email, Link.GroupTitle, Link.Title, Link.URL
From UserLinks Link inner join UserProfile_Full Prof on UL.recordId = Prof.recordID
order by Prof.ntname

Generally speaking it is a bad idea to accomplish something by directly accessing the database. Any changes should definitely be made by the API or through the Web Services supplied. There are a few special cases though where the API doesn’t really help you. One such exception is reviewing this MyLinks data.

%d bloggers like this: