Cascade Skyline - with Microsoft Logo and Project Support header - author Brian Smith

  • Brian Smith's Microsoft Project Support Blog

    Operating System and SQL Permissions for the Microsoft Office Project Server 2007 Service Accounts


    As part of some internal training I captured the details of which groups the various accounts that can be used for Project Server 2007 end up belonging to.  I though this might be useful to share.  The key thing here is that you do not normally need to do any of this manually - and even if you change some accounts then as long as you use the UI or stsadm the group memberships should be set correctly. 

    So for my scenario I have 4 users.  FarmAdmin, SSPAdmin, DefAppPool and SSPAppPool and these are going to used as the farm administrator of Windows SharePoint Services (FarmAdmin), the admin account for the Shared Services Provider (SSPAdmin) and the identities for the two application pools for the initial Port 80 site (DefAppPool) and the random port for the SSP (SSPAppPool).  In a farm environment these would all need to be domain accounts.  In my tests they were all local in a Virtual Server image.  These could all be the same account - but some customers prefer each to be different - thus allowing each to have minimum permissons.  I carried out the install as myself - an administrator on the server.

    Once I had finished my installation the following groups had added the following members:-

    IIS_WPG - FarmAdmin, SSPAdmin, DefAppPool, SSPAppPool
    WSS_ADMIN_WPG - FarmAdmin
    WSS_WPG - FarmAdmin, SSPAdmin, DefAppPool, SSPAppPool

    And in SQL Server the following logins had been added with roles set as noted below:-

    Server roles - dbcreator and securityadmin
    User mappings to the PWA, SSP and WSS content databases with dbo
    User mappings to the SharePoint_Config and SharePoint_AdminContent  with dbo and WSS_Content_Application_Pools role

    No server roles
    User mapping to PWA Archive draft and published with datareader, datawriter and ProjectServerRole
    User mapping to PWA reporting as above plus ddladmin
    User mapping to SharedServices and WSS Content databases with dbo role
    User mappings to the SharePoint_Config and SharePoint_AdminContent  with WSS_Content_Application_Pools role

    DefAppPool and SSPAppPool
    No server roles
    User mapping to SharedServices database and their respective WSS_Content databases as dbo
    User mappings to the SharePoint_Config and SharePoint_AdminContent  with WSS_Content_Application_Pools role

    In my next posting I will take this to the next level and document other settings and permissions required to get Project Server 2007 working with SQL Server 2005 Analysis Services.

    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    One event handler and multiple PWA sites - Where did that event come from?


    An interesting support case came in through our EMEA team (thanks Valdemar) where a customer had a single event handler that was registered in different sites - but when the event was raised they needed to know which site fired it - so they could make the necessary updates against the right site.  In this case they were updating the list of projects in different categories - both on the publishing and check-in events.

    So, how do you find out?  The event itself has a parameter of contextInfo and one of the properties that gets set for events is the SiteGuid - which is actually the SiteId of the WSS site hosting PWA.  So this can identify the instance of PWA.  The next step to getting a URL rather than the GUID is to create a new instance of SPSite using this GUID and then simply read the URL property.  So a full event handler that has the extra reference to the required SharePoint library and writes the Project name, the Site ID and the Project Server URL out to the event log would look like this:-

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Net;

    using System.Text;
    using Microsoft.Office.Project.Server.Events;
    using Microsoft.Office.Project.Server.Library;
    using WSSDll = Microsoft.SharePoint;

    namespace TestEventHandler
        public class MyEventHandler: ProjectEventReceiver
            public override void  OnPublishing(PSContextInfo contextInfo, ProjectPrePublishEventArgs e)
              base.OnPublishing(contextInfo, e);
                EventLog myLog = new EventLog();
                myLog.Source = "Project Event Handler";

                // Get information from the event arguments, and
                // write an entry to the Application event log.
                string projectName = e.ProjectName.ToString();
                Guid siteGuid = contextInfo.SiteGuid;
                string pwaUrl = new WSSDll.SPSite(siteGuid).Url;
                int eventId = 3652;
                string logEntry;

                logEntry = "Project: " + projectName +
                            "\nSiteId " + siteGuid.ToString() +
                            "\nPWA Instance: " + pwaUrl;
                myLog.WriteEntry(logEntry, EventLogEntryType.Information, eventId);


    Not very useful in that state - but you can add some extra stuff to do some real work.  They key thing is you don't have to deploy different event handlers for each instance of PWA - just deploy once and then register in each of the PWA instances you want to use it.  And no need to modify your event handler just because you add a new PWA site to your system.  See the Project Server 2007 SDK for an end-to-end explanation of creating and debugging Project Server 2007 event handlers.


    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    Adding Timephased Actual Work through the PSI


    There is some great content in the SDK on statusing (search for SubmitStatus and UpdateStatus) and even more coming soon.  One of the missing pieces just at the moment is around adding timephased data.  So here is a very brief example.  See the SDK for better examples of programmatically building the XML - but the key piece is the format of the XML passed to the statusing.UpdateStatus web service.  In my example I have a 5 day task assigned to me starting next Monday - and I want to update the actual work in my tasks to show 8h on Monday the 5th and 8h on Wednesday the 7th.  The XML for this change is as follows:- 


    <Proj ID="a3349ba9-7eb8-4921-9024-483d0a732f1a">

    <Assn ID="dd6a2aa8-b754-48b5-a6fe-b5cd50cea19b">

    <PeriodChange PID="251658250"  Start="2007-02-05T08:00:00" End="2007-02-05T17:00:00">480000</PeriodChange>

    <PeriodChange PID="251658250"  Start="2007-02-07T08:00:00" End="2007-02-07T17:00:00">480000</PeriodChange>






    ·         a3349ba9-7eb8-4921-9024-483d0a732f1a is my Proj ID,

    ·         dd6a2aa8-b754-48b5-a6fe-b5cd50cea19b is my Assignment ID

    ·         The PID 251658250 means s_apid_actual_work (or Actual Work - from PSLibrary.AssnConstID.s_apid_actual_work - see SDK for more details of these constants)

    ·         Start and End time format is critical – the ULS logs are good at giving help when you get a LastError=StatusingInvalidChangelist Instructions exception.

    ·         480000 = 8 hours



    So executing the statusing.UpdateStatus(changeXml); where the changeXml is the same as presented above will do exactly the same as entering the two lots of 8hrs in through PWA.  Tuesday will be updated to 0h planned work (because I have entered actual work for Wednesday)  - and 8h will be pushed back to next Monday.

    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    You don't need to install WSS v3 before Project Server 2007


    One common issue we see, particularly from customers familiar with Project Server 2003 is that they will install WSS v3 before Project Server 2007.  This is an unnecessary step and in some cases can then make it difficult to install Project Server 2007 in precisely the way that you want.  For instance if WSS is installed then it can install a SQL Express instance for its databases.  Then when you install Project Server it follows the lead of WSS and also uses SQL Express - when you really wanted to load the databases in another instance of SQL Server 2005.  Just installing Project Server 2007 will also install all the bits of WSS you need and allows either a "standalone" install - which does use SQL Express, or you can choose "Advanced", followed by "Complete" and this will allow a choice of SQL Servers to connect to.  Often a customer will choose standalone to mean that SQL will be on the same server - but will not intend to use SQL Express - but a full SQL Server 2005 database engine that is also running on the server.  Standalone does not give you the choices - but Advanced and then Complete does.

    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    Project Server 2007 SQL Server Reporting Services Report Pack - Now available


    This will be part of the SDK in the April update - for now you can find it at the Project blog at

    "The Project Server 2007 Report Pack provides usable reports for some common requests and illustrates some of the new functionality in Microsoft Office Project Server 2007.  The Report Pack also provides report developers with sample queries for correctly retrieving data from the Project Server Reporting database."


    Technorati Tags:

Page 88 of 91 (454 items) «8687888990»