Project and Project Server October 2012 Cumulative Update

Just posted at https://blogs.technet.com/b/projectadministration/archive/2012/11/05/microsoft-project-server-and-sharepoint-server-2007-and-2010-october-2012-cu-announcement.aspx Remember, if you didn’t load the 2010 August 2012 Cumulative Update (CU) that the October one will also require SP1 to be installed . Delays on the 2007 SharePoint and Project packages, and also the roll-up SharePoint/Project package for 2010.  No 2007 client CU this cycle.  So if you just need the individual Project Server 2010 October CU you are good to go!  I’ll post again once I have an idea on the targeted release for the others – early indication is a couple of weeks…

Project 2013 now available to MSDN Subscribers

The Office and SharePoint 2013 products are beginning to appear on the MSDN subscriber download pages – https://msdn.microsoft.com/en-us/subscriptions , including Project 2013 and SharePoint Server 2013.  I guess Project Server 2013 will be following shortly.  If you have a subscription then no time like the present to start looking at the new products.  Remember, the MSDN Licensing is per-user and is to design, develop, test, or demonstrate – not to be used for production use.  To give you a head start the best single link I can give you is to Christophe’s blog https://blogs.msdn.com/b/chrisfie/archive/2012/09/18/recent-content-about-the-new-project-project-online-project-professional-project-server.aspx where you will find plenty of other links to more content than you can shake a stick at.

End of the mainstream support road for Project 2007 and Project Server 2007

Just catching up on a few recent topics of interest – and the first is the end of mainstream support for Project and Project Server 2007 – which was yesterday.  Christophe blogged about this too – https://blogs.msdn.com/b/chrisfie/archive/2012/10/03/project-server-2007-mainstream-support-ends-on-october-9-2012-upgrade-today.aspx – or if you prefer Spanish then Jorge blogged the same at https://blogs.technet.com/b/elfarodeprojectserver/archive/2012/10/10/project-server-2007-fin-de-soporte-tecnico-principal-el-dia-de-9-de-octubre-de-2012.aspx . This doesn’t mean an complete end to support – but does mean the Microsoft complimentary support channels are no longer available for these products, and we will no longer be taking product change requests for these products, and will only be accepting hotfix requests from customers who have already purchased extended hotfix support for these specific products.  Of course the forums will still very likely be responsive to any 2007 questions posted.  We still have some hotfix requests in the pipeline so there will likely be cumulative updates for the Server, and possibly the client both later this month and in December. As Christophe and Jorge suggest – a great time to upgrade to 2010, or to review 2013 and be ready to upgrade to the new Project – for  even more details the next release see Christophe’s other recent post – https://blogs.msdn.com/b/chrisfie/archive/2012/10/04/project-online-project-server-2013-the-new-project-teched-slides.aspx .

PSVR2010: QueueCreateProject using an Enterprise Project Type

An interesting question came in this week from a couple of different directions – though may have started with the same customer – but I learned something new so thought it worthwhile to share.  The problem was that when the PSI Project Web Service method QueueCreateProject is used with an Enterprise Project Type (EPT) and that EPT is set to use a project plan template, then the create was failing with an EnterpriseProjectTypeInvalidData error.  To be honest I didn’t even realize you could use an EPT with that method – so started researching…  I could certainly see that we have a property you can set in the dataset you pass to that method – ProjectDataSet..::..ProjectRow..::..ENTERPRISE_PROJECT_TYPE_UID Property – but could also envisage that some of the other contents of the dataset migth conflict with the data in the other tables in the dataset – so this might cause the failure. Thanks Bia for coming up with the definitive answer!  You can use the EPT UID (which you find by drilling in to the specific EPT on the Enterprise Project Types page of Server Settings, then looking at the System Identification Data at the foot of the page) BUT you must ensure a couple of things.  You CANNOT have any of the following tables existing in the project dataset – · Task TaskCustomFields ProjectResource ProjectResourceCustomFields Assignment AssignmentCustomFields Dependency In the Project Row of the dataset you must ONLY set the following columns PROJ_UID PROJ_NAME WPROJ_DESCRIPTION PROJ_INFO_START_DATE ProjectOwnerID ENTERPRISE_PROJECT_TYPE_UID PROJ_TYPE PROJ_OPT_CURRENCY_CODE PROJ_OPT_CURRENCY_SYMBOL PROJ_OPT_CURRENCY_DIGITS PROJ_OPT_CURRENCY_POSITION And the error you will get if you don’t follow these rules is: w3wp.exe (0x0604)                           0x0628    SharePoint Foundation             Runtime                           tkau    Unexpected    System.Web.Services.Protocols.SoapException: ProjectServerError(s) LastError=EnterpriseProjectTypeInvalidData Instructions: Pass this into PSClientError constructor to access all error information    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(… Thanks too to Klaudia and Sebastian for raising the issue.

Project Server 2010: Duplicated Outlook tasks after Exchange Sync–June CU

Thought it worth explaining some of the intricacies of the June 2012 Cumulative Update packages, especially for those of you waiting for the fix for the Exchange Sync issue where you see duplicated tasks in Outlook, or are having problems with editing categories in PWA if you have renamed projects in your archive.  Maicco e-mailed asking about the Exchange fix – and thanks for bringing this to my attention.  These two fixes were delivered in the June Cumulative Update cycle, but were not in the ‘default’ Project Server only package https://support.microsoft.com/kb/2598375 , but had their own hotfix – https://support.microsoft.com/kb/2598376 . Issues that this hotfix package fixes Consider the following scenario: You create a user account in Project Web Access (PWA), and you enable Exchange Synchronization for the user account. You create a new plan that contains many tasks in Project 2010. You assign the user account to all the tasks. You save and then publish the plan in Project Server 2010. You log on to the mailbox of the user account that you created to see whether the task list is synchronized. In this scenario, duplicate tasks are created in the task list in Microsoft Outlook. You cannot edit security categories that contain more than 1000 projects when one or more projects in the security categories are archived and then renamed. Just to add to the confusion this hotfix doesn’t explicitly say that it includes the 2598375 fixes – but it does.  The reason for the split is that these two fixes needed some globalization changes – which you can see from the full description (Description of the Project Server 2010 hotfix package (Pjsrvwfe-x-none.msp, Pjsrvmui-x-none.msp): June 26, 2012) where MUI is Multilingual User Interface.  The file list also lists all of the language files. The complete Project Server 2010 June 2012 Cumulative Update package – https://support.microsoft.com/kb/2598355 – does include everything, and the KB does list both of the KB’s mentioned above.  This hopefully clarifies things and explains what the two KBs listed in the full package article are all about. Thanks again Maicco, and in future I’ll keep my eye out for these split CU packages and we will add more details to the notification mail (and I’ll also add an update to the current posting).

Project Server 2010: From August 2012 Cumulative Update onwards–you will also need to load SP1

If you haven’t already of course… Some early warning here to allow you to plan for any August 2012 or post August 2012 Cumulative Updates.  For SharePoint Server 2010, and Project Server 2010 and the rest of the Office 2010 family you will need to have loaded Service Pack 1 (SP1) before you can install the Cumulative Update.  This means really loading SP1 – not just relying on the fact that ‘almost all’ of SP1 has been included in patches since June 2011.  If you remember we went through a similar stage with 2007 – and one of the most notable things is that the patch will shrink down to a much smaller size (The June 2012 roll-up patch was over 1.2GB!).  I haven’t had a chance to try it out – but I suspect the error message if you haven’t loaded SP1 will be something along the lines of “There are no products affected by this package installed on this system” or “ The expected version of the product was not found on the system” – I’ll update once I get a chance to test. The reason behind this change is to do with our product support lifecycle (see Microsoft Support Lifecycle ) and the fact that we have reached what we term the end-of-life (or service pack support end date) for the original release of the 2010 Office family – which is around one year after release of Service Pack 1.  For most customers you could see this first with the August 2012 Cumulative update – which will be something like build 14.0.6124.5000 – or potentially before if there are any special releases before that release (and after the June CU)  – which would be something like 14.0.6123.5003.  Other customers who do not necessarily load all cumulative updates may run into this much later, as it will be the ongoing requirement for future Cumulative Updates until the next service pack support end date – approximately one year after SP2 (and no – I do not know when SP2 will be coming along – before you ask!). Excellent references for Service Pack 1 can be found at the new-look Project blog –  Announcing Service Pack 1 for Microsoft Project & Project Server 2010 , for the initial announcement,   Announcing The Release Of Service Pack 1 (SP1) for Microsoft Project and Project Server 2010 for the release notification and particularly the TechNet article at https://technet.microsoft.com/en-us/library/hh272536.aspx – Deploy Service Pack 1 for Project Server 2010.  And finally – to find out if you already have SP1 installed I’d suggest going to Control Panel, Programs, Programs and Features, Installed Updates – and you should see it listed there – Microsoft SharePoint and Project Server 2010 Service Pack 1 (SP1) https://support.microsoft.com/kb/2460047 .

A New SQL Server–and some different cube building errors

At SP1 Project Server 2010 and SharePoint introduced support for SQL Server 2012.  I had a question posted on some issues a customer had hit – so I thought I’d set my server up for building an OLAP cube against SQL Server 2012 – just to see if I could.  I already knew I’d need to set up a few things – but as I wanted to see errors I just went for it – and started with a PWA instance that built successfully against my SQL Server 2008 R2 Analysis Services machine.  My Project Server databases were also in this SQL Server 2008 R2 server – so that would add some other interesting things to consider.  I should also point out that my SQL Server 2012 was sitting on a Windows Server 2012 RC machine – so not a supported scenario currently – but I like to live on the edge (I know – I should get a life instead…) Just to recap what goes on when we request to build a cube, which will help you understand where the errors might be coming from – and there may well be other errors you could see if things are configured differently to my scenario. A Cube Build request goes on the Project Server queue The details of the requested configuration are picked up – and the application server contacts the Analysis Services server (firewall permitting) with the cube details.  Also the account running the queue service will need the right permissions to do this – needs to be added as server administrator on Analysis Server Once the Analysis Services server has the cube details then it will know where to get the data from (Reporting DB) so makes a connection. A couple of points here – if you are using an alias for the database server from your Project Server farm then this is the server name passed to AS – so it will also need to know what the alias refers to.  This is true even if the AS machine is also the DB Server.  And the account running Analysis Services needs data reader access to the reporting DB. So I’ve done none of that preliminary setup, so I’m expecting some errors.  The first however, was unexpected: Error 1. [7/3/2012 7:00 AM] Failed to build the OLAP cubes. Error: Failed to connect to the Analysis Services server . Error: Deserialization failed: Requested value ‘EnterpriseCore64’ was not found. This was reported by the cube build – I’ll add the ULS and Event Log errors at the foot of the posting for the search engines to digest – and talking of search engines a quick Bing gave me the answer to this first issue – SQL Server 2012 Cumulative Update 1, which contains the fix described here – https://support.microsoft.com/kb/2683293 – Error message when you use AMO to connect to SQL Server 2012 Analysis Services: “Deserialization failed: Requested value ‘ ‘ was not found”.  The ServerEdition could be one of EnterpriseCore64 (as mine was) EnterpriseCore BusinessIntelligence64 BusinessIntelligence The Cumulative Update itself can be found at https://support.microsoft.com/kb/2679368 – Cumulative update package 1 for SQL Server 2012. Installed the CU and moved on… Error 2. [7/3/2012 7:50 AM] Failed to build the OLAP cubes. Error: Failed to process the Analysis Services database Test2012 on the server. Error: Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered 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 ‘Resource Type’, Name of ‘Resource Type’ was being processed. Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered 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 ‘Timesheet Status’, Name of ‘Timesheet Status’ was being processed. Server: The current operation was cancelled because another operation in the transaction failed. Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered 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 ‘Timesheet Period Status’, Name of ‘Timesheet Period Status’ was being processed. This is very similar to an error you would see even before 2012, and refers to the Native Client for SQL Server SQNCLI10 – not being registered.  This is where we need to be very specific – and the version of the native client is related to our client application code that is requesting the build than either the Analysis Services or the SQL Server version.  Regardless of if you are running 2005 or 2008 or 2012 (or anywhere in between) you will need to have the 2008 Native Client installed from here – https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=8824 – Microsoft SQL Server 2008 Feature Pack, October 2008 – and specifically the sqlncli.msi which is about half way down the page – and the direct link to the X64 package is here .  Also note that this is referring to the build FROM the Analysis Services server – and it is complaining about the Native Client being missing from there – which it needs to connect to my database server (which happens to be 2008 R2 – but that is irrelevant).  If you look on the AS server you will see that the structure of the cube has been created – so we successfully connected to the server, but it could go off to the database server to get the data.  In a fresh install against SQL Server 2012 you would also need to add the Native Client to the application server – but as it is one of the SharePoint pre-reqs this is normally taken care of.  To confirm the native client requirement you can also look at the Connection string already created on the AS Server as part of the Project Reporting data source – Provider= SQLNCLI10 ;Data Source= ;Initial Catalog=ProjectServer_Reporting;Integrated Security=SSPI;Persist Security Info=False.  I have seen some workarounds described suggesting changing the Provider here – and that would work if you were to rebuild from AS it would get over-written at the next build.  Added the Native Client to my Analysis Services 2012 machine and continued… Error 3 [7/3/2012 8:33 AM] Failed to build the OLAP cubes. Error: Failed to process the Analysis Services database Test2012 on the server. Error: Internal error: The operation terminated unsuccessfully. Server: The current operation was cancelled because another operation in the transaction failed. OLE DB error: OLE DB or ODBC error: Login failed for user ‘DOMAIN $’.; 28000. 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 ‘Task List’, Name of ‘Task List’ was being processed. Errors in the OLAP storage engine: An error occurred while the ‘Start Date’ attribute of the ‘Task List’ dimension from the ‘BriSmith2012’ database was being processed…. This error was longer – just repeated for different attributes of the dimension.  The key to this is the Login Failed – and in this case it refers to a machine name (the $ on the end) as my Analysis Services is running as NT ServiceMSSQLServerOLAPService So the connection is via the machine name.  Added the DOMAIN $ as a Login on the Databse Server with db_datareader role membership to my ProjectServer_Reporting database and continued.  If your Analysis Services is runni
ng under some other credentials then you may need to enter these rather than a machine name. [7/3/2012 9:03 AM] Cube build request completed successfully. In my installation I didn’t hit any permissions issues regarding the AS administrator, or any firewall issues – just because my server and domain setup was already taking care of these potential problems – your mileage may vary. Overall, apart from the 1st error these are very similar, if not identical, to problems you could run into with any version of SQL Server – but hopefully a worthwhile reminder of the cube building process and the components and permissions it relies on.  Only Bing and any other search engine needs to read on from here… Logs. Error 1 ULS Logs – a string of errors here – the first few were Medium, then a couple of criticals – I’ve just posted a couple – these should contain anything worth finding on a search.: 07/03/2012 07:00:21.46    Microsoft.Office.Project.Server (0x27B4)    0x2834    Project Server    Analysis Cube Building    myne    Medium    PWA: /PWA”> https:// /PWA , ServiceApp:Project Server Service Application, User:DOMAINUser, PSI: Error generating Project Server cubes. Error: ‘Failed to connect to the Analysis Services server . Error: Deserialization failed: Requested value ‘EnterpriseCore64′ was not found.’    4c420a8a-c27c-47b8-88c9-46baaf8ab1ec 07/03/2012 07:00:21.47    Microsoft.Office.Project.Server (0x27B4)    0x2834    Project Server    Analysis Cube Building    8swo    Medium    PWA: /PWA”> https:// /PWA , ServiceApp:Project Server Service Application, User:DOMAINUser, PSI: [CBS] Status message: ProjectServer BuildOlapCubes failed with exception: Microsoft.Office.Project.PI.CBSCommon.CBSProcessException: Failed to connect to the Analysis Services server brismith12-15. Error: Deserialization failed: Requested value ‘EnterpriseCore64’ was not found. —> Microsoft.AnalysisServices.XmlSerializationException: Deserialization failed: Requested value ‘EnterpriseCore64’ was not found. —> System.ArgumentException: Requested value ‘EnterpriseCore64’ was not found.     at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)     at Microsoft.AnalysisServices.DesignXmlReader.ReadPrimitive(Type type, XmlAttributes attributes)     … 07/03/2012 07:00:21.47    Microsoft.Office.Project.Server (0x27B4)    0x2834    Project Server    Analysis Cube Building    8icz    Critical    Standard Information:PSI Entry Point:   Project User: DOMAIINUser  Correlation Id: 4c420a8a-c27c-47b8-88c9-46baaf8ab1ec  PWA Site URL: /PWA”> https:// /PWA   SSP Name: Project Server Service Application  PSError: CBSASConnectionFailure (17003) Cube build failed to connect to the Analysis Services server. Verify the data source connection is valid. Error: Setting UID=19d8edf4-019c-437a-a435-2fd160b71592 ASServerName= ASDBName=Test2012 ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=07/02/2012 06:55:08 ToDate=07/02/2012 06:55:08 HighPriority=True    4c420a8a-c27c-47b8-88c9-46baaf8ab1ec The Application Event Log just shows a pretty generic Cube Building failure message. Source:        Microsoft-SharePoint Products-Project Server Date:          7/3/2012 7:00:21 AM Event ID:      7682 Task Category: Analysis Cube Building Level:         Error PSError: CBSASConnectionFailure (17003) Cube build failed to connect to the Analysis Services server. Verify the data source connection is valid. Error: Setting UID=19d8edf4-019c-437a-a435-2fd160b71592 ASServerName= ASDBName=Test2012 ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=07/02/2012 06:55:08 ToDate=07/02/2012 06:55:08 HighPriority=True Event Xml: Error 2 ULS logs – plenty of errors here, mostly saying the same thing – so I’ll just post the critical one: 07/03/2012 07:49:52.90    Microsoft.Office.Project.Server (0x27B4)    0x12A4    Project Server    Analysis Cube Building    8icz    Critical    Standard Information:PSI Entry Point:   Project User: DOMAINUser  Correlation Id: 5984d4c1-558e-4bb2-9373-68053f894a7d  PWA Site URL: /PWA”> https:// /PWA   SSP Name: Project Server Service Application  PSError: CBSOlapProcessingFailure (17004) Cube build failed during an OLAP Processing operation. CBS queued message: Setting UID=19d8edf4-019c-437a-a435-2fd160b71592 ASServerName= ASDBName=Test2012 ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=07/02/2012 06:55:08 ToDate=07/02/2012 06:55:08 HighPriority=True. Error: Failed to process the Analysis Services database BriSmith2012 on the brismith12-15 server. Error: Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered  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 ‘Resource Type’, Name of ‘Resource Type’ was being processed. Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered  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 ‘Timesheet Status’, Name of ‘Timesheet Status’ was being processed. Server: The current operation was cancelled because another operation in the transaction failed. Errors in the back-end database access module. The provider ‘SQLNCLI10’ is not registered. The following system error occurred:  Class not registered  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 ‘Timesheet Period Status’, Name of ‘Timesheet Period Status’ was being processed.    5984d4c1-558e-4bb2-9373-68053f894a7d The Event Log entry was very similar – Source: Project Server  Event ID was 7691 and Task Category Analysis Cube Building, followed by a generic Queue failure Event ID 7704. Error 3 Here is the critical one from the ULS logs: 07/03/2012 08:32:44.12    Microsoft.Office.Project.Server (0x27B4)    0x2CF4    Project Server    Analysis Cube Building    8icz    Critical    Standard Information:PSI Entry Point:   Project User: DOMAINUser  Correlation Id: fdf04238-ff5a-4153-baca-723f634011cd  PWA Site URL: /brismith8100/PWA”> https:// /PWA   SSP Name: Project Server Service Application  PSError: CBSOlapProcessingFailure (17004) Cube build failed during an OLAP Processing operation. CBS queued message: Setting UID=19d8edf4-019c-437a-a435-2fd160b71592 ASServerName= ASDBName=Test2012 ASExtraNetAddress= RangeChoice=0 PastNum=1 PastUnit=0 NextNum=1 NextUnit=0 FromDate=07/02/2012 06:55:08 ToDate=07/02/2012 06:55:08 HighPriority=True. Error: Failed to process the Analysis Services database Test2012 on the server. Error: Internal error: The operation terminated unsuccessfully. Server: The current operation was cancelled because another operation in the transaction failed. OLE DB error: OLE DB or ODBC error: Login failed for user DOMAINSMachineName$’.; 28000. 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 ‘Task List’, Name of ‘Task List’ was being processed. …. Event log same as before the – Source: Project Server Event ID was 7691 and Task Category Analysis Cube Building, followed by a g
eneric Queue failure Event ID 7704.

Project and Project Server June 2012 Cumulative Update

The June CU is out for Project and Project Server – and we have the full details posted at https://blogs.technet.com/b/projectadministration/archive/2012/06/29/microsoft-project-server-and-sharepoint-server-2007-and-2010-june-2012-cu-announcement.aspx .  Thanks Rob for the information. A couple of quick points worth mentioning: We have a delay on the roll-up package for 2010 – so if you usually use the roll-up and need to test Project Server fixes you can do this with the individual package until we get the rebuild – hopefully later this week. On the 2007 side the June CU for Project Server does include the fix for the Reporting Publish issue I wrote about at https://blogs.msdn.com/b/brismith/archive/2012/05/23/project-server-2007-reporting-project-publish-queue-job-fails-to-complete.aspx – so if you have been suffering with that one your wait is over.  Sorry for the inconvenience that I know this issue caused many of our customers. Final point – and a frequently asked question – what is the difference between a hotfix and a cumulative update?  In reality nothing – for Office and SharePoint the Cumulative Update is really just a hotfix released on a defined timetable – every other month, around the last Tuesday of the month.  The KB article will always describe it as a hotfix – and it generally does not mention the term Cumulative Update.  The TechNet Update Center is a great place to go for all information on the updates – https://technet.microsoft.com/en-us/office/ee748587.aspx .  There is an RSS feed too!

Project Server 2007: Reporting (Project Publish) queue job fails to complete

This is an issue that several of my readers raised in response to the posting about the orphan baseline posting a few weeks ago, and we know that this is something that more and more customers are now hitting.  The problem was introduced with the February 2012 Cumulative Update for Project Server 2007, and was also present in the April CU too – so if you have installed either of these and have started seeing Reporting (Project Publish) queue job fails to complete then read on. The symptoms are that a project will successfully save and publish, but the Reporting (Project Publish) job will fail to complete, and the error will look something like this (truncated – but the ReportingProjectChangeMessageFailed piece will be repeated based on your queue setting for the retry limit. Error summary/areas: Reporting message processor failed ReportingProjectChangeMessageFailed Queue GeneralQueueJobFailed Error details:                                 The issue occurs because we are missing a NULL check when accessing the task baseline cost – so if it is NULL we get the “Object reference not set to an instance of an object” message.  We are working on a hotfix to correct this behavior, but we also have a workaround that can provide some immediate relief.  This is a macro that can be run on affected project and will set a zero (non-NULL) assignment baseline fixed cost in place of the NULL we are tripping up on.  Below is the macro code that will need to be added to Project in the macro editor, and executed against the plan.  DISCLAIMER: As with any macro code you should review and understand exactly what this code is doing and that you are comfortable to run this on your own plans (and read the disclaimer) – and should also execute this in a test environment first.  It would also be good practice to take an Administrative Backup in your production system to ensure you have good backup copies of your plans (in addition to any normal SQL Server backup).  Also worth mentioning at this point that you should really have the number of project administrative backups set to give you several versions of your plan (Project Retention Policy (versions) – under Server Settings, Database Administration, Schedule Backup. ‘DISCLAIMER OF WARRANTY ‘ ‘THIS FIX CODE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND. ‘MICROSOFT FURTHER DISCLAIMS ALL IMPLIED WARRANTIES INCLUDING WITHOUT ‘LIMITATION ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR OF FITNESS ‘FOR A PARTICULAR PURPOSE. THE ENTIRE RISK ARISING OUT OF THE USE OR ‘PERFORMANCE OF THE CODE REMAINS WITH YOU. ‘ ‘IN NO EVENT SHALL MICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES ‘WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF ‘BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, ‘OR OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE ‘THIS MACRO, EVEN IF MICROSOFT HAS BEEN ADVISED OF THE POSSIBILITY OF ‘SUCH DAMAGES. BECAUSE SOME STATES DO NOT ALLOW THE EXCLUSION OR ‘LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ‘ABOVE LIMITATION MAY NOT APPLY TO YOU.   ‘This macro attempts to work around the reporting publish failure that occurs when there are tasks ‘with baselines and where the BaselineCost contour is NULL. The symptoms that you see in the queue ‘for the “Reporting (Project Publish)” job has details similar to: ‘ ‘ ‘ ‘This code simply walks through the tasks in the tasks in the project and if there are ‘baseline(s) set, then the code sets a time scaled baseline cost = 0 on the day prior to ‘where the baseline start is scheduled.  This sets the baseline contour so that the ‘”Object reference not set to an instance of an object” problem can be overcome during the ‘reporting publish job. Sub FixPublish() Dim t As Tasks Dim tsv As TimeScaleValues Dim i As Long Dim bCalc As Boolean On Error Resume Next ‘get the current application calculation state bCalc = Application.Calculation ‘set calculation to manual (helps with performance while the code runs) Application.Calculation = pjManual Set t = ActiveProject.Tasks ‘walk through the tasks in the project. If a task as a baseline(s) then set a timescaled baselinecost = 0 For i = 1 To t.Count     If Not t(i) Is Nothing Then         If t(i).BaselineStart “NA” Then             Set tsv = t(i).TimeScaleData(t(i).BaselineStart – 1, t(i).BaselineStart – 1, pjTaskTimescaledBaselineCost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline1Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline1Start – 1, t(i).Baseline1Start – 1, pjTaskTimescaledBaseline1Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline2Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline2Start – 1, t(i).Baseline2Start – 1, pjTaskTimescaledBaseline2Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline3Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline3Start – 1, t(i).Baseline3Start – 1, pjTaskTimescaledBaseline3Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline4Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline4Start – 1, t(i).Baseline4Start – 1, pjTaskTimescaledBaseline4Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline5Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline5Start – 1, t(i).Baseline5Start – 1, pjTaskTimescaledBaseline5Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline6Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline6Start – 1, t(i).Baseline6Start – 1, pjTaskTimescaledBaseline6Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline7Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline7Start – 1, t(i).Baseline7Start – 1, pjTaskTimescaledBaseline7Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline8Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline8Start – 1, t(i).Baseline8Start – 1, pjTaskTimescaledBaseline8Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline9Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline9Start – 1, t(i).Baseline9Start – 1, pjTaskTimescaledBaseline9Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If         If t(i).Baseline10Start “NA” Then             Set tsv = t(i).TimeScaleData(t(i).Baseline10Start – 1, t(i).Baseline10Start – 1, pjTaskTimescaledBaseline10Cost, pjTimescaleDays)             If tsv(1).Value = “” Then                 tsv(1).Value = 0             End If         End If     End If Next ‘fix the project summary task With Activ
eProject.ProjectSummaryTask     If .BaselineStart “NA” Then         Set tsv = .TimeScaleData(.BaselineStart – 1, .BaselineStart – 1, pjTaskTimescaledBaselineCost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline1Start “NA” Then         Set tsv = .TimeScaleData(.Baseline1Start – 1, .Baseline1Start – 1, pjTaskTimescaledBaseline1Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline2Start “NA” Then         Set tsv = .TimeScaleData(.Baseline2Start – 1, .Baseline2Start – 1, pjTaskTimescaledBaseline2Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline3Start “NA” Then         Set tsv = .TimeScaleData(.Baseline3Start – 1, .Baseline3Start – 1, pjTaskTimescaledBaseline3Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline4Start “NA” Then         Set tsv = .TimeScaleData(.Baseline4Start – 1, .Baseline4Start – 1, pjTaskTimescaledBaseline4Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline5Start “NA” Then         Set tsv = .TimeScaleData(.Baseline5Start – 1, .Baseline5Start – 1, pjTaskTimescaledBaseline5Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline6Start “NA” Then         Set tsv = .TimeScaleData(.Baseline6Start – 1, .Baseline6Start – 1, pjTaskTimescaledBaseline6Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline7Start “NA” Then         Set tsv = .TimeScaleData(.Baseline7Start – 1, .Baseline7Start – 1, pjTaskTimescaledBaseline7Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline8Start “NA” Then         Set tsv = .TimeScaleData(.Baseline8Start – 1, .Baseline8Start – 1, pjTaskTimescaledBaseline8Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline9Start “NA” Then         Set tsv = .TimeScaleData(.Baseline9Start – 1, .Baseline9Start – 1, pjTaskTimescaledBaseline9Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If     If .Baseline10Start “NA” Then         Set tsv = .TimeScaleData(.Baseline10Start – 1, .Baseline10Start – 1, pjTaskTimescaledBaseline10Cost, pjTimescaleDays)         If tsv(1).Value = “” Then             tsv(1).Value = 0         End If     End If End With             ‘set the application calculation state back the way it was Application.Calculation = bCalc             End Sub To use this macro you can follow these steps: 1. Open Project Professional 2007 and connect to your server instance having the problem. 2. Go to Tools > Macro > Security . 3. Note the Security Level . 4. Set Security Level to Low or Medium .  This will allow the macro to run. 5. Go to Tools, Macro, Visual Basic Editor (or alt+F11) 6. Copy the text from the macro above, from the first line of the disclaimer to the End sub line 7. Double click ThisProject in the Visual Basic Editor, and paste in the macro to the window that opens (probably titled Project1 – ThisProject(Code) 8. Save this plan as a file if you need to use again, as FixPublishError.mpp, and return to the normal Microsoft Project view (Alt+F11) 9. Open the plan whose Reporting (Project Publish) job fails. 10. Go to Tools > Macro > Macros… 11. Select the FixPublishError.mpp!FixPublish macro. 12. Click Run . It will take a few seconds to a minute for the macro to run. 13. Save and publish the plan. 14. Monitor the queue by going to PWA > Personal Settings > My queued jobs. 15. Confirm that the jobs related to your plan complete successfully. 16. Reset Security Level to what is was before changing it to Low. There is one condition that currently isn’t resolved by the macro, and that relates to hitting the NULL value for any ghost tasks you might have in your plan (these can exist due to dependencies on tasks from other plans).  It is possible that this will be resolved if the source project has already been fixed up – we are still reviewing this. Thanks to Adrian for the fix up macro, Sriram for helping get this blog post out and for DFS and Christoph for the posts on my blog raising the issue. Sorry for the inconvenience this issue has caused you, and I will update this post as we get more information regarding a more permanent fix. Finally here are some lines from the ULS logs that relate to this problem – just to ensure that the search engines have something to digest and to help those searching on these terms. 05/23/2012 10:38:09.29    Microsoft.Office.Project.Server (0x0AE4)    0x0EE8    Project Server    Project Server Reporting    9e09    High    PWA:https://servername/PWA, SSP:SharedServices1, User: DOMAINUser, PSI:   [RDS] ReportProjectPublishMessage for project 0b9e52ec-6bb6-4ca3-823b-d7561d821d1c failed. Error: System.NullReferenceException: Object reference not set to an instance of an object.     at Microsoft.Office.Project.DataEdit.Reporting.ReportingData.GetTaskBaselineCoreTimephasedDataSet(BaselineEntity[] baselineEntityArray, Int32 nIntervalLengthMinutes)     at Microsoft.Office.Project.Server.DataAccessLayer.ReportingProjectDal.TransferTimephasedData[T](Guid projectUID, TimephasedTransferInfo transferInfo, ReportingData timephasedReportingData, ProcessSourceData`1 processSourceData, GenerateTimephasedDataSet`1 generateTimephasedData, Int32 pageSize, LogStatsMethod logStats)     at Microsoft.Office.Project.Server.DataAccessLayer.ReportingProjectDal.UpdateTasksTimephasedData(Guid projectUID, ReportingProjectData projectData, ReportingData timephasedReportingData, Int32 pageSize, String& transferPhase, LogStatsMethod logProjStats)     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.ProjectPublishMessageProcessor.SaveProjectTimephaseData(String& transferPhase)     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.ProjectPublishMessageProcessor.runRDSTransformation(ReportProjectPublishMessageEx projectChangeMessage). Phase: SetAssignmentBaselineTimephasedFixedCost    3ff34f2c-815e-4f95-9798-7f17dc5737db 05/23/2012 10:38:09.29    Microsoft.Office.Project.Server (0x0AE4)    0x0EE8    Project Server    Project Server Reporting    9e05    Critical    Standard Information:PSI Entry Point:   Project User: DomainUser Correlation Id: 3ff34f2c-815e-4f95-9798-7f17dc5737db  PWA Site URL: https://servername/PWA  SSP Name: SharedServices1  PSError: ReportingProjectChangeMessageFailed (24006) RDS: The request to synchronize change(s) to project Project UID=’0b9e52ec-6bb6-4ca3-823b-d7561d821d1c’. PublishType=’ProjectPublish’ failed.  Message: ‘ReportingProjectChangeMessageFailed’  Error:Object reference not set to an instance of an object.    3ff34f2c-815e-4f95-9798-7f17dc5737db 05/23/2012 10:38:10.30    Microsoft.Office.Project.Server (0x0AE4)    0x0D18    Project Server    Project Server Queue    7h5x    Medium    PWA:https://servername/PWA, SSP:SharedServices1, User: DOMAINSSPAdmin, PSI:   [QUEUE] ProjectQ: Group  d4364343-3402-45ef-afd0-f84c8834e5d3 type = ReportingProjectPublish aborted at Message 1    e45e8c63-38fa-49d8-9555-710851b22c90

If you didn’t get to Phoenix…

Brian Ru just published a blog post over on the main Project blog announcing the release of all the recorded content from the Project Conference 2012 – on the Project Channel of Microsoft Showcase .  So if you didn’t get to Project Conference 2012 this is a great chance to catch up with all the great content.  For good support topics see PC319 and PC349 – as recently “leaked” on this very blog… Enjoy!