Recently there was a question in the TechNet Forums, about creating a Project Server Workflow.

The basic problem in summary was this: “How do you trigger an approval workflow for a Project, every time the Project Finish date is changed, within the same stage?”

This scenario is very common, when you want to monitor activities, milestones and so on within a particular Project Stage. A lot of times, this is needed for change control.

As you can see from my answer to the question, the challenge here is two fold.

  1. How do we ‘store’ the previous finish date of a project, so that the workflow can compare against this value, every time a new finish date is published.
  2. How do we keep ‘triggering’ a ‘sub-process’ workflow within the same stage, until a certain point in time, when the stage is complete.

The first challenge is easily solved, by creating a SharePoint list, and storing the Project data like the Project UID, Project Name, Project Start and Project Finish in that list. I covered this as also a way to snapshot the data in my post here.

The second part is somewhat complicated. As I put some thought into it, I came up with two options.

  • We create a Project Server Workflow, but without any approval actions. All the Approval Actions could happen on the SharePoint List, every time the Project Finish Date changes.
  • We create a Project Server Workflow with a looping approval workflow.

Each method has its own pros and cons. I will cover the Project Server Looping Approval Workflow first, and will cover the SharePoint List based approvals in the next post. To keep each post short enough to read, I will make this topic into multiple parts.

Lets cover the Basic Set Up in this post.

Basic Setup

First and foremost,  I will assume you have your PDPs, Custom Fields, Workflow Stages and Phases all configured. In my configuration, I have the following workflow stages. For this example, the stage in which I want to monitor my Project Finish date changes is the Execution Stage.


  • Create a Custom SharePoint list, (I called mine Project Information List) with the following four fields. To keep things simple, for now, create the list at the PWA Site Collection Level (You can create it on a subsite, but you will need to use the HTTP WebService action to query this list).
    • Project name (Text)
    • Project UID (Text)
    • Project Start (Date)
    • Project Finish (Date)


  • Next, create a Custom Field in Project Server, called “Stage Complete”. Let this be a choice field, with the choices being in a look up table.


That’s it for your basic Setup. In the next post we will cover setting up the workflow, and its details.

Keep reading…