Given the tightrope-walking aspect it represented for me, and given that it was the afternoon of the third day, choosing a demo-heavy offering from the Dev track to end my European SharePoint Best Practices Conference experience with might not have been the wisest course. Fortune favors the bold though, right? So let's see if I can do some measure of justice to Matthew McDermott's session on developing social applications with SharePoint 2010.
Matthew acknowledged upfront that "SharePoint and social has been problematic throughout its history … the nimbleness of the Internet has outpaced Microsoft's ability to keep up with the new products coming out." Matthew went on to say, however, that "With 2010, as we go to extend the My Site, it has gotten significantly easier … out-of-the-box you get a lot of help." For example, "Users can fill in managed metadata or we can control it through taxonomy."
The User Profile Service "is all about me, it keeps track of me and, because I can extend it, it allows me to add additional properties." What's new in 2010? For one, there are now Profile Subtypes "to group users into any type of appropriate role for your organization and associate metadata" with those roles accordingly. The downside is that they're "not part of UP import" and it "has to be done manually." Also new in 2010 are Organizational Profiles. Clearly struggling for a polite manner of describing this feature, Matthew settled on saying, "They are … version one." Explaining that there's no UI to view, and no import functionality, it is Matthew's feeling that "You're better off building it yourself."
Matthew's first demo involved a "gotcha" involving an exception that gets thrown when you attempt to get a User Profile in Silverlight. This occurs because the "deserializer in Siverlight finds GUID type and doesn't know what to do with it." Matthew has blogged the issue (and the code necessary to implement the workaround), so do not pass "go" and proceed directly to Matthew's post, Silverlight and SharePoint User Profile Service GUIDs for the juicy details.
Matthew's second demo involved taking action on change, and he candidly admitted that "I totally ripped off this code from Andrew Connell." The code in question tracks changes in a list with a timer job running in background. Once a change is detected, the list item is then added to a centralized list. The "beauty here is that since it's a SharePoint list," you can set an alert to notify interested parties of changes since "the very next question you're going to be asked is 'Can I get an email when something changes?'"
For his third demo, Matthew showed how to consume external social data so that, for example, Twitter updates can be brought inside the firewall and surfaced on the My Site. Matthew explained that "The way that we do that is by adding attributes to User Profile to track the information we're interested in." On the UP application, properties are added to track social data (i.e., Twitter handle) and if a user enters a handle, they'll have opted in to show their tweets on their My Site. This is accomplished with the addition of the appropriate fields in Central Admin.
For his final demo, Matthew turned his attention to Activity Feeds, pointing out that "You can choose to have a filtered view by user." His demo showed how to create a custom timer job to "Either pull items out of a[n external] source, or have the target application push the list item into a list for us." Talking through the custom dev approach prior to the demo, Matthew described the process in three steps:
- "Setup (Create Activity Application, Type and Template)
- Phase 1 – Gather and Stage (Gather external activity events, Accept inputs from external sources, Stage the events in a central list or database)
- Phase 2 – Publish (SharePoint timer job reads the staged data and publishes events)"
Matthew cautioned that when naming your Activity Application, "name it wisely" since the name is surfaced in the UI. Proceeding to the demo, Matthew showed that a just-published tweet is pulled into the My Site and, conversely, that a just-published My Site status update is immediately pushed to LinkedIn.
In summary, Matthew bottom-lined his session saying that to be successful when building these kinds of applications, best practices include: "Plan the User Profile Properties and Subtypes; Use Timer jobs for updates and processing; Create a proxy you control for external services; Ask the right question; and Plan for Multilingual."
Read our complete coverage of the European SharePoint Best Practices Conference:
- Matthew McDermott on 'Developing Social Applications with SharePoint 2010'
- Day 3 from the Bamboo Booth
- 'Preparing for SharePoint 2010 and Real World Experiences' with Paul Grimley
- Daniel McPherson on 'The Wisdom in Your Crowds'
- Michael Noel on 'Planning Extranet Environments with SharePoint 2010'
- ‘Understanding the Steps Necessary for Building an Information Architecture for your Organization’ with your Host, Bill English
- Matt Groves Asks 'Office365, is it a Viable Option for You?'
- Symon Garfield Shares 'The Secrets of Successful Enterprise Social Computing with SharePoint 2010'
- 'SharePoint in the Cloud: The Good, the Bad, the Ugly' with Paul Turner
- Day 1 from Best Practices London: SharePoint and Celebrity Sightings!
- 'Best Practices for Organizing Documents in SharePoint 2010' with Agnes Molnar
- 'SharePoint 2010 Developer's Mythbusters' with Mirjam van Olst
- BPCUK Keynote by Chris Johnson, Microsoft Senior Technical Product Manager, SharePoint