Monthly Archives: August 2008

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:

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

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

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:


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!


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.

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.");


                    thisItemFolder.Item["Approval Status"] = NewStatus;

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

                } // using SPWeb

            } // using SPSite

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

        } // Main

    } // class foldersync
} // namespace


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.


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.


 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.


Subscribe to my blog.

Technorati Tags: