Project Deliverables

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The Deliverables feature in Microsoft Office Project Professional 2007 is a simpler and improved way to manage dependencies between projects and cross-project links. Project managers can use Project Professional 2007 to manage deliverables in the following ways:

  • Create deliverables between projects.

  • Consume deliverables: that is, include deliverables of other projects as milestones in a new project plan, and control the schedule impact.

  • Monitor deliverables of a project to external projects.

  • Receive a notification when a relevant deliverable changes.

  • Create reports of project deliverables and status compared to project schedules.

Deliverables are stored in a custom list in the project workspace site in Microsoft Windows SharePoint Services. By default, if a deliverable is linked to a task, the deliverable dates do not change when the task dates change. The default behavior allows a project manager to maintain deliverable dates independently from task dates, which can have many small changes over the course of a project. Deliverables are commonly published to a large audience. To create or manage deliverables, you can click Manage Deliverables in the Collaborate menu to show the Deliverables pane. To help automate deliverables with VBA, see Example for Creating and Updating Deliverables.

The Project Professional 2007 object model includes new methods and properties to view, create, and consume deliverables for the current project. Project Professional in turn calls Windows SharePoint Services for deliverable lists. Project Standard 2007 does not include deliverables, because they involve multiple projects that must be published on Project Server.

Following are the new object model items for deliverables. The class members are described in Table 2, and the enumerations are described in Table 3, in Tables of VBA Object Model Changes.


The Deliverables feature was called Commitments in some pre-release builds of Project Professional 2007. Some method and enumeration names still include Commitment.

  • Application.ImportCommitment method

  • Application.CommitmentsPane method

  • Project.DeliverableAcceptChanges method

  • Project.DeliverableCreate method

  • Project.DeliverableDelete method

  • Project.DeliverableUpdate method

  • Project.DeliverableDependencyCreate method

  • Project.DeliverableDependencyDelete method

  • Project.DeliverableLinkToProject method

  • Project.DeliverableLinkToTask method

  • Project.DeliverableRefreshServerCache method

  • Project.DeliverablesClearAll method

  • Project.DeliverablesGetByProject method

  • Project.DeliverablesGetProviderProjects method

  • Project.DeliverablesGetServerCachedXml method

  • Project.DeliverablesGetXml method

  • Task.Baseline[1-10]DeliverableFinish property

  • Task.Baseline[1-10]DeliverableStart property

  • Task.BaselineDeliverableFinish property

  • Task.BaselineDeliverableStart property

  • Task.DeliverableName property

  • Task.DeliverableFinish property

  • Task.DeliverableStart property

  • Task.DeliverableType property

  • Task.DeliverableGuid property

  • PjCommitmentTaskLinkType enumeration (members pjNoLink, pjTargetFinish, and pjTargetStart)

  • PjField.pjTaskBaseline[1-10]DeliverableFinish enum members

  • PjField.pjTaskBaseline[1-10]DeliverableStart enum members

  • PjField.pjTaskDeliverableName enum member

  • PjField.pjTaskDeliverableFinish enum member

  • PjField.pjTaskDeliverableGuid enum member

  • PjField.pjTaskDeliverableStart enum member

  • PjField.pjTaskDeliverableType enum member

Example for Creating and Updating Deliverables

The VBA sample macro CreateFlaggedTasksAsDeliverables shows how to create and remove deliverables based on the value of a task custom field. The example also updates existing deliverable start and finish dates to the task dates. You can modify the example to keep the original deliverable dates by simply removing the call to the DeliverableUpdate method.

You can use the sample macro within a project by using either a local task custom field or an enterprise task custom field. To make the macro available to all projects on a local computer, add the macro to a module in the GLOBAL.MPT template. To make the macro available to all enterprise projects, add the macro to the enterprise global template.


To see the macro in new projects that you create by using the enterprise global template, you must restart Project Professional.

To prepare a project to use the sample macro:

  1. Create a local or an enterprise task custom field. For example, create a task custom field of type Flag named Pub Deliverable.

  2. Open a project in Project Professional, and then add the Pub Deliverable field column to the Gantt Chart view.

  3. For each task for which you want to create a deliverable, set the value of the Pub Deliverable custom field to Yes.

  4. If you have not already saved the CreateFlaggedTasksAsDeliverables macro in GLOBAL.MPT or the enterprise global template, open the Visual Basic Editor (press ALT+F11) and add the CreateFlaggedTasksAsDeliverables macro to the project.

  5. Save and publish the project. Be sure to create a project workspace when you publish the project. The workspace is necessary to create a list of deliverables to which other projects can subscribe.

  6. Run the CreateFlaggedTasksAsDeliverables macro.

  7. To create the deliverables list in the project workspace, save and publish the project again.

The CreateFlaggedTasksAsDeliverables macro loops through all the tasks. If the flag field Pub Deliverable is set to Yes, then the macro either creates or updates the deliverable. If the field is set to No and there is a deliverable associated with the task, the macro deletes the deliverable. Figure 1 shows the Pub Deliverables column in the Gantt Chart view and the red deliverable indicators on tasks after you run the macro. If you want to execute the macro regularly without user intervention, you could create an event handler, for example, on the Application.ProjectBeforePublish event.

Figure 1. Creating deliverables with VBA using a custom field

Creating deliverables using a custom field

Sub CreateFlaggedTasksAsDeliverables()
    Dim t As Task
    Dim ecfName As String
    Dim flagValue As String
    Dim emptyDeliverable As String
    Dim errMess As String
    Dim fieldConstant As PjField
    On Error Resume Next
    ecfName = "Pub Deliverable"
    emptyDeliverable = "00000000-0000-0000-0000-000000000000"

    For Each t In ActiveProject.Tasks
        ' Get the PjField constant for the enterpise custom field.
        fieldConstant = FieldNameToFieldConstant(ecfName)
        If Err.Number = 0 Then
            ' Get the flag value from the enterpise custom field.
            flagValue = t.GetField(fieldConstant)
            If flagValue = "Yes" Then
                ' If the task has an empty deliverable GUID,
                ' then there is no deliverable.
                If t.DeliverableGuid = emptyDeliverable Then
                    DeliverableCreate t.Name, t.Start, t.Finish, t.Guid
                    DeliverableUpdate t.DeliverableGuid, t.Name, t.Start, t.Finish
                End If
                ' Delete any deliverable that exists.
                If t.DeliverableGuid <> emptyDeliverable Then
                    DeliverableDelete (t.DeliverableGuid)
                End If
            End If
            ' Error handler
            errMess = "The custom field '" & ecfName & "' doesn't exist " _
                      & vbCrLf & "or is undefined for task " & t & ": " & t.Name _
                      & vbCrLf & vbCrLf & "Error:" & vbCrLf & Err.Description
            MsgBox errMess, vbOKOnly, "Error in Task Custom Field"
            Exit For
        End If
    Next t
End Sub

See Also


Tables of VBA Object Model Changes


Project Deliverable Gives/Gets Report

Other Resources

Integration with Windows SharePoint Services