Project Server 2010: Don’t Trash the Cache!

I was going to use the title asking ‘why are people still deleting the cache?’ until my colleague Corrie came up with this much better one!  Rather than asking why you are still doing it – I am telling you not to! I know there is a lot of history behind this one, and for those of you that used Project Server 2007 in its early days there were some challenges such as the ‘check-in pending’ saga that got people in to the habit of deleting the project cache.  We fixed the problem, then we fixed it again (and again) and you should not generally be seeing any issues with leaving your cache alone to do its job.  However, many customers I talk to are routinely deleting the project from the local cache before they open it and then again after they close it! Why!?!  Its job is an important one – it saves you having to pull that data from the server again – which will reduce network traffic, the hit on both the web services and the database, which means they can be getting on and doing useful stuff. I’ll also address a miss-conception here that I have heard from a number of customers – the choice of where to load the project from – cache or server?  You don’t have a choice – Project will load it from the cache if it is there, and then load any incremental pieces it needs from the server, to get you the current version of that plan.  In the screen shot below: the line actually reads ‘Retrieve the list of all projects from Project Server’.  It does not also read – ‘…and open any I might choose after clicking this link from the server and ignore the local cache’.  You don’t get the choice and you don’t need to choose. I’m sure many of you will not have read this far before clicking the comments option to tell me of all the problems you are having.(and I’m sure some of you are still having problems).  First check that you have the latest cumulative updates and service packs.  If you are still really having issues unless you delete the local cached copy then we certainly need to hear about it so we can fix the problem rather than have you waste your time and system resources doing things that you should not need to do. I will admit that there can be times when as support engineers we will ask you to remove your local cache to troubleshoot specific scenarios.  The cache itself also has intelligence that allows it to decide that it may have some bad stuff – and it will get a new clean copy of data from the server (symptom of this will be several files in the cache directory with 1,2,3 etc. at the end).  There have also been a few bugs we have worked on recently which ONLY surface when the user has cleared their cache! So please, if you have been deleting your cache as a matter of routine, then either stop – or speak to your PMO or IT people and ask why they have you do this – and if we need to fix something else then we can take a look.

Project Server: Post SP1 Cumulative Update Webcast Series

In a little over an hour, at 8:00 AM PST, the first of the post SP1 webcasts will start – presented by Adrian Jenkins and me.  The SP1 webcast delivered in July also included coverage of the June Cumulative Update.  We will be talking about both Project Professional and Project Server, and the 2007 and 2010 releases. Here is the link for the August 2011 Cumulative Update TechNet webcast titled Information about Microsoft Project and Project Server August 2011 Software Update  – https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493921&Culture=en-US And the rest of the series can be found at the following links. Here’s the URL for the  11/8/2011 8:00:00 AM – Information about Microsoft Project and Project Server October 2011 Software Update https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493962&Culture=en-US Here’s the URL for the  1/10/2012 8:00:00 AM – Information about Microsoft Project and Project Server December 2011 Software Update https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493964&Culture=en-US Here’s the URL for the  3/13/2012 8:00:00 AM – Information about Microsoft Project and Project Server February 2012 Software Update https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493966&Culture=en-US Here’s the URL for the  5/8/2012 8:00:00 AM – Information about Microsoft Project and Project Server April 2012 Software Update https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493968&Culture=en-US Join us if you can – or listen to the recording if you can’t make it – available later on the same URL.

Project Server 2010: Installing Project Server to an existing SharePoint Server farm

I know that unless you load all the bits before running the Configuration Wizard then you will always add Project Server to an existing SharePoint Server farm – but in this blog I am specifically talking about adding Project Server to a farm that has been up and running for a while – and potentially has Service Packs and Cumulative updates loaded. The best way to do this is to create a slipstream installation – and there are plenty of resources out there that explain this process – but basically you extract your various updates and put them in the Updates folder under your install source and these will get applied as the installation proceeds.  However, in researching this topic I learned that this isn’t the only way so thought it was worth sharing.  You can load the original release version of Project Server (RTM – release to manufacture) even if your farm is at the SP1 level plus cumulative updates.  In reality I only tested to August CU, and I am sure there will come a point where this will not be practical (SP2 would block an RTM install) – but for now it certainly works and would be supported.  That said – it would be good practice to bring the farm up to a level where all the components were at the same release level.  For information on the release level of each component you can go to Central Administration, Upgrade and Migration and Check Product and Patch Installation Status.  I have a ton of language packs loaded so I won’t give you a full screen shot(s) but the foot of mine looks like this: So you can see the version installed for each component (usually matching the RTM or last Service Pack, as in this case) as well as the Cumulative Updates (June superseded by August) along with useful links to the KB articles.  In my case I do have Project already loaded and updated to August CU. At the top of the page there is also a link to the latest updates – Click here for the latest information on available updates for SharePoint 2010 Products   Going to that page also has the link for Project updates – which is Updates for Project Server 2010 .  You will also see on this screenshot that the Galician/Galego language pack is still at the original release version of 14.0.4763.1028.  This language pack (and Basque) does not yet have the language pack service pack released – but it is still possible to update to SP1 for the farm without having to update all the language packs. That was just an aside on versions and where to find them – but the main point is that you can load RTM Project Server to a farm and use Project Server.  It will get loaded at the original release version even if you had already loaded the rollup Service Pack (SP) and/or Cumulative Updates (CU) that included Project Server – the Project files will not have been applied.  Once you are ready to load the SP/CU you will need to re-load it and run the configuration wizard.  You will not get any warnings or errors even though you feel are re-installing something you already applied – it correctly recognizes that there is new stuff to update.  The only slight exception are the language pack service packs – which you do not need to reload – and Project Server will benefit from any language packs (and language pack service packs) loaded before it was installed – so no need to re-install those either. Another good thing to check is the database status – once you have run the config wizard all should be good – but if you forget then you will see messages Database is too old and upgrade is required as mentioned in my previous blog posting – Project Server 2010- Can I delay running the SharePoint Configuration Wizard- .

Project Server 2010: Are your prints from PWA blank? Try turning off IE compatibility.

Quick posting today – we had a customer seeing issues when printing from the Project Web App schedule web part where if they went over a certain number of rows (around 42 – spooky!)  the printed page was blank (although the pop-up with just the grid displayed for printing looked just fine).  This was after seeing this warning – which is expected – when you are printing a grid of more than 30 rows: Print Warning – There are more than 30 records in the current grid.  Preparing the print page for this many records may cause the browser to alert that the page is running slowly. In my testing internally I saw the same, I clicked OK on the warning, the new page opened with everything looking good and I could choose my printer – but the print was blank (I did try a large plan and in this case the final 40 or so tasks printed…)  However, if I turned off the compatibility setting under Tools, Compatibility View Settings, so that these were not applied to Intranet sites then all worked as expected and I got a good print.  If you have explicitly set your PWA sites in compatibility you may see the same issue.  If you really need prints though you may find Project Professional more flexible in giving you a good printed page.

Project Server: SharePoint Installation issues when using FIPS

Most days I learn something new, and yesterday was no exception.  I was working with one of our Senior Consultants, Rob Bowers, on an installation problem.  The SharePoint Configuration Wizard was failing during the initial configuration of the farm on step 3.  The error that came up was: Configuration Failed.  One or more configuration settings failed.  Completed configuration settings will not be rolled back.  Resolve the problem and run this configuration wizard again.  The following contains detailed information about the failure: Failed to create the configuration database. An exception of type System.InvalidOperationException was thrown.  Additional exception information:  This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. In the PSCDiagnostics log created during the execution of the wizard the same errors could be seen – the first was: Task configdb has failed with an unknown exception , followed by Exception: System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.    at System.Security.Cryptography.SHA256Managed..ctor()    at Microsoft.SharePoint.UserCode.SPSolutionValidatorCollection.ComputeHash()    at Microsoft.SharePoint.Administration.SPUserCodeService.UpdateValidatorsHash()    at Microsoft.SharePoint.Administration.SPPersistedChildCollection`1.Add(T newObj, Boolean ensure)… A quick search (Bing of course) found that FIPS was referring to the Federal Information Processing Standard (FIPS) 140-2, Security Requirements for Cryptographic Modules .  An article on TechNet http://technet.microsoft.com/en-us/library/cc263215.aspx has a security note that mentions some potential issues with workflows – but not the failure in the configuration wizard.  Another great link from Mahesh Srinivasan at http://collaborationsharepoint.blogspot.com/2010/10/this-implementation-is-not-part-of.html helped move things in the right direction.  Even with FIPS not enabled through group policy settings there can still be registry keys set that are enabling some of the features.  In Rob’s case, like Mahesh, he found that the two keys were set to 1 – enabled, and a third key was set to 0 – disabled.  The keys were: HKLMSYSTEMControlSet001ControlLSAFipsAlgorithm HKLMSYSTEMControlSet002ControlLSAFipsAlgorithm HKLMSYSTEMCurrentControlSetControlLSAFipsAlgorithm Until each of these was set to 0 the error above blocked running of the configuration wizard.  Remember, any time you are changing registry keys you should take back-ups.  Obviously this change is something you should to talk to your platform security team about too – as if you are changing these values you may need to get an exception to your company’s hardening policy for your SharePoint servers. FIBS 104-2 is intended to ensure that only only validated cryptographic modules are used in software when securing data.  SharePoint uses cryptographic modules, for example MD5,  that are not validated – but it is in fact not using them to secure data but to create hash values that are used as unique identifiers.  It is this action that FIPS is blocking that causes the failure in the configuration wizard. For more information on FIPS 104-2 see http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf , and for general FIPS information see http://csrc.nist.gov/publications/PubsFIPS.html .

Project Server 2010: Timesheets – Where do Personal Tasks come from?

If you have the setting to allow personal tasks to be added to the timesheet then they of course could come from the user.  But what about the ones that haven’t been entered by the user and appear to have the same name as tasks that were in projects that they had already started work on?  We have had a few questions on this behavior so thought it worth a blog posting. So here is my timesheet – and I have 5 tasks in the “Project BriSmith TS Blog” project, and I’ve spent an hour on each – so I’ve entered the time and saved my timesheet. (Status is “In Progress”) Later on I go back to my timesheet and things have changed! So what happened?  The task names give you the clue, and the Project Manager (me) has followed through on his action for each of the tasks.  Basically if a task gets deleted while a timesheet is in progress then we do not delete the time that is already entered but instead the task gets changed to a Personal Task.  A couple of interesting things to note though – the task name is actually cached as part of the timesheet (in case it gets deleted!) so the spelling mistake was actually corrected in the plan for the “Correcttting the spellling” task – but the cached version is still shown.  This would be the case for any re-named task – as long as the resource was still assigned.  If I click through to the task I see the current name published from the plan – correcting the spelling:   The next thing to note is that if I delete and re-create a task then as far as project is concerned this is a new task (with a new unique GUID) so it shows up as a Personal Task (keeping the original entered time) and also as the new task. The 4th task is interesting – I unassigned myself from this task and then re-assigned – so this is actually a new assignment – but as far as the timesheet is concerned it still shows it related to the project.  Also if I had published after de-assigning I would have seen a Personal Task and then after re-assigning and publishing this personal task would be gone and the project task back again (along with the entered time).   This surprised me a little – so I had to take a look behind the scenes.  It appears that as long as you don’t assign this task to anyone else, then you will get the same GUID for the re-assignment – but if you re-assigned to someone else, and then added back the original resource then the GUID would change and the timesheet would show the same behavior as the deleted and re-created task – both a Personal Task with the already entered time and the ‘new’ project task. The 5th task just got deleted so no longer exists so my recorded time now shows against Personal Tasks.  And finally the untouched task is still there as expected. So if the Personal Task does really relate to a task that has been re-created in some way then the resource should copy the time entered across the the project task and delete the personal task (Remove Task in the ribbon).  If it has been removed for good then the personal task is a record of the time spent – and should remain (depending on your time recording processes). This is the behavior when the timesheet is “In Progress”. If it is approved then the Project name and Task name are persisted even if the task is deleted. Other actions can lead to this behavior – if the project is saved back to the server (save as) over the top of an existing plan then all tasks and assignments will be replaced by identical ones – and any tasks in progress will change to Personal Tasks in the timesheets.  Also before we fixed the bug with Save for Sharing in the June CU this would change the GUIDs too – and have the same effect. All the above behavior assumes that Single Entry Mode is turned off.  With Single Entry Mode turned on then the Personal Tasks do not appear – the tasks just go (along with the time entered into them) – and also any task name changes reflect immediately in the timesheet (it is a direct link to the task, rather than a placeholder in the timesheet).  The re-assignment to the same task, even though it maintains the same GUID does not keep the entered time.  Single Entry Mode keeps the My Tasks and Timesheet view in Sync and Personal Tasks are never seen on the My Tasks view.

Project Server 2010: SharePoint Permissions in upgraded PWA instances

I was reviewing a case yesterday and just checking the behavior of SharePoint permissions in Project Web App after an upgrade from 2007 to 2010 – either in place or a 5 database  – thought this might be useful information to blog about.  In 2007 in the Project Web Access site the users would be added directly to the site with SharePoint permissions based on their roles.  These permission levels were identifiable by their names which would be like Project Managers (Microsoft Office Project Server).  In the Project workspaces these same permission levels would be used, and the users again added directly based on their roles within the project.  So this generally be a small subset of the overall user population – just those added as resources on the plan, and potentially others depending on the use of the View Project Workspace permission within categories. Here is the start of the list of permissions on the PWA site – Project workspaces will be similar although the permission levels may be different. In 2010 in Project Web App we now use groups within the /PWA site and the users are added in to these groups rather than directly to the site.  The groups are named Project Managers Group (Microsoft Project Server), Team members group (Microsoft Project Server) etc.   Some individual user accounts will be present in PWA as shown below (blanked out) – these will be site collection administrators and other farm admins. For the Project sites (formerly called workspaces) we still add the users directly, but we have new SharePoint permission levels which are named similarly to 2007, but we have dropped ‘Office’ from the product name – so they are now like Readers (Microsoft Project Server), Web Administrators (Microsoft Project Server). If you upgraded from 2007 to 2010, either in place or 5 DB then you will retain the old permission structure – but also get the new ones too.  So for example you would see all your users individually in the Project Web App permissions, as well as them belonging to the respective groups.  At the Project Site level you would see the users but with both Permission Levels applied – so they might have Web Administrators )Microsoft Office Project Server), Web Administrators (Microsoft Project Server). All of this is the expected behavior and none of this will break anything, although I admit it may look unusual having the two sets of permission levels.  Also it does not leave any security issues as in 2010 if I remove someone from a Project plan then they get taken off the site with both sets of permission levels – and if I inactivate a user they are removed both at the individual level from PWA and also removed from the group that 2010 would have put them in – so all is good.  If you really wanted to then you could delete the permission levels with (Microsoft Office Project Server) in the names, and also remove the individual user permissions on PWA (apart from the site collection admins of course).  Worth checking that the groups contain the members you expect first just in case for some reason the sync hasn’t populated the groups yet.

Project Server 2010: Can I delay running the SharePoint Configuration Wizard?

In SharePoint 2010 when you upgrade to a new Cumulative Update or Service Pack this involves two main steps – first is loading the binaries, and the second is running the SharePoint Server 2010 configuration wizard (psconfig or psconfigui).  SharePoint supports delaying the running of the configuration wizard or even detaching content databases while running the wizard, so that these perhaps slow parts of the process can be managed in a more timely fashion.  If you look at a SharePoint farm that is in this condition you will see in Central Administration, Upgrade and Migration, Review database status, that it says against many of the databases (Content, Config, and Admin Content) – Database is in compatibility range and upgrade is recommended .  However, if you have Project Server installed then you will see against all of its databases (certainly for SP1/June CU) – Database is too old and upgrade is required .  Some other databases such as BDC or PPS ones may just say No action is required if there were no updates for schema in the particular release.  For some CUs you might see this for Project and the SharePoint content databases too. If you ignore this message and try and go to PWA then you will get an error message: Error, Project Web App cannot connect to Project Server. For more information, contact your system administrator. – along with a GUID for tracking the full error in the logs. Looking in the logs you will find the following exception and unexpected level records – which are pretty self explanatory. 08/23/2011 09:46:41.85    w3wp.exe (0x1724)    0x0FC0    Project Server    General    g7ls    Exception    System.ServiceModel.FaultException`1[Microsoft.Office.Project.Server.Interfaces.DefaultServerFault]: The databases are out of the range of compatibility, upgrade your databases. (Fault Detail is equal to Microsoft.Office.Project.Server.Interfaces.DefaultServerFault).    fe5f9380-1f54-4021-a6a2-5fe7d3e321e8 08/23/2011 09:46:41.85    w3wp.exe (0x1724)    0x0FC0    SharePoint Foundation    Runtime    tkau    Unexpected    System.ServiceModel.FaultException`1[[Microsoft.Office.Project.Server.Interfaces.DefaultServerFault, Microsoft.Office.Project.Server.Communications, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c]]: The databases are out of the range of compatibility, upgrade your databases.   Server stack trace:      at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) … So to answer the question in the title – No, you cannot delay the running of the configuration wizard if you are using Project Server if there are database updates required in the particular patch you have loaded.  Not every CU will require database changes – but rememeber these are cumulative, so the need for the database update will also depend at what level your server is when applying the patch. 

Microsoft Project 2010: Cumulative Update Version Blog Updated

Just for reference – I have added the April and June CU information, and some notes around SP1 versions, to the on-going blog post at http://blogs.msdn.com/b/brismith/archive/2010/09/23/how-to-tell-which-cumulative-update-hotfix-or-service-pack-version-of-project-server-2010-and-project-2010-you-are-running.aspx .

Project Server 2010: Portfolio Analyses–How are equal priority projects chosen for resourcing?

A bit of fun for Friday afternoon.  A question came via the forums on the subject of Portfolio Analysis in Project Server 2010 and how a decision would be made on the allocation of resources if the projects had exactly the same priority.  Firstly there is no real optimization logic in the resourcing part of the analysis – most of the heavy lifting happens in the cost analysis – where other metrics can also be taken into account.  In terms of the resourcing this just happens in order of priority – so the top project gets resourced, then the next, and so on.  For any project where there is insufficient of any type of resource then that gets forced out.  But what if you have equal priority projects?  In truth the Portfolio Manager would probably make the call and force in or out appropriately – but it is still technically interesting to know how it happens (well I wanted to know anyway…) I had a play around with this today. So in my scenario I was also interested in seeing how equal cost choices were differentiated as well as equal priority ones chosen to get resourced. And the interesting result is that each appears to make the choice in the totally opposite way! If I have 4 projects of equal cost and equal priority then the order of selection if the budget is not available to do all of them is carried out in the order of their GUIDs (PROJ_UID from the SQL Server database table MSP_PROJECT) – but not in the strict order that SQL might use – that sorts by the lowest order grouping of the last 6 bytes, but in the more straightforward left to right order of the hexadecimal characters. As an example – SQL Server would put D741FE6E-D426-4A41-8BCC-370FDE23A3E4 before 6EDBF314-BFAE-4838-8CBC-6B95E91EC0C5 based on the last group (37.. before 6B..) but the order the Portfolio Analysis uses would take 6E… before D7… So almost random, unless you happen to know (and care) what your GUIDs are. Now on to the resourcing. This happens in entirely the opposite order. So the ‘highest’ value of GUID (still using the full left to right logic) will get resourced first and the lowest gets resourced last. Again – it is really irrelevant how this happens and I’d guess you’d be forcing things in and out based on other criteria rather than some random 32 character hexadecimal string. If you are keeping up – or slightly ahead of me – this opens up an interesting paradox. If I have 4 projects that have equal cost ($20,000 each) and equal priority – and I have a budget of $80,000 – but they each require a resource that I only have one of – then the project with the highest GUID will get selected for resourcing! However, if my budget is just $79,000 then that very same project would be the one that was rejected at the cost analysis stage – leaving the next highest to get resourced!