The SharePoint in the Cloud – SharePoint as a Service

The cloud debate continues to rage in the offices of many business and IT executives.  They look for it as a way to control or reduce costs and to better focus on their core business functions instead of managing complex IT systems.  As a technologist though I see the cost benefit not just in dollars but in opportunity and the potential for the system to enable the organization to innovate and collaborate in ways they were not able to in the past.

I see plenty of value in SaaS for commodity systems, with email being a great example of that.  Email systems both large and small can be expensive to run and there can be very little difference in the service if it is run in house or in the cloud.  Is SharePoint a commodity system though?  Certainly some organizations are doing their best to not customize it.  Last year’s AIIM survey results reported many organizations underestimating the cost and effort to customization and integration which I’m sure will scare executives of any new implementations.  As a developer and integrator I have seen tremendous valued gained from implementations that are extended to work with other enterprise tools whether it is an ERP, HRIS, CRM, ECM or 3rd party BPM/Workflow systems.  The level of effort to implement and maintain those environments does need to be included in the decision process.  The cost is significantly higher than a vanilla SharePoint implementation so the value derived should also be measurably higher. 

If it is a plain vanilla environment then it is a great candidate for SaaS including MS Online.  The new “Sandbox” feature of SharePoint 2010 may help to provide a mechanism for minor customizations and an “App Store” that could benefit users of a hosted SharePoint environment.  This should definitely simplify the process for making some customizations possible. 

It will be interesting to see how the SaaS and hosted solutions evolve over the next few years and how they are perceived by organizations.  It will also be interesting to see if the Sandbox feature is made available to those services and what kinds of solutions are made available through that interface.

TriSPUg Dec Meeting – Microsoft FAST Search with Adam Morgan

Adam Morgan the Enterprise Search lead for Microsoft in the SE will be presenting on Microsoft FAST Search at the Triangle SharePoint User Group meeting on Tuesday December 1st at TEKSystems Raleigh. 

FAST is quickly getting a foothold in the Enterprise Search market and it should play an important role in many Enterprise SharePoint environments. 

I hope to see many of the locals there.

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.

Exposing Custom Web Services to the BDC

I recently had a lot of trouble getting some data exposed to the BDC.  I found the documentation pretty light and leading to a pretty frustrating experience.

In my case there are three scenarios:

Return All Records, No Finder – This one is pretty easy and it is clear that you need to return a collection of records. 

Return One Record, Specific Finder – This one is pretty simple as well and it is clear that you will get back a single record.

Return One Record, Finder – This one was the cause of all my trouble.  It seemed to me that if you are only expecting a single record then it could be defined as such.  Using BDC MetaMan I was able to generate a definition for all three types, and then able to import the definition into the BDC. 

Whenever I tried to use show the data BDC List web part I kept seeing an error.  In the ULS logs I found the following:

System.InvalidOperationException: Backend system adapter returned a structure incompatible with the corresponding metadata (MethodInstance, Parameter or TypeDescriptor)    

I of course concentrated on checking data types and matched up the web service to the definition file to make sure things were in line.  They matched perfectly, so this proved to be quite the hurdle.  Finally on MSDN I caught a reference to the error “a structure incompatible with the corresponding metadata” and making sure the Collection was specified correctly.  Even this reference did not specify that a collection was required.  We made a quick change to the web service’s returned data type and everything started working. 

So the moral of the story is… when using the BDC with anything but a Specific Finder it requires a Collection/Array to be returned.

Site Requests, Provisioning, and Governance

Yesterday I posted a link to Michael Sampson’s survey on Site Creation Rights which is intended to collect information on the process and governance around who can request new sites and how they are provisioned or “actioned.”  This is an important topic, so I’m looking forward to seeing the results.

This is a topic I have had to put a lot of thought around recently in my current organization.  Like all things Governance, there is no one-size-fits-all solution.  Instead there are topics that needs to be discussed in the context of the organization to determine an appropriate path.

 

Some items to consider:

Who can create a site; Anyone, Project Manager, Manager and above?

True collaboration doesn’t always happen based on a mandate from above.  Whenever possible, it is good to encourage and accommodate requests from anyone that will use the service.  Some of the most innovative sites I’ve seen were lead directly by information workers sometimes even without the knowledge of their supervisors.  If there is a charge to the site, this may not be possible.

Does a site request require approval?

Does a site request require approval from a manager of the requestor’s group or from IS/IT?  If so is it for financial reasons, or does the scope and purpose of the site need to be validated?

What types of sites can be created?

Are there only certain types of sites supported like Division, Department / Functional Area or Project?  What if somebody wants to setup a site to organize the Bowling League or discuss Social Media’s place in the organization?

Where are the sites placed and how are they organized?

Are all sites placed into the generic “Sites” path or are they logically grouped in containers that represent the org structure or purpose?  This can definitely have an impact on the process if sites are automatically provisioned. 

If they are logically organized, you need to make sure you have a plan on how to move the sites and content if the purpose of the site or the organization changes.  These sites need to be dynamic and adapt to change.

Does the site need to be logged somewhere like a Site Directory?

If one or more Site Directories are used, the provisioning process should include steps to list the new sites. 

Does anyone need to review the site’s Design, Structure or Security?

This question is pretty central to the Governance process.  If you establish standards or guidelines you want to ensure people follow them, but it is also a good idea to have some form of a review available so that advice and best practices can be exchanged to help maximize the value the group derives from the site and system.

The scope of this review can run the gamut, I’ll save that as a topic for another day.  I will however say that it is important to the overall success of the platform unless the capabilities and understanding of the site owners/administrators are very high.

 

Site Requests and Provisioning in the Small Organization

In small organizations it is pretty easy to handle things manually.  Site provisioning really doesn’t take that long so it is easy to help the site owners/administrators along and get things organized correctly so that it meets the group’s information architecture objectives and is easy to use.

If the process is automated in a small organization it is likely to be a pretty simple process.

Site Requests and Provisioning in a Large Organization

In larger organizations it quickly becomes apparent that manual processes cannot scale and at least portions of the process need to be automated.  Depending on some of the topics above relating to charges, approvals, and topology the process can vary quite a bit from organization to organization. 

If the Governance model is properly though through it should be easy for people to request sites, and they should be provisioned in a way that offers additional value. 

 

End Notes

Thoughts, feedback, critiques?  I’m always eager to hear other people’s thoughts on this topic and eagerly await the results of the survey.

Social Computing – Communities

I was very excited when heard that “Communities” was going to be one of the pillars for SharePoint 2010.  I think the Social Computing and Communities aspect is where SharePoint has the potential to really revolutionize business collaboration and computing.  Administrators and Developers don’t have to wait until upgrading to SharePoint 2010 though to start taking advantage of some of these concepts.  By making the adjustment now you and your end users will be better positioned to leverage these concepts sooner.

 

Key Features and Recommendations

Collect Feedback – Find ways to gather community feedback on content.  Take advantage of features like Content Rating and Comments, develop Surveys, and make it easy to access user contact information.

Notifications – Show the members how to take advantage of the Alert features so that they can receive timely notifications for relevant information.  In my experience, most know the Alert Me feature is there, but few know how to configure it to only get the notices they want to see.

Tagging – In the past few years tagging has been a popular way to describe and categorize content.  While it is not built into SharePoint 2007 (MOSS /WSS 3.0) there are a number of custom or add-on features available.

Show Related Content – Find ways to show related or relevant content.   If you are currently running MOSS, now would be a good time to dig in and learn how the filtering web parts work, as well as the search web parts.  If there is related data on the page, be sure to filter views.  Configure some search results web parts that can automatically show results based on what is being viewed.

Use Content Types – Using content types will help you better aggregate and work with the data.  This also simplifies the process of identifying the data in search.

Content instead of Documents – Think in terms of content, not just documents.  Most traditional information workers still think in terms of documents, but long time users of the SharePoint platform are starting to come around. 

 

Advantages

Member Involvement – These solutions get people involved which can lead to a self-sustaining effort.

Easier to find golden nuggets – Following these concepts will let the good content rise to the top.

SMEs and Knowledge Management – This gives you an opportunity to better utilize your SMEs in a group setting instead of one on one communications.  This can also be used to identify and develop new SMEs greatly increasing your Knowledge Management capabilities.

 

2007 Add-Ons and Solutions

SharePoint Tool Basket V2 – A number of features that can be enabled for collecting user Rating and Comments feedback on all types of content.

Community Kit for SharePoint (CKS) – Templates and features that extend the standard SharePoint feature set.

SharePoint Search-As-You-Type with jQuery – Instant search results by adding in jQuery.  Always an end user favorite!

 

Things to Consider

While I think that it a good idea to leverage these features now it is important to consider the upgradability.  In some cases the features may be built into the next version of SharePoint (Content Rating, Tagging).  If you add those features in now, you will likely loose that data during the migration process.  When approaching a version upgrade for a Knowledge Management or community application it is almost always best to build a new solution and migrate the existing content anyway though.  This gives you the chance to take advantage of the new features. 

 

Wrap up

Any questions, comments, or other solutions that you would like to recommend for extending the current 2007 platform? 

 

Related Posts

%d bloggers like this: