Project Programmability

This blog focuses on customizations and programming for Project Web App, Project Server, Project Professional and Project Standard. Includes User Interface (UI) customizations, Project Server Interface (PSI) and Visual Basic for Applications (VBA) Programming. It also covers Business Intelligence.

December, 2007

  • Project Programmability and Business Intelligence

    Microsoft Office System Developer Conference 2008



    We are pleased to announce the dates and location for the 2008 Office Developer Conference!

    When: February 10-13, 2008

    Where: San Jose Convention Center, San Jose, CA

    Who: 2000 developers and architects who build solutions on the Office platform (Office clients, servers, and services)

    ODC 2008 will bring together architects, developers, industry technical experts, Microsoft insiders and key partners in a public forum for the first time! Together, we will redefine what it means to be focused on Microsoft Office development, exchange ideas on how to continue innovating in this ever-changing space, and share best practices on how to craft the next generation of Office Business Applications. Microsoft Chairman Bill Gates will deliver a special keynote that is not to be missed.

    We are giving you advance notice that our public site is going live on Monday morning, Sept. 17th. We will keep you updated when registration opens and as we have more information to share about the event. In the meantime, please help to spread the word about the conference and visit the site on Monday so you can subscribe to updates as we post them.

    See you there,

    - The 2008 ODC Team

    Answers to some Frequently Asked Questions about the conference:

    Who is the Microsoft Office System Developer Conference for?

    Those involved or interested in using the Microsoft Office system (clients, servers, and services) as an application development platform. For example, people in technical roles e.g. architects, developers, designers, and technical managers.

    Who can attend?

    The conference is open to the public.

    Is this the first time for this conference?

    No, Microsoft has held this conference three times in the past (2004, 2005, 2006). However, those conferences were only open to a select group by nomination/invitation. This is the first conference that is open to the public.

    Will it cost to attend the conference?

    Yes, there will be a reasonable registration fee for the conference. For those that register early, we will have a special early bird rate as well.

    How many people are you expecting?

    We’re expecting between 1800-2000 attendees

    Which products/technologies will this conference cover?

    Obviously, the conference will cover everything in Microsoft Office system, including clients, servers and services, but business productivity applications don’t exist in isolation. More and more, we’re finding that people are using others parts of the technology stack and bringing together various technologies to make applications more compelling. So a great number of sessions will have topics involving Office application development in the context of leading-edge technologies such as VOIP, Silverlight, integration with third-party line of business applications, etc.

    What tracks will you offer?

    We are still finalizing the organization of the more than 60 sessions planned. Track information will be available as registration opens in October.

    I’ve heard there’s also a SharePoint Conference. What’s the difference?

    The SharePoint conference will take place in March 2008 in Redmond, WA. Unlike the Microsoft Office System Developer Conference, the SharePoint conference is primarily intended for those in IT who use, deploy, and configure SharePoint. If you are focused on SharePoint deployment you should attend the SharePoint Conference. If you are a SharePoint developer you should attend Office System Developer Conference. Here you will find the most information about how to develop solutions that not only build on the SharePoint platform, but also take advantage of the other technologies in the Office system.

    Why didn’t you just have the conference at the same time/location with SharePoint Conference so people could attend both?

    We did look into this but couldn’t make this happen due to lack of suitable space.

    Who is delivering the keynote?

    Microsoft Chairman Bill Gates will be delivering a special keynote presentation. Visit our site in October to find out more about the other keynote speakers!

    Why did you choose San Jose instead of having the conference in the Seattle area?

    We looked at several options. Lack of suitable space was a key factor. Also, average temps in San Jose in Feb are Low: 45°F (7°C) High: 63°F (17°C) with 2.84 in (7.21 cm) of precipitation, whereas in Seattle the averages are Low: 37°F (3°C) High: 51°F (10°C) and 4.09 in (10.39 cm). It wasn’t a difficult decision to make.

    Who will present sessions?

    Sessions will be presented by Microsoft experts and MVPs, as well as other industry/technical experts.

    Will you have non-Microsoft staff presenting sessions?

    Yes. If you or someone you know would like to present on a relevant technical topic, we’ d be happy to consider them, though slots are very limited. To submit a session idea, please send all relevant information to

    Where can I find more information?

    Our web site will have more information about the conference as it becomes available. Check back often or sign up to get notified!

  • Project Programmability and Business Intelligence

    Publishing Projects based off a Project Custom Field Value



    As part of the development process for the next version of Project, we are heavily relying on Project to manage all the work that is happening across team. As part of the process, we require up to date status reports. All the work is spread across 40 project plans, so we cannot rely on PMs publishing projects daily. To ensure the status reports are up to date, we publish all the projects nightly by running a custom application as a scheduled Windows task:



    Since we only want to publish our team's projects and cannot publish other teams projects on the server, we tag all of our team projects with text custom fields that have associated lookup table to ensure that everyone on the team is using the same tags:


    To setup the custom field and lookup tables:

    1. Log onto Project Server as an Administrator
    2. Click on "Server Settings" then click on "Enterprise Custom Field Definition"
    3. Scroll to the bottom of the page and click "New Lookup Table". We created a lookup table called "Office Division", which has all the divisions within Office:

    4. Next, create a custom field, which we called "Office Division", and associate it to the lookup table:


    The application to publish the projects nightly is attached to this post. It is a fairly simple application. At the top of the program class, we have set a few constants. If you wanted to try out this application, you should just have to change these constants and compile the application. These constraints are self explanatory:

    const string ls_projURL = "http://Office/PWA/";     // Server URL
    const string ls_CustomField = "Office Division";    // Custom Field 
    const string ls_LookupTableValue = "Project";       // Value in the lookup table

    Once we had the application built, we simple set up a scheduled task in Windows to run the application nightly:


    Chris Boyd

  • Project Programmability and Business Intelligence

    Microsoft Office Project Conference 2007 - Simple Effective Rights


    I'm Phil Smail, one of the Program Managers from the Product Group. One of my presentations during the MOPC 2007 was one of security programmability. As part of that Presentation I demonstrated some code that I wanted to get onto this blog

    This code is a Simple Effective Rights tool. It's essentially a cut down version of the View Effective Rights tool we shipped with the Project 2003 Project Resource Kit (and will be shipping soon in the Project 2007 Project Resource Kit)

    It's a Winforms application that uses the PSI to brute force calculate why a user does/doesn't have the correct permissions. This version only does Project Permissions but could be very easily modified to handle Resource and Global permissions. It uses the PSI to work out the permissions

    When you first start the application you'll get the following logon screen:


    When you enter the URL you are presented with the main Form page:


    There are three drop downs at the top of the page. One to select the User, the second to choose the relevant permission, and the third to choose the Project Name. One those details have been entered you just need to hit the 'EffectivizeName Possible my Rights' button. It then looks like the following:


    The columns mean the following:

    Column Name Possible Values Purpose
    Right Allow/Deny The right specified for the selected Permission
    Object Present True/False Whether the object is explicitly added to the category. If not then it may be accessible through the Category rules
    Category Name N/A The name of the category giving the user permissions
    User/Group Name User name or the Group name If this is via the User then the User Name is displayed else we just display the name of the Group
    Applicable Rules

    · All current and future projects in Project Server database

    · Only the projects indicated

    · The User is the Project Owner or the User is the Status Manager on assignments within that Project

    · The User is on that project's Project Team, The Project Owner is a descendant of the User via RBS

    · A resource on the project's Project Team is a descendant of the User via RBS

    The Project Owner has the same RBS value as the User

    The rules specified by the Category that may be relevant to the effective Permission

    The rules specified by the Category that may be relevant to the effective Permission

    As you can see in the case above the following can be understood from this:

    · The effective right is Deny for this user, this permission on this project

    · The user is denied in 4 categories, 3 directly on the user, one through a group

    What it’s doing under the covers is going through the user object and working out what categories they have permissions on and whether the object exists and what permission the user has on those objects. It then goes through all the groups the user belongs to, works out what categories they have permissions on and calculates the same information. This will give the effective right the user has.

    Why do we have to go through every item to work out the effective right of the user? Unfortunately there isn’t a PSI that tells us the effective permission of a user other than the logged on user.

  • Project Programmability and Business Intelligence

    December update of the Project 2007 SDK



    Jim Corbin has just passed along the following:

    The December update of the Project 2007 SDK download and the MSDN online release are both published. This is the third SDK update published since the RTM release of the SDK in November 2006. The first update was published in April and the second in July, 2007.

    Project Developer Portal:

    SDK Online:  Project 2007 SDK in MSDN online library:

    SDK Download:

    What’s New

    In addition to several documentation fixes, the following content is new or extensively updated.


    · ERP Connector Solution Starter (20 topics)

    · How to: Customize E-Mail for Project Server Notifications  – this is an update of the project_programmability blog post.

    · Project XML Data Interchange Schema Reference includes the following topics:

    · New XML Elements

    · Custom Field Data in XML

    · Saving and Opening Projects in XML Format

    · How to: Use XSLT Transformations with Project XML Data Interchange Files

    · Project Data Interchange Elements includes reference topics for all of the schema sections, XML structure, and XML elements.

    PSI Managed Code Reference:

    · Additional descriptions of row properties in the following datasets in the Project Server Interface (PSI): LookupTableDataSetLookupTableMultiLangDataSet, AlertSubscriptionInfoDataSet, ReminderSubscriptionInfoDataSet, QueueStatusDataSet, QueueStatusRequestDataSet, StatusingSettingsDataSet.

    · Additional descriptions for event receiver methods.


    · ERP Connector:   Complete sample source code and test application for the ERP Connector.

    · XML Schema:  Revised XML data interchange schema, mspdi_pj12.xsd.
    Note: The Project XML schema is also now published on

    · ProjTool:   Now includes a dialog box for backup and restore of selected projects.

    · SP1 library assembly: Redistribution license for the SP1 build of the Microsoft.Office.Project.Server.Library.dll assembly, and 32- and 64-bit copies of the assembly.

  • Project Programmability and Business Intelligence

    Update on the ODC 2008



    This is a follow up from my previous post about the ODC 2008. Just wanted to let you know that the ODC 2008 will have some specific Project Server sessions:

    Session Title Speaker Name Abstract
    Building a custom Webservice to query the EPM datastore and render the data in Excel 2007 Christophe Fiessinger This session will teach you how to develop a custom wss webservice querrying the Project Server database and displaying the resulst in an Excel 2007 AddIn
    Creating projects in Project Server using Forms Server and WinWF Christophe Fiessinger This session will show you how to develop a solution that creates projects in Project Server using Forms Server and WinWF
    Displaying Project Server data in an Ajax.NET WebPart Boris Scholl This session shows you how to develop an Ajax webpart displaying data from Project Server in a Windows Live Map.

    You can view all the session abstracts by track following these links:

    Client Track -

    Architect Track -

    Real World Track -

    Server Track -

    Services Track -

    Chris Boyd

  • Project Programmability and Business Intelligence

    Two new Project Server 2007 tools have been released on CodePlex today



    Two new Project Server 2007 tools have been released on CodePlex today:

    EPM 2007 Log File Report tool EPM 2007 Queue Watch tool
    The Project Server 2007 Log File Report Tool enables the import and the reporting of log file generated by your EPM & SharePoint farm. The Log File Report Tool will import log files (in an SQL database) from all servers in your farm with the ability to filter them by date. Once the import is complete you can easily search for specific log file messages using the following filtering criteria: Area, Category, Level, Process, Server as well as date and created reports.

    The Project Server 2007 Queue Watch Tool will help you monitor all queue activities for a specific Project Web Access (PWA) instance. This tool leverages the standard Project Server Interface publically documented web services to query and retrieve jobs in the Project Server queues, further you can configure the tool to filter the information retrieved by Message Types and Job types.

    The Queue Watch Tool is available as a WinForms application. It was written by EPM World Wide Center of Excellence (WW COE) to efficiently monitor and troubleshoot queue activities for Project Server 2007 farms.

    MWSnap052 2007-12-12, 10_44_28 MWSnap071 2007-12-14, 12_45_33
    This release contains documentation, setup, and source code. This release contains documentation, setup, and source code.

    About CodePlex

    CodePlex is Microsoft's open source project hosting web site. You can use CodePlex to create new projects to share with the world, join others who have already started their own projects, or use the applications on this site and provide feedback. A word about Microsoft’s role: Microsoft does not control, review, revise, endorse or distribute the third party projects on this site. Microsoft is hosting the CodePlex site solely as a web storage site as a service to the developer community.


    Q: Is the tool supported?

    A: There is no support in terms of CSS/PSS. We expect the support being a CodePlex community effort. Please note that the customization code uses standard supported web service calls available out of the box in EPM2007.

    Q: Is the tool free?

    A: Yes.

    Q: Can I distribute the tool and the source code to customers and partners?

    A: Customers and Partners can use both. Please point them to CodePlex as they have to agree on the license terms

    Q: Can a partner distribute the tool and code as is?

    A: No, but he can point his customer to the website to download it, so he makes sure that the customer agrees with the license terms.

    Q: Can a customer install the customization and use it?

    A: Yes the customer can, but he/she is responsible for testing it and running it.

    Q: Can I suggest changes to it?

    A: Yes, join the CodePlex community or send us an email:

    Q: Will this tool be distributed in other ways (i.e. DVDs)?

    A: No.

    Q: What skills do I need to modify or change the tool?

    A: C#, Project Server Interface, and a good understanding of the EPM 2007 data schema.

    Q: I’m trying to modify the code and do have questions. Who do I ask?

    A: Go to the Discussions forums on CodePlex.

    Q: What are all the EPM projects released on CodePlex?

    A. Check this:


    Christophe Fiessinger

  • Project Programmability and Business Intelligence

    Microsoft Office Project Conference 2007 – Security Wiper

    NOTE: Please do not run this on a production environment without careful thought and planning. Always test it on a backup and verify everything is okay before doing anything

    Hi, Phil Smail here again. Again some more code I wrote for the MOPC that I wanted to put up onto the blog.

    This code originally came about because a internal Microsoft group had got to the stage where their security permissions were out of control. This was mainly due to an initial lack of understanding of the security model and they wanted to get to a state where all the users, other than Admins have their permissions wiped so a proper security model can be put in place.

    The tool looks like the following when run:


    First thing is to enter the URL of the site you want to connect to then click on the 'Connect to Server' button.

    This then populates the 'Admin Group' dropdown with the list of Groups on the server. When you click 'Reset Perms' then it will run through every user and remove them from all Groups and Categories they belong to as well as removing all Global Permissions set on users directly. This is the case except for the group that you select as the Admin group. All users that belong to that group will continue to belong to that group.  Once the tool is run then the Admins, who should still belong to the chosen 'Admin Group' can go about giving users the permissions following security best practice.

    A Dry Run checkbox is checked by default and this will run the test to see how much will be removed and display it in the textbox below. You should definitely run it in Dry Run mode before removing any permissions for real.

    In this case the output would look something like the following:


    NOTE: Please do not run this on a production environment without careful thought and planning. Always test it on a backup and verify everything is okay before doing anything
  • Project Programmability and Business Intelligence

    Project 2007 Service Pack 1 has Released Today!



    I know a lot of you are interested in Project 2007 Service Pack 1. It has been released to the web!

    Project Professional and Project Standard SP1:

    Here are the instructions for installing Project Server SP1:

    Also, the Office SP 1 is available here:



Page 1 of 1 (8 items)