SharePoint Scenarios Defined

What is a scenario

A scenario is the set of features used in a solution that provide the set of requirements to fulfill needs. The use of the word scenario is used here to define a common set of characteristics in those solutions that can be grouped together. Every solution would map directly to a single scenario or be a combination of scenarios.

The Six SharePoint Scenarios

SharePoint is a framework that offers features to build out scenarios to fulfill the need of businesses in the portal and collaboration landscape. Each scenario has common attributes and characteristics that help you identify what scenario you are working on. I believe there are six (6) major SharePoint Scenarios that can be defined and all solutions built on SharePoint fit into one of the following scenarios shown in Figure1 below.

NOTE: These scenarios apply to SharePoint for this conversation, but also apply generally to any set of portal frameworks that are extensible. Most of the scenarios have a one for one mapping to implementations, except for the Applications and Tools which will have many solutions.



Scenarios Defined

The below set of descriptions describes each scenario and an example of a sample implementation. These scenarios can be combined in certain situations, but usually have their own entry points for user interaction.

  • Communications - A communications scenario has content that is used to push content out to users. A small group creates the content that is very structured as well as predefined navigation that is hierarchical. Example: Intranet
  • Collaboration - High usage, high bandwidth, lots of content updates are common traits for this scenario. This scenario would be where you work on documents, lists and wikis with many team members contributing. Need to have strict user quotas and limited customization guidelines.

Example: Team Sites

  • Social - This scenario provides high user input in a less formal way than collaboration such as tagging, rating with a focus on the individual.

Example: My Sites

  • Extranet - Similar to the collaboration scenario the extranet has characteristics that match the collaboration scenario except for the major different of reach. The extranet has a wider range of users that access and update information usually external to the core group of users, such as vendors or clients.

Example: External Customer Portal

  • Internet - Provides structured content that is consumable by all users on the internet. Rich in visualization and customization for a brand that the scenario focuses on.

Example: Public Facing Web Site

  • Application / Tools - These solutions are grouped based on the similar characteristic that they do not have a well defined set of characteristics. Many of the solutions will define what characteristics are provided based on the requirements gathered.

Examples: Records Center, Search Center, and Dashboards

Question: My Solution does not fit into one of these areas

The first thought from most people have is to wonder why there are only 6 scenarios and to see if they can find a solution that doesn't fit into one of the major 6. Most of the time the custom solution would fit into the Applications and Tools scenario such as Records Center, Search Center, Dashboards, and any other custom solution. If you think there are more than 6 scenarios let me know.

Importance of knowing what scenario you are delivering

It is critical that you know what scenario you are providing the business because that will drive the characteristics of the project you are working on. Also keep in mind with SharePoint that one Farm or even one web application might store more than one scenario.

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

How to manually test custom software

This blog post applies to SharePoint as well as any custom software your write.  This is the high level user acceptance testing that should be done when finishing a every custom project you do.

  1. Write User Scenarios/Requirements
  2. Develop Code based on requirements
  3. Create a test plan, which is all of the tests your will document and run
  4. Write test cases based on the requirements and user interface
  5. Run test cases to make sure everything is working
  6. (optional) Use a subset of tests as a smoke test

Feel free to debate, suggest or recommend any changes to the steps.

Here is what the testing process might look like.

Testing Process

  1. Go to the folder location where you have stored the testing documents such as http://<sharepointsite>/<project name>/Testing/UserTests
  2. Open a testing document such as 01-UserTests-<component>.docx
  3. Record results in a new Test Run document with name [test##]-[YYYYMMDD]-[user]-testresults.xlsx (example: 01-20100610-bschwartz-testresults.docx)
  4. Run through every test in testing document and put Pass/Fail and the time it took to run the test in a common location which might just be a spreadsheet, database or formal tool.
  5. Update Feature spreadsheet as components pass the user testing


Here are some example files you could use to get started.



Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Digging into the SharePoint Portal Layouts Features

A great feature with lots of web parts is Portal Layouts Feature (5F3B0127-2F1D-4cfd-8DD2-85AD1FB00BFC) in the /14/TEMPLATES/FEATURES/PortalLayouts folder.

You might be asking how you activate this feature since it is not in the list of features, the reason you can’t see it is that it is hidden.  You must activate SharePoint Server Standard Site Collection features or SharePoint Server Enterprise Site Collection features to have it activated.  This might seem obvious if you are developing with the enterprise version or have all features on, but some people might only have SharePoint Foundation.

There are two major files that make up this feature.

  1. LayoutFiles.xml – Installs the Page Layout used in the Standard and Enterprise features.
  2. webPartDWPFiles.xml – Adds a whole bunch of web parts for you to use!


Here are some of the layouts and web parts that come with this feature.

  • People Search Results Layout
  • People Search Results Layout
  • Report Center Layout
  • AdvancedSearchBox Web Part
  • Category Web Part
  • RSSViewer Web Part
  • SocialComment Web Part
  • TagCloud Web Part
  • OWA Web Parts
Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Page Layout Buttons Disabled on Ribbon

Changing the Page Layout might seem like an easy task, but it may not always seem as straightforward as you think.  Many people report this as an error or bug because the button seems to be disabled by default.

Here is what it looks like when disabled:


When many people see this they think that they don’t have the proper permission or that they are not allowed to change the pages.  You can understand why they feel this way and might have felt this way too.  If you feel you have the right permissions and are allowed to select from multiple Page Layouts perform these steps to enable the button.

  • Click the Check-out button on the Page tab
  • This will redirect you to the Browse tab if you have the Ribbon shown.
  • Next on the Edit tab click the Edit button on the Page tab
  • Now in Edit mode, click the Page tab once again
  • The Page Layout tab is now ready to use!

So the key to have the ability to change the Page Layout is you must have.

  1. Permissions to edit the layout
  2. Page Layouts available to change
  3. The page checked out
  4. The page in edit mode
Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

SharePoint 2010 is now on MSDN

Today is a BIG day, the start of everyone downloading SharePoint 2010.

Exciting news! SharePoint 2010 is now on MSDN, ready GO!

Look for more posts now that the product is ready for release in the near future.


Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Social is coming and soon

It looks like more and more people are picking up on the Social side of things now that they are hearing more about SharePoint 2010 and the Social features.  A few years ago now, I talked with many people telling them that Social Computing and Applications would be a part of their Enterprise landscape.  With SharePoint 2010 on the horizon people are now starting to seriously talk about it in SharePoint and I think it will be a reality sooner than later now.

People that heard me a lot would say things like, “oh stop going on about the social stuff” and “Are you talking about social stuff again?”

The truth was they didn’t see the value in the social applications and they thought it was just hype.  Over time, many of the same people have seen the value of the social aspect of an application and now even understand that it is a game changer in the right use.

Many of you probably know and follow Joel Oleson and have probably seen his blog post on Why isn’t my SharePoint Environment Social???.  It is a good feature overview but I disagree with the approach to preparing for a SharePoint Environment that is Social.  It is good to see he is covering the Social side now because that means people that follow him will take it serious, as well as Microsoft promoting it with their focused website http://sharepoint.microsoft.com/social/Pages/default.aspx.

So what you might ask what do I disagree with Joel on?

Don’t get me wrong he has a lot of great points and covers the features and addons very nicely.  His blog post takes the view that social can be solved with features and I understand he is trying to help people make their sites more social, but I really think that approach will get you into trouble.  No amount of features can *solve* the Social problem by themselves, it takes people too.

So what do you do to use Joel’s advice and not get into trouble?

I would suggest determining your business case before creating a technology solution first.  I would also be very careful about installing some of the social code extensions.  The reason you need to be careful is that social applications need to be optimized for large amounts of data and can have a negative performance impact on your system at large loads, so you don’t always want something that is not supported or tested, in addition some hosting providers might not support them. (that is my personal thoughts)  The governance, taxonomy, and site layout for a social site is usually drastically different and more of a flat model which requires a much different data model.

If all you are worried about is getting a flashy intranet site that has Silverlight, Ajax and jQuery you probably don’t have a social problem you have a problem with how you want your site to be viewed.  No amount of *social* features will fix that.

1. First, STOP, don’t worry about technology for a second and sit down and determine if you have a real business problem that needs to be solved with *social* applications.

2. If you really have a problem you can define, determine which category it fits into.  There are usually two (2) categories for social which are: Building Collaboration and Improved Communication.  You can read chapter 1 of Social Computing with Microsoft SharePoint 2007: Implementing Applications for SharePoint to Enable Collaboration and Interaction in the Enterprise if you want an overview.

3. Determine who your audience is and how you will maintain and sustain your social application without over taxing your employees.

4. Finally pick out the social features that you want to add to your site.  This list can be long such as the following and I am sure you can name a few more.

  • Blogs
  • Wikis
  • RSS
  • Tagging
  • Social Networking
  • Podcasting / Online Video
  • Mashups
  • Online Presence and IM
  • Activity Streams
  • Social Search
  • many more…

5. Now that you know what you need, pick out the right tools to solve your problem, if all you need is a blog for an Internal Communication from you CEO then you know the tools to use.  Otherwise add components as needed, but just keep in mind performance as it grows to a large scale.

Go about each problem with this same process and you will build the correct solution to the problem that you have.  The real value in social applications is the content that you surface either through roll ups based on a user or data mining.  Either way you need to start with a problem that you can solve.

I look forward to what Joel thinks in November and hopefully it will continue to help the Social cause. =)

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Check that a user has a SharePoint MySite

First follow the steps to create a console application for working with SharePoint 2007 Social Computing features

Now that you have your application ready to go you can display users that already have a MySite using the code below.

Display Users that have a MySite

//Get the site associated with the users
using (SPSite spSite = new SPSite(@http://localhost))
   //Create the server context because you are in a console application
   ServerContext siteContext = ServerContext.GetContext(spSite);
   UserProfileManager pmManager = new UserProfileManager(siteContext);
   foreach (UserProfile spUser in pmManager)
      if (spUser.PersonalSite != null)
         using(SPSite personalSite = spUser.PersonalSite)
            //Use SPSite like a normal site
            Console.WriteLine("personalSite.Url: " + personalSite.Url); 

You can see that once you have the site you could use it to check document libraries or any other action you would perform on an SPSite.

Addition Resources

sharepoint-pro For an in-depth look at the API and programmatically using the Social Computing features of SharePoint 2007 check out chapter 8 of Professional SharePoint 2007 Development

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Create MySites using C# and the SharePoint 2007 object model

When using MySites it is good to know that MySites are created on an as needed basis, this is to save disk space and resources.  There are times when you might want to create a number of MySites before users go to them the first time.  We will look at how to do that using C# code and the SharePoint object model.

NOTE: This console application assumes you have the correct permissions such as an administrator and is running on a machine that has the SharePoint object model.

Create Console Application to host MySite Code

To automatically create users MySites ahead of time using the SharePoint object model you can simply create a console application.

  1. Click File->New->Project, then select Console Application from the list of templates.
  2. Next add a reference to the following assemblies
    • Microsoft.SharePoint
    • Microsoft.Office.Server

Add MySite C# Code

Now that you have your application to run the code, you will use two major objects

  • Microsoft.Office.Server.UserProfiles.UserProfile – namely you will use the method CreatePersonalSite().
  • Microsoft.Office.Server.UserProfiles.UserProfileManager – this object is used to get each user.

The code to create the sites is as follows, just add it to your console application and make changes as needed.

//Get the site associated with the users
using (SPSite spSite = new SPSite(@http://localhost))
    //Create the server context because you are in a console application
    ServerContext siteContext = ServerContext.GetContext(spSite);
    UserProfileManager pmManager = new UserProfileManager(siteContext);
    //Loop through all of the users to create sites for
    string strUserName = "devcow\\brendon";
    if (pmManager.UserExists(strUserName))
        UserProfile spUser = pmManager.GetUserProfile(strUserName);
        if (spUser.PersonalSite == null)
            Console.WriteLine("This may take a few minutes...");

Addition Resources

sharepoint-pro For an in-depth look at the API and programmatically using the Social Computing features of SharePoint 2007 check out chapter 8 of Professional SharePoint 2007 Development

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

Common Problem MySite and MyLinks don’t show up

I have seen this as a common problem that MySite and MyLinks don’t show up on a portal.  Let’s take a quick look at why they may not be showing up.

Step 1 – Try to look at configuration

The first step is checking to make sure the Shared Service Provider is set up. 

To do this:

  1. Go to http://centraladmin.devcow.loc/_admin/managessp.aspx
  2. Make sure that the Portal is listed under the Shared Service you have set up with MySites
  3. Next confirm that the settings of the Shared Service Provider are correct, this will be the web application and the MySite Location Url as well as any permission accounts.
  4. Once you have checked the Shared Service, check inside of the Shared Service under Personalization services permissions that NT AUTHORITY\Authenticated Users has both Personal Features, Personal Site rights.

Step 2 – Understand the Link controls and locations better

If none of that works, there could be a permission issue or a problem deploying the MySite features.

Let’s look at what the links actually are on the page and how they show up and don’t show up. 

You might have guessed they are just delegate controls!  So there you have 2 of the at least 3 delegate controls on the page.  Check this reference out SharePoint Delegate Controls in SharePoint 2007 - Best Practices.

The MySiteFeatureElements.xml file simply has 3 delegate controls that are turned on and provide the link functionality needed.

<Control Id="GlobalSiteLink1" Sequence="100" ControlSrc="~/_controltemplates/mysitelink.ascx" />
<Control Id="GlobalSiteLink2" Sequence="100" ControlSrc="~/_controltemplates/mylinks.ascx"/>
<Control Id="ProfileRedirection" Sequence="100" ControlSrc="~/_controltemplates/mysiteredirection.ascx"/>

Step 3 – Check that the MySite Feature is Activated

If you still don’t see the MySite link make sure that this feature is activated.  To do this you can download the stsadm commands from Gary Enumerate Features.  Then simply run this command with your central administration website and validate that the feature with Title My Site (the GUID is 69CC9662-D373-47fc-9449-F18D11FF732C) is activated.

Mine looked like this from the stsadm command

stsadm -o gl-enumfeatures -url http://centraladmin.devcow.loc -showhidden

71. MySite: My Site (Farm - Active)

Step 4 – Come up with other ideas or try any other option

If that still doesn’t work it could be permission issues with the users or with a connection to your Shared Service provider.

Also you can try connecting the site to a portal location, check out this blog entry

Set up SharePoint sites with user profiles and SSP correctly

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati

SharePoint vNext/Office 14 is now announced as SharePoint 2010

The big news today is that the next version of SharePoint has been announced and is now called Microsoft SharePoint 2010.


Check out the full post on the SharePoint Team Blog - http://blogs.msdn.com/sharepoint/

Microsoft SharePoint “14” is now Microsoft SharePoint 2010

Digg It!  StumbleUpon  Reddit  Del.icio.us  NewsVine  Furl  BlinkList  Ma.gnolia  Technorati