SharePoint Best Practices Conference, “Best Practices,” and the Elephant in the Room

I was lucky to attend and present at last week’s SharePoint Best Practices conference.  I’m still new to the whole speaking "thing" and, frankly, I was a bit nervous for the first half while I sweated out waiting to speak myself.  That sort of nervous feeling made it a little hard for me to pay attention to the presenters (not that I ignored them).  Instead, I focused a bit more on the attendees.

Conferences always set my mind racing and there was a lot take in at this one.  This conference was excellent.  I think it was unusual in several ways.  It wasn’t a heavy developer conference.  There were certainly dev parts to it, but I think it was at least 60% focused on non-dev issues, maybe as high as 80%.  I think that speaks to the evolving nature of the SharePoint market.  Companies are implementing SharePoint in a variety of ways and they are looking for guidance on how to do it right.  And not just guidance on how to create features/solutions (which by now, has been very well established).

I believe the conference was tremendously valuable to most everyone that attended and I know that the organizers plan to do the conference again early next year. 

Having said that, I believe there was a missed opportunity which I hope the next conference addresses.  I say it’s a missed opportunity, but that’s not a bad thing.  Discovering a community need is in and of itself a good thing.  The conference discussed a number of best practices in a variety of areas such as governance, training, requirements gathering, search, development, information architecture, etc.   I think that the missed opportunity has to do with the "green field" assumptions underlying many of the best practices.

When we talk about green field, we mean that SharePoint hasn’t gone into production and we’re starting with a clean slate.  This is ideal because you can start straight away using best practices for defining and managing governance, information architecture, etc.  However … what happens when you’re already in production with several thousand users (or 10’s of thousands) and you didn’t follow best practices at the beginning?  I’ve seen companies with … ahem … a very odd information architecture baked into their environment.  I don’t think that this conference provided much guidance for organizations with that kind of problem (and I don’t just mean IA, but governance, search, many other areas).  Of course, knowing you have a problem is a big part of the solution and that’s very valuable.

I think that the online SharePoint community hasn’t done much to address this either.  I know I have not.  It’s a very hard problem to solve at many levels.  Technically it’s hard.  Budget-wise it’s hard.  Culturally, it’s hard.  However, it’s probably a bigger real world problem than most.  Since the conference ended, I’ve been thinking about these kinds of problems and how one would solve them.  There has to be a better answer than, "uninstall and reinstall" and the community needs to face it head on.

I think that this a great opportunity for the blogging community and experienced thought leaders to lay out some guidance on how to repair their environments.  I think there’s a small but non-zero risk that SharePoint could end up with a bad and enduring reputation as a result of poorly architected implementations that fail due to poor governance, IA, etc. 

</end>

Subscribe to my blog.

Technorati Tags:

New Blogger on the Block

My EMC colleague, Erik Swenson, has been persuaded to jump in the fray, stand up and be counted 🙂

He blogs about about a wide variety of SharePoint branding topics at http://erikswenson.blogspot.com/.  Some of his recent posts include interesting stuff about Photoshop, Microsoft Office Live for small business, SharePoint Governance, creating custom WCM styles and so forth.  He does not confine himself to branding.  It’s quite an interesting mix which is a little bit different from a lot of the SharePoint blogs with which I’m familiar.

His RSS feed is: http://feeds.feedburner.com/SharepointBrandingDesign

Check it out and give him a little encouragement.  We all need that from time to time, especially when we first really dive into this blogging world.

</end>

Subscribe to my blog.

Technorati Tags:

Best Practices Conference: “Get Great Requirements” PowerPoint Presentation

I’ve uploaded the PowerPoint for one of my sessions, "Get Great Business Requirements," right here (http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/Public/Paul%20Galvin%20Great%20Requirements.pptx). 

Aside from a series of brilliant points, powerfully made, the deck includes extensive notes which supplement and enhance the afore-mentioned brilliant talking points. 

For those of you that missed the Best Practices conference, I was lucky enough to present and discuss a process that works very well when trying to discover accurate end user business requirements for SharePoint projects.  The PowerPoint plus notes describe this in pretty good detail.  It supplements one of my earliest blog postings here: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!146.entry

</end>

Subscribe to my blog.

SharePoint Dashboards Online Seminar

My online friend, Mark Miller over and End User SharePoint (www.endusersharepoint.com) is running a free one hour seminar targeted, like he always does, at the SharePoint End User community.  It takes place at 1pm EDT.  Details are here: http://www.endusersharepoint.com/?p=785

I have sat in on one of his online seminar last month and it was done quite well and if you’re interested in some very practical info on dashboards in SharePoint, I’m sure it’s worth the 1 hour investment.

</end>

Subscribe to my blog.

Technorati Tags: ,

SharePoint User Group Webcast Tonight

Tonight, 08/20/08, the Connecticut SharePoint user group meeting is broadcasting a webcast in lieu of a physical meeting this month.

Tonight’s topic: "Microsoft Office SharePoint Server 2007 – Extranet deployment methodologies"

Microsoft’s own Chris Lavista will lead the discussion.  I’ve worked with Chris before and he really knows his stuff.  If you have any interest in this subject, check it out.  Here are the details:

SharePoint User Group Webcast: https://www.clicktoattend.com/invitation.aspx?code=130299

Topic: Microsoft Office SharePoint Server 2007 – Extranet deployment methodologies
Speaker:
Chris Lavista of Microsoft

Date: August 20th Welcome Time: 6:15 PM  Time: 6:30 PM -8:00PM


Description:
SharePoint allows for multiple deployment options. The discussion will be centered on how a secure extranet on the SharePoint platform could be deployed. Discuss best practices and scenarios involving the integration of Forefront technologies, ISA Server 2006 and IAG 2007. Optionally, talk to supported single sign on use cases.
About Chris:
Chris Lavista is a Technical Architect at recently opened Microsoft Technology Center in New York.  His focus is on SharePoint, Collaboration, and Unified Communications. He has worked in the financial services industry (Chase, Citigroup) prior to joining Microsoft for 8 years.  He started at Microsoft in 2000 as part of their consulting services practice before joining the MTC team in early 2006.

Registration & More Info: https://www.clicktoattend.com/invitation.aspx?code=130299

</end>

Subscribe to my blog.

Technorati Tags:

Has Your Search Committee Met This Month?

It’s the beginning of the month and now is as good a time as any for your company’s search committee to get together and analyze Best Bets, successful and not so successful searches, etc.

You don’t have a search committee?  Then form one 🙂

WSS and especially MOSS search benefit from some human oversight.  Investing a few hours a month on a consistent monthly basis  is not only more fun than a barrel of monkeys, it can:

  • Give insight into the information needs of the enterprise.  If people are searching left and right for topic "xyzzy," you know that’s an important topic to the enterprise. 
  • Identify potential training requirements.  If people are searching for topic "xyzzy" but should really be searching for "abcd" then you can use that to educate folks on where and how to find the information.
  • Help your organization refine its information architecture. 
  • Identify opportunities to enhance the thesaurus.
  • Other opportunities will no doubt present themselves.

Who should be on search committee?  You would know your people best, but consider:

  • At least one (and maybe only one) IT person who understands (or can learn) the various ways to tweak search, including best bets, thesaurus, managed properties, etc.
  • Several subject matter experts that can read the search reports, ingest it and communicate business-savvy actions to IT so that IT can push the buttons, pull the levers and open/close valves as necessary to on committee recommendations.
  • One or more information architects who can validate, one way or another, whether the information architecture is search friendly and whether it’s working out well for the enterprise.
  • A rotating seat on the committee.  Bring in one or two people who don’t normally participate in these kinds of efforts.  They may bring unusual and valuable insights to the table. 

Happy analyzing!

</end>

Subscribe to my blog.

Technorati Tags:

Quick and Easy: Get SPFolder of SPItemList

I keep running into this problem and the Google never seems to understand what I want to do, so I figured I would write this down.

I’ve been doing a lot of event receiver debugging in the last week or two. The ER is defined against a document library.  The individual items in the document library are tightly related to their parent folders.  So, I am always getting the folder of the item for various manipulations.  While debugging, I needed to update the metadata of a folder for a specific item whose ID I know.

Here’s a little console application (designed to run on server in the farm) that takes two arguments: the ID of an item and a value to assign to a field, "Approval Status".  It hard codes a lot of stuff and has no error checking.

The code looks up a hard coded site, gets a hard coded document library and then finds the indicated item.  It then finds the parent folder of that item and assigns the status value.

The key lesson here for me is that SPItem doesn’t get you access to the folder.  You need to use SPListItem.File.

If anyone cares to offer a critique or suggest a better way to get the folder of an item, please leave a comment.

<code>
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using System.Collections;

namespace Conchango
{
    /// <summary>
 /// </summary>
 class ManualFolderUpdate
    {
        static void Main(string[] args)
        {
            string msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Console.WriteLine(msh + "Starting up.  I was last modified on 08/04/08.");

            string url = http://localhost/xyzzy;

            using (SPSite oSPSite = new SPSite(url))
            {

                using (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documents"];

                    Console.WriteLine(msh + "Got the document library.");

                    Console.WriteLine(msh + "Doc lib item count: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    string NewStatus = "xyzzy";

                    FolderID = System.Convert.ToInt32(args[0].ToString());
                    Console.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Console.WriteLine(msh + "Got the parent folder.");

                    NewStatus = args[1].ToString();
                    Console.WriteLine("Setting status to [" + NewStatus + "].");

                    Console.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    Console.ReadLine();

                    thisItemFolder.Item["Approval Status"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Console.WriteLine(msh + "Finished updating the folder.  Exiting.");

                } // using SPWeb

            } // using SPSite

 Console.WriteLine(msh + "Finished.");

        } // Main

    } // class foldersync
} // namespace
</code>

</end>

Subscribe to my blog.

Technorati Tags:

Sunday Morning Funny: “Dad, He Doesn’t Even Know You”

We northern New Jersey Galvin’s are big fans of the political satire t.v. program, The Daily Show hosted by Jon Stewart.  I don’t like to get political in my blogging, so all I’ll say on that is that without the Daily Show, I may well have permanently lost all of sense of humor on or about 12/12/2000.

We were having a meal on the deck early last week and my ten year old son brings up a recent episode of the Show. I made the comment, "Jon Stewart knows that he better not make fun of me or there will be terrible consequences for Jon Stewart." 

My son thinks about it for a minute and says: "Dad, number one: He doesn’t even know you." 

I waited for a number two, but he decided that was enough and moved on to the next subject without skipping a beat.

It used to be that I could get a lot more mileage out of those kinds of jokes, but he’s getting too used to me or too mature or both.  I need to adjust somehow.

</end>

Subscribe to my blog.

Technorati Tags:

Employee Training Schedule and Materials Template — Seat Count Bug PLUS Security Fix(?)

This is a fairly popular "fabulous 40" template.  It also has a bug which is widely known (I’ve even blogged about how to fix it).

Sogeti released a codeplex project this week that fixes the bug (which is nice by itself, but not earth-shattering) but they also claim to have solved a much thornier problem: security.  The fab 40 template requires a very generous security setting (users needs contributor level access to virtually everything).  Not any more!  According to the codeplex summary:

"This template also includes a new custom workflow action which enables the template to work without having to give all users contribute permissions to the courses list."

That’s good stuff and worth checking out.

</end>

 Subscribe to my blog.

Technorati Tags: , ,

SharePoint Designer Workflow, Event Receivers and “Update List Item” versus “Set Field in Current Item”

We have a set of SharePoint designer workflows that "communicate" with an event receiver on the list via changes to site column values.  For example, if a site column "SetDuedate" is set to true by the workflow, the event receiver detects that change, calculates a due date and assigns that date to another site column, "Due Date."  We split things up like this because the event receiver can calculate a due date using complex business rules (taking weekends and company holidays into account) while SPD really can not.

In one specific instance, we ran into a problem with this trick.  Debugging all this is pretty difficult, but we came to the definite conclusion that in one case (at least), the event receiver was not running all the time.  In one step of the workflow, we would change the value of a site column and the event receiver didn’t appear to run.  However, it was running consistently in a different step of the workflow.

After reviewing it, I noticed that the happy workflow step used the "Update List Item" while the other step used "Set Field in Current Item."  Update List Item was updating the "current item."  I’m not sure why we picked one over the other since they would seem to be doing the same thing.

So … the Update List Item action did cause the event to fire.  On the other hand, the Set Field in Current Item action did not.

I used Update List Item in both places and viola!  It worked.  [[ Total aside, I played the violin for on a daily basis for almost 15 years ]]

From this, I tentatively believe that the "Set Field" action does not cause event receivers to fire, at least some of the time. 

This issue bedeviled us for weeks. 

This is one of those "observed behavior" posts.  I observed this happen once in a specific environment and I’m making some guesses as to why things happened as they did.  If you have any insight into this one, please share in the comments.

</end>

Subscribe to my blog.

Technorati Tags: