1,748 articles and 13,523 comments as of Saturday, October 30th, 2010

Wednesday, October 6, 2010

Project Management With SharePoint Task Lists

Guest Author: Mark Gerow
Fenwick & West

Like many law firms, project management is finding its way into the lexicon of attorneys and staff at Fenwick & West. Driven by clients’ desire for more predictable legal costs, law firms are beginning to look beyond the billable hour to alternative fee arrangements. While AFAs can take many forms, they share one thing in common — they transfer the risk of cost overruns from the client to the firm.

The need to better manage the risk of cost overruns is driving law firms to adopt process management techniques that have become common practice in other industries. One obvious candidate is formal project management. Since many traditional project management tools and techniques are foreign to attorneys, some firms hire dedicated project managers and create project management offices.

Regardless of the structure, successful project management requires tools that are easy to learn and use, which present a minimal distraction from the practice of law. This requirement presents a challenge to legal IT departments charged with selecting project management tools that can support better management of staff projects, as well as client matters. If you use Microsoft SharePoint, then you may already have such a tool: SharePoint task lists.

There is a continuum of tools that may be used to manage legal projects and matters, from paper, to tables and lists in Word or Excel, to centralized enterprise project repositories such as Microsoft Project Server. See Figure 1.


Figure 1: Legal project management tools

Within this universe of options, SharePoint task lists offer those unfamiliar with formal project management low complexity yet sufficient capabilities to improve project and matter management.

Finding the Right Balance

The power of SharePoint task lists lie in their simplicity, as well as the ability to share and edit them via SharePoint or Outlook. This means that legal teams and clients can consume, as well as contribute to project and matter status information. Task lists include the following features:

  • add, edit, or delete tasks through either a web page (SharePoint) or desktop application (Outlook);
  • take tasks offline via Outlook;
  • automatic notification of task assignments and updates;
  • attach documents to any given task;
  • add custom metadata (e.g., court, jurisdiction, client, matter, etc.) to any task;
  • simple, web-based reporting;
  • the ability to analyze tasks via Excel; and
  • publish basic Gantt chart and calendar views.

The capabilities of SharePoint lists may meet the majority of a firm’s project management needs. More importantly, these capabilities are easily understood by any legal team member, and so are much more likely to be used than more complex, albeit more powerful tools like Project Server. If you’re looking for a simple, flexible tool to track tasks related to legal projects or matters, you may find all you need in Microsoft SharePoint task lists, right out of the box. But if you want a tool that can be extended to meet your firm’s unique requirements, then you need to customize your SharePoint task lists.

Beyond the Basics

Broadly speaking, there are four ways you can customize a SharePoint task list:

  1. Add custom fields
  2. Add custom views
  3. attach a workflow; or
  4. write a .NET application.

The first three approaches are straightforward and very well documented by Microsoft and others. I will spend the balance of this article showing you how to customize a task list using a .NET application.

Note: if you are not a .NET developer, I encourage you to skim the remainder of this article and pass it along to those responsible for SharePoint programming at your firm to build it.

Building a .NET Application to Adjust Task Dates

By using SharePoint’s extensive application programming interface, new features can be easily added to your task lists. In the remainder of this article I will demonstrate one SharePoint customization to automatically adjust task beginning and ending dates when the dates of preceding tasks are changed.

Note: the techniques described here will work equally well in SharePoint 2007 or 2010. Where the specifics differ I will provide an example in both versions.

Suppose that you are completing a merger and acquisition and need the following activities completed in serial fashion:

  1. Complete Term Sheet
  2. Negotiation
  3. Pre-closing
  4. Closing
  5. Post-closing

A Gantt chart of such a schedule might look like Figure 2.


Figure 2. A simple Gantt chart in SharePoint 2007

Now suppose that the Negotiation task is delayed due to unforeseen circumstances, or it takes longer than expected. Ideally, you would like to simply update the Negation task and have SharePoint automatically adjust the dates for all subsequent tasks. If the task list is for a client, you may also want some control over how SharePoint adjusts the dates. Before I get to the specifics of how this is accomplished, I need to define a few terms used in project management.

Predecessor: a task that must complete prior to starting current task.

Dependency behavior: The relationship of the current task to its predecessor(s), if any, may include one of the following: “ignore dependencies,” “as soon as possible,” or “no earlier than.”

Lag days: The number of days that the current task may commence after all predecessor tasks have completed (may be a positive or negative value).

Now, consider the above concepts in the context of the Negotiation task.

Predecessor: The Negotiation task cannot begin until a given number of days after you complete the term sheet.

Dependency behavior: If the completion date for the term sheet changes, adjust the start date of the Negotiation task to begin as soon as possible.

Lag days: The Negotiation task can begin a day before the Complete Term Sheet task completes.

A SharePoint task item containing this additional information might look like Figure 3.


Figure 3: a basic task list enhanced with custom fields

Step 1: Add the Custom Fields to a Generic "Task" List

So, let’s start by selecting our test SharePoint site, creating a new generic task list if one doesn’t already exist, and adding the fields for predecessors, dependency behavior, lag days, and processing notes. The field definitions are as follows:


Figure 4: Custom field definition for predecessors

Dependency Behavior


Figure 5: Dependency Behavior custom field definition


Figure 6: Lag Days custom field definition


Figure 7: Processing Notes custom field definition

Step 2: Write and Install the “ADJUSTTASKDATES” Application

Armed with these additional pieces of information (predecessors, dependency behavior, lag days and processing notes), we’re now ready to write an ASP.NET program that will adjust our task dates for us. So that our program knows which task list and task to operate on, we will send it the following parameters:

  • The unique ID SharePoint uses to identify the task list we’re working with; and
  • the ID of the individual task — if we want to adjust only that task and not the entire list.

Listing 1 contains a C# ASP.NET application demonstrating one way to implement automatic date adjustment. The code and its associated AdjustTaskDates.aspx file should be installed and configured to run under http://[your SharePoint server] /_layouts/ custom/ AdjustTaskDates. Note that the parent .aspx file will not contain any web controls, as the user will never interact with this application. The AdjustTaskDates application will simply execute the code in Listing 1, then immediately redirect the user’s browser back to the task list’s default page.

Note: you will need to install the “AdjustTaskDates” application so that it may be invoked using the URL http://[your SharePoint server]/[your site collection/site] /_layouts/custom/AdjustTaskDates. I will not discuss the mechanics of how to install an application under the _layouts folder here. There are many excellent resources on the internet that describe this process, or you may see “Adding Custom Menus Using a Feature” in my book “SharePoint 2007 Development Recipes” (Recipe 6-2, p. 381) for step-by-step directions.

Step 3 Create the “ADJUSTTASKDATES” Feature in SharePoint 2007 (for 2010, See Below)

This step attaches the preceding application to the task list in such a way that users can easily access it. The way we do this is through a “custom action.” SharePoint Designer 2010 makes creating custom actions easy, but it only works with SharePoint 2010. Given that many firms have not yet upgraded to the latest version, I’ll first show how to do it the old-fashioned way. In the next section I’ll show you how to accomplish the same action in SharePoint 2010.

First, create two files names, Feature.xml and Elements.xml as shown in Listing 2 and Listing 3.

Next, save the above two files to the directory C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\AdjustTaskDates.

Then install your feature using the following command:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\stsadm -o installfeature -name AdjustTaskDates

This command makes the custom action available for “activation,” but does not add the menu items for the action. To accomplish this final step you can either use an STSADM command, or navigate the Site Features page for the site containing your enhanced task list (created in Step 1). The STSADM command to activate the AdjustTaskDates feature on a site with the URL “http://myserver” is:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\ stsadm -o activatefeature -name AdjustTaskDates -url http://myserver

After the proceeding command completes, any list based on the task list template will include the following two menu items: see Figure 8 and 9.


Figure 8: Custom action on the Actions menu


Figure 9: Custom action on the Item menu

Step 3: Use SharePoint Designer 2010 to Add Custom Actions to the Ribbon

Microsoft has completely revamped the SharePoint user interface in version 2010: out with the drop-down menus, in with the “ribbon.” Thankfully they’ve also enhanced SharePoint Designer to allow you to add custom actions without resorting to XML and STSADM commands required in SharePoint 2007. After you have launched SharePoint Designer 2010 and opened your site, follow the steps shown in Figures 10-14, below.


Figure 10: Creating custom actions using SharePoint Designer 2010

  1. Select the “Lists and Libraries” option from the Site Objects menu.
  2. Select your task list from the Lists menu.
  3. Click on the “Custom Action” button in the upper-left corner of the screen, then select “View Ribbon” from the drop-down menu.

  4. Figure 11: Viewing the Ribbon from the drop-down menu

  5. Then fill in the resulting form as shown in Figure 12.

  6. Figure 12

The value entered in the “Navigate to URL” field will be the same as that in our Elements.xml file in the SharePoint 2007 example:

~site/_layouts/custom/AdjustTaskDates/AdjustTaskDates.aspx?s={SiteUrl}&l={ListId}

Repeat this step, choosing List Item Menu instead of View Menu from the new custom action menu. See Figure 13, below.


Figure 13

And use the following “Navigate to URL”:

~site/_layouts/custom/AdjustTaskDates/AdjustTaskDates.aspx?s={SiteUrl}&l={ListId}& amp;id={ItemId}

When you navigate to your SharePoint 2010 site, open your task list and select a list item you should see something like that shown in Figure 14, below.


Figure 14: Custom actions shown in SharePoint 2010

Testing the Enhanced Task List

Let’s test our newly installed task date adjuster. First, add the following tasks to a list that’s been extended with the new feature:


Figure 15: Test data

Note that, based on its configuration, the Negotiation task could start earlier than 11/15/2010. With its dependency on the Complete Term Sheet task, a behavior of “As Early as Possible”, and lag days of -1, it could start on 11/9/2010 (the day before its predecessor task ends). To automatically adjust the “Negotiation” task, follow these steps:

  1. Move the mouse over the “Negotiation” task until its drop-down menu appears.
  2. Expand the task’s context menu.
  3. Select the “Adjust Current Task’s Start Date” custom action.
  4. Click the left mouse button to execute.


Figure 16: Adjusting the Negotiation task

The new schedule should look now look like Figure 17.


Figure 17: Task list after the Negotiation task has been adjusted

Note that only the Negotiation task was adjusted because we selected the item-level custom action. Next, let’s adjust the entire schedule by selecting the list-level custom action. To do so, follow these steps:

  1. Click on the “Actions” menu at the top of the list.
  2. Click the new custom action.


Figure 18: Selecting the adjust-all-tasks custom action

The adjusted list should now look like that shown in figure 19, below.


Figure 19: The fully adjusted task list

Of course our example task list is quite simple, with only 5 items, so manually adjusting tasks would not be too much of a chore. Just imagine a project or matter task list with hundreds of tasks, some of which having dependencies on one or more other tasks, and you can see how useful our automatic date adjuster might be!

Conclusion

The challenge for legal IT professionals is to help their firm select project management tools that strike the right balance between power and usability, so they are accepted and used.

In the spectrum of project management tools, SharePoint’s task list provides a good balance between simplicity of design and ease of use on the one hand, and power and extensibility on the other. With Designer workflows or .NET programming, you can extend the built-in task list in almost any imaginable way to meet the unique needs of your firm, while retaining the core features such as built-in alerting and integration with Outlook.

This article is reprinted with permission from the September 27, 2010 issue of Law.com. ©2010 ALM Properties Inc.

Guest Author: Mark Gerow
Fenwick & West

Mark Gerow has more than 20 years of experience in IT, professional services and software product development and has provided consulting services to hundreds of companies throughout the San Francisco Bay area and Northern California. He currently works for Fenwick & West, where he leads the application development team and is responsible for defining and implementing the firm’s intranet and extranet strategies using SharePoint technologies.

 

Please Join the Discussion

5 Responses to “Project Management With SharePoint Task Lists”
  1. Olaf Didszun says:

    A good overview of how to extend the OOTB features of a task list to meet the business needs. But, isn’t ibetter (more user-friendly) to adjust the tasks automatically? I think for the example shown, I would prefer using a workflow or an event handler.

  2. Nathan Jones says:

    Very interesting, I have just written a great little PRINCE2 Training blog answering the question is Project Management and Project Leadership the same?

  3. Mark,
    I wanted to put an article like this for the last 6 months or more, ever since i did the SharePoint 2010 beat.
    Great job , it means a lot for those who want to take the project mgmt beyond the conventional way of doing business.
    -Ari

  4. Mika says:

    I want to do a similar table, but need it to be dynamic for my team (so that they can update it when applicable), and just viewable by others in my agency so they can see where we are in our processing. Is this possible. BTW: I just discovered this website, so forgive me if this has been covered before. Thanks for your tutorial.

Trackbacks

Check out what others are saying about this post...
  1. Ballmer on the Demise of Microsoft; IE Not Dead Yet; Hold Off on HTML5…

    Top News Stories Microsoft`s Windows Phone 7 Strategy: 10 Mistakes It Can Still Fix (eWeek) Microsoft…




Notify me of comments to this article:


Speak and you will be heard.

We check comments hourly.
If you want a pic to show with your comment, go get a gravatar!