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.

  • Project Programmability and Business Intelligence

    Microsoft Project Conference 2009


    The Microsoft Project Team is pleased to invite you to the 5th Project Conference in Phoenix, Arizona from September 14-17, 2009.


    Keynote speakers announced!


    September 16, 2009

    Chris Capossela

    Senior Vice President, Information Worker Product Management Group

    Chris Capossela manages the Microsoft Office System of products, which includes desktop applications such as Word, Excel, PowerPoint, Outlook, InfoPath, Groove, OneNote, Project and Visio, server products such as Office SharePoint Server, Exchange Server, Office Communication Server and Project Server, and hosted software services such as Office Live, Office Live Meeting and Office Online – all of which deliver end-user productivity and companywide unified communications and collaboration, business intelligence and enterprise content management capabilities. Capossela is responsible for worldwide product and business management for the Office System. This includes defining pricing, packaging, go-to-markets, branding and advertising, as well as developing sales integration and the partner ecosystem around the world.


    September 17, 2009

    Professor Gary Hamel

    The Wall Street Journal recently ranked Gary Hamel as the world’s most influential business thinker

    and Fortune magazine has called him “the world’s leading expert on business strategy.” For the last

    three years, Hamel has also topped Executive Excellence magazine’s annual ranking of the most sought after management speakers. Hamel speaks frequently at the world’s most prestigious management conferences, and is a regular contributor to CNBC, CNN, and other major media outlets. He has also advised government leaders on matters of innovation policy, entrepreneurship and industrial competitiveness.

    Join us to celebrate the successes of Microsoft Project and to see what’s coming, as we exclusively unveil the powerful capabilities included in the next release. At this year’s conference, you will learn how Project is helping customers today to save money, enhance efficiency and drive growth, as well as obtain unique insights into how the next release will continue to support your business tomorrow.

    Project Conference 2009 is the global event to attend. It’s sure to be one of the most exciting and valuable Project Conferences yet with high-impact keynotes, 75+ in-depth breakout sessions, hands on labs, demonstrations and many opportunities to connect and collaborate with your peers, industry practitioners, certified partners and the Microsoft Project team. In the current economic climate, it’s vital to keep both your individual skills and organizational capabilities moving forward – don’t miss the opportunity!

    LEARN what can be achieved today and what’s coming tomorrow with the next release.

    CONNECT with your peers, industry practitioners, certified partners and the Microsoft Project team to share experiences.

    GROW your skills and investments to realize remarkable cost reductions, enhance efficiencies and move your business forward.


    For more information, please visit the Project Conference Website at


    Don’t miss your chance to attend Project Conference 2009!  See you in September!
    The Microsoft Project Conference 2009 Team |

    © 2009 Microsoft Corporation. All Rights Reserved


    You can shape the conference to your needs by taking the survey and telling us what you want to hear the most!

    Do you want to deliver a session? Do you know about anyone who would? Submit your idea for content!

    Looking forward seeing you in September!


  • Project Programmability and Business Intelligence

    MSDN WebCasts...


    In case you have missed Larry Duff's MSDN Webcast: Project Server and Project Portfolio Server Advanced Customization (Level 300), you can always replay the recording!

    Next week - Larry kicks off his series of four Project Server - related WebCasts with the first MSDN Webcast: Office Project Server Programmability (Part 1 of 4): Project Server 2007 Architecture for Developers (Level 400).

    Looking for one-stop page for all developer related WebCasts? Check-out the newly redesigned Project Videos and Webcasts page.

    Comments & Feedback? Drop us a line:


  • Project Programmability and Business Intelligence

    Project Workspace Sync Release to CodePlex



    Last year I shared a couple of samples that showed how to sync the membership for the Project Workspace and how to trigger a RDB queue job for the issue, risks and deliverables in the Project Workspaces:

    These samples seem to be popular. As a result, I have combined the two into a single application called Project Workspace Sync and released it to CodePlex:

    Chris Boyd

  • Project Programmability and Business Intelligence

    Free online courses for developers - MSDN Ramp Up



    Check out the Ramp Up program ( if you have not done already. It has interesting tracks including SharePoint...

  • Project Programmability and Business Intelligence

    EPM Developer Community update - January 2009


    Thank you for your interest and involvement - and - all the best to all of you in 2009! 


    We continue our focus on growing collaboration amongst those with the following skills as they relate to Microsoft enterprise Project Management.


    ·        .NET Developers familiar with Project Server Interface (PSI)

    •    Integration with Line of Business applications using the PSI

    •    Developing Server Side events and Workflows

    •    Project Web Access (PWA) Customizations

    •    Custom report building

    •    Experience with Visual Studio Tools for Office (VSTO)


    Collaboration opportunity

    We hope that the Microsoft Project Developer Discussion - microsoft.public.project.developer newsgroup gives value to you and also enables you to share your knowledge with your peers. 


    Developer blog

    In order to help you navigate through the various blogs sponsored by the Microsoft Office Project Product Group, please recognize the Project Programmability Blog ( as the “official” blog when it comes to Microsoft Project communicating to the Developer community.


    CodePlex solutions   

    We want to remind you that CodePlex remains the place to submit and share code snippets as well as explore and reuse tools that have been posted for your consumption! 


    EPM University Training

    Following is the link to the EPMU Developer Training courses -  EPMU Training Course Schedule.


    OnDemand and Upcoming WebCasts

    ·        Business, Developer and Technical webcasts on Microsoft Project are listed on Microsoft Events and Webcast page dedicated to Microsoft Project ( 


    ·        Developer on demand and upcoming webcasts on Microsoft Project are available on Project Developer Portal’s Videos and WebCasts page ( 


    Thank you!

    Jan Kalis and Joyce Bileau

    EPM Developer Community Leads


    Questions, comments, feedback? Ask us!

    We welcome any feedback on developer content for Microsoft Project - suggestions on content that you are missing or content that you want to share or deliver!





  • Project Programmability and Business Intelligence

    The full list of Project Server / EPM developer-related WebCasts and Videos


    We are posting full list of Project Server/EPM developer On Demand Recordings and upcoming WebCasts so you can mark your calendar. Some are in process of publishing, as soon as they are out, we will post an update J


    Office Project Server Programmability WebCast series





    MSDN Webcast: Office Project Server Programmability (Part 1 of 4): Project Server 2007 Architecture for Developers (Level 400)

    During this webcast, we analyze all of the components that make up Project Server 2007. Once we examine the components, we discuss their importance in programming Microsoft Office Project Server 2007.

    Larry Duff, Microsoft

    On Demand Recording

    MSDN Webcast: Office Project Server Programmability (Part 2 of 4): Project Server Interface Programming Overview (Level 300)

    In this webcast, we provide an overview of what the Microsoft Project Server Interface (PSI) is and how the PSI is built. We also discuss the concepts of using Web services, custom datasets, and error handling.

    Larry Duff, Microsoft

    On Demand Recording

    Revised: MSDN Webcast: Office Project Server Programmability (Part 3 of 4): Review of the Project Server Interface Web Services – PART A (Level 400)

    In this webcast, we walk you through each of the Microsoft Project Server Interface (PSI) Web services, identify key usage of each of the Web services, and provide tips and tricks for working with PSI Web services. 

    Part A of this WebCast covers the following Administrative PSIs: Admin, Archive, CubeAdmin, Events, LoginForms, LoginWindows, Notifications, ObjectLinkProvider, QueueSystem, WssInterop.

    Larry Duff, Microsoft

    Thursday, March 26, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Revised: MSDN Webcast: Office Project Server Programmability (Part 3 of 4): Review of the Project Server Interface Web Services – PART B (Level 400)

    In this webcast, we walk you through each of the Microsoft Project Server Interface (PSI) Web services, identify key usage of each of the Web services, and provide tips and tricks for working with PSI Web services.

    Part B of this WebCast covers the following Project PSIs: Calendar, CustomFields, LookupTable, Project, Resource, ResourcePlan, Security, Statusing, TimeSheet.

    Larry Duff, Microsoft

    Thursday, April 2, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    New Date: MSDN Webcast: Office Project Server Programmability (Part 4 of 4): Project Server 2007 Events and Workflow (Level 400)

    During this webcast, we describe how events extend Microsoft Office Project Server 2007, build handlers for different events explaining when or when not to use them, and demonstrate how to use workflow as a way to illustrate event usage.

    Larry Duff, Microsoft

    Thursday, April 16, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    MSDN Webcast: Office Project Client Programmability (Level 300)

    We show you how to develop against the Microsoft Office Project client object model. We look at using Microsoft .NET and Microsoft Visual Studio Tools for the Microsoft Office System (VSTO) for programming to supplement standard Microsoft Visual Basic for Applications (VBA), and we examine connecting to Microsoft Office Project Server via the Project client object model.

    Larry Duff, Microsoft

    Thursday, April 23, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Other Office Project Server Programmability and solutions-related WebCasts

    Newly scheduled: MSDN WebCast: EPMAuditing Solution Starter Drilldown (Level 300)

    During this webcast, we will explore a new solution starter for Microsoft Office Project Server 2007, EPMAuditing. EPMAuditing provides a framework to capture event data from Project Server 2007 and use the data for reporting, debugging, auditing, or whatever use you find. We will analyze all of the components that make up EPMAuditing. Then we’ll dive into the code, because this solution is made to be extended and customized.

    Larry Duff, Microsoft

    Thursday, May 14, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Working with the Project Server 2007 Reporting Database

    This video provides strategies for locating and using the data in the Project Server 2007 Reporting database. The session walks through three examples of building relatively complex queries from the ground up. Note: This video is recorded from a WebCast session, with a logon through Microsoft Office Live Meeting. The meeting audio is interrupted in the first two slides by the logon.

    Patrick Conlan, Microsoft

    On Demand Recording

    Project Server 2007 Timesheet Customizations

    This video covers all options around timesheet customizations in Project Server 2007. The following CodePlex projects are used during the webcast:

    · EPM Timesheet & Statusing Customization Samples

    · Project Server 2007 Timesheet Tied-Mode Service and Event

    · Project Server 2007 Timesheet Data Population Tool

    Christophe Fiessinger, Microsoft

    On Demand Recording

    Project Server 2007 Integration with Team Foundation Server for EPM Specialists

    Watch an overview of the Visual Studio Team Foundation Server - Project Server 2007 Connector to understand how this solution uses features within Project Server 2007 to enable this integration.

    Lenny Fenster, Microsoft

    On Demand Recording

    MSDN Webcast: Project Server and Project Portfolio Server Advanced Customization (Level 100)

    Present two of the latest solution starters produced for Project and Portfolio Server 2007:

    * The Solution Connector is an ASP.NET web service and .NET class library which provides a set of methods for programmatically creating, updating or deleting projects and their attributes in Microsoft Office Project Portfolio Server 2007

    * Project Server audit framework: this solutions give you the ability to audit specific Project Server events within a farm.

    Larry Duff, Microsoft

    On Demand Recording

  • Project Programmability and Business Intelligence

    Identifying Surrogate Timesheets in the Reporting Database


    When we shipped Project Server 2007 we made sure that timesheet data was readily available to query in the Reporting Database, however one thing that we didn't do was make it super easy to spot a surrogate timesheet (defined as a timesheet entered on a team member's behalf by another Project Server user who has the surrogate timesheet permissions) - one reason was that we wanted mainline timesheet reports to not have to care, and be able to aggregate/report on the data without special case code.

    If you are faced with the need to identify surrogate timesheets the query below, run against the RDB, will help:

    SELECT DISTINCT TS.OwnerResourceNameUID AS N'Team Member'

                  , TSA.LastChangedResourceNameUID AS N'Surrogate Team Member'

                  , TS.TimesheetUID

    FROM dbo.msp_timesheet AS TS

    INNER JOIN dbo.msp_timesheetline AS TSL

      ON TS.TimesheetUID = TSL.TimesheetUID

    INNER JOIN dbo.msp_timesheetactual AS TSA

      ON TSL.TimesheetLineUID = TSA.TimesheetLineUID WHERE TSA.AdjustmentUID = N'00000000-0000-0000-0000-000000000000' -- Not an adjustment

      AND TS.OwnerResourceNameUID <> TSA.LastChangedResourceNameUID -- Submitter <> TS Owner

    We are basically looking at the timesheet lines that haven't been adjusted - if the person who last saved them isn't the same as the person who owns the timesheet then we know its a surrogate - the lines were submitted by another user.

    Usage Note: The two resource UID can be used to join to other timesheet tables - don't join on these directly to the MSP_EPMResource_UserView or other tables in the EPM schema as you won't get a match - instead you should join though the RDB slowly changing resource name table (MSP_TimesheetResource) to get the base ResourceUIDs and use these for the EPM schema. 

    Hope this helps - if you are struggling to get a question answered from RDB data feel free to post a response to this article and we'll see what we can do.

    Happy New Year for 2009 (Chris - first post!) 


  • Project Programmability and Business Intelligence

    Project Server Database Timeout



    Since it is the end of the year, I am slowly working my way through my Outlook tasks to be able to start fresh in the new year. I seemed to have missed posting a change we made to the PSI in the SP1 Rollup. In the SP1 Rollup, we added two new methods to the Admin PSI. One allows you to read the current database timeout and the second allows you to set it:

    • SetDatabaseTimeout(DatabaseTimeoutType.Core, timeout);
    • GetDatabaseTimeout(DatabaseTimeoutType.Core);

    We added these methods because, in some deployments, the default timeout was not long enough. If your Project Server deployment is experiencing database timeouts, you may want to try changing the default timeout. Attached is sample code on how to use these methods.

    Chris Boyd


    Technorati Tags: ,,
  • Project Programmability and Business Intelligence

    Detecting Project Client Version


    We have heard from a lot of customers that they want to block the Project Client from connecting to the server if it does not have the latest updates to install. To solve this, you can add one of the two VBA scripts to the enterprise global to check the client version. Both solutions are not perfect, but they may help solve the problem.

    The first solution looks at the file version. The only slight issue with this solution is determining the location of the Program Files directory.

    Sub projVersion()
        Dim MainFolderName As String
        Dim LastMod As String
        Dim Created As String
        Dim Size As String
        Dim projVersion As String
        Set objShell = CreateObject("Shell.Application")
        MainFolderName = "C:\Program Files\Microsoft Office\Office12"
        Set FSO = CreateObject("scripting.FileSystemObject")
        Set oFolder = FSO.GetFolder(MainFolderName)
         'error handling to stop the obscure error that occurs at time when retrieving DateLastAccessed
        On Error Resume Next
        For Each fil In oFolder.Files
            Set objFolder = objShell.Namespace(oFolder.Path)
            Set objFolderItem = objFolder.ParseName(fil.Name)
            Select Case UCase(fil.Name)
                Case Is = "WINPROJ.EXE"
                    LastMod = fil.DateLastModified
                    Created = fil.DateCreated
                    Size = fil.Size
                    MsgBox ("File: " + fil.Name + " Last Modified: " + LastMod + " Created: " + Created + " Size: " + Size)
                    'do all of the normal tests here to determine which version you need and which you have. See above.
            End Select
    End Sub

    The second solution looks at a registry key for the Project Client version and it was written with the help of

    Const MIN_PROJ_VERSION = 6330
    Const HKEY_CLASSES_ROOT = &H80000000
    Const HKEY_CURRENT_USER = &H80000001
    Const HKEY_LOCAL_MACHINE = &H80000002
    Const HKEY_USERS = &H80000003
    Const ERROR_SUCCESS = 0&
    Const REG_SZ = 1&                          ' Unicode nul terminated string
    Const REG_DWORD = 4&                       ' 32-bit number
    Const KEY_QUERY_VALUE = &H1&
    Const KEY_SET_VALUE = &H2&
    Const KEY_CREATE_SUB_KEY = &H4&
    Const KEY_NOTIFY = &H10&
    Const KEY_CREATE_LINK = &H20&
    Const READ_CONTROL = &H20000
    Const WRITE_DAC = &H40000
    Const WRITE_OWNER = &H80000
    Const SYNCHRONIZE = &H100000
    Sub ProjectVer()
        Dim projVersion As String
        Dim version As String
        projVersion = RegGetValue$(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109B30000000000000000F01FEC\InstallProperties", "DisplayVersion")
        version = Mid(projVersion, 6, 4)
        If (CInt(version) < MIN_PROJ_VERSION) Then
            MsgBox "Your version of Winproj.exe is not valid and may cause problems." & Chr(13) & Chr(13) & _
            "The installation of new version of Microsoft Project is required!" & Chr(13) & Chr(13) & _
            "Required Version: " & Left(projVersion, 5) & MIN_PROJ_VERSION & ".XXXX" & (Chr(13)) & _
            "Found Version:     " & projVersion & Chr(13) & Chr(13) & _
            "Microsoft Project will now Exit." _
            , vbExclamation, "Program Version Check"
            Application.FileExit pjDoNotSave
        End If
    End Sub
    Function RegGetValue$(MainKey&, SubKey$, value$)
       ' MainKey must be one of the Publicly declared HKEY constants.
       Dim sKeyType&       'to return the key type.  This function expects REG_SZ or REG_DWORD
       Dim ret&            'returned by registry functions, should be 0&
       Dim lpHKey&         'return handle to opened key
       Dim lpcbData&       'length of data in returned string
       Dim ReturnedString$ 'returned string value
       Dim ReturnedLong&   'returned long value
       If MainKey >= &H80000000 And MainKey <= &H80000006 Then
          ' Open key
          ret = RegOpenKeyExA(MainKey, SubKey, 0&, KEY_READ, lpHKey)
          If ret <> ERROR_SUCCESS Then
             RegGetValue = ""
             Exit Function     'No key open, so leave
          End If
          ' Set up buffer for data to be returned in.
          ' Adjust next value for larger buffers.
          lpcbData = 255
          ReturnedString = Space$(lpcbData)
          ' Read key
          ret& = RegQueryValueExA(lpHKey, value, ByVal 0&, sKeyType, ReturnedString, lpcbData)
          If ret <> ERROR_SUCCESS Then
             RegGetValue = ""   'Value probably doesn't exist
            If sKeyType = REG_DWORD Then
                ret = RegQueryValueEx(lpHKey, value, ByVal 0&, sKeyType, ReturnedLong, 4)
                If ret = ERROR_SUCCESS Then RegGetValue = CStr(ReturnedLong)
                RegGetValue = Left$(ReturnedString, lpcbData - 1)
            End If
        End If
          ' Always close opened keys.
          ret = RegCloseKey(lpHKey)
       End If
    End Function
  • Project Programmability and Business Intelligence

    Channel 9 videos on VSTS 2010 and Business Alignment



    Ameya just did a blog post about VSTS 2010 plans. One in particular is about Enterprise Project Management and Visual Studio Team System 2010:


  • Project Programmability and Business Intelligence

    Using the Project API with Required Enterprise Custom Fields


    Chris Elwell from the Project Test team wanted me to share the following details around the Project API:


    The Project API (the SOAP methods contained within project) enables the user to create and manage projects on Project Server without the need for the Project Professional client application. Project API functionality includes the ability to create, update, and delete Enterprise Custom Field data within a project; however, the API imposes some restrictions that are not intuitively obvious, especially when the server contains Required Custom Fields.

    We’ll cover each one of the major methods within the Project API and discuss the main concerns related to their use with Enterprise Custom Fields. We won’t discuss every method within the Project API; rather, we’ll focus solely on commonly-used methods which have heavy integration with Enterprise Custom fields. Our discussion focuses on the behavior of regular Text fields; although other Custom Field types may impose additional restrictions, the fundamental concepts will remain largely the same.


    When calling QueueCreateProject, you must provide values for any required project custom fields. If the initial project data set contains any tasks, you must also supply values for any required task Custom Fields. However, the API does not require that you supply values for required resource Custom Fields if you have added local resources to your project. This behavior is consistent with Project Professional 2007.

    Note that the project data set passed into QueueCreateProject is not required to contain a Project Summary Task. If the data set contains no Project Summary Task, one will be created automatically; however, in subsequent calls to QueueAddToProject, QueueUpdateProject, and so forth, you will have to provide any required Custom Field value s for this task.


    When calling QueueAddToProject, it is usually sufficient to add your tasks, resources, or assignments, add any applicable required Custom Field values, and then call GetChanges() on the data set. However, you should first verify that the project stored on the server already meets requirements.

    Specifically, a Project Summary Task must have values for all required task Custom Fields before any modifications to the project can be processed successfully. Project Professional does not enforce this requirement, and Project Summary Tasks that were automatically generated by QueueCreateProject also do not necessarily have values for these fields. If you do not set values for all required Custom Fields on the Project Summary Task, calling QueueAddToProject will fail with a SOAP exception. This applies to any tasks you’ve added, as well.

    QueueAddToProject expects that any “core” Project data must have the “Added” DataRowState. However, it does not enforce this requirement on any of the Custom Fields tables; rather, it uses DataRowState to determine whether the user intends to add, update, or delete values. For example, the only task changes permitted in QueueAddToProject are additions. However, you can modify an existing task Custom Field value, and a call to QueueAddToProject will update the corresponding data on the server.

    Using DataRowState, QueueAddToProject will permit you to add, delete, and modify Custom Field values within a Project. You may not, however, put the project into a state where it is missing any required Custom Field values. As noted, the API will also not permit you to use QueueAddToProject to add data to a project that is already in such a state (missing Custom Field values for the Project Summary task, for example) unless you supply the missing data.


    Similar to QueueAddToProject, this method strictly enforces that all changes to the “core” project data must have the “Modified” DataRowState. As long as you do not violate this restriction, though, you’re allowed to add, delete, or modify Custom Field values as you see fit, and these changes (as in QueueAddToProject) are applied based on their DataRowState. As with the QueueAddToProject method, this method will fail and emit a SOAP exception if the project is already missing required Custom Field data and the data set you’ve sent doesn’t supply the missing information.


    This method simply takes an array of GUIDs containing entities you wish to delete from a project. When you delete one of the “core” entities (such as a task or resource) from a project, the related Custom Field values should be deleted automatically. However, using this method to directly delete Custom Field values has no effect. If you wish to delete a Custom Field value from a project, you must call the DataRow.Delete method on the row you wish to delete, then use GetChanges to produce a data set appropriate for use with QueueAddToProject or QueueUpdateProject.

    Technorati Tags: ,,
  • Project Programmability and Business Intelligence

    Upcoming Developer Courses



    Larry Duff will be conducting online Office Project Server 2007 Developer Training:

    • 26-29 Jan 2009 at 10:45 am EST
    • 26-29 May 2009 at 10:45 am EST

    For more information, visit:

    Chris Boyd

  • Project Programmability and Business Intelligence

    Microsoft Office Project Server 2007 and AJAX.NET


    Even though Boris has moved on to another team in Microsoft, he still wanted me to share the following with you:

    Microsoft Office Project Server 2007 is built on top of Windows SharePoint Services, so you might think you can develop AJAX Web Parts as you do in Windows SharePoint Services, right?

    Unfortunately it’s not that easy. Actually the Web Part development process is the same, but you need to configure Project Server 2007 for AJAX support.

    Here’s what you need to do:

    You must configure the Project Web application and the Shared Services Provider Web Application to support calling Web services from script. In the Web.config file for the application, you must register the ScriptHandlerFactory HTTP handler, which processes calls made from script to .asmx Web services. For Web service calls that are not issued from ASP.NET AJAX script, the handler delegates the call to the default handler.

    You need to add the following lines to the web.config located in:

    [C:\Program Files]\Microsoft Office Servers\12.0\WebServices\root


      <remove verb="*" path="*.asmx" />

      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,    System.Web.Extensions, Version=, Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>


    You also need to add the following line to the web.config of your project server installation which can be found here:

    C:\Inetpub\wwwroot\wss\VirtualDirectories\[PSweb app directory]

    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

    After making those changes to the config files the client runtime is now enabled for AJAX and you can start building AJAX Web Parts.

    Have fun

  • Project Programmability and Business Intelligence

    New Office Project Server 2007 Developer Training


    This course is designed for Developers extending, developing and integrating with Project Server 2007. This online, instructor-led course provides a deep dive into using Project Server 2007 as a Developer Platform with numerous code demonstrates and hands-on labs. Concepts and topics include architecture for developers, best practices on programming with Project Server Interface (PSI), extending Project Web Access (PWA), migrating applications and security.

    For more information, visit:

    Chris Boyd

  • Project Programmability and Business Intelligence

    Japanese Project Server 2007 SDK


    The Project Server 2007 SDK is now available in Japanese:

    Chris Boyd

  • Project Programmability and Business Intelligence

    Project Server Developer Bookmarks




    Christophe posted a great set of Project Server Developer bookmarks: 


  • Project Programmability and Business Intelligence

    Project at TechED Developers next week



    Boris Scholl, Brian Smith and Christophe Fiessinger will be attending TechEd Developers 2008 in Orlando next week.

    They will be delivering the following sessions:

    Customizing the Microsoft Office Project Web Access User Interface

    Line-of-Business Integration Using Microsoft Office SharePoint Server 2007 and Microsoft Office Project Server 2007

    Code Samples

    Project Initiation Using Microsoft Office InfoPath and Windows Workflow Foundation

    Code Samples

    They will be around all week attending the Blogger Connect (next to TechEd online / Fishbowl areas) as well as the Office Developer booths.

  • Project Programmability and Business Intelligence

    Grow-the-Server Side Sweepstakes Update

    • The random drawing took place on Thursday, May 1 and prize winners have been contacted. 
    • The Sweepstakes added more than 75 new server-side skilled entries into the Project Server Developers Newsgroup content and drew 6 new developers to the group

      Congratulations to Bob Segrest for winning one of the Grand Prizes of a free pass to Tech Ed Developers in Orlando, FL June 3-6.  The date is coming up quick!

      The second winner of the Tech Ed Developers free pass has not yet claimed their prize. 

      Congratulations also to following for winning the five $50.00 secondary prizes:

    o   Fernando Paucar of LMR Solutions

    o   Piet Remen of Strategic Data Management

    o   Andrew Jacks of Strategic Data Management

    o   Hans Hoet of Guidance NV/SA  Buro & Design Center

    o   Virendra Sharma of Project Widgets Inc.

  • Project Programmability and Business Intelligence

    For those entering the GROW-THE-SERVER-SIDE SWEEPSTAKES…


    For those entering the GROW-THE-SERVER-SIDE SWEEPSTAKES as posted on this blog, please remember not to send your registration for the sweepstakes from an email account that doesn’t allow incoming email messages.  The purpose of providing your email is:

    · Uniquely identify you as liked to your display name which is used to partake in the sweepstakes through the PS Developers Community Newsgroup

    · Contact you in the event that you win

    Microsoft if legally bound by Privacy guidelines not to use your email for any other purpose than to have you register for this sweepstakes.

  • Project Programmability and Business Intelligence

    New SQL Reporting Services Sample Reports for Project Server



    Christophe just released the reports that ship with the updated EPM 2007 VPC:


    Technorati Tags: ,
  • Project Programmability and Business Intelligence

    Calling all Project Server Developers from the Expanding the Project Server Developers Community Growth Effort!


    Announcing the GROW THE SERVER-SIDE SWEEPSTAKES to be held between April 9 and April 30, 2008.

    Enter for a chance to win * a free pass to the Tech Ed North America 2008 Developers Conference in Orlando, Florida June 3-6.

    Five other lucky winners will be drawn to receive a Project Server Developers Community plaque and pen prize package.

    The drawing for the winners will take place May 1, 2008.

    Get your registration in now and begin making your postings to the PS Developers Community Newsgroup to accumulate entries. 

    Read the official rules attached for details about entries.

    Register by:  sending an email before the close of the sweepstakes period with the subject “Server-Side Sweepstakes” to with the following information:

    *NO PURCHASE NECESSARY. Open to technology professionals and enthusiasts 21+. Game ends April 30, 2008. Void in Quebec and where prohibited by law. Some geographic restrictions apply. For full rules, see the attached document.

  • Project Programmability and Business Intelligence

    Connection Strings…



    Here is a great post:

    It shows how to get the connection string to the Project Server 2007 Reporting Database (and the other three databases which are not supported programming interfaces). This is extremely helpful when creating PSI extensions. Just one caveat, this may break after a hot fix or service pack install.

    Chris Boyd

  • Project Programmability and Business Intelligence

    Project Server and Portfolio Server Sessions at TechEd 2008



    TechED 2008 – Developers and TechEd 2008 - IT Professionals are two months away!

    Please find below the EPM sessions that will be delivered at these events:

    TechED 2008 – Developers

    • Customizing the Microsoft Office Project Web Access User Interface
    • Line-of-Business Integration Using Microsoft Office SharePoint Server 2007 and Microsoft Office Project Server 2007
    • Project Initiation Using Microsoft Office InfoPath and Windows Workflow Foundation

    TechEd 2008 - IT Professionals

    • Microsoft Office Project Server 2007 Disaster Recovery
    • Best Practices: Enabling Innovation Process Management Using Microsoft Office Enterprise Project Management Solution and Microsoft Office SharePoint Server 2007
    • Microsoft Office Project Server 2007 Deployment for High Availability and Scalability

    184 2008-03-28, 12_32_30

    Technorati Tags: ,
  • Project Programmability and Business Intelligence

    Search Project Server data using MOSS' BDC and Enterprise Search - CodePlex Solution Starter



    Do you ever wonder how many projects are in a specific phase? Would you like to know the attributes of a specific resource? Are you looking when a specific milestone ends? Do you have users in your organization that are not part of the Project Server resource pool but still need to access the data? Being able to easily search valuable information is becoming a key feature in any organization. 

    This solution starter demonstrates how to leverage SharePoint Server’s Business Data Catalog (BDC) to index project server data and enable users to search the different objects (projects, tasks, resources, lookup tables…) using SharePoint Server’s Enterprise Search, and give you answers to all the questions above.  Out of the box the Project Server data is not indexed (only the SharePoint objects are indexed for instance Issues, Risks, Documents…) and thus users cannot search the content contained in the Reporting database. This solution starter will thus enable you to mine the PS 2007 gold mine and find the nuggets you were looking for very easily!

    This solution starter was created for a presentation I delivered last week at the SharePoint Conference to illustrate one of the benefits of deploying PS 2007 with SharePoint Server ( and not just WSS V3).


    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


    Technorati tags: , ,
  • Project Programmability and Business Intelligence

    Canceling the Before Save Event



    A good question came in yesterday; how to cancel the Project Before Save event in Project client:

    Public Sub GlobalApplication_ProjectBeforeSave(ByVal pj As Project, ByVal SaveAsUi As Boolean, Cancel As Boolean)
             Cancel = True
    End Sub

    (For demonstration and simplicity, this event handler just cancels all saves. You would most likely want to add validation and if it fails, cancel the save)

    Unfortunately the above code will not work. Instead, you will want to use ProjectBeforeSave2:

    Public Sub GlobalApplication_ProjectBeforeSave2(ByVal pj As Project, ByVal SaveAsUi As Boolean, Info As EventInfo)

             Info .Cancel = True

    End Sub

    Hope this helps,

    Chris Boyd


    Technorati tags: , ,
Page 7 of 11 (255 items) «56789»