I’ve just updated the running blog post that give the version numbers to identify the specific release of Project Server 2010 and SharePoint Server 2010 you have loaded - 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
This now includes the February 2011 Cumulative Update for Project Server – including the link to the published KB on the roll-up – which can be found at http://support.microsoft.com/kb/2475879.
One quick reminder – there are other packages which can be loaded for just SharePoint Server or Project Server – which may mean that the versions of the databases could be different to the ones I have listed. My versions assume the roll-up is loaded. Also note that in most cases the Project Server databases will not match the SharePoint ones – and in fact if they do then at the time of writing that would mean you have the June 2010 Cumulative Update – the only time that they have matched!
Final point – we do not always update the database schema and therefore the DB version can stay the same as the previous CU.
I posted a while back about Unknown Errors http://blogs.msdn.com/b/brismith/archive/2010/07/02/project-server-2010-an-unknown-error-has-occurred-in-project-center-resource-center-or-tasks.aspx in various places in project “&” here is another one. Thanks to Peter Drahos at Harvard University (via Treb) for sharing this problem and resolution, and sorry this one slipped through our testing and caused you so much wasted time searching for the problem. If you try and add a task to a timesheet (Insert Row), and use a Line Classification that has an ampersand (&)
then you will get just the red text ‘An unknown error has occurred’. So best to avoid ‘&’ for now and use and instead. The Comment field copes just fine with ‘&’.
You will also a stack trace in the ULS logs, coming from the w3wp process, SharePoint Foundation General category with an EventID of 90hv and level Unexpected. The full text for the search indexers is:
03/21/2011 09:48:02.96 w3wp.exe (0x24CC) 0x0830 SharePoint Foundation General 90hv Unexpected Detected use of SPRequest for previously closed SPWeb object. Please close SPWeb objects when you are done with all objects obtained from them, but not before. Stack trace: at Microsoft.SharePoint.SPWeb.get_CurrentUser() at Microsoft.Office.Project.PWA.PJContext.get_RegionalSettings() at Microsoft.Office.Project.PWA.PJContext.get_LocaleCulture() at Microsoft.Office.Project.PWA.WCFContext.AuthenticateUser(Message message, WCFContext& wcfContext, String userName, Boolean isWindowsUser) at Microsoft.Office.Project.PWA.WCFContext.GetContext(Message message, String userName, Boolean isWindowsUser, Boolean newCookie, Uri originalTargetUri) at Microsoft.Office.Project.Server.ProjectServerRouter.Microsoft.Office.Project.Server.IProjectServerRouter.ProcessMessage(Message message) at SyncInvokeProcessMessage(Object , Object , Object ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object inputs, Object& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result) at System.ServiceModel.Diagnostics.Utility.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.InputQueue`1.AsyncQueueReader.Set(Item item) at System.ServiceModel.Channels.InputQueue`1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread) at System.ServiceModel.Channels.InputQueue`1.EnqueueAndDispatch(T item, ItemDequeuedCallback dequeuedCallback, Boolean canDispatchOnThisThread) at System.ServiceModel.Channels.InputQueueChannel`1.EnqueueAndDispatch(TDisposable item, ItemDequeuedCallback dequeuedCallback, Boolean canDispatchOnThisThread) at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, ItemDequeuedCallback dequeuedCallback, Boolean canDispatchOnThisThread) at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, ItemDequeuedCallback dequeuedCallback) at System.ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext context, ItemDequeuedCallback callback) at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result) at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state) at System.ServiceModel.PartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state) at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequestWithFlow(Object state) at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2() at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke() at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ProcessCallbacks() at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.CompletionCallback(Object state) at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.ServiceModel.Diagnostics.Utility.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) e235bf71-e2c3-47d9-bf55-94c0408adef8
Christophe has posted over on the Project Administration blog at http://blogs.technet.com/b/projectadministration/archive/2011/03/15/microsoft-project-server-2007-2010-internet-explorer-9-support.aspx regarding the support status for Project Server 2007 and Project Server 2010, as well as Project Portfolio Server 2007. In brief – yes it is supported on the latest service packs of each product.
If you are running Internet Explorer 9 (IE9) and run into problems then please review Christophe’s posting to see if you have hit a known issue (currently some cell editing problems and update of Project Owner and other fields in Project Detail Pages - PDP’s).
One question that came up recently was around the different behavior when starting from the same template but creating a new plan in Project Professional 2010 or in PWA through the Project Center or via the Project Web Service Method CreateProjectFromTemplate. PWA created projects will be the same as the PSI created projects and the behavior is very well described in the Remarks section of the SDK article on the Project.CreateProjectFromTemplate method at http://msdn.microsoft.com/en-us/library/gg211556.aspx. Pulling out a few of the key points:
So in essence only the basic dataset information is used, and none of the information that is held in the binary fields such as views, formatting and notes is retained. If you wish to maintain full fidelity and use templates that have formatting, perhaps some views that you wish to be available (such as the new Timeline view – ready populated with certain tasks) or task notes then your best option is to create these using Project Professional 2010. You will then of course be able to interact with the projects through the project center in the usual way. I’ve also heard that some customers have had issues using the timeline when starting from a PWA or PSI created project (not able to add certain tasks) – but I haven’t been able to reproduce this behavior. This sounds like a more general error with the timeline that we have since fixed (it should be in any of the CU’s for the 2010 client as it was initially fixed in June – and the ‘C’ stands for cumulative) – you should also be able to resolve this issue by deleting the timeline and starting again.
One final mention here, that is not covered in the MSDN article is concerning Inactive Tasks. This is a new feature in 2010 – the ability to inactivate a task so that it does not impact schedule or resourcing, but still allows you to keep it in the plan and activate it should the need arise. To be honest we did not have a scenario in mind where inactive tasks would be included in templates – and if you do have inactive tasks in a template then these will only remain inactive in projects created via Project Professional. If you use a template with inactive tasks for creation via PWA or the PSI then you will see these tasks become active. If you have tried this and are confused by the durations you see for these ‘re-activated’ tasks they actually have a duration of 8 elapsed hours – or if they had an assignment as well as being inactive then the duration will be 8 elapsed hours for each assigned day. Anyway, none of this would be what you wanted or expected – so best to avoid inactive tasks for any templates you aim to use via PWA or the PSI.
We would certainly be interested in the scenarios where you might be thinking of using inactive tasks in a template.
Thanks to Katherine, Doug and Heather for their input to this article.
Changing Single Entry Mode (SEM) isn’t going to be an every day occurrence for most customers so hopefully not too many people will run in to this one – but it can take a while to work out what has happened to your tasks if you do happen to get caught out by this one. If you have Single Entry Mode enabled in Project Server 2010 you have the option to filter the tasks that you see in your timesheet – so you can choose to see All Incomplete Tasks, Overdue Tasks, Newly Assigned Tasks or Completed Tasks – or No Filter (the default).
However, once the administrator turns off Single Entry Mode then this filter is no longer available. Unfortunately though – it is still set behind the scenes to whichever value was last applied by the user. So if you have recently turned off Single Entry Mode and users are not seeing the tasks they are expecting then it may be they still have filters applied. To correct this you will need to re-enable single entry mode and have the users select “No Filter”, then turn off Single Entry Mode once more. Obviously when carrying out these steps you should ensure that other users are aware of the maintenance being carried out so that they do not send status or timesheets while SEM is enabled – or even worse – apply a filter! Thanks to Aik and Randy for their great work tracking this one down.
Another question that arose during this investigation was which tasks should actually be displayed in the timesheet when Single Entry Mode is turned on (with no filter). The timesheet will display all tasks that have worked planned during that timesheet period AND any task that has a finish date earlier than that timesheet period and is not yet completed. This is the designed behavior and is aimed at ensuring older incomplete tasks do not get overlooked.