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

February, 2007

  • Brian Smith's Microsoft Project Support Blog

    My Queue is Stuck! - How to manage your queue service in Project Server 2007

    • 102 Comments

    The new world of Project Server 2007 and the architectural changes are catching a few of our customers out - and I thought I'd share a few tips and tricks for keeping the queue flowing - and some tips for getting things moving again if they appear to have stopped. 

    First I will point to a great TechNet article on the Queue and as you will all have read this then my explanations will make more sense :).

    Under Server Settings in Project Web Access the Manage Queue option allows you to see what is happening in the project and timesheet queues - if you don't have admin access then the Personal Settings will give you a glimpse of your queue jobs.  The latter option may not however give you the complete picture and allow you to see what might be ahead or you.  It is like being stuck on the highway and not being able to see around the corner to where the flashing lights are... 

    So lets start with some definitions:-

    Waiting to be processed - means exactly what it says.  Once I get to the front of the queue then I am ready to go.  But there may be other active jobs ahead that will stop my job starting even if I am first in line.  The queue is clever enough that it will hold jobs back if their processing would interfere with other running jobs.  An example might be a publish job that will need to wait for a cube build to finish.

    Processing - means that I made it to the front of the queue, was allocated a thread and am working away!  One thing I have noticed is that the % complete indicator doesn't always make you think that "processing" is happening - but generally it is.  Looking in the ULS logs, event logs or at general server activity (particularly the Microsoft.Office.Project.Server.Queuing.exe process should help if you have continued doubts that processing is moving along.

    Skipped for optimization - is the queue's way of telling you that it is not going to do the same thing twice.  Some queue jobs have a payload (such as saving a project) and others are merely instructions (such as publish a project).  If several of the same instruction are in the queue, then only one needs to be actioned.  An example might be working on a project and publishing a few times during a period of time.  If the queue was busy all of these jobs might be sitting waiting for a while - and then rather than doing each in turn it just needs to do one.  It is just an instruction to publish the content of the saved project.  This would not happen with a queue job that had a payload as each of these contains real data that needs to be applied - rather than just an instruction to do something with data somewhere else.

    Getting Queued - appears to be one of the more confusing messages.  I mentioned above that some jobs, such as save project from Project Professional, have a payload. This payload goes into the queue as a group of related messages, which then get processed once they reach the front of the queue.  Getting queued means that these messages are going into the queue.  It is possible that the Getting Queued message appears for some time because a very large project is coming in across a very slow link.  One other potential problem that can break things is if this flow in of messages does not complete.  Perhaps the Project Manager saving the project shuts down Project before it completes - or perhaps goes out of wireless range midway through the process.  Either way the Getting Queued could sit there for some time. To fix this up find the person who has this project in mid-save and get them to reconnect and complete the job.  As a last resort you can cancel the Getting Queued - but YOU WILL LOSE DATA!  Any changes the Project Manager made will not get saved.  To protect you from inadvertently canceling one of these jobs we add a check box under Advanced options labeled "Cancel jobs getting enqueued" which will need to be checked before these jobs can be canceled.

    Failed and Not Blocking correlation - is a failure that is isolated and not stopping any other jobs from processing.  The term correlation is used to group related queue jobs together.  There should be an associated error message and entries in the log to help explain the problem.

    Failed and Blocking correlation - means that something bad happened that is also blocking other things in the related group.  If a save fails then a publish could not continue would be one example.

    Success - is the one message we like to see!  It can also be useful to sometimes show the Success messages (by default they are not shown in the Manage Queue display) as it is a way of seeing if the queue is working at all.  Adding the completion state of Success through the options on the manage queue page is how this is done.

    Canceled - means what it says.  It could have been canceled by a user, but it is also possible for jobs to be canceled by the server.  One example would be a failure early on in a save from Project Professional.  A job would have been added to the queue for the save - but reconnection may lead to cancellation of this job and the addition of another save job - it really depends hoe far the save got before the problem.  I simulate bad things like this by pulling my network cable out just after hitting save - just to see what happens!

    I will follow up with another posting on the queue with some further tips on troubleshooting -but my parting gift is a guide to what the dialogs at the bottom of Project Professional 2007 mean during a save.

      • Blue progress bar - saving to local cache
      • Synchronizing data to server... - The data is going from the local cache to the PSI and being passed into the queue (Getting Queued)
      • Save job xx% complete.  Expected Wait Time 20s - The job is either Waiting to be processed or more likely Processing.  Once you see this then it is safe to close Project Professional - your saves are safely in the queue!

    Technorati Tags: Project Server 2007

  • Brian Smith's Microsoft Project Support Blog

    Common Error Messages when Building Cubes with Project Server 2007

    • 87 Comments

    I am reproducing some common errors, both from the USL logs and the Application Event logs to assist with troubleshooting cube building issues.  These are in a sort of order that follows my previous article - so first I will give a description of the problem and the errors you will see.  Note that the same Application Event log can appear for multiple failure modes (1 to 3 listed below all have the same error in the application event log) - but the ULS logs tend to be more indicative of the real problem.  Another common error I have not listed and potentially the first you will see is “ActiveX component can't create object” which is usually related to missing components detailed in KB921116.

    So here are the 5 errors:-

    1. SSPAdmin is not an admin in Analysis Services

    ULS Logs

    ·         Microsoft.Office.Project.Server

    ·         0x0924

    ·         Project Server                

    ·         Project Server Analysis Cube Bu

    ·         8swn

    ·         Medium  

    ·         PWA:http://<server>/PWA, SSP:SharedServices1, User:DOMAIN\User, PSI:   [CBS] ProjectServerOlapCubeGenerator status: Analysis Services session failed with the following error: Failed to connect to the Analysis Services server <SERVER>. Error: The connection string to repository needs to be specified in the 9.0 server properties (see <DSO>...</DSO> section in msmdsrv.ini file from Analysis Services 9.0).

    Application Event Log

    ·         Event Type:        Error

    ·         Event Source:    Office SharePoint Server

    ·         Event Category:                Project Server Analysis Cube Building

    ·         Event ID:                              7682

    ·         Date:                     2/7/2007

    ·         Time:                     11:01:09 AM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Standard Information:PSI Entry Point:

    ·         Project User: DOMAIN\User

    ·         Correlation Id: 69521947-e064-4bff-88e9-2176674a766f

    ·         PWA Site URL: http://<server>/PWA

    ·         SSP Name: SharedServices1

    ·         PSError: CBSASConnectionFailure (17003)

    ·         Cube build failed to connect to the Analysis Services server. Verify the data source connection is valid. Error: Setting UID=00007829-4392-48b3-b533-5a5a4797e3c9 ASServerName=<SERVER> ASDBName=PSCube ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=02/07/2007 11:00:39 ToDate=02/07/2007 11:00:39 HighPriority=TrueFor more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     

    2.            If you don’t restart the Analysis Server service after adding the SSPAdmin as an admin then you may see:-

    ULS Logs

    ·         Microsoft.Office.Project.Server

    ·         0x0EAC

    ·         Project Server

    ·         Project Server Analysis Cube Bu

    ·         8swn

    ·         Medium  

    ·         PWA:http://<server>/PWA, SSP:SharedServices1, User:DOMAIN\User, PSI:   [CBS] ProjectServerOlapCubeGenerator status: ProjectServerOlapCubeGenerator failed with exception: Microsoft.Office.Project.PI.CBSCommon.CBSProcessException: Failed to connect to the Analysis Services server <SERVER>. Error: Your permissions on the server computer do not allow you to administer this Analysis server.      Error:  ---> System.Runtime.InteropServices.COMException (0x80040026): Your permissions on the server computer do not allow you to administer this Analysis server.      Error:      at Interop.Dso.ServerClass.Connect(String ServerName)     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ConnectToAnalysisServer()     --- End of inner exception stack trace ---     at ProjectServerO...lapCubeGenerator.OlapDatabaseBuilder.ConnectToAnalysisServer()     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.GenerateOlapDatabase()     at ProjectServerOlapCubeGenerator.CMain.Main(String[] args)

    Application Event Log

    ·         Event Type:        Error

    ·         Event Source:    Office SharePoint Server

    ·         Event Category:                Project Server Analysis Cube Building

    ·         Event ID:              7682

    ·         Date:                     2/7/2007

    ·         Time:                     2:32:56 PM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Standard Information:PSI Entry Point:

    ·         Project User: DOMAIN\User

    ·         Correlation Id: 87a08e57-822e-4ec9-9a47-671f14679d6e

    ·         PWA Site URL: http://<server>/PWA

    ·         SSP Name: SharedServices1

    ·         PSError: CBSASConnectionFailure (17003)

    ·         Cube build failed to connect to the Analysis Services server. Verify the data source connection is valid. Error: Setting UID=00007829-4392-48b3-b533-5a5a4797e3c9 ASServerName=<SERVER> ASDBName=PSCube ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=02/07/2007 14:32:23 ToDate=02/07/2007 14:32:23 HighPriority=TrueFor more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp

    3.            If the SSPAdmin does not have access to the repository for Analysis Services then you will see the following.  This was on a single server – you may see MSOLAPRepository$ rather than the full path.

    ULS Logs

    ·         Microsoft.Office.Project.Server

    ·         0x0CAC

    ·         Project Server                

    ·         Project Server Analysis Cube Bu

    ·         8swn

    ·         Medium  

    ·         PWA:http://<server>/PWA, SSP:SharedServices1, User:DOMAIN\User, PSI:   [CBS] ProjectServerOlapCubeGenerator status: ProjectServerOlapCubeGenerator failed with exception: Microsoft.Office.Project.PI.CBSCommon.CBSProcessException: Failed to connect to the Analysis Services server <SERVER>. Error: Cannot connect to the repository.    Analysis server: <SERVER>    Error:  The Microsoft Jet database engine cannot open the file 'C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\DSO9\msmdrep.mdb'.  It is already opened exclusively by another user, or you need permission to view its data. ---> System.Runtime.InteropServices.COMException (0x80040033): Cannot connect to the repository.    Analysis server: <SERVER>    Error:  The Microsoft Jet database engine cannot open the file 'C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\DSO9\msmdrep.mdb'.  It is already opened exclusively by another user, or you need permission to view its data.     at Interop.Dso.ServerClass.Connect(String ServerName)     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ConnectToAnalysisServer()     --- End of inner exception stack trace ---     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ConnectToAnalysisServer()     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.GenerateOlapDatabase()     at ProjectServerOlapCubeGenerator.CMain.Main(String[] args)

    Application Event Log

    ·         Event Type:        Error

    ·         Event Source:    Office SharePoint Server

    ·         Event Category:                Project Server Analysis Cube Building

    ·         Event ID:              7682

    ·         Date:                     2/7/2007

    ·         Time:                     2:38:50 PM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Standard Information:PSI Entry Point:

    ·         Project User: DOMAIN\User

    ·         Correlation Id: 87a08e57-822e-4ec9-9a47-671f14679d6e

    ·         PWA Site URL: http://<server>/PWA

    ·         SSP Name: SharedServices1

    ·         PSError: CBSASConnectionFailure (17003)

    ·         Cube build failed to connect to the Analysis Services server. Verify the data source connection is valid. Error: Setting UID=00007829-4392-48b3-b533-5a5a4797e3c9 ASServerName=<SERVER> ASDBName=PSCube ASExtraNetAddress=<SERVER> RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=02/07/2007 14:32:23 ToDate=02/07/2007 14:32:23 HighPriority=TrueFor more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

    4.            This is probably going to be a fairly uncommon error.  In my case my repository copied from another server already had a cube referenced and I was trying to use the same cube name on this new server.  The error messages are slightly misleading as they tend to indicate the server name is already in use – rather than the cube name.

    ULS Logs

    ·         Microsoft.Office.Project.Server

    ·         0x1204

    ·         Project Server                

    ·         Project Server Analysis Cube Bu

    ·         8swn

    ·         Medium  

    ·         PWA:http://<server>/PWA, SSP:SharedServices1, User:DOMAIN\User, PSI:   [CBS] ProjectServerOlapCubeGenerator status: ProjectServerOlapCubeGenerator failed with exception: Microsoft.Office.Project.PI.CBSCommon.CBSProcessException: Cannot overwrite an Olap database created outside of Project Server or by another Project Server Site.     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.VerifySiteOwner(Server dsoAnalisysServer, Database oldOlapDatabase, Guid siteUid)     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.GenerateOlapDatabase()     at ProjectServerOlapCubeGenerator.CMain.Main(String[] args)

    ·         Critical

    ·         Standard Information:PSI Entry Point:   Project User: DOMAIN\User  Correlation Id: 87a08e57-822e-4ec9-9a47-671f14679d6e  PWA Site URL: http://<server>/PWA  SSP Name: SharedServices1  PSError: CBSAttemptToOverwrite (17013) The Analysis Services server name that has been selected is already being used by another Project site. Select a different name or remove the existing one and try again.

    Application Event Log

    ·         Event Type:        Error

    ·         Event Source:    Office SharePoint Server

    ·         Event Category:                Project Server Analysis Cube Building

    ·         Event ID:                              7685

    ·         Date:                     2/7/2007

    ·         Time:                     2:51:09 PM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Standard Information:PSI Entry Point:

    ·         Project User: DOMAIN\User

    ·         Correlation Id: 87a08e57-822e-4ec9-9a47-671f14679d6e

    ·         PWA Site URL: http://<server>/PWA

    ·         SSP Name: SharedServices1

    ·         PSError: CBSAttemptToOverwrite (17013)

    ·         The Analysis Services server name that has been selected is already being used by another Project site. Select a different name or remove the existing one and try again.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

    5.            This final error occurs if the account running Analysis Services is not a datareader in the reporting database for Project Server.

    ULS Logs

    ·         Microsoft.Office.Project.Server

    ·         0x0D44

    ·         Project Server                 

    ·         Project Server Analysis Cube Bu

    ·         8swn

    ·         Medium  

    ·         PWA:http://<server>/PWA, SSP:SharedServices1, User:DOMAIN\User, PSI:   [CBS] ProjectServerOlapCubeGenerator status: ProjectServerOlapCubeGenerator failed with exception: Microsoft.Office.Project.PI.CBSCommon.CBSProcessException: Failed to process the Analysis Services database PSCubeTest on the <SERVER> server. Error: OLE DB error: OLE DB or ODBC error: Login failed for user '<SERVER>\ASAdmin'.; 42000. Errors in the high-level relational engine. A connection could not be made to the data source with the DataSourceID of 'Project Reporting data source', Name of 'Project Reporting data source'. Errors in the OLAP storage engine: An error occurred while the dimension, with the ID of 'PSCubeTest', Name of 'Booking Type' was being processed.  ---> System.Exception: OLE ...DB error: OLE DB or ODBC error: Login failed for user '<SERVER>\ASAdmin'.; 42000. Errors in the high-level relational engine. A connection could not be made to the data source with the DataSourceID of 'Project Reporting data source', Name of 'Project Reporting data source'. Errors in the OLAP storage engine: An error occurred while the dimension, with the ID of 'PSCubeTest', Name of 'Booking Type' was being processed.      at Interop.Dso._Database.Process(ProcessTypes ProcessOption)     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ProcessOlapDatabase(Database olapDatabase)     --- End of inner exception stack trace ---     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ProcessOlapDatabase(Database olapDatabase)     at ProjectServerOlapCubeGenerator.OlapDatabaseBuilder.ProcessOlapDatabase()     at ProjectServerOlapCubeGenerator.CMain.Main(String[] args)

    Application Event Log (3 errors)

    ·         Event Type:        Failure Audit

    ·         Event Source:    MSSQLSERVER

    ·         Event Category:                (4)

    ·         Event ID:              18456

    ·         Date:                     2/7/2007

    ·         Time:                     2:57:01 PM

    ·         User:                     <SERVER>\ASAdmin

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Login failed for user '<SERVER>\ASAdmin'. [CLIENT: 157.59.123.99]For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     

     

    ·         Event Type:        Error

    ·         Event Source:    MSSQLServerOLAPService

    ·         Event Category:                (289)

    ·         Event ID:              3

    ·         Date:                     2/7/2007

    ·         Time:                     2:57:01 PM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         OLE DB error: OLE DB or ODBC error: Login failed for user '<SERVER>\ASAdmin'.; 42000.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     

    ·         Event Type:        Error

    ·         Event Source:    Office SharePoint Server

    ·         Event Category:                Project Server Analysis Cube Building

    ·         Event ID:              7691

    ·         Date:                     2/7/2007

    ·         Time:                     2:57:02 PM

    ·         User:                     N/A

    ·         Computer:          <SERVER>

    ·         Description:

    ·         Standard Information:PSI Entry Point:

    ·         Project User: DOMAIN\User

    ·         Correlation Id: 87a08e57-822e-4ec9-9a47-671f14679d6e

    ·         PWA Site URL: http://<server>/PWA

    ·         SSP Name: SharedServices1

    ·         PSError: CBSOlapProcessingFailure (17004)

    ·         Cube build failed during an OLAP Processing operation. CBS queued message: Setting UID=00007829-4392-48b3-b533-5a5a4797e3c9 ASServerName=<SERVER> ASDBName=PSCubeTest ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=02/07/2007 14:56:01 ToDate=02/07/2007 14:56:01 HighPriority=True. Error: Analysis Services session failed with the following error: Failed to process the Analysis Services database PSCubeTest on the <SERVER> server. Error: OLE DB error: OLE DB or ODBC error: Login failed for user '<SERVER>\ASAdmin'.; 42000.Errors in the high-level relational engine. A connection could not be made to the data source with the DataSourceID of 'Project Reporting data source', Name of 'Project Reporting data source'.Errors in the OLAP storage engine: An error occurred while the dimension, with the ID of 'PSCubeTest', Name of 'Booking Type' was being processed.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     

    Technorati Tags:

     

  • Brian Smith's Microsoft Project Support Blog

    Microsoft Office Project Server 2007 and SQL Server 2005 Analysis Services - Building Cubes

    • 57 Comments

    Following on from my permissions piece with Project Server I will extend this logic to the service accounts and permissions to get a successful cube build.  I'll start with an explanation of what goes on when building cubes which should help any troubleshooting you do.

    When you click on Build Cube then this kicks of a sequence of events starting with the save of any new or changed data in the cube settings - such as the server or cube name.  Next a job will be placed on the Project Server queue requesting a cube build.  This job will be picked off the queue and processed by the Microsoft.Office.Project.Server.Queuing.exe process, which will spawn the ProjectServerOLAPCubeGenerator.exe process. Both of these processes will be running under the identity of the admin account of the SSP - in my last posting this is the SSPAdmin.  So this user needs to be an admin within Analysis Services so it can communicate through DSO to Analysis Services.  This permission is added through a SQL Management Studio connection to Analysis Services by right-clicking the instance name and then selecting Properties, selecting the Security tab and then adding the user (a restart of the Analysis Services service at this point will also unsure the running instance is aware of the permission change) .  This process also needs to access the repository of meta data used to define the cubes.  This repository is detailed in KB 921116 (as are some other pre-requisites for multi server environments) and is in a share on the Analysis Services server called MSOLAPRepository$.  If you have a single server then the share will not be used - instead the direct directory location of C:\Program Files\Microsoft SQL Server\MSSQL.X\OLAP\DSO9. (The X will be a number relating to the installation of analysis services).  Therefore SSPAdmin, or your equivalent service account will need read and write access to this directory - and if you are in a multi server environment then also read/write access via the share.

    The next activity in the cube building process is the Analysis Services executable - MSMDSRV.exe -  actually building the cube based on the instructions given by the ProjectServerOLAPCubeGenerator.exe process.  This executable runs under the identity of the account running the SQL Server Analysis Services (MSSQLSERVER) (or named instance) service.  I'll refer to this account as ASAdmin  So this account needs to be able to read the reporting database of the Project Server instance, which is in effect the staging tables for the cubes.  Adding a login to SQL Server for ASAdmin with datareader role on ProjectServer_Reporting (or whatever reporting database name you are using) achieves this.  That should be all you need to get a cube building.

    So basically the SSPAdmin needs to be an admin in Analysis Services with read/write access to the repository.  ASAdmin needs datareader access to the reporting database.

    Also remember - when building a cube your application server is talking to/from your SQL Server Analysis Services server - when viewing or building views in Project Web Access your client PC is talking directly to your Analysis Services server (and each client needs the ASOLEDB 9.0 components).  Make sure any firewalls allow for this traffic.

    The default instance of Analysis Services will normally be listening on port 2383.  If you have named instances then the SQL Browser service will need to be running on the server to tell give clients a port for the named instance.  The SQL Browser is normally on port 2382.

    Named instances of Analysis Services will have other dynamically allocated ports. These can be discovered by looking in the configuration file for SQL Server Browser.  Open the msmdredir.ini file located at %Program files%\Microsoft SQL Server\90\Shared\ASConfig and look at the <Instances> section in it.  On 64 bit machines this may be in the Program Files (x86) directory.
    Here is an example:-

    <Instances>
         <Instance>
             <Name>AS2005</Name>
             <Port>1259</Port>
         </Instance>
     </Instances>

    and would mean your AS2005 instance is listening on port 1259.

    For my next post, rather than cluttering this one, I will show a variety of the errors from both ULS logs and Event logs that can appear if the above settings are not in place.

    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    Adding Timephased Actual Work through the PSI

    • 45 Comments

    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:- 

    <Changes>

    <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>

    </Assn>

    </Proj>

    </Changes>

     

    Where:-

    ·         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

    Project Server 2007 with LDAP Authentication

    • 29 Comments

     

    For customers that used Project Server 2003 and made use of the “ProjectServer” accounts (non-Windows authenticated) they have a few choices in Project Server 2007. The first consideration I suggest is “why were you using ProjectServer accounts?”. If the answer is that you don’t have Windows domains but use some other authentication method, and LDAP is that other method – then I have good news! LDAP is a supported authentication provider for Windows SharePoint Services v3, and therefore Microsoft Office Project Server 2007 as well.

    I can see this being a popular authentication method for those customers who do not use Windows Authentication but have some other directory as it enables them to re-use the directory they have - rather than have to create a whole new set of users in some other place (such as the ASP.NET SQL Membership Provider database).

    For my tests with LDAP I used Microsoft ADAM (Active Directory Application Mode) to be my Lightweight Directory Access Protocol service - but you should be able to use any LDAP compliant service. 

    The basic steps once you have a LDAP source to authenticate against is:-

    1. Extend your port 80/443 site to another port (and I would strongly recommend this extended site use SSL!) and zone - such as Intranet
    2. Set the Authentication Provider for this new zone to LDAPMembership - through Central Administration, Operations, Authentication Providers (this is just a name and needs to match the provider you add to the web.config files
    3. Edit the web.config(s) for the SharePoint Central Administration and also our newly extended site to add our membership provider LDAPMembership
    4. Add a Windows SharePoint Services user through Central Administration, Operations, Policy for Web Application for our Intranet zone using the format LDAPMembership:User1
    5. Add a Project Web Access user with forms authentication again using the format LDAPMembership:User1

    There is a blog from Matt at Pointbridge that gives more in-depth details - thanks Matt.  As the trickiest piece I found was getting the format of the addition to the web.config to match the structure of your LDAP directory I will just go into more detail on that step.

    The section needs to go into the top level <system.web>...</system.web> section - just make sure not to break any existing XML.  I usually put it at the end, just before </system.web>.  Also be aware that there are some other <system.web> sections that are lower down the hierarchy - under the <location> section I think.  Don't put it in these!

    So a sample membership section may look like this:-

    <membership defaultProvider="LDAPMembership">
      <providers>
        <add name="LDAPMembership" type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
        server=“nondomain"
        port="50000"
        useSSL="false"
        userDNAttribute="distinguishedName"
        userNameAttribute="cn"
        userContainer="CN=Users,OU=WSS,O=nondomain,C=US"
        userObjectClass="user" 
        userFilter="(ObjectClass=user)" 
        scope="Subtree" 
        otherRequiredUserAttributes="sn,givenname,cn" />
      </providers>
    </membership>

    and this would match up to a directory where the LDAP server was called "nondomain" and was set to use port 50000 (port 389 is the default LDAP would normally use) and this would authenticate against any objects in the userContainer that matched the userFilter - and use the distinguished name as the name to match.  So in this case all items in the container defined by CN=Users,OU=WSS,O=nondomain,C=US that have an object class of user.  LDP.exe is a good toll that you can find in the Windows 2003 Support tools that helps to understand the containers and filters.

    Another more complex example would be:-

    <membership defaultProvider="LDAPMembership">
    <providers>
    <add server="ps2007ldap" port="50000" useSSL="false"   userDNAttribute="distinguishedName"
    userNameAttribute="cn" userContainer="CN=Users,OU=Support,O=fabricam,C=US"
    userObjectClass="user" userFilter="(ObjectClass=user)" scope="Subtree"
    otherRequiredUserAttributes="sn,givenname,cn" name="LDAPMembership"
    type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C" />
    <add server="ps2007ldap" port="50000" useSSL="false" userDNAttribute="distinguishedName"
    userNameAttribute="cn" userContainer="CN=Users,OU=Extranet,O=fabricam,C=US"
    userObjectClass="user" userFilter="(&amp;(memberOf=CN=ProjectUsers,OU=Extranet,O=fabricam,C=US)(memberOf=CN=WSSUsers,OU=Extranet,O=fabricam,C=US))" scope="Subtree"
    otherRequiredUserAttributes="sn,givenname,cn" name="LDAPMembership2"
    type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C" />
    </providers>
    </membership>

    and in this case there are two providers (this would be in the Central Admin web.config - each of the 2 extended sites in this case would just have either the LDAPMembership or LDAPMembership2 section) authenticating for two different zones - such as Intranet and Extranet. 

    LDAPMembership is authenticating against users in the CN=Users,OU=Support,O=fabricam,C=US container.

    LDAPMembership2 is authenticating against users in the same container, but this time using the filter with the filter ="(&amp;(memberOf=CN=ProjectUsers,OU=Extranet,O=fabricam,C=US)(memberOf=CN=WSSUsers,OU=Extranet,O=fabricam,C=US))"  which will only authenticate users in both the ProjectUsers and WSSUsers groups defined in the directory.  Please note the &amp; - which replaces the usual & used in LDAP queries.

    You will also see format of these sections is different from the one above - but still contains exactly the same attributes - just in a different order.  This is as a result of editing through the InetMgr interface.  Please be aware of a potential break caused by using the InetMgr UI - the <configuration> element gets re-written as <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> and this will give an application error in WSS.  See KB 917238 for details.

    Have fun with LDAP - I think this may be the most popular of the additional authentication providers - and this time the "projectserver" users will be able to get at all the SharePoint content such as risks, issues and documents - as well as the new feature - deliverables. However, like the 2003 "projectserver" users, these forms based users would still need a Windows account to use the Data Analysis (OLAP Cube) features that SQL Server Analysis Services provides.

    Technorati Tags:

Page 1 of 2 (9 items) 12