Awarded Microsoft MVP 2015 for SharePoint Server

620MVP_Horizontal_FullColor

I’m happy to announce that I’ve been awarded Microsoft MVP 2015 for SharePoint Server. This is my third year as a MVP and it continues to be an amazing privilege to be recognised for my continued contributions. October 1st is one of the those days like any other until about 3pm UK time when every Hotmail email notification brings with it equal measures of excitement and nervousness Smile. Once the email below arrives it’s time to crack on with even more amazing new things.

image

The past year has been one of many new opportunities and many great exciting new technologies. Those who have supported me deserve a special mention.

My little boy and girl who don’t quite understand SharePoint yet, but definitely give me all the reasons I need to keep trying.

Steve Smith whose support this year has been invaluable as I embark upon my own business AddIn365. Thanks Steve Smile

Microsoft DX for inviting me to speak at London Technology Week about the Office 365 Unified API. It was a real pleasure presenting on Microsoft’s behalf.

The event organisers for SUGUK, Evolutions London (Steve Smith and Combined Knowledge, Paul, Ben and Nigel) for providing me opportunities to present and be part of the event teams.

Microsoft peeps like Chris Johnson for his invaluable help, Jeremy Thake for his technical input, Dana Wikan for sorting out a number of important things.

I’m looking forward to another great year!

Awarded Microsoft MVP 2013 for SharePoint Server

620MVP_Horizontal_FullColor

Literally minutes before leaving work on 1st  October I received the following email:

MVPEmail

This left me utterly speechless, which is not something that normal happens to me. After re-reading it about ten times the news finally sank in. I’m ecstatic that Microsoft have awarded me the MVP award for my contributions to the SharePoint community.

So I wanted to share a number of thank you’s for everyone who has supported me along the way.

Most importantly my beautiful wife who has supported my many many hours chained to my PC in the office at home beavering away on CKSDev or Presentations instead of snuggling up in front of a movie on the sofa. Without her understanding and support I definitely wouldn’t have found time to make the contributions I have. Also sitting through many hours of practice presentations before my speaking events.

Matt Smith for four years ago helping me to understand how to start to become involved in the SharePoint community.

Waldek Mastykarz for his friendship, support and advice and those midnight coding adventures before releasing a new version of CKSDev. Thanks buddy 🙂

Chris O’Brien for his friendship, advice and putting up with some seriously deep technical conversations over the years when I’m trying to get my head around a SharePoint feature and Visual Studio API.

The CKSDev team past and present, Wouter, Matt, Waldek, Todd, Paul, Carsten and Wictor who all at some point over the last few years have advised, written some cool code and generally helped ensure CKSDev was meeting everyone’s needs.

The event organisers for SUGUK, Evolutions/Best Practices London, SPSUK and SPSNL (Steve Smith and Combined Knowledge, Brett, Tony and Nick, Mirjam and the DIWUG peeps) for providing me opportunities to present and be part of the event teams.

My employers Content and Code and especially people like David Bowman and Tim Wallis who gave me time and support to contribute to the community. Not to mention Salvo di Fazio, Tristan Watkins and Ben Athawes.

To conclude what has been quite an emotional post to write I just want to say thanks to everyone in the community and MVP community who have helped me all these years. There are too many to list, but you know who you are 🙂

CKSDev for Visual Studio 2012 version 1.2 Released

CKSLogo
The 1.2 version has just been released. It contains loads more features you had available in VS2010. All of the other features will be coming over the coming weeks as personal time allows. As you can imagine it’s no mean feat to port all of the existing features and support multiple SharePoint versions. The code base is also on a diet as code bloat was getting a little bit crazy as the tools evolved over the past 4 years.
 
You can find CKS: Development Tools Edition on CodePlex at http://cksdev.codeplex.com.
 
Download the extension directly within VS2012 from the extension manager or visit the Visual Studio Gallery.
We’re still looking for extension ideas so please post in the CKS Dev Discussions anything you think would make life better for SharePoint developers.
 

CKS Dev Feature highlights

Environment:
  • Copy Assembly Name – From the context menu of a SharePoint project you can now get the full assembly name copied to the clipboard.
  • Cancel adding features – Automatic cancellation of new SPIs being added to features. You can turn this off via the CKSDev settings options.
  • Find all project references – Find where a SPI/Feature is being used across the project from the project context menu.
  • Activate selected features – Setup which package features you want to auto-activate from the project context menu.
Exploration
  • No new features
Content
  • ASHX SPI template – Produces a full trust ASHX handler.
  • Basic Service Application template – Produces a full trust basic service application.
  • Banding SPI Template – Produces a full collection of SP2010 branding elements baseline items.
  • Contextual Web Part SPI template – Produces a contextual ribbon enabled web part.
  • WCF Service SPI template – Produces a full trust WCF Service endpoint.
  • Web template SPI template – Produces a SP2010 web template.
Deployment
  • Improvements to Quick Deploy – Performance improvements with a switch from calling into GACUtil.exe and returning to direct GAC API calls to improve performance. Also removal of ‘custom tokenisation’ for now until a more performant version is tested.
  • Quick deploy GAC/Bin deployment configuration – A deployment configuration which runs the pre-deployment command line, recycles the application pool, copies the assemblies to either the BIN or GAC depending on their packaging configuration, and runs the post-deployment command line.
  • Quick deploy Files deployment configuration – A deployment configuration which runs the pre-deployment command line, recycles the application pool, copies the SharePoint artefacts to the SharePoint Root, and runs the post-deployment command line.
  • Quick deploy all deployment configuration – A deployment configuration which runs the pre-deployment command line, recycles the application pool, copies the assemblies to either the BIN or GAC depending on their packaging configuration, copies the SharePoint artefacts to the SharePoint Root, and runs the post-deployment command line.
  • Upgrade deployment configuration – A deployment configuration which runs the pre-deployment command line, recycles the application pool, upgrades the previous version of the solution, and runs the post-deployment command line.
  • Attach To IIS Worker Processes Step – Which attaches the debugger to the IIS Worker process during deployment.
  • Attach To OWS Timer Process Step – Which attaches the debugger to the OWS Timer process during deployment.
  • Attach To SPUC Worker Process Step – Which attaches the debugger to the User Code process during deployment.
  • Attach To VSSPHost4 Process Step – Which attaches the debugger to the Visual Studio deployment process during deployment.
  • Copy Binaries Step – Copies the assemblies during deployment to either Bin or GAC.
  • Copy To SharePoint Root Step – Copies the files during deployment to the SharePoint Root.
  • Install App Bin Content Step – Copies the files to the App Bin folder during deployment.
  • Install Features Step – Installs the features during deployment.
  • Recreate Site Step – Recreates the deployment targeted site during deployment.
  • Restart IIS Step – Restarts IIS during deployment.
  • Restart OWS Timer Service Step – Restarts The SharePoint Timer service during deployment.
  • Upgrade Solution Step – Upgrades the solution during deployment.
  • Warm Up Site Step – Calls the site to get SharePoint to warm it up during deployment.
To see more details and the full feature list visit http://cksdev.codeplex.com/documentation.
 

Visit the CodePlex site for more information about the features and release.

Share and Enjoy and thanks for the continued support

CKSDev for Visual Studio 2012 version 1.0 Released

CKSLogo

Since 2009 CKSDev has been available to SharePoint 2010 developers to aid the creation of SharePoint solutions. The project extended the Visual Studio 2010 SharePoint project system with advanced templates and tools. Using these extensions you were able to find relevant information from your SharePoint environments without leaving Visual Studio. You experienced greater productivity while developing SharePoint components and had greater deployment capabilities on your local SharePoint installation.

The Visual Studio 2012 release of the MS SharePoint tooling supports both SharePoint 2010 and 2013. Our aim for CKSDev was to follow this approach and provide one tool to support both SharePoint versions from within Visual Studio 2012.

The VS2012 version has just been released. It contains the core quick deployment and server explorer features you had available in VS2010. All of the other features will be coming over the coming weeks as personal time allows. As you can imagine it’s no mean feat to port all of the existing features and support multiple SharePoint versions. The code base is also on a diet as code bloat was getting a little bit crazy as the tools evolved over the past 4 years.

You can find CKS: Development Tools Edition on CodePlex at http://cksdev.codeplex.com.

Download the extension directly within VS2012 from the extension manager or visit the Visual Studio Gallery.

We’re still looking for extension ideas so please post in the CKS Dev Discussions anything you think would make life better for SharePoint developers.

CKS Dev Feature highlights

Environment:
  • Copy assembly name so no more need to use reflector to get the full strong name.
Exploration
  • New Server Explorer nodes to list feature dependancies, site columns, web part gallery, style library, theme gallery.
  • Enhanced import functionality for web parts, content types, themes.
  • Create page layout from content type (publishing).
  • Copy Id.
Content
  • Coming Soon…
Deployment
  • Quick deploy to copy artefacts into the SharePoint root without the need for a build.
  • Deployment steps Coming Soon..

To see more details and the full feature list visit http://cksdev.codeplex.com/documentation.

Visit the CodePlex site for more information about the features and release.

Share and Enjoy and thanks for the continued support

SUGUK 1st March 2012

LondonSUGUK

So last night saw the return of the London SUGUK.

Matt Taylor has stepped down as co-coordinator for London and I want to thank Matt for all his efforts and establishing such a great user group.

So Steve Smith started proceedings with some ITPro and End User snippets. Starting with a small 3 slide long PowerPoint he dived straight into some demos.

The demos began with some SMTP love, must admit most of this talk of AD etc went a little over my head so frantic note taking was the order of the day. There were some neat tips about delegating administration via a customised MMC console and how to get around some production system challenges regarding SharePoint self-managing AD stuff.

Next demo came down to SQL Server databases and the fact that SP doesn’t always do the best defaults. I learnt some nice things about pre-creating a SQL database then using Central Admin to ensure that defaults were better suited to a production scale. Also the points about database growth were very interesting and I could see how these could be quickly leveraged to improve performance.

Finally was a quick run through of some Office functionality connecting search into the Office application and how to configure ‘save as’ links from the MySite UPA.

Then a short break in proceedings gave me just enough time to connect up my laptop and hope it played nice with the projector…. something about this W520 hates projectors….

Breathing a sigh of relief I launched into a Dev centric topic of Extending the Activity Feed within SP2010. The demo source code can be downloaded from code download and the slides can be seen below.

Thanks again for Steve for inviting me to present as it’s always a pleasure dusting off Visual Studio and sharing something cool with the SUGUK. Open-mouthed smile

Speaking at the London SharePoint User Group

LondonSUGUK

The London SharePoint user group kicks off 2012 with Steve Smith and I presenting.

Session 1

 

SharePoint Administration – I always wondered what that was for.

By Steve Smith – Combined Knowledge

In this session Steve is going to help everyone understand some of the quirks and options that we see in SharePoint and what they do/break and how we then go about building the Infrastructure for it. An ideal session for SharePoint Admins and Developers alike. Plus he will throw in some Power user stuff to give everyone something to take away.

Session 2

 

Extending the SharePoint 2010 activity system

By Wes Hackett – Content and Code

Amongst the most anticipated new features of SharePoint 2010 were the social activity feed features which bring colleague activity as a feed to an individual. Natively the activity feed displays user profile changes, tagging and notes activity. Microsoft provides an API to extend the activity feed system with your own content. With this extensibility API it is possible to extend this to include custom activities. In this session we’ll explore the native system and the elements needed to extend it.

When and where?

March 1st

Start Time: 6PM
Finish: 9PM

After the event in a local watering hole.

Unfortunately there may not be food or beverage available for the meeting so please bring any drinks with you just in case.

Location:
Cavendish Conference Centre
22 Duchess Mews
London W1G 9DT

http://www.cavendishconferencevenues.co.uk/west-end-conference-venues/location/

Sign up… http://suguk.org/forums/thread/28133.aspx

See you there….Open-mouthed smile

SharePoint Saturday 2011

SPSUK

Saturday 12th November saw the 2011 SharePoint Saturday at Nottingham’s Conference Centre. Another great event organised with so many quality speakers and companies in attendance.

I presented a session on Social Intranet and the slides can be seen below. I hope everyone found the session useful Smile I certainly enjoyed presenting to such an interactive audience.

Just goes to thank everyone involved in the organisation and planning for the event, it was awesome again SmileSmile

Ratings and SharePoint Search better together

SearchResultsWithRatings.png

SharePoint 2010 introduces a new feature to allow a user to rate content within the sites. Depicted by five stars the user can rate content and these ratings are collated to provide the average rating for the item. Displaying content based on ratings can assist users determining the quality of content easily. Ratings will also help content authors understand which content is considered to be higher quality by the readers.

The native rating user interface is a collection of five stars. After a user selects the desired rating it is submitted and averaged with the other ratings for the content. The ratings are processed by a timer job process so there is some small delay.

By default ratings can be configured on lists and libraries and also added to page layouts. They also get fed into the Activity Feed system as rating activities. These add some great user focused features, but in my opinion there is a missing piece.

Search….

So I got thinking having seen some articles about additional search managed properties. Seeing as the average rating and rating count are both columns added to the list/library I decided to investigate whether it was possible to index and therefore present the rating within the search results.

So here the journey of rating discovery begins…

Adding ratings to lists or libraries

 

Before we can investigate getting ratings into the search experience we need to get rating up and running on some content. So lets go ahead and create a document library as our demo content. Upload numerous documents into the library (at least five) so that we have some content to rate.

So that’s the content ready for rating so what next?

  • Browse to the library.
  • From the ‘Library’ ribbon click the ‘Library settings’ button.
  • Under the general heading click the ‘Rating settings’ link.
  • Under the ‘Allow items in this list to be rated’ click yes and ‘Ok’.

This adds two columns to the library. The ‘Rating (0-5)’ and ‘Number of Ratings’. By default the Rating column is added to the view. You can also add the number column to the view if you want (more of that idea later). It should also be noted that these columns will be added to any bound content types as well.

That’s prepared the content for rating so now go ahead and click some ratings. For my demo I logged in as several users and rated the documents with ratings to demonstrate several of the number of stars.

DocLibRating

 

Timer job

 

As mentioned earlier the ratings are calculated via a timer job called {user profile SA name} – Social Rating Synchronization Job. This job aggregates the ratings. To speed up the development you can manually execute the timer job to cause the rating aggregation.

RatingJob

 

Search Managed Properties

 

So with the native rating functionality function configured and ready for indexing it’s time to swing over to the farm Search Service Application to perform the steps needed to index our ratings.

As with any element within SharePoint content for it to get indexed it needs to be a managed property. By default most common content fields are already configured. Ratings however are not setup in this way. So the first step is to create these managed properties for the ‘Rating (0-5)’ and ‘Number of Ratings’ columns.

 

AverageRating Managed Property

 

To create the average rating property map the ‘ows_AverageRating(Decimal)’ as shown in the screenshot below.

AverageRatingProp

 

RatingCountProp

Once the properties are configured a index of the content source is required. Browse to the ‘content sources’ and start a crawl. While this is whizzing along in the background the modifications to the search results web part can be made.

 

Search Results web part

 

The standard Search Results web part provides the view of the content found matching the query term.

DefaultSearchResults

As you can see there are no ratings information displayed. So we’re going to modify the results web part to include the rating and rating count below the content description.

 

Adding the columns to fetched data

 

To be able to show the AverageRating and RatingCount results they need to be added to the ‘Fetched Properties"’ xml within the web part settings (the circled element in the screen shot below)

AddingColumns

Modify the xml to add the new columns to it. The example below lists the new columns last, you can copy this or append your existing list.

<Columns>
<Column Name="WorkId"/>
<Column Name="Rank"/>
<Column Name="Title"/>
<Column Name="Author"/>
<Column Name="Size"/>
<Column Name="Path"/>
<Column Name="Description"/>
<Column Name="Write"/>
<Column Name="SiteName"/>
<Column Name="CollapsingStatus"/>
<Column Name="HitHighlightedSummary"/>
<Column Name="HitHighlightedProperties"/>
<Column Name="ContentClass"/>
<Column Name="IsDocument"/>
<Column Name="PictureThumbnailURL"/>
<Column Name="PopularSocialTags"/>
<Column Name="PictureWidth"/>
<Column Name="PictureHeight"/>
<Column Name="DatePictureTaken"/>
<Column Name="ServerRedirectedURL"/>
<Column Name="AverageRating"/>
<Column Name="RatingCount"/>
</Columns>

Apply the changes to the web part. Now the data is coming back within the search result set.

 

Modifying the XSLT

 

Next step is to get these properties displaying.

XSLEdit

I’m not that skilled in front end coding so this will demo the concept and I’m sure those more creative design peeps will add their own flare to the visuals Winking smile

So I’m choosing to inject the rating and number of raters just after the title and description. Therefore locate the ‘<div class="srch-Metadata2">’ div to inject the new code. Below is a snippet from the section and includes the calls to the new templates.

<div class="srch-Metadata2">

<xsl:call-template name="stars">
<xsl:with-param name="starCount" select="averagerating"/>
</xsl:call-template>
<xsl:call-template name="ratingcount">
<xsl:with-param name="ratingCount" select="ratingcount"/>
</xsl:call-template>
<br/>

<xsl:call-template name="DisplayAuthors">
<xsl:with-param name="author" select="author" />
</xsl:call-template>…..

As you can see I’ve introduced two new templates, one for each property.

Before we dive into the templates there is something important to share. To improve performance most visual images displayed in css sprite format. This means that css class positions the images to display the required section from a large map of images. The rating control is no different and uses the sprite image found ‘/_layouts/Images/Ratings.png’

 

Ratings

 

So the template to render the stars needs to make use of the same native css classes.

The following is the star rating template. It contains the logic to read the rating value and generate the relevant css positioned rating image.

<!– The Stars displaying –>
<xsl:template name="stars">
<xsl:param name="starCount"/>

<span class="ms-currentRating">
<!– Set the correct css sprite for the number of stars –>
<xsl:choose>
<xsl:when test="$starCount &gt;= 4.5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_5" alt="Current average rating is 5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 4.5 and $starCount &lt; 5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 4.5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_4_5" alt="Current average rating is 4.5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 4 and $starCount &lt; 4.5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 4 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_4" alt="Current average rating is 4 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 3.5 and $starCount &lt; 4" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 3.5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_3_5" alt="Current average rating is 3.5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 3 and $starCount &lt; 3.5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 3 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_3" alt="Current average rating is 3 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 2.5 and $starCount &lt; 3" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 2.5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_2_5" alt="Current average rating is 2.5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 2 and $starCount &lt; 2.5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 2 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_2" alt="Current average rating is 2 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 1.5 and $starCount &lt; 2" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 1.5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_1_5" alt="Current average rating is 1.5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 1 and $starCount &lt; 1.5" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 1 star.</xsl:text>
</xsl:attribute>
<img class="ms-rating_1" alt="Current average rating is 1 star." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:when test="$starCount &gt;= 0.5 and $starCount &lt; 1" >
<xsl:attribute name="title">
<xsl:text>Current average rating is 0.5 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_0_5" alt="Current average rating is 0.5 stars." src="/_layouts/Images/Ratings.png" />
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="title">
<xsl:text>Current average rating is 0 stars.</xsl:text>
</xsl:attribute>
<img class="ms-rating_0" alt="Current average rating is 0 stars." src="/_layouts/Images/Ratings.png" />
</xsl:otherwise>
</xsl:choose>
</span>

</xsl:template>

 

As well as the rating we’re adding the number or people who have rated. This gives the consuming user a decent idea of the level of interest the item has had. The following is the rating count template.

<!– The Rating Count displaying –>
<xsl:template name="ratingcount">
<xsl:param name="ratingCount"/>

<xsl:choose>
<xsl:when test="$ratingCount = 1" >
<xsl:text>Rated by 1 person.</xsl:text>
</xsl:when>
<xsl:when test="$ratingCount &gt;= 1" >
<xsl:text>Rated by </xsl:text>
<xsl:value-of select="$ratingCount" />
<xsl:text> people.</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Not rated.</xsl:text>
</xsl:otherwise>
</xsl:choose>

</xsl:template>

 

With all these changes applied to the web part settings, save and publish the page and you should find the results now look something like the following screenshot.

SearchResultsWithRatings

Ok so that is pretty cool, users can now see content and peoples ratings of them to assist in finding the right things. It’s not quite the whole story on all the cool things to display, refiners are the other.

 

Refining by Ratings

 

With the ratings being displayed in the results it got me thinking that having a refiner for the rating value and number of people who had rated.

So the native refinement web part allows the customisation of the refiners via its settings. One important point to note is that the web part settings will have no effect unless the following check box is unchecked.

RefinerCheckBox

The Rating refiner is below.

<Category Title="Rating"
          Description="The average rating for the item." 
          Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator"
          MetadataThreshold="5"
          NumberOfFiltersToDisplay="4"
          MaxNumberOfFilters="0"
          SortBy="Frequency"
          SortDirection="Ascending"
          SortByForMoreFilters="Name"
          SortDirectionForMoreFilters="Ascending"
          ShowMoreLink="True"
          MappedProperty="AverageRating"
          MoreLinkText="show more"
          LessLinkText="show fewer"/>

The Number of Ratings refiner is below.

<Category Title="Number of ratings"
          Description="The number of ratings from people for the item."
          Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator"
          MetadataThreshold="5"
          NumberOfFiltersToDisplay="4"
          MaxNumberOfFilters="0"
          SortBy="Frequency"
          SortDirection="Ascending"
          SortByForMoreFilters="Name"
          SortDirectionForMoreFilters="Ascending"
          ShowMoreLink="True"
          MappedProperty="RatingCount"
          MoreLinkText="show more"
          LessLinkText="show fewer"/>

Add these to the XML property of the web part.

RefinerXml

Save the page and you end up with the refiners for ratings and number of ratings available.

RefinersAndSearch

Going the extra step with the refiners

So the initial refiners display any found values. A nice proof of concept would be to add some filter groups to group rating values together into Bronze, Silver, Gold instead of 0-5. That is possible with the refiner property grouping using ranges.

Wrap-up

Hopefully this no-code solution adds some extra sweetness to the use of ratings and search in equal measure.

A status by any other name would still smell as sweet

Status
While investigating status updates from within the Activity Feed it was necessary to understand the native social status update logic. The aim was to allow commenting a-la Facebook against any of the activity feed events in the feed. This article presents the information learnt about the native status update logic.
 
An example Facebook comment:
 
Status1
 
 
Fundamentally this could be achieved by adding a new ‘Social Comment’ against that item, I suspect there will be some challenges with this approach like the fact it would generate ‘Note Board’ activity events by default. Before diving into that I thought it would be a sound idea to understand more about where the data comes from for each activity type. This article covers the Profile Status.
 
In my previous post about the Activity Templates you can find the template specific for the ‘Status update’
Keyname:
"ActivityFeed_Status_Message_SV_Template"
Template:
{Publisher} says "{Value}".
 
This is used to display the Status update to your colleagues.
 
So first up I wanted to understand what happens when you type a new status.
 
Status2
 
 
The control which is used is the ‘Microsoft.SharePoint.Portal.WebControls.StatusNotesControl’. This control renders the required input box and references for the client side script to make this pretty seamless for the end user. Under the bonnet it sets a property called ‘SPS-StatusNotes’ against the current user’s profile.
 
Status3
 
 
Looking at the profile property several take-away information nuggets are worth noting.
  • The default max length for a status update is 512 characters
  • The privacy setting is ‘Everyone’
  • The ‘show in the profile properties section of the users profile page’ is unchecked. (If checked the value would have appeared below ‘Development’ in the screenshot above)
  • The property is not configured to be indexed by Search. This could be useful to enable if you wanted to show this value within the results page or build a component to return these results using search.
Once committed the ‘People’ search incremental crawl captures this change marker and the next time the Activity Feed timer job executes it will generate the status update event.

Office 365 User Group–26th September 2011

O356UGUKLogo
The launch event for the UK Office 365 user group. Hosted down at Microsoft’s Victoria offices the first event saw a collection of MS staff, Partners and a small number of Office365 customers arrive to kick of this new community.
You can follow the user group on Twitter on the #o365uguk or #o365ukug hash tag. I’m sure one was the proposed tag but both sprang to life.
Arno Nel (MVP) is the group coordinator

Session One

Session one kicked of with Steve Green from Microsoft introducing the user group. I’ve had the pleasure of working with Steve with one of my enterprise clients discussing SharePoint 2010 cloud offerings so I was looking forward to his presentation.
Steve’s session covered the transition from BPOS-S and Office365. We learnt that about 55,000 seats globally are on BPOS-S and Microsoft plan to migrate these to Office365 by September 2012. One interesting nugget was that Microsoft will only discuss Office365 dedicated usage at around 30,000 seat level.
The customer is notified 14 days prior to their tenant being migrated and have the option of a postponement of up to 30 days. Once notified the tenant is then in a situation where parts are being replicated and migration syncing is in progress, effectively the point of no return.
Although widely publicised it was mentioned that Office 2003 and IE6 are not supported or the OCS client connecting to the Lync servers. To be fair no-one in the front end teams will miss IE6 Winking smile.
During the transition Microsoft are responsible for the following:
  • Informing the customer, although there are some challenges with the email communications here where unattended mailboxes this may go missing. MS are in the process of resolving this problem.
  • Scheduling the transitions.
  • Providing information and guidance.
  • Providing an uninterrupted mail service, this is something that may prompt for close and reopen the mail client but the actual mails will be uninterrupted.
  • Actually migrating all the data, this is a big plus as it doesn’t require engaging an external provider to move from BPOS to Office365.
During the transition the customer is responsible for the following:
  • Providing the end user training and communications. An important point to note is that all the data that the organisation wants migrated should be already in SharePoint. This is again the responsibility of the customer.
  • Updates required on the client hardware or software.
  • Configuration of domain DNS settings for Outlook and Lync.
  • Optional – Deploying ADFS role, Exchange Server 2010 CAS Role
Steve’s advice was to run the pre-deployment readiness tool Smile
One other nugget of information I found useful that following a transition all the sites would be running in v3 UI mode. This means the UI is in 2007 mode and there are opportunities here for v4 implementations to bring in the latest UI features.

Session Two

Session two was presented by Andy Hutchins from Avanade.
And covered a collection of things to consider before you start:
  • The business case is not always obvious.
    • Sometimes IT is not the organisations core business.
    • They don’t always have a corporate roadmap which is aligned with cloud strategies.
    • It can be hard to put a value on quantifiable benefits.
  • Not everybody loves the cloud
    • IT are normally the buyers and they can have special views about cloud implementations. Worrying about internal skills, considerations about job security.
    • Lawyers will assess the service agreement with a fine tooth comb.
  • Building the coalition
    • Get the IT group on board.
    • Get Information Security involved.
    • Get the Internal Communications team involved so they can help the launch.
  • Are the organisations service partners ready?
    • Can all the existing service providers work in this new world?
Once you have approval for an Office 365 implementation what to consider next?
  • Identity, Identity, Identity.
  • Find the right robust champion inside the organisation.
  • Remember all the things that normally happen on a project.
  • So what is different?
    • The tools used.
    • Customer responsibilities.

Session Three

Session three was presented by Any Clay of 21Apps fame. Ant’s slides are below but here are some of the key points:
  • What is a Hybrid Organisation
    • A collection of Microsoft Research from 2010.
    • About the people, technology and workplace environment.
  • Why is it relevant?
    • Work is still based on a factory model mentality.
    • Knowledge work doesn’t follow any really well defined global process.
    • Economic pressures.
    • Cultural shifts and how the company gets business.
    • Physical constraints.
    • Innovations like establishing the best teams and attracting the best people.
  • Where does Office 365 fit in?
    • The cloud when it went offline had no-one fighting fires internally, therefore a cost saving internally.
    • Focus on your business not your servers, network infrastructure.
    • No-one really cares about the tin….. well outside the Server guys…
    • Reducing training needs and costs.
    • Don’t forget about outside the head office.
    • Allows different companies to locate in the same physical location without the complexity of hardware.
    • Can be stood up and functioning very quickly.

Wrap-up

I got a lot out of the sessions. It’s great to see such investment in Office 365 and helping partners, ISV’s get information about the offerings and how to leverage them.