New Office Web Apps Features Coming Your Way

One of the great things about a service is that when a feature is ready, we can ship it. So today Office 365 customers will start to see the latest Office Web Apps features. For those of you on the Office 365 Preview, you’ve already had a sneak peek at what’s new. For the rest of you, a refresher on what Office Web Apps are, and highlights of new capabilities beginning to roll out in this Office 365 service update, visible when working with your attachments and documents within Exchange Online and SharePoint Online. What are Office Web Apps? Using browser-based Office Web Apps you can view, collaborate on and share documents, presentations, spreadsheets and notes from anywhere, whether Office on the desktop is available or not. What’s New? For this latest round of updates, we’ve focused on adding editing and formatting controls, consistent co-authoring/collaboration support across the web apps and expanded device support, including touch-enabled editing from tablets . Across the apps, there’s also a clean new look and feel, informed by the updated design language you’re seeing from across Microsoft. In Word Web App , get new support for viewing and adding comments . You’ll also see graphics, images, and layout with excellent fidelity. Format and design documents right from a browser with commonly used features from Word on the desktop, including new page layout tools, picture tools and word count. In addition to comment support, new co-authoring in Word Web App makes it easier to work together on the web. With Excel Web App you get essential spreadsheet features, such as merge cells, context menus, auto-fit columns, formula assistance, fill handle and AutoSum. Manipulate and visualize data for deeper insights with support for high fidelity charts including 3D, improved Query Table and Data Validation support, Slicer functionality and Pivot Chart interactivity. When using PowerPoint Web App presentations look like they do on the desktop, with high-resolution slides, full transitions, and viewable comments. Audio and video playback is now supported, even from a tablet or phone. Drag and drop support makes for easier layouts. While the ability to insert images, apply transitions and animations, or add a pre-designed theme make polished presentations from a browser possible. And new co-authoring and comment support in PowerPoint Web App improves collaboration in the cloud. OneNote Web App updates . Users can find what they need more easily with the ability to search on a page or within a section. And new support for ink viewing makes more information accessible from the web. Just click to type anywhere on the page to add a note, picture or a tag. Notes can now be shared as a URL, viewable on a phone, PC or tablet through a browser. Not only are we delivering new features, but we’ve done some work on the backend to make it easier to update and deploy new Office Web Apps features and services. We’ve decoupled Office Web Apps from SharePoint Online. The two services will continue work well together. However, by deploying Office Web Apps as a standalone service, we can ship improvements when they’re ready, independent of the SharePoint Online ship cycle (and vice versa). Additionally, by serving all of our hosts out of one service center, customers will see more consistency between the Office Web Apps available as part of Office 365 and our consumer service, SkyDrive. In fact, over the weekend the Office Web Apps on SkyDrive hit general availability , bringing the latest updates to consumers within days of our rollout on Office 365. Browser Support Changes As we shared with you this spring, we’re no longer supporting IE7 across Office 365 services . If you are using IE7 with the updated Office Web Apps, they won’t render properly. Update to IE 8 or higher to take advantage of the new Office Web Apps features. That’s just the tip of the iceberg. Want to learn more about new Office Web App functionality? Take a look at  Office Web App Group Program Manager, Mike Morton’s, blog post for a deep dive into the latest features from in Office Web Apps. What? When? Customers may start to see these changes today. As we continue to roll out the service update worldwide, all Office 365 customers will experience all the new Office Web App goodness by the early part of next year.

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

Project Server 2010: Orphan baselines breaking the reporting publish

This problem has been around for a while and I know some customers were running into it very soon after the release, but we had been struggling to get a repro and understand exactly what was causing it.  We now understand the root cause and have a fix coming hopefully in the June 2012 Cumulative Update for Project Professional 2010 (no promises – but that is the current target) and there are some ways of working that can limit your chances of running into this – so decided we should share this to avoid continued inconvenience until we get the fix out there. First lets take a look at the symptoms.  The most usual indication of the problem, as the title suggests, is orphan baseline values leading to the error when publishing – a Failed But Not Blocking Correlation problem on a Reporting (Project Publish) job that will show several of the following errors if you click through for the error details: ReportingProjectChangeMessageFailed (24006) – The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmTaskBaseline_ProjectUID_TaskUID”. The conflict occurred in database “ProjectServer_Reporting”, table “dbo.MSP_EpmTask”. The statement has been terminated.. GeneralQueueJobFailed (26000) – ReportingProjectPublish.ReportProjectPublishMessageEx These failures are for the reporting job – so will mean that reports based on the reporting database, and any fresh OLAP cube builds could be missing data. Sometimes there may also be a crash on saving, either with a fairly generic MSSOAP 16 Send Incomplete error from Project Professional 2010 (though a subsequent save will work fine), or from PWA a queue error – GeneralQueueException (9131) A Project Operation failed due to a Queue Exception. Sub Job ID is: . Exception details are: System.NullReferenceException: …at Microsoft.Office.Project.DataEdit.Assignments.AssignmentCalendarUpdateHelper.ConvertActualContourToElapsed(,,, There may then be issues with users accessing timesheets – The view failed to load.  Press OK to reload this view… (and OK will not help). The error that will be found in the ULS logs will refer to a Calendar whose UID cannot be found… Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Statusing.StatusingGetMyWorkForGridJson System.InvalidOperationException: CacheProjectBaseCalendars could not find project calendar for project. CalUid=0c13de33-2a07-4310-b091-c77990d9dd6a    The root of all these issues is that when you use any of the Save & Send options (XML, CSV, Excel etc.) that we are incorrectly changing some of the GUIDs associated with entities such as the tasks and calendars.  Now this isn’t affecting the main tasks and assignment GUIDs as these bad values are not persisted back to the database – but we do however create a new baseline for these non-existent new task GUIDs, and can also save a bad calendar GUID – which leads to the Timesheet problem. First the best way to avoid this issue, and then on to the detection and clean up at the database level. If you do need to use Save & Send then the best practice until we release the fix for this is to first save the plan to the server, and publish if you need to.  Then do whatever you need to with Save & Send, and then immediately after this – close and check in the plan – but do not re-save to the server.  Discard changes if it asks – but of course you will have needed to save BEFORE you did the Save & Send (just making sure you are paying attention) to avoid losing any changes you really needed.  As the bad stuff will also get persisted to the local cache, this is one of those rare occasions when you will find me suggesting that the project is removed from the local cache – after ensuring that the save and check-in completed successfully. WARNING – the following steps are direct queries against the Project Server databases – please be sure you are working against the right databases when using these – and have a database backup should any problems occur. The detection of this condition is pretty straightforward, as we are just looking for baselines that exist for a task that does not exist, so the following query executed against the Draft database will do this (Change the name to match your specific DBs – the default ProjectServer_ names are used below: — Detect for orphan baseline task records that can cause reporting publish job failures. USE ProjectServer_Draft — specify the appropriate draft database select PROJ_NAME, MTB.PROJ_UID,TASK_UID,TB_BASE_NUM from MSP_TASK_BASELINES MTB inner join MSP_PROJECTS MP on MTB.proj_uid=MP.proj_uid where TASK_UID not in (select TASK_UID from MSP_TASKS) This will return rows if the condition exists – and identify which projects – as before clean-up you will probably want to get them removed from the PM’s local cache as otherwise they could be re-introduced. The next scripts do the cleaning up in the DB, and they are simply deleting baseline records where the tasks are non-existent. — Script to run on the draft DB USE ProjectServer_Draft — specify the appropriate draft database delete from MSP_TASK_BASELINES where TASK_UID not in (select TASK_UID from MSP_TASKS) — Script to run on the published DB USE ProjectServer_Published — specify the appropriate published database delete from MSP_TASK_BASELINES where TASK_UID not in (select TASK_UID from MSP_TASKS) I hope this helps to understand the nature of the issue and ways to avoid it until the fix comes along.  Our apologies for the inconvenience I know this has caused many of our customers – and hopefully for those who have needed to re-run the clean-up scripts regularly this may give a way to reduce the pain. If you need any assistance with these steps then feel free to open a support incident – and when I say free I mean free – this is a bug and we do not charge for incidents that are due to bugs (or we will refund – which amounts to the same thing). The ULS log entry associated with the initial Queue errors above (for the benefit of the search engines): 05/01/2012 11:57:55.67    Microsoft.Office.Project.Server (0x1D74)    0x335C    Project Server    Reporting    atwj    Critical    Standard Information:PSI Entry Point:   Project User: REDMONDbrismith  Correlation Id: e1f4e953-7dea-448a-a528-709075c698bf  PWA Site URL: https://brismith8100/PWA   SSP Name: Project Server Service Application  PSError: ReportingProjectChangeMessageFailed (24006) RDS: The request to synchronize change(s) to project Project UID=’216733b0-e194-469a-afc3-9235da4ce4c1′. PublishType=’ProjectPublish’ failed.  Message: ‘ReportingProjectChangeMessageFailed’. Message Body: The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmTaskBaseline_ProjectUID_TaskUID”. The conflict occurred in database “ProjectServer_Reporting”, table “dbo.MSP_EpmTask”.  The statement has been terminated. Error:(null)    e1f4e953-7dea-448a-a528-709075c698bf and for the Timesheet error: 05/01/2012 12:13:29.65    w3wp.exe (0x2444)    0x23D8    Project Server    Task Statusing and Updates    btw9    High    CacheProjectBaseCalendars: could not locate data for calendar 0c13de33-2a07-4310-b091-c77990d9dd6a for project 216733b0-e194-469a-afc3-9235da4ce4c1    e5dd4eaf-551a-469b-a3e0-1f60e2f3d1af 05/01/2012 12:13:29.85    w3wp.exe (0x2444)    0x23D8    Project Server    General    0000    Exception    Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Statusing.StatusingGetMyWorkForGridJson System.InvalidOperationException: CacheProjectBaseCalendars could not find project calendar for project. CalUid=0c13de33-2a07-4310-b091-c77990d9dd6a     at Microsoft.Office.Project.Server.BusinessLayer.TimePhasedDataAccess.CacheProjectBaseCalendars()     at Microsoft.Office.Project.Server.BusinessLayer.TimePhasedDataAccess..ctor(StatusingPageLoadDataSet dataset)     at Microsoft.Office.Project.Server.BusinessLayer.Statusing.ReadStatusTimephasedDataForResource(IList`1 gridChanges, Guid[] vAssnUids, IDictionary`2 assn2proj, StatusingTimephasedPeriod[] tpd
Periods, DateTime tpStart, DateTime tpEnd)     at Microsoft.Office.Project.Server.BusinessLayer.Statusing. c__DisplayClass57. b__56(IEnumerable`1 Keys)     at Microsoft.SharePoint.JSGrid.GridSerializer.BuildOutput()     at Microsoft.SharePoint.JSGrid.GridSerializer.ToJson(Serializer s)     at Microsoft.SharePoint.JsonUtilities.Serializer.SerializeToJson(Object o)     at Microsoft.Office.Project.Server.BusinessLayer.Statusing.GetMyWorkForGridJson(JsGridSerializerArguments gridSerializerArgs, String gridChangesJson, String projectAssignmentsMap, Guid viewUid, String timephasedStart, String timephasedEnd, Byte pane, Int32 durationType, Int32 workType, Int32 dateFormat, Boolean clearPersistedProperties, Nullable`1 rowFilterType)     at Microsoft.Office.Project.Server.Wcf.Implementation.PWAImpl.StatusingGetMyWorkForGridJson(JsGridSerializerArguments gridSerializerArgs, String gridChangesJson, String projectAssignmentsMap, Guid viewUid, String timephasedStart, String timephasedEnd, Byte pane, Int32 durationType, Int32 workType, Int32 dateFormat, Boolean clearPersistedProperties, Nullable`1 rowFilterType)    e5dd4eaf-551a-469b-a3e0-1f60e2f3d1af

December 2011 CU Webcast: Questions and Answers

Sorry for the delay in getting this posting out.  Vacation and an unusual amount of snow are a couple of the excuses, and if you missed the webcast then you can view here – https://www.livemeeting.com/cc/mseventsbmo/view?id=1032493964&role=attend&pw=5A2EBE71 Also if you are thinking of watching this or future TechNet webcasts then I’ll remind you that you will need the Live Meeting client install which can be obtained from here https://office.microsoft.com/en-us/downloads/CD010254990.aspx .  – but on to the questions – thanks for all of you who attended and for the great questions!: Q: What is the risk of applying the December Cumulative Update on the server but not on the client? Is it highly recommended to always keep them in sync, or is it acceptable to have some clients that are not patched to the same CU as the server? A: There is no dependency between the client and server, and although to be fully patched you should update both there is no risk (beyond not having some of the fixes) if you update the client or server independently.  Once you have patched the client it is also worth ensuring no un-patched clients can connect by use of the Server Setting to set the minimum client patch level that can connect (2010 only) Q:  Ref 30900 – the fix relating to custom calendars – is that custom enterprise calendar, or custom calendar in template, or both? A:  In this case, it is whether or not the template has the custom calendar associated with it. For example, suppose you have a custom calendar that is the base calendar for some tasks within your project. It is in this case that the PSI method would fail as it attempted to reconcile the calendar. Q:  The Save Error 9000 is a very generic message. Can you repeat the exact issue for which this fix was designed? A:  The scenario is this. As you save your project from Project Professional, you see the 9000 error and your project does not get saved. We found about four different conditions where duplicate IDs or objects such as views could appear and it’s because of these duplicates that the save process failed. We’ve added fixes on both the client and server to address these various conditions. As Brian states, there could possibly be other conditions that could lead to this issue and so time will tell.  As mentioned – you don’t need to install both server and client fixes – they are independent – but to get full protection you will. Q:  In regards to Timesheets in Single Entry Mode, if a timesheet is submitted and accepted with actuals against 3 projects, and later one of those projects is deleted, and then someone deletes that timesheet and attempts to create a replacement timesheet, currently that results in an error. (The timesheet line items from the deleted projects still remain and seem to stop the new timesheet from being created.) Does this CU address this? The issue is that there is an “orphan” timesheet line record. A:  With the December CU the practice of deleting timesheets should be reviewed within your organization as the behavior changes – but it should not give an error.  When the timesheet is re-created it will re-load the current tasks with any current actual work that has been accepted.  The deleted project will no longer appear.  The specific error mentioned isn’t familiar – so there may still be a risk of it occurring – possibly related to pending actions? Q:  You spoke about graphical indicators disappearing occasionally after changes have been made to their enterprise field definitions. Are there other graphical indicator problems…. such as enterprise fields showing incorrect indicators after changes made to their field definitions? I experienced some problems in one of my deployments but I believe the issue was a wrong indicator not a missing indicator. The problem seems to have gone away when I created new fields in the production site. Forum postings gave me the impression the December CU would address this. Any comments on the status? Are all of these graphical indicator problems resolved now? A:  We have certainly addressed a number of issues with graphical indicators – it could be possible to see the wrong indicator if a condition of a formula calculation gives an unexpected result and no indicator (or an existing indicator) meets the resultant condition.  We’d be keen to hear of any reproducible steps that are still giving bad results. Q:  I know that for Project Server 2007 there was a tool (P12ACTool) that could be run against the environment that would check for standard issues behind the scenes and provide steps for resolving those issues. This was used in my past as a preventative step to keeping the environment up to par. Is there a similar tool for Project Server 2010? A:  There is a tool that we use for 2010 (P14ACTool).  It is used on support incidents under the direction of a support engineer and not publically available.  I does require some interpretation of the results and can give false positives which is why we like to be involved with the customer using the tool.  We do appreciate that some partners make extensive use of the tool with their customers and are reviewing a version of the tool that we could make more available – watch this space.  We are also investing a lot in diagnostics at Microsoft so expect some new automated packages sent to you from CSS to aid in collection of data. Q:  What is the status of the fix for the 2010 client issue with “Save and Send” where the data is not actually saved to the Server? A:  Although I remember hearing about a condition like this I tried some tests after the webcast and I was not able to reproduce or find a bug in our database.  I’d welcome any repro steps so we can address this if it is still an issue. Q:  We have a couple of different 2010 client machines running the Oct and Dec CU, and the links between tasks are vanishing and then reappearing, resource usage view is jumping around between resources when modifying planned time phased actual work, and indicators in the status line (at the bottom) are vanishing – is this a known issue? (not seen it prior to August client CU for 2010) A:  We have a hotfix request in for the resource usage view jumping – likely to be fixed in April CU – not familiar with the other issues – repro steps would aid our investigation here – and confirmed this was more a display problem than the links really going away.  Possibly a UI handle problem? Q:  Should you be able to update Actual Start in the Project Center views in edit mode A:  This has not been exposed for editing in the web – possibly because of the knock on effect on the task and assignment start dates. Q:  Are either of you going to be at the Project Conference? A:  We can now confirm that yes, Adrian and I will be at the Project Conference in Phoenix, along with others from the support team: our Manager Larry Block and escalation colleague Aik Chen.  Also look out for my next blog post asking what you would like us to talk about at the conference. Q:  This is a general Project Server config question: Is there a way to report time a the high level and not at task level because we just record total time of a project? Meaning entering the time A:  Reporting in the timesheet is possible at the top level Q:  Not really project related but I recently downloaded a few of the past webcasts in wma format. But I can’t sync any of these to my Zune. Any suggestions? A:  I tried this by downloading and syncing to my Windows Phone 7 and also this didn’t work.  I’ll see if I can find a way of doing this – I’m sure using Expression Encoder would allow re-encoding in a suitable format. Q:  What is the correct way to submit a Design Change Request? Is there a website we can go to directly? A:  No web site – usually giving feedback through your account team, or to a support engineer will get through to the right people.

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: 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 https://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 https://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 https://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf , and for general FIPS information see https://csrc.nist.gov/publications/PubsFIPS.html .

Project Server: Why do my date selections lose a day?

*** Update – should probably have mentioned this more prominently – but this DOES NOT affect schedule dates – just the display date ranges in Resource Plans. When I re-read it after posting I realised this might look quite alarming*** This was an interesting issue that Adrian Jenkins finally cracked – and I had seen postings on the forums and we had some internal customer cases.  It appeared to be related to time zones as the problem had only occurred in Europe and Eastward.  So if your time zone is left of Greenwich (Sorry – UTC) you probably don’t need to read any further.  But as this may work in reverse also – might just be worth seeing why this happened. In my example below, I have my server and SharePoint farm running at UTC+2 – Athens, Bucharest and Istanbul (and others of course).  I’ve also set the regional settings to Greek (but don’t have the language pack) – just so the date format is the same format as most people this affects are using.   If you are in the Resource Plan and want to change the date range and say you select 1/12/2011 to 31/12/2011: you will find when clicking OK that the actual dates are set to 30/11/2011 and 30/12/2011 Looking behind the scenes we can see that the actual date (and time!) saved is midnight.  This is persisted in the User Properties table – as it isn’t setting the resource plan start and end date – just the current window of dates that you wish to review.  Worth remembering that there can be stuff before and after these dates… but back to the plot.  These dates are stored in a numeric string representing the number of milliseconds since 1/1/1970.  Between selecting, saving and recalling there is a conversion according to the current time zone and basically it thinks that at midnight on whatever day you choose (assuming you are UTC+X)  – it was still yesterday at UTC! In reality the time stored is the UTC time taking in to account the time zone difference – so in my example I set 1/12/2011 (it assumes time of 0:00) but what was saved was actually 2 hours earlier 30/11/2011 22:00. Easy workarounds – either put in the day after you really want – or add a time value to the string.  So I could enter: and this would then give me the right dates. This shouldn’t affect anyone West of Greenwich – however, if I put in a time here in the Pacific Time Zone that was after midnight UTC – such as 5pm, then my date would go forward to the next day! Sorry for any confusion this has caused.  I should also point out that although I am specifically talking about the date range for the resource plan view this could also affect other pages too – but generally only dates persisted as part of a view.  Rest assured that in my testing it does not affect dates entered in the schedule grid.

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.