Project Server 2007: Getting Started with a New Platform for Developers


Jim Corbin
Microsoft Corporation

May 2006

Applies to:
    Microsoft Office Project Professional 2007
    Microsoft Office Project Server 2007
    Microsoft Office SharePoint Server 2007
    Microsoft Windows SharePoint Services (version 3)
    Microsoft Visual Studio 2005
    Microsoft SQL Server 2000 SP4
    Microsoft SQL Server 2005 SP1

Summary: Explore the Microsoft Office Project Server 2007 functionality that uses a completely new platform built on the Microsoft .NET Framework 2.0 and Microsoft Windows SharePoint Services (version 3). Use the Project Server Interface (PSI) to extend and integrate Project Server with other applications. Configure and extend Project Web Access, now a Windows SharePoint Services site. (14 printed pages)


Introduction to Project Server 2007
Project Server Architecture
Integration with Windows SharePoint Services
Project Server Interface
Project Server Events
EPM Reporting
Additional Resources

Introduction to Project Server 2007

Microsoft Office Project Server 2007 is the third major release of Project Server and is an entirely new platform for developers. To the question, "What's new in Project Server 2007?" the answer is, "Everything!" That is, everything about Project Server development is new, for very good reasons that are explained in this article. The features that help make Project Server the premiere enterprise project management system improve on the great features of earlier versions. Project Server 2007 is built upon the productive, feature-rich code framework and the set of application services in Microsoft .NET Framework 2.0 and Microsoft Windows SharePoint Services (version 3). Project Server 2007 achieves the following goals for programmability:

  • **Great extensibility   **Project Server 2007 addresses all of the important areas for extension of features for enterprise project management and integration with Microsoft Office system products, partner solutions, and line-of-business (LOB) applications.
  • **Development platform   **The Project Server Interface (PSI) set of Web services, Project Server Eventing service, Project Server Queuing service, server-side scheduling engine, and common Windows SharePoint Services features such as workflow and custom lists, create a complete development platform.
  • **Low barrier to entry    **Developers who are familiar with Microsoft Visual Studio, standard Web Parts in Windows SharePoint Services, or Microsoft SQL Server Reporting Services can quickly take advantage of related functionality of the Project Server development platform, without learning the proprietary XML-based interface of earlier versions.
  • **Improved developer productivity   **The PSI Web services use Microsoft ADO.NET 2.0 typed DataSet objects. Microsoft IntelliSense in Visual Studio immediately shows the methods, parameters, and fields available in a code statement. Using the PSI, you no longer need to directly program against the Project Server database to access data such as timephased task information.
  • **Firewall friendly   **All client applications, including Microsoft Office Project Professional 2007, communicate with Project Server through the PSI Web services using the HTTP and SOAP protocols. You can work easily and securely with Project Server by using a separate Project Web Access server in a perimeter network for access across the Internet.

Project Server 2007 offers many advantages and improvements. This article introduces you to the platform programmability and refers to in-depth conceptual and "how to" articles in the Project 2007 SDK. This article and the SDK will be updated after the Beta 2 release to include information about resource and timesheet extensibility.

Project Server Architecture

The architecture of Project Server 2007 is multitiered. The presentation tier includes Project Web Access, Project Professional 2007, and third-party client applications. The application services tier includes the PSI Web services, the business logic, and Windows SharePoint Services. The data tier includes the Data Access Layer components and multiple SQL Server databases. Figure 1 shows a simplified view of the Project Server architecture.

Project Server 2007 architecture

Figure 1. Project Server 2007 architecture

Project Server supports multiple virtual sites of Project Web Access. One or more instances of Project Web Access can be installed on the same computer as the core Project Server components, or on separate computers. Each instance of Project Web Access uses the same core Project Server and other shared services, but separate databases. For example, the following two Project Web Access virtual sites require a total of eight Project Server databases and share the Configuration and Content databases of Windows SharePoint Services.

  • http://ServerName/ProjectServer/
  • http://ServerName/Sample/

In the previous examples, ProjectServer and Sample are names of the Project Web Access virtual sites. Each Project Web Access virtual site has its own independent list of authorized users stored in the Windows SharePoint Services databases. Project Server databases no longer store user logon information. The ProjectServer site, for example, uses the ProjectServerDraft, ProjectServerPublished, ProjectServerArchive, and ProjectServerReporting databases. The Sample site uses the independent SampleDraft, SamplePublished, SampleArchive, and SampleReporting databases. You can install the databases on different computers with Microsoft SQL Server 2000 SP4, Microsoft SQL Server 2005 SP1, or a later version.

Project Web Access is now built with ASP.NET 2.0 and uses compiled assemblies that interact with Project Server 2007 through the PSI. Developers do not have access to the code behind the Web Parts and ASPX pages in Project Web Access, as they did with earlier versions that used ASP pages. However, you can access the Windows SharePoint Services object model and create your own Web Parts that interact with Project Server Web Parts. The code in your extensions is not exposed to other developers.

Project Web Access uses Windows SharePoint Services for authentication and as a Web server. You can install Project Web Access on the same computer as the Project Server core components, or on a remote computer. For more information about how Project Web Access works with the PSI when it is installed on a remote computer, see Project Server Architecture in the Microsoft Office Project 2007 SDK.

Project Professional 2007 and all third-party applications gain access to Project Server 2007 only through the PSI. In earlier versions of Project Server, Project Professional used ODBC for direct access to most Project Server databases. ODBC cannot be used through most corporate firewalls. Project Server 2007 eliminates the need for direct database access, except for the Reporting database. The Reporting database can be installed on a computer running SQL Server, separate from the other Project Server databases.

Eliminating direct database access solves many programming problems in addition to the problem of access through firewalls. For example, when Project Professional and a third-party application both access an earlier version Project Server database, they can use different business logic and damage the referential integrity of database tables.

Important   Nothing actively prevents you from using direct programmatic database access to update data. You should be aware that the Project Professional cache, the Publishing database, and the Reporting database all rely on a cache synchronization protocol that can be disrupted by direct data editing. If you damage your Project Server databases or corrupt Project Professional client-side caches by using direct access to change data, be warned that product support will not be able to help.

The PSI is the interface between your application and the Business Object layer. Business objects in Project Server are the components that include the rules for how logical entities such as Project, Task, Resource, and Assignment can be changed and how they interact with each other and with the other Project Server components. Each logical entity can span multiple database tables. Because all client applications go through the PSI and use the same business logic, Project Server maintains the correct relationships between the business objects. The business objects themselves do not directly interact with the Project Server databases; they call the Data Access Layer (DAL), which handles transactions with the correct database tables.

The local cache in Project Professional 2007, along with the Project Server Queuing service, enables offline work and a reduction in the time needed to open and save projects. When a project manager reconnects after working offline, Project Professional sends a message to the Project Server Queue and saves only the changed data. The Project Server Queue handles saving the data asynchronously, and the project manager can exit Project Professional or get back to work.

The Project Server Eventing service is the key to extending Project Server functionality. Developers can create event handlers and register them through Project Web Access. Each major business object (CustomFields, CubeAdmin, LookupTable, Project, Reporting, Security, TimeSheet, and so forth) includes multiple events that you can see on the Project Web Access Events page (http://ServerName/ProjectServerName/_layouts/pwa/admin/Events.aspx). Event handlers provide "hooks" for adding new functionality, customizing existing functionality, and integrating with other applications. For some examples, see Project Server Events in this article.

Earlier versions of Project Server did not have a scheduling engine. When a team member reported a different amount of time than what was scheduled for a task, for example, the project manager had to open the project in Project Professional to reschedule the task and its dependents. Project Server 2007 can now reschedule tasks. For example, you can implement a custom timesheet system and Project Server can reschedule projects without requiring the data to make a round trip through Project Professional.

For more information, Project Server Architecture and Project Server Programmability in the Microsoft Office Project 2007 SDK.

Integration with Windows SharePoint Services

Project Server 2007 requires Windows SharePoint Services (version 3). Windows SharePoint Services handles user authentication and is the foundation for all Project Web Access features including site administration and Project Server Web Parts such as Project Workspaces.

Note   Although Windows SharePoint Services handles both Windows and Forms authentication for Project Server users, the Security business object in Project Server (with programmatic access through the PSI Security Web service) handles permissions and user authorization. For more information, see the Project Server Security Primer in the Microsoft Office Project 2007 SDK.

Project Web Access and Windows SharePoint Services V3 are built with the .NET Framework 2.0 and use ASP.NET 2.0 for Web page development. You can develop Web Parts for Project Web Access just as you can for other Windows SharePoint Services sites, because Project Web Access is a Windows SharePoint Services site (cheers)!

Microsoft Office Project Server 2003 included six Project Server Web Parts that you could use only with Windows SharePoint Services V2 sites. You could turn Project Web Access views into Web Parts, but you could not modify a Project Web Access ASP page with Web Parts. Project Server 2007 includes about 20 specialized Project Server Web Parts, and you can easily make more, such as Web Parts from SQL Server Reporting Services or custom Web Parts that communicate with other Project Server Web Parts.

Note   You can add Project Server 2007 Web Parts to other Windows SharePoint Services sites if they are within the same server farm as Project Server. Project Server 2007 does not need to provision the SharePoint sites.

Project Web Access also supports legacy Windows SharePoint Services V2 Web Parts, .ascx custom controls, and other extensibility features of ASP.NET 2.0. We recommend that you build ASP.NET 2.0 Web Parts where possible, for compatibility with both Windows SharePoint Services V3 and other ASP.NET 2.0 applications that are not hosted by Windows SharePoint Services.

Figure 2 shows how easy it is to customize Project Web Access with Web Parts. Simply click Site Actions, and then click Edit Page.

Adding a Web Part in the design view of a Project Web Access page

Figure 2. Adding a Web Part in the design view of a Project Web Access page

Windows SharePoint Services V3 uses master pages to control the look and feel of Web pages within a site. You can easily change the master pages for Project Web Access to incorporate your organization's branding and terminology. You can modify master pages with Microsoft Office SharePoint Designer 2007 (the successor to Microsoft Office Front Page 2003) and then add them to the Master Page Gallery (click Site Settings on the Site Actions menu). To create new pages that have the functionality of pages in Project Web Access, your page can inherit from Project Web Access classes. Your custom Web Parts can call PSI methods or third-party applications.

SimpleUI URL Options

Project Web Access pages still implement a SimpleUI URL option to hide or show various parts of the page, although the SimpleUI options are reduced. In Project Server 2007, the SimpleUI setting is persisted as a cookie on the local user's computer. SimpleUI applies globally to the Project Web Access pages, but not to other Windows SharePoint Services sites that do not have Project Server provisioning. For example, the following URL removes the Project Web Access top bar and banner:


Now all the pages have the same elements removed, and you no longer see the SimpleUI option in other pages. To return to the default view, add ?SimpleUI=0 to any Project Web Access URL. Unlike the 256 combinations of SimpleUI in earlier versions, Project Server 2007 uses only six bitmask combinations: 0, 1, 2, 4, 8, and 15. For more information about URL options and developing custom Web Parts, see Project Server Web Parts in the Microsoft Office Project 2007 SDK.

Project Workspaces

When you create and publish a project, by default you also create a project workspace site for team collaboration. For example, the default workspace site for a project named My Test Project is the following:


You can specify other Windows SharePoint Services servers or project site names within the same farm when you use Project Professional or the PSI to create and publish projects. Project workspaces can include lists of documents, issues, and risks, and project deliverables. Deliverables are a new feature in Project Server 2007. A project manager can publish tasks or milestones as a list of deliverables, and other project managers can subscribe to that list to get notifications of changes in dates. Publishing or subscribing to deliverables does not affect task scheduling on either project, but serves as a way to improve collaboration between projects.

A deliverable list is an example of a specialized Windows SharePoint Services list. The Microsoft Windows SharePoint Services V3 SDK provides information about and examples of how to develop custom lists.


The Microsoft Windows Workflow Foundation (WF) is a Windows–based platform component that is hosted by Windows SharePoint Services V3. WF is a development framework, not a server or application, which provides a common workflow technology for Microsoft products, ISVs, and customer solutions. Workflows can run in any application or server—including, of course, Project Server 2007.

The WF download includes extensions to Microsoft Visual Studio 2005 for Workflow project types and a visual designer for graphical and code-based authoring. Windows SharePoint Services V3 also includes several simple workflows that you can configure using Office SharePoint Designer 2007.

For more information about WF, see the Windows Workflow Foundation Developer Center and the Microsoft Windows Workflow Foundation Runtime Components Beta 2.2 and Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 2.2 download. For more information about Project Server 2007 integration, see the following articles in the Microsoft Office Project 2007 SDK: Project Server Programmability and Integration with Office SharePoint Server 2007. The SDK will include articles and samples for creating and attaching Project Server workflows.

Project Server Interface

The PSI is a set of 20 Web services that correspond to the Project Server business objects (that is, the logical entities). The PSI has a Task Web service for the Task entity, a Project Web service for the Project entity, a Resource Web service for the Resource entity, a TimeSheet Web service for the TimeSheet entity, and so forth. Each PSI Web service includes one or more DataSet objects that handle data for that entity. Most PSI Web methods either use a DataSet parameter or return a DataSet. For example, the QueueCreateProject method in the Project Web service sends a message to the Project Server Queue to create a project in the Draft database with the specified data in the ProjectDataSet parameter. The jobUid parameter allows you to track and manage the job in the queue by using methods of the QueueSystem Web service.

public void QueueCreateProject(Guid jobUid, ProjectDataSet dataset, 
   bool validateOnly);

The ReadProject method reads the specified project in a specified database and returns a ProjectDataSet object. All entities are identified in Project Server by a GUID.

public ProjectDataSet ReadProject(Guid projectUid, 
   DataStoreEnum dataStore);

You specify a Web reference to the PSI Web description file by using a subdirectory in the Project Web Access virtual Web site. For example, use the following URL to reference the Project Web service, where ProjectWebAccessName is the name of the Project Web Access virtual site:


In Visual Studio 2005, after you type a namespace for the Web reference, the wsdl.exe utility generates the Microsoft Visual C# or Microsoft Visual Basic .NET files that compile to a Web service proxy assembly for your application. You use the Web service by creating an instance of the class and any DataSet objects you need. For example, if you set a reference to the Project Web service and name it WebSvcProject, the following code gets information about a specific project in the Published database. The last statement in the SaveProjectInfoToXml method uses the inherited WriteXml method to serialize the ProjectDataSet to an XML file.

using System;
namespace Demo
  public partial class Info
    . . .
    // Initialize a Project object that contains the PSI Web methods
    public static WebSvcProject.Project proj = new 

    // Not shown here: log on to Project Server, then set user 
    // credentials, 
    // logon cookie, and URL for the proj object.

    public SaveProjectInfoToXml(Guid projectUid, string filePathName)
      WebSvcProject.ProjectDataSet dsProject = 
                    new Demo.WebSvcProject.ProjectDataSet();
      dsProject = proj.ReadProject(projectUid, 

Note   In most cases, you do not need to serialize a DataSet to a file because it stays in memory within the application. The example illustrates that ProjectDataSet is a first-class object that inherits methods, properties, and events from the base DataSet class.

For a complete sample application using the PSI, see How to: Log on to Project Server Programmatically in the Microsoft Office Project 2007 SDK.


Every PSI Web service includes the DataSet classes it needs that correspond to information in the business entities used by the Web methods. A DataSet is essentially an in-memory relational database. Each DataSet contains one or more DataTable objects that contain DataRow objects, and each DataRow includes one or more properties (data fields) as well as methods. For example, the ProjectDataSet class includes classes such as AssignmentDataTable, DependencyDataTable, ProjectCustomFieldsDataTable, ProjectDataTable, and TaskDataTable. The ProjectDataSet also includes the classes AssignmentRow, DependencyRow, ProjectCustomFieldsRow, ProjectRow, and TaskRow.

There are many advantages to using datasets with the PSI, as follows:

  • ADO.NET 2.0 datasets have improved performance with binary data over the network.
  • Developers who have experience with ADO.NET already know how to program datasets.
  • Data is in a relational model with tables, rows, and relationships.
  • Datasets have type safety: an incorrect type does not compile.
  • IntelliSense for datasets provides design-time validation.
  • Datasets include methods to easily serialize and deserialize the data to support offline scenarios such as mobile devices and development using unmanaged code.

For example, if you create and publish a test project that contains nothing but a name (no tasks, resources, custom fields, or other data), the WriteXML method in the previous sample code serializes the ProjectDataSet object to a file with the following content:

<?xml version="1.0" standalone="yes"?>
<ProjectDataSet xmlns="">
    <PROJ_NAME>Test Project 1</PROJ_NAME>

To create or update a ProjectDataSet for use with a PSI method such as QueueCreateProject or QueueUpdateProject, you can programmatically assign data to fields in the ProjectDataSet.ProjectRow, or deserialize XML data in a file or stream from another device or system by using the ProjectDataSet.ReadXml method.

The PSI and datasets provide a flexible, easy-to-understand, and efficient development environment for Project Server 2007. For a detailed introduction to using the PSI and datasets, and for an explanation of how to use the Project Server 2007 Web Services reference and related assemblies, see Project Server Interface (PSI) Overview in the Microsoft Office Project 2007 SDK.

Comparison with the PDS

In earlier versions of Project Server, many third-party applications used the Project Data Service (PDS) to read and update Project Server data. Probably just as many additional applications programmed directly to the single Project Server database because the PDS provided only about 80 percent of the functionality needed for writing Project Server extensions or integrating with external applications. The PDS did have some advantages over direct database access: It had built-in support for Project Server security and it was the supported Project Server API. However, to get functionality the PDS did not support, developers had to write PDS extensions that usually used direct database access.

The PDS in Project Server 2003 had 67 methods, including the four methods of the Service for Enterprise Data Maintenance, which aggregated several PDS methods. By comparison, the PSI in Project Server 2007 has about 350 public methods (as of the Beta 2 release, the PSI is not yet final). With the PSI and datasets, you do not need to directly access the Draft, Published, or Archive database; in fact, except for the Reporting database, you are very strongly urged to refrain from direct database access.

There is no 1:1 relationship between PDS and PSI methods. For example, the single PSI method ReadProject returns a ProjectDataSet object that includes data equivalent to all of the following PDS methods: ProjectsStatus, ProjectsVersion, ProjectCodeValues, and ProjectData. Some PDS methods have no PSI equivalent, such as ProjectsAccess and ResourcesAccess; Project 2007 security is based on the .NET Framework 2.0 security model and uses Windows SharePoint Services authentication.

The advantages of the new Project Server platform going forward bring many fresh opportunities for customization, extension, and integration that were not feasible with the PDS in earlier versions.

The PDS Parity in PSI Web Services section in the Microsoft Office Project 2007 SDK includes several articles and a table of equivalent PSI methods to PDS–based code along with examples. For more information, see also the Project Server Security Primer.

Project Server Events

Every Project Server 2007 business entity (Project, Task, Assignment, CustomField, Timesheet, and so forth) includes events. Project Server implements more than 160 events, including both pre-event and post-event types. Pre-events occur before Project Server saves data to the database. Pre-events can cancel the operation and are synchronous. That is, an application that uses a pre-event cannot continue until the event handler is finished. Post-events are not cancelable (the data is already saved), and can be asynchronous or synchronous. Applications can subscribe to events such as the Project Publishing pre-event or the Project Published post-event and run one or more associated event handlers.

Pre-events enable developers to add constraints, custom data validation, or business rule checks. For example, a corporate project management office (PMO) might require that all project enterprise custom text fields for certain projects have a two-letter prefix. A CustomField Changing pre-event handler could implement the business rule.

Post-events are the main way to integrate Project Server with an LOB application such as an accounting system. For example, there are 14 TimeSheet events including Submitting, Submitted, Recalling, and Recalled. The Submitting and Recalling events are pre-events. You can create event handlers that check your organization's business rules before a timesheet is submitted to the database, and cancel the submission if the rules are not met. The Submitted and Recalled events are post-events. After a project manager submits timesheet data, a Timesheet Submitted post-event handler could send the weekly data to an accounting system.

The Project 2007 SDK includes the article Project Server Events and an example in How to: Write and Debug a Project Server Event Handler.

EPM Reporting

The desktop clients Project Professional 2007 and Project Standard 2007 include major improvements in creating reports from local Project files, using the Visual Reports feature with Microsoft Office Visio 2007 and Microsoft Office Excel 2003 or Excel 2007. On the server side, the platform for enterprise project management (EPM) reporting is a major upgrade in Project Server 2007 that supports the Microsoft Business Intelligence (BI) framework. The purpose of the BI framework is to help improve organizations by providing timely and relevant business insight to all employees. The reporting infrastructure in Project Server includes the Reporting database (RDB), the Reporting Data Service (RDS), multiple OLAP cubes, and the Cube Building Service (CBS).

Project Web Access includes much-improved management of SQL Server Analysis Services cubes, supports customization of the cubes, and has a centralized location for Reporting Services reports that use the OLAP cubes or the RDB. You can add enterprise custom fields as new dimensions or measures, and add calculated measures to the cubes, all through Project Web Access.

The default RDB tables and views are designed to be read-only for generating reports from essentially all project data. There are three core RDB schemas:

  • EPM data
  • Timesheet data
  • Collaboration data

The RDB is updated in near real time (within a few minutes) from changes in the Published database. The RDB tables are de-normalized to make it relatively easy to create reports by using SQL Server Reporting Services.

The RDS handles updates to the RDB with a queue and can manage multithreaded update operations from multiple servers. Users can likely see changed data in Project Web Access before it arrives in a report from the RDB. The RDS includes post-events for data updates, so you can manage the reporting cache and update reports after the necessary data is present.

You can add tables and views to the RDB that include external data and use the RDS to manage updates of custom tables and views. The Project 2007 SDK will include examples of how to create and manage reports, and how to extend the RDB. The Project 2007 SDK Beta 2 download includes a preliminary version of the Reporting database schema reference (pj12_Reporting.chm).

In addition to Project Web Access administration, the CBS has extensive event and trace logging and the PSI CubeAdmin Web service enables programmatic management and scheduling of cube building. The OLAP database for Project Server 2007 includes 11 default cubes (rather than the one cube in earlier versions):

  • Project non-timephased
  • Task non-timephased
  • Assignment non-timephased, Assignment timephased
  • Resource non-timephased, Resource timephased
  • Timesheet, EPM Timesheet
  • Windows SharePoint Services: Risks, Issues, Deliverables

In addition, there are three virtual cubes that combine data:

  • Include data from the EPM cubes (Project, Task, Assignment, and Resource) with data from the Timesheet cubes
  • Include data from the EPM cubes with data from the Windows SharePoint Services cubes
  • Portfolio Analyzer cube, for backward compatibility with reports in earlier versions

The default OLAP cubes can be built by using incremental data changes to allow greater frequency and shorter duration of updates. Views of cube data are available in Project Server Web Parts. You can create additional views and custom Web Parts that combine Project Server and external data. For example, you can use Excel 2007 with improved PivotTable reports and conditional formatting; and, if your Project Server farm includes Microsoft Office SharePoint Server 2007, you can publish the Excel workbooks or spreadsheets to Excel Web Services for thin rendering on any Windows SharePoint Services site.

Office SharePoint Server 2007 includes a centralized Report Center with rich collaboration capabilities. Team members can easily create Key Performance Indicators (KPIs) that monitor data trends. Administrators or developers can use the Microsoft Office Business Scorecard Manager to create scorecard elements, views, and roles, and publish updates of Project Server data to the Business Scorecard Manager Server.

The Project 2007 SDK will include articles about using and extending the Reporting database and the OLAP cubes.

For more information about the Business Scorecard Manager and where to get a trial version, see Additional Resources.


Microsoft Office Project Server 2007 is a state-of-the-art platform based on the latest programming and software collaboration frameworks, the .NET Framework and Windows SharePoint Services, which will be the basis of Microsoft Office Project and other Microsoft software for many years to come. The Project Server platform makes it much easier to develop extensions and integrate with other applications.

The Project Server Interface (PSI) replaces the PDS in earlier Project Server versions. The PSI and related datasets eliminate the need to directly access the three core Project Server databases (Draft, Published, and Archive). Project Server events are the key to extending Project Server and integrating with LOB applications. Event handlers can start workflows, workflows can make PSI calls, and other event handlers can send messages to workflows.

Project Server reporting and OLAP cubes are part of the extensible Project platform and provide customers and partners many opportunities to improve project management, communication, and business decisions in organizations.

Additional Resources

The following references include duplicates of SDK references and external links in this document.