Project Server 2010: How to best manage large numbers of resources

This posting follows on from the one yesterday concerning how Project Server makes use of SharePoint permissions and features – but concentrates on some potential issues you can run into if you have a very large user base and also have projects that have very large teams.  We are also authoring a TechNet article explaining this in more depth – I will add a link once it is published.  This isn’t going in to the usage of the RBS or the other internal feature – but concentrates more on the technical issues of large user populations.  If you fit in this category then read on… As mentioned in the previous post Project Server 2010 uses the normal SharePoint permissions infrastructure to set access control both to the Project Web App (PWA) site and also any Project sites that are created for the individual project plans held in Project Server.  At the PWA site level the users are added to certain groups depending on their permissions levels within Project Server, so you will generally see SharePoint groups for Project Managers, Readers, Team members, Web Administrators and finally Workflow and Project Detail Pages Administrators.  Each of these groups will show the individual PWA users as appropriate.  This is a change from 2007 where individuals were added to the PWA site with specific permission levels.  You may have seen issues in 2007 if you had large numbers of users as whenever changes were needed in the member permissions the users would be removed and then added back – so some users would get “Access Denied” until they were added back after a change.  We had some workarounds for this scenario involving turning off the user synchronization.  In 2010 we made a couple of changes to avoid this problem – firstly the change to using groups at the PWA site level, and secondly we now remove then add back each individual as opposed to removing everyone and then adding back everyone.  So getting an Access Denied in the same scenario in 2010 is very unlikely. At the Project site level however we do not use the group approach and manage the users on an individual basis.  In most scenarios this is not an issue as the number of resources assigned to a project, and hence added to a site, is generally low compared to the total number of users in the system.  However there could be some scenarios where customers wish to have many or all of their users accessing many or all of their project sites.  This could either be achieved by adding many users to a project – or by giving the “View Project Site” permission at the team member level in a category that included many or all projects.  Either way this would then add very many individual users with permissions to the project sites.  And why is this a problem?  If the numbers of users is large then it is possible for the recommended software boundaries and limits of SharePoint Server to be exceeded – and this can lead to performance issues.  Each user added individually to a site would be considered a security scope – and the recommended maximum number of unique security scopes per list is 1,000 (SharePoint Server 2010 capacity management – Software boundaries and limits – https://technet.microsoft.com/en-us/library/cc262787.aspx ).  So each list and library in the site would be inheriting from the parent site permissions – and would exceed this limit if more than 1,000 user had access to the site (as they are individually added). In our experience the performance issues would then relate to any change in the site membership caused by changes in the categories or groups – or following such actions as adding a user or inactivating a user.  For example this last action of inactivating a user will actually remove that user from all sites they have access to – and the reason the limit is imposed is that when it is exceeded the process of removing a user can become very slow – particularly if this same user is also being removed from very many sites each of which is also way over the limit.  In extreme cases with multiple user inactivations it is possible that the server will become unresponsive and unable to authenticate users. I will include some of the error messages you might see, and the corresponding ULS entries at the end of this posting so that this aids finding this potential cause. If you are following along (and I’m sure some of my readers are way ahead of me…) you will realize there is a Catch-22 here.  Your server could become unresponsive whenever you need to manage users because you have too many users with permissions on the sites.  So remove some users… which will then make the server unresponsive…  How to escape from this loop?  There are some quick ways to get this resolved – but before rushing in to that it is better to review what it is you are really trying to achieve.  If the desire is that most people can access most projects then managing the permissions outside of Project Server using groups and inheritance from PWA is the way to go.  If however the fact that many users had access to many sites was really a mistake then you need to correct that issue – and either remove the “View Project Sites” from the offending category or reduce the number of resources assigned to the plans – but first of course you need to stop the synchronization of users to the sites otherwise any action may make your server very slow.  As mentioned in the previous post this can be achieved by us of the UserSyncSettings method – and just repeating that here to save you having to open that post up: The setting can be changed using the PSI and the Admin Web Service and the UserSyncSettings method. The enumeration of values that can be set are detailed at https://msdn.microsoft.com/en-us/library/websvcadmin.usersyncsettings_di_pj14mref.aspx , and the method described at https://msdn.microsoft.com/en-us/library/gg229480.aspx . Turning off the Project Site sync is achieved by the enumeration DisablePWS.   Member name Description Enabled Value=1. Enable all synchronizations. DisablePWA Value=2. Disable synchronization with Project Web App. DisablePWS Value=4. Disable synchronization with project sites for the user. DisableEmailSync Value=8. Disable email synchronization. DisableAll Value=16. Disable all synchronizations. This relates to settings in the MSP_WEB_ADMIN table of the Published database in the WADMIN_USER_SYNC_SETTING column. So for example a query such as: Update [ProjectServer_Published].[dbo].[msp_web_admin] set [WADMIN_USER_SYNC_SETTING] =4 would do the same as using the method to set the enumeration: int syncSettings = (int)SvcAdmin.UserSyncSettings.DisablePWS; We’d certainly prefer you to not touch the DB correctly – but I’m guessing that many of you would find it much easier to execute a SQL query to update the value than to write the code necessary to do the same (I certainly would!). Once that is turned off then you can safely do user management without causing further performance problems – but of course it would still be possible to trigger the same issues if you tried removing the users directly from the project site, using the out of the box SharePoint functionality. One way to remove the users very quickly without triggering the individual deletion that causes the problem is to inherit permissions from the parent.  This can be done via the UI on the Site Actions, Site Permissions page of the individual sites: This will lose any custom permissions.  If your end goal is to give most users access to most sites then this may be how you want to keep things long term – so before taking this action you would probably want to be sure that the PWA site has the right permissions for all the users who need access – as that will be where this site will start inheriting from once you click the button.  Obviously if you have thousands of sites (and you probably have if this is causing you problems) then PowerShell can automate the change for you. Run the following PowerShell command in the SharePoint 2010 Management Shell $site = Get-SPSite “ ” Foreach ($web in $site.AllWebs) {
        $web.Update()         $web.ResetRoleInheritance()         $web.Update()         } $site.Dispose() This (or the UI method) would also need to be run for any new sites created to avoid the problem coming back – but if you had ‘corrected’ your categories and team memberships then all would be ok going forward. If you do decide that leaving everything inheriting is right for most projects then you may also want to have certain projects that are more ‘secret’ and for these you will need to continue to manage the permissions and user on an individual level.  One thought I had was to set a property on these ‘special’ sites via PowerShell and then you could use this property to filter out in a modified version of the above PowerShell command and ensure you didn’t reset the role inheritance accidentally.  I should also point out that if you use the Synchronize option on the Project Sites page then this would re-break the inheritance – so should be avoided. As a guide we have seen the issue with a customer with around 3000 users where they are nearly all added to each of their 1500 sites.  And as promised, here are the error messages and ULS entries.  Different users may see different symptoms – but the user who initiates the issue, perhaps by inactivating a couple of resources, will see the ‘Save’ button on the page apparently stick on the ‘clicked’ position and eventually get a “An unexpected error has occurred.” message.  The correlation ID will be found in the ULS logs and will have several rows all relating to a SQL deadlock and the Critical level one will look like: 08/10/2011 12:17:02.85    w3wp.exe (0x2178)    0x314C    SharePoint Foundation    Database    5586    Critical    Unknown SQL Exception 1205 occurred. Additional error information from SQL Server is included below.  Transaction (Process ID 80) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.    886d9cdd-5c0c-4f3a-8f89-f4e8c92acde3 Another High level one that gives more information on the query causing the issue will be something like: 08/10/2011 12:17:06.97    w3wp.exe (0x2178)    0x314C    SharePoint Foundation    Database    tzkv    High    SqlCommand: ‘SET NOCOUNT ON; DECLARE @DN nvarchar(256),@LN nvarchar(128),@@DocUIVersion int,@@S uniqueidentifier,@@Level tinyint; DECLARE @ItemId int; DECLARE @@iRet int; DECLARE @ExtraItemSize int; SET @@Level = 1; SET @@S=@wssp0;  EXEC @@iRet = proc_SecRemoveUserFromSite @@S, @wssp1, @wssp2  SELECT @ItemId = @wssp3  IF @@iRet 0 BEGIN  GOTO DONE; END  ;BEGIN TRAN IF NOT EXISTS( SELECT tp_ID FROM UserData WHERE tp_ListId = ’06C8C9BB-B10B-4042-8859-9F9985E73E76’ AND tp_ID = @ItemId  AND tp_Level = 1 AND tp_RowOrdinal =0) BEGIN  SELECT @ExtraItemSize = 0  EXEC @@iRet = proc_AddListItem @SiteId…. I have shortened it considerably – but the key piece is the proc_SecRemoveUserFromSite.  Finally the ‘Unexpected’ one: 08/10/2011 12:17:06.97    w3wp.exe (0x2178)    0x314C    SharePoint Foundation    Runtime    tkau    Unexpected    System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80131904    at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateMembers(String bstrUrl, UInt32 dwObjectType, String bstrObjId, Guid& pguidScopeId, Int32 lGroupID, Int32 lGroupOwnerId, Object& pvarArrayAdd, Object& pvarArrayAddIds, Object& pvarArrayLoginsRemove, Object& pvarArrayIdsRemove, Boolean bRemoveFromCurrentScopeOnly, Boolean bSendEmail)     at Microsoft.SharePoint.Library.SPRequest.UpdateMembers(String bstrUrl, UInt32 dwObjectType, String bstrObjId, Guid& pguidScopeId, Int32 lGroupID, Int32 lGroupOwnerId, Object& pvarArrayAdd, Object& pvarArrayAddIds, Object& pvarArrayLoginsRemove, Object& pvarArrayIdsRemove, Boolean bRemoveFromCurrentScopeOnly, Boolean bSendEmail)    886d9cdd-5c0c-4f3a-8f89-f4e8c92acde3 Once the sever is in the condition – which could last 15-30 minutes, then other users will get timeouts on their pages and the ULS logs may show the following: 08/10/2011 12:20:22.30    w3wp.exe (0x1228)    0x1454    SharePoint Foundation    Monitoring    b4ly    High    Leaving Monitored Scope (ExecuteStoredProcedureDataReader — MSP_AUTH_GETUSERBYNAME). Execution Time=120002.728838442    2be0491a-a64b-4237-8cfc-40342a374d49 08/10/2011 12:20:22.30    w3wp.exe (0x1228)    0x1454    Project Server    General    8ym5    Monitorable    PWA:https:// /PWA, ServiceApp:Project Web App Service Application, User:, PSI: SqlException occurred in DAL:  0 0 -2     System.Data.SqlClient.SqlError: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.         at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)     at … I should also point out that use of the Project Site Provisioning Settings page option to not automatically synchronize users may avoid you getting in to this situation – but you still need some process to control access – and if most sites are unrestricted then the inheritance option from PWA may be worth a try.  Just as a reminder – the option on the Project Site Provisioning Settings page looks like this: and un-checking will stop the automatic addition of Project Server users to sites (but will not remove ones who are already there). Hopefully the workarounds given will assist in avoiding these types of issues if you really need to have very large numbers of users accessing each of a large number of project sites. As promised – once we have a TechNet article out in the wild I will link to it.

Project Server 2010: Problems when bulk editing too many resources

I came upon this bug while working on my earlier posting regarding Reporting Database Refresh https://blogs.msdn.com/b/brismith/archive/2011/07/14/project-server-2010-reporting-database-refresh-failing-with-large-resource-pools.aspx – and specifically trying to bulk edit lots of resources at once in the Resource Center.  It appears we throw a very complex and large query over to SQL and it has some issues parsing it.  The failure is pretty silent for the user – who just gets the Resource Center page back and might assume everything worked ok.  However there will be no jobs in the queue, the change will not have been made – and the resources will all be left check-out (as you will find out if you try the process again!).  The answer is to check all the resources back in again (or at least the ones you checked out – someone else may be doing work with other resources) and then reduce the number you have selected and try again.  The size and complexity of the query depends mainly on the number of resources, but also will be affected by the number of custom fields at the resource level – but my finding were that you could edit around 400 resources at once with bulk edit if you had around 24 resource custom fields.  Your mileage may vary! The errors that are seen are interesting – in that it appeared to depend on the severity of the issue.  With just over the triggering number of resources the failure was pretty silent in the USL logs and SQL Server – exceeding by a few more (20+) then gave errors in SQL Server of Error: 208, Severity: 16, State: 0 (which tends to mean object not found, and I’m guessing it was not finding the temporary table it wanted to use in part of the query) – but still nothing much in the ULS logs – and it was only when increasing the number of resources close to 500 did I see the following in SQL Server Exception – Error: 191, Severity: 15, State: 1 User Error Message – Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries. and then the ULS logs gave me an exception too: 07/15/2011 15:49:02.07 w3wp.exe (0x19B8) 0x220C Project Server General 0000 Exception Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Resource.ReadResources Microsoft.Office.Project.Server.DataAccessLayer.FilterDal+FilterException: Error during filter query execution. Query: declare @ResUid UniqueIdentifier; set @ResUid = eb736432-cd8d-4db2-8d9b-ad57bb3f0085; declare @EntUids NVarChar; set @EntUids = e162554e-45f0-496a-a86e-0010ef91ae13,bb57a927-1b4b-42e9-b29b-001c63e0b53c,… followed by hundreds more GUIDs I’ll be logging this bug internally too so we can consider a fix for it – or at least a limit on the resource selection so you don’t run in to this one.

Project Server 2010: Reporting Database Refresh failing with large resource pools

If you have a large(ish) resource pool, with over about 1500 resources then you may run in to an issue with the Reporting Database Refresh not completing correctly – with the initial symptom that many of the Reporting (Resource Sync) and all of the Reporting (Project Sync) jobs may just say Cancelled and if you click through to the errors from the queue you will see: Reporting message processor failed: ReportingResourceChangeMessageFailed (24008) – A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.. Details: id=’24008′ name=’ReportingResourceChangeMessageFailed’ uid=’e3caf6d3-cc85-4078-90d3-1ce1ad929776′ QueueMessageBody=’Resource UID: ‘7d536aef-9be1-46c7-971a-286e384918c8′. ChangeType=’Add’. ResourceChangeType=’All” Error=’A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.’. Or Reporting message processor failed: ReportingProjectChangeMessageFailed (24006) – A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.. Details: id=’24006′ name=’ReportingProjectChangeMessageFailed’ uid=’bfd6372f-b545-4368-8b8e-00807de566f0′ QueueMessageBody=’Project UID=’65cae55a-48e3-44fe-826e-f4f7fa478cc8′. PublishType=’All” Error=’A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.’. and if you look in the ULS logs then you will see something like: 07/14/2011 12:19:04.56    Microsoft.Office.Project.Server (0x2084)    0x2538    Project Server    Reporting    auhd    High    PWA:https://Server/PWA, ServiceApp:Project Server Service Application, User:DOMAINUser, PSI: [RDS] ULS Event: ReportingResourceChangeMessageFailed was associated with exception: Microsoft.Office.Project.Reporting.ProjectReportingPublic.ReportException: A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.RDSBaseMessageProcessor.CheckIfAllowedToProceed(ReportingBaseMessage msg, MessageContext msgContext, Group messageGroup, JobTicket jobTicket)     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.ResourcesChangedMessageProcessor.HandleMessage(Message msg, Group messageGroup, JobTicket jobTicket, MessageContext mContext)    ae4c9ca3-2a2c-44d1-b7d3-3d54589fcc8a 07/14/2011 12:29:16.10    Microsoft.Office.Project.Server (0x2084)    0x3868    Project Server    Reporting    atwr    High    PWA:https://Server/PWA, ServiceApp:Project Server Service Application, User:DOMAINUser, PSI: [RDS] ULS Event: ReportingProjectChangeMessageFailed was associated with exception: Microsoft.Office.Project.Reporting.ProjectReportingPublic.ReportException: A RDS message that was spawned during a RDB refresh operation attempted to execute outside of the time range in which the refresh operation run.     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.RDSBaseMessageProcessor.CheckIfAllowedToProceed(ReportingBaseMessage msg, MessageContext msgContext, Group messageGroup, JobTicket jobTicket)     at Microsoft.Office.Project.Server.BusinessLayer.ReportingLayer.ProjectPublishMessageProcessor.HandleMessage(Message msg, Group messageGroup, JobTicket jobTicket, MessageContext mContext)    ae4c9ca3-2a2c-44d1-b7d3-3d54589fcc8a The first message will appear for cancelled resource sync jobs, and the second for projects.  If you don’t happen to notice this issue, then the next thing you might see are failed reporting publish jobs such as the resources that assignments belong to may not exist in the reporting database (if they were among the cancelled ones.  These errors will look something like this: Reporting message processor failed: ReportingProjectChangeMessageFailed (24006) – The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmAssignment_ResourceOwnerUID”. The conflict occurred in database “ProjectServer_Reporting”, table “dbo.MSP_EpmResource”, column ‘ResourceUID’. The statement has been terminated.. Details: id=’24006′ name=’ReportingProjectChangeMessageFailed’ uid=’6b806909-7a24-4409-8b80-b898f4a904a9′ QueueMessageBody=’Project UID=’79bf1075-a46a-467c-828a-24a1dc00ebbb’. PublishType=’ProjectPublish” Error=’The INSERT statement conflicted with the FOREIGN KEY constraint “FK_MSP_EpmAssignment_ResourceOwnerUID”. The conflict occurred in database “ProjectServer_Reporting”, table “dbo.MSP_EpmResource”, column ‘ResourceUID’. The statement has been terminated.’. Queue: GeneralQueueJobFailed (26000) – ReportingProjectPublish.ReportProjectPublishMessageEx. Details: id=’26000′ name=’GeneralQueueJobFailed’ uid=’29aca4ff-eb33-46ac-b6e6-1126f8532dae’ JobUID=’8ed284d5-7015-4e6e-a344-6380aae4b0d1′ ComputerName=’ServerName’ GroupType=’ReportingProjectPublish’ MessageType=’ReportProjectPublishMessageEx’ MessageId=’1′ Stage=”. For more details, check the ULS logs on machine ServerName for entries with JobUID 8ed284d5-7015-4e6e-a344-6380aae4b0d1. To better understand the reason for the failure it may help to understand more about the reporting database refresh process.  It is a process that gets automatically started based on certain conditions that would mean the data in the reporting database would not be consistent – and the most common of these is that some metadata such as the custom fields have been restored from archive.  Once this happens then the reporting data may be incorrect – as it may have custom field data that no longer makes sense – for CFs that were not in the archive so they no longer exist.  If you monitor the queue you will see an initial job that says Reporting Database Refresh and this will soon change to Reporting Database Refresh(Sleeping) – which is ok.  You will then see several sets of jobs getting added at intervals.  It will look something like this: Reporting (Fiscal Period Sync) – Immediate Reporting (Resource Capacity Range Sync) – Immediate Reporting (Lookup Table Sync) for each lookup table, and added to the queue 5 minutes after the Reporting (Resource Capacity Range Sync) Reporting (Custom Field Metadata Sync) for each custom field, and added to the queue 5 minutes after the Reporting (Lookup Table Sync) Reporting (Entity User View Refresh) for each view and added at the same time as the Reporting (Custom Field Metadata Sync) Reporting (Resource Sync) for each resource and added to the queue 5 minutes after the Reporting (Entity User View Refresh) Reporting (Workflow Metadata Sync) for stage, phase etc. – added 5 minutes after Reporting (Resource Sync)’s finish Reporting (Enterprise Project Type Sync) for the EPT’s – added at the same time as the Reporting (Workflow Metadata Sync) Reporting (Project Publish) for each project and added 5 minutes after the Reporting (Enterprise Project Type Sync) Reporting (Timesheet Assignments Refresh) – added 10 minutes after the Reporting (Project Publish) Reporting (Timesheet Project Aggregation) one for each timesheet period – added at the same time as the Reporting (Timesheet Assignments Refresh) While all this is going on the initial job will wake every few minutes to make sure things are still going along OK – and it is at this point that the bug this blog is about can break things.  It is a timing issue and it is possible that when the waking job checks to see if all is OK it gets a response it is not expecting so it thinks things have failed – writes a failure message to one of our database tables along with a failure time.  Subsequent jobs are checking this table too and will see that things have apparently failed so they will just cancel (or some of the jobs may show “Failed but not blocking correlation”).  This is the reason for the error message saying “A RDS message that was spawned during a RDB refresh operation attempted to execute outsid
e of the time range in which the refresh operation run” – as the current time does not fit between the apparent start and end time of the reporting database refresh. So how to recover?  There will be a fix coming along – and my hope is that it will make the August 2011 Cumulative Update – but there is a workaround if you should find yourself in this situation.  You will need to force a reporting update for all the resources and all the projects.  For the resource you can open them in Resource Center and Save (no change needed), and you will see the Reporting (Resource Sync) and the Reporting (Timesheet Project Aggregation) jobs kicked off for this user.  The reason you need to refresh all resources and not just the ones that failed is this second group of jobs – the Reporting (Timesheet Project Aggregation) – which puts data from the admin lines of the timesheets into the MSP_EpmAssignments and MSP_EpmAssignmentsByDay tables.  You can use the Bulk Edit option to enable you to do multiple resources at once but for this to work you need to make a change (you could add a new CF and just type some text into it)  – and you also need to be sure all your resources are checked in.  You may find the page a little unresponsive when you hit Save (you might want to limit it to a few hundred at once – I did around 200 at a time and that worked for me .  A trick that might help – if you select a group of rows using the shift-click you can then check the select box for all of the selected rows.  I’m still playing around with the options here – I will update the post if I find some new tricks and tips. For projects you will need to re-publish all the plans.  You can do this either using ProjTool from the SDK https://msdn.microsoft.com/en-us/library/gg446880.aspx or use a PowerShell commands made available by the code gallery sample at https://archive.msdn.microsoft.com/pj14PowershellPSI .  The getting started guide on that page has a sample that can do a check-out, publish and check back in.

Project Server 2010: SP1 and June CU Questions and Answers

Firstly I should announce that the ‘refreshed’ version of the June 2011 Cumulative Updates are now live on the support site.  If you downloaded an earlier version then please get the latest – same URLs, but you will see a revised date (for example on the Project Server 2010 server package that also includes SharePoint Foundation and SharePoint Server https://support.microsoft.com/kb/2536600 you will now see “ Article ID: 2536600 – Last Review: July 11, 2011 – Revision: 4.0 ” and the Note: This is build 14.0.6106.5002 of the cumulative update package.  The fixes over and above the original CU are the first two of the “Known Issues” posted on the KB article itself: Known issue 1 If you install an earlier build of this hotfix package on a SharePoint server that has .NET 4.0 installed, you cannot synchronize user profiles from AD and LDAP into the SharePoint User Profile Service application database. The user profile synchronization export process fails. Additionally, the System.PlatformNotSupportedException exception shows in Event Viewer. Note This issue is fixed in build 14.0.6106.5002 of this hotfix package Known issue 2 After you install an earlier build of this hotfix package, the following services may fail at either runtime or the provision process if you run these services by using a user account other than the farm administrator account: Session State Service Secure Store Service Business Data Connectivity (BDC) Service Note This issue is fixed in build 14.0.6106.5002 of this hotfix package. and the third is one mentioned by Adrian in our Project Server 2010 Service Pack 1 and June Cumulative Update webcast https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&EventID=1032487727&CountryCode=US regarding Fix 30793 – When saving a timesheet (also creating), custom field values for *other* timesheets are deleted. We had a number of questions came up during the session and we thought it would be useful to summarize them here, for those who did not attend the webcast or those who didn’t get a chance to look at the Q&A section as we were going along.  Thanks to all who asked such great questions! Question: Do we need to load the SharePoint Foundation SP1/June CU? Answer:   It is included in some of the roll up packages, so you may not need to explicitly install it.  However, if you are just going to load the Project Server 201 June Cumulative Update package (KB 2536586) and you have not installed previous CUs then you will need the SharePoint CU (or SP) or you will get the jsgrid issue reported when we shipped the August 2010 CU – https://blogs.msdn.com/b/brismith/archive/2010/09/17/project-server-2010-applied-august-cu-and-having-problems-with-jsgrid.aspx – the view failed to load, and Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Project.ProjectGetProjectDetailsForGridJson.  If you are unsure if it is in a package then scroll down to the complete file list.  SharePoint Foundation stuff will be the files like sts-x-none.msp, and ones starting with wss. Question: Any requirements for Office 2010 app’s? Answer:  It isn’t necessary to also upgrade the client applications but it’s certainly a great idea to update both Project and Office to SP1. Question:   What’s the minimum CU, both client and server, that we need to be on before applying SP1? Answer:   No minimum CU is required. You can go directly from the initial release to SP1 if desired. Question:   Did the fixed work task type get fixed for entry in PWA? Answer:    Yes! Additionally, effort driven tasks are supported. Question:   Does SP1 contain the June CU or do I need to install them both? Answer:   SP1 does not contain the June CU, although the June CU does contain much of what is in the Service Pack.  It is advisable to load both. Question:   Install June CU then SP1 or vise versa? Answer:   Technically, it doesn’t matter. It is usual to install SP1 first and then June CU (and the configuration wizard can just be run once – after both are loaded, assuming you are doing it right away). Question:   Is hotfix 2534413 included in the June CU? Answer:   That hotfix was the Project 2010 April 2011 Cumulative Update, and is included in the KB 2536590 hotfix – the Project 2010 June 2011 Cumulative Update. Question:   Is there a list of bugs/fixes available for the 2nd June CU that will be coming out in a week or so? Answer:   There is – and I also mention what is fixed above. Question:    In June 2011 KB https://support.microsoft.com/kb/2536590 the 5th items says when you apply updates using PWA, your updates are lost. We had that issue in PS 2007 fixed it with Feb 2011 CU. After migration to 2010 we are getting it in PS 2010. The June 2011 restricts the issue from happening further. But is there a way to restore lost hours? Answer:   Best to contact support for assistance with this type of issue – and as it relates to a bug there will be no charge. The support engineer will be able to help identify if and how hours can be re-applied. Question:   Where can I find the links for the June CU? Answer:   We will get the latest link up on the Project Administration blog shortly,  or search https://support.microsoft.com . Question:  W e run this on a VM, with the server set to dynamic memory, it simply takes as much memory as it could, is that normal, and is there a wayconfig setting to limit this? Answer:   You can set an upper limit for Dynamic memory (certainly for HyperV) – if nothing else is using it then why would you want to limit? If you have conflicting apps then you can also set priority of memory usage. Question:   I missed the reasoning behind the statement that we should reconsider our settings for “manually scheduled tasks can be published to team members” Answer:   At release you could not record time-phased data against manually scheduled tasks so this was one reason you might have wanted to check that option. You may still want to restrict publishing if you are using manually scheduled tasks more for longer term planning. Question:   I have a resource who can not see his tasks in PWA. PWA displays loading and then “Cannot communicate with the server. Verify your connection and try again.”. Has this problem been resolved? Only one resource has this problem. Answer:  I don’t know off the top of my head – sounds data related if one resource is affected – or might be some customization of their view. Ping me via my Blog contact and I can give some pointers. Question:   Does the auto publish also close the projects it publishes? Answer:   It will submit a request to publish after auto approval so this will be queued and will actually when the job gets to the top of the queue, assuming the plan is checked in (or checked out in the same session doing the approval/publish).   The publish itself does not check the project out. Question:   Earlier it was mentioned re: multi-browser support, that Safari was supported not on PCs but only on PowerBooks. Did you guys mean any/all Apple native hardware? Or is that PowerBook, specifically? For instance, supported on iPads? Answer:   Although our testing was on desktop and laptop Apple hardware we are not aware of any issues on other Apple platforms such as the iPad and have heard anecdotal references to it working. Question:   Can you provide the URL’s for the links to the excel workbooks that contain the list of fixes? Answer:   https://download.microsoft.com/download/5/1/2/512CC712-4070-4CFF-BC4A-B3AFF0E21A1E/Microsoft%20Office%202010%20Service%20Pack%201%20Changes.xlsx https://download.microsoft.com/download/B/0/D/B0D1540B-6CF6-4674-9C8E-7A45FD91C163/Microsoft%20SharePoint%202010%20and%20Office%20servers%20Service%20Pack%201%20Changes.xlsx   Question:   If we upgrade both SharePoint Foundation and Project to SP1, is there a sequence to follow? Answer:   Recommendation is SharePoint Foundation first – but either way will work, and you only need to run PSCONFIG after loading both. Question:   When synching a Project 2010 file with a SharePoint 2010 task list, does SP1 now support multiple resources for e
ach schedule task? Answer:   That hasn’t changed. Question:   Regarding the new AutoPublish checkbox, would like to make sure I completely get it. The functionality looks great, no need for code or for publishing after the rule is run, correct? If so, that is great! Can I also take advantage of this functionality to create a generic / general rule that matches all updates on all projects, check the box, and have myself a completely automated task accept-update-publish function? I ask because customers have asked to program this before and we’ve had to use PSI previously. Would this scheme work to do it OOTB now? Answer:   Yes  – that is the intention of this feature. My top pick for SP1. Question:   Please could you let me know on what is the largest project schedule (task activities) uploaded and managed within the server environment as we are implementing Project Server 2010 within the mining environment here in South Africa as in 2007 it was a bit of a challenge? Answer:   Our suggested maximum is around 400,000 tasks – but there are many other factors that would need to be taken into account. Question:  When synching a Project 2010 schedule to a SharePoint 2010 Task List, does the Gantt chart now support summary tasks (similar to MS Project)? Answer:   This has not changed with SP1 and summary tasks are still represented as folders containing the sub-tasks within the SharePoint Task list. Question:   Does the project server 2010 SP1 contain the SP 2010 SP1? Answer:   There is just one SP covering Office Servers which includes Project Server 2010 SP1. Question:   Are budget resources supported in templates launched by EPT’s in PWA? Answer:   No, these are not supported for projects created from templates directly on the server, when not using the Project Professional client. Question: Is there any way for users to add tasks that are synced from project server (into the outlook tasks) into their calendar as well? Many of my clients liked this feature in the past, and find the task only one less friendly to use. Answer:   There haven’t been any changes in SP1 to expand the Exchange/Project server integration and how those tasks appear in Outlook. Question:   Hi, could you advise on any improvements with archiving of projects, simplification primarily. Answer:   There are no changes to project archiving. Question:   Project to SharePoint synch – does it support dependencies other than FS? Answer: (Not answered on the webcast, but the answer is…) SharePoint only supports Finish-to-Start predecessors without constraints or lag times. Question:   Is there a limit to how many approvals/publishes can be done at a time? Answer:   Not aware of a limit – but the questioner apparently had seen approvals fail is ~500 tasks updates.  We would need a support case if anyone wants to dig deeper on this issue – no known issue were found in our databases. Question:   How soon before the SP1 demo VM of Project server 2010 will be available? Answer:   We will pass the feedback on to the marketing team letting them know that the SP1 demo VM is needed.  But a great place to practice loading the updates!

What is Project Server Consulting?

One of the hardest questions I am asked is not one I get ‘on the job’. It is the one I get all the time from family, friends and people I meet at my kids basketball games: “So, what is it that you do for a living?” For a long time I struggled with a short, accurate yet meaningful response. “I’m a project manager” is too general. “I deploy project management software” is accurate but is a little bit vague for most people. What I have started saying is “I work with companies on the best ways to manage their projects and resources using Microsoft Project and Project Server.” If their face goes blank and they start looking for a way to escape I leave it at that. If they seem interested in knowing more I break into the more detailed version: “I learn how they decide which projects to do, how they manage them and how they use their people to work on them. Then I work with them on streamlining some of those processes and then on how to model those processes in the software.” By that time even people that love me are ready to talk about something else and I don’t blame them. What we do as Project Server consultants lacks the mass-appeal of a game developer but for our own purposes it is worth examining what it really IS that we DO. In no particular order: Listen to customers about what they do, how they manage their projects and resources. Build a picture of what is really happening with their projects, resources and other work. How do projects flow through the organization andor how does the organization flow through the projects. Examine how they are currently using data from their existing processes and systems to make decisions about what projects to start, what projects to keep doing, what resources to use or not use, what projects are costing, when projects will finish. Design reporting solutions, in some cases, from scratch to provide usable data to inform the decisions that need to be made Be the project manager for the Project Server deployment Manage customer expectations about what the system will and will not do Understand and model how users will interact with the system and design appropriate security constructs Train, train and then when you think you are finished training, train the people that did not think they needed training. Workflow design. This one is new to 2010 but it plays into the work we have been doing for years to understand how projects moved through their lifecycles, but now we have some cool tools to automateenforce the process. So this list is OBVIOUSLY not complete. I’m hoping to generate some comments from the community to round it out a bit. What are your additions to this list of what it means to be a Project Management Software or Project Server consultant?

BPOS-Federal & FISMA

By: Eron Kelly I am pleased to share that BPOS-Federal has received FISMA ( Federal Information Security Management Act ) certification and accreditation. FISMA was passed in 2002 and created a process for federal agencies to certify and accredit the security of information management systems. FISMA certification and accreditation indicates that a federal agency has approved a particular solution for its use in line with the level of security established by that agency. The certification and accreditation has resulted in an official “Authorization to Operate” (ATO) issued on April 19 by the U.S. Department of Agriculture (USDA) for Microsoft’s Business Productivity Online Services-Federal, which includes Exchange Online, SharePoint Online, and Office Communications Online. It follows a similar authorization issued by the USDA in November for the Microsoft data centers that will deliver these services to the USDA. We plan to pursue FISMA certification and accreditation for Office 365, our next generation cloud productivity suite, after it launches. As a result of this action, the USDA is migrating 120,000 employees to Microsoft’s BPOS-Federal service. This means that the USDA can use BPOS-Federal to handle a variety of tasks. For example, the USDA’s Food Security programs can use BPOS-Federal to respond to food safety emergencies, the U.S. Forest Service can use BPOS-Federal to coordinate its efforts to fight forest fires, and the Foreign Agriculture Service can use BPOS-Federal to manage the distribution of food aid to millions of people around the world. We take our responsibility to protect customer data very seriously, and our cloud services already meet some of the industry’s most rigorous global security and privacy standards. FISMA for BPOS-Federal is just the latest example. We are very excited by this news and committed to serving the needs of our public sector customers. You can learn more about the specific elements of the latest BPOS-Federal solution here , and about Microsoft Online Services generally at www.microsoft.com/online . If you have questions about Microsoft’s cloud offerings for government, ask your Microsoft rep or your partner, or you can ask in the comments below. Thanks, Eron

Microsoft Dynamics AX 2012 and Microsoft Project Server 2010 Integration white paper

Good pre-release white paper that might be of interest if you have or are planning to deploy Project Server 2010 and Dynamics AX: Microsoft Dynamics AX 2012 White Paper: Microsoft Project Server 2010 Integration . This document explains the integration architecture for Microsoft Dynamics ® AX 2012 and Microsoft ® Project Server 2010 and provides instructions for setting up integration between the two programs. By setting up integration between the two products, project managers can create projects in either of the products and synchronize project data between them. This solution enables you to draw on both the core project management capabilities in Project Server 2010 and the financial management capabilities in Microsoft Dynamics AX. For information on AX 2012 release please check out today’s press release: https://www.microsoft.com/Presspass/press/2011/apr11/04-11Con11PR.mspx

Using Project to Create Meeting Agendas

If you think about it, meetings are a lot like projects. They’re for a defined amount of time with the goal of getting something accomplished. All good meetings have a defined agenda just like all good projects have a detailed schedule. Since you can use Project to create schedules, why not use Project to create your agendas? Now this is probably overkill for your one hour meeting where the agenda is three bullet points but if you are trying to plan a multi-hour meeting where a variety of speakers have to present and you need to stick to a timeframe – Project can definitely help. I recently had to plan a meeting that had some complexity and using Project saved me time. I knew that we had four hours available and had to get in seven presentations plus an intro and conclusion. I started by just dividing the time out and giving everyone the same amount of time but then all the speakers were saying they needed extra time or didn’t need that much time. If I had been in Excel or Word I would have had to manually update all the time slots and then constantly be checking to make sure everything still fit. Since I was in Project, I could make use of links and deadlines to automate this. This was especially handy after I made what I thought was the final schedule and someone pointed out I should probably add some breaks seeing how it was a four hour meeting – whoops. The below timeline is the final result of my planning and made for a great agenda graphic in my meeting request: How did I do this: Create a new project. Go to the Project tab – Project Information and set the project start date to the exact date and time of the meeting. Ex. 3/23/11 1:00 PM. If your meeting goes over lunch or outside normal working hours, also make sure to set the Project Calendar to the 24 hour calendar so it doesn’t affect your agenda. Go to File tab – Options. On the General tab, set the date format to HH:MM On the Duration tab, set Duration is entered in Minutes (or Hours is that works better for you) Now add your agenda items in the order you’ll be presenting. Feel free to use summary tasks to help organize the topics – I did. Select the last meeting item and go to the Task Information dialog – Advanced tab. Set the deadline to be the meeting end time. This way you’ll get an indication if you go over time. Now link all of the tasks by selecting them and clicking Link Tasks on the Task tab. You can now start playing with different durations to build a meeting agenda that will work. Don’t forget breaks! When you are done, you can create an agenda timeline by right-clicking the tasks and selecting Add to Timeline. Here’s the actual schedule that I created: Happy meeting planning!

The Service-Oriented Business: Part 2

Fast forward four years. It’s 2009. Remember that you’re Sara, the CIO of a mid-to-large retail company. You have many accomplishments that the business leadership team (and Board of Directors) has recognized: a streamlined supply-chain management system that reduces costs and out-of-stock conditions in stores, expanded your ecommerce presence to Europe, and improved the service levels of your major mission critical applications substantially as well as most of your “tier 2” applications, to name a few. Internally, you recognized that to have accomplished these goals for the business, changes within your IT group had to be made: You examined the IT processes that historically were either poorly performing or not defined and created programs and training for staff to implement IT management processes based on ITIL You virtualized most of your data center except for your mission critical applications and large database systems You implemented an IT service management management function that resulted in a robust but practical and usable configuration management database (CMDB) You created an SLA enforcement mechanism for your critical applications that has the effect of notifying your systems operations center when mission critical application components fail As a result, sales are up, costs are noticeably lower, and service quality is significantly improved. Life is sunny. Until the clouds come (sorry, I just had to put that in!) The implementation of your online presence in Europe has increased the traffic to your site infrastructure by 20%. Moreover, this move results in many holiday specialty items. While your ecommerce infrastructure (web site, fulfillment, inventory, and supply chain) has generally kept up with demand, it has struggled with performance and scaling issues during the holiday season. Also, the annual operational cost of the data center is quite high due to the need to support seasonal demands. This new expansion is stressing your servers even more at peak and, though you’ve grown capacity to meet the demand, your CFO is putting pressure on you to cut operational costs. As you look at your utilization reports in February and March, noting the significantly low traffic that your servers are getting, you know a change needs to be made. To solve the performance issues and the overall seasonality challenge that’s causing significant annual operating costs, you form a task force to investigate the implementation of a private cloud environment. While you believe this will potentially solve the performance and scale issues, you’ve come up with more questions than answers. On the plus side, cloud technologies promise significant scalability benefits (elasticity) to be able to more effectively handle the seasonality concerns, including scaling back services when demand is low. This plan could also result in improvements in your ability to deliver services on demand by deploying ready-made virtual machines for web and application servers. However, many questions persist: What model do I choose: PaaS, IaaS, or some combination? If I choose infrastructure as a service, how do I guarantee the quality of the resulting applications? If I go with platform as a service, what standard services do I put in place that will promote agility without sacrificing quality? How do I enable flexibility and not compromise compliance? Will it be cost-effective? I have a charge-back model today for the services I provide to various lines of business. How will I need to redefine that model so I can keep costs in line? How will it affect my service delivery? Right now now I have a pretty well-defined service management system that helps me keep my critical apps up. Will there be significant VM sprawl as a result of the elasticity I should be getting? If so, how will that affect my ability to manage this sprawl for my critical applications. Heck, I just finished getting a handle on my tier 2 apps. Will I lose control of those? If you haven’t gathered by now, there are themes here that the War on Cost team has been exploring and discussing for some time across a variety of scenarios. They are the enduring business value pillars of reducing costs, improving agility, improving quality of service, improving governance and compliance, and managing risk. All of these value dimensions are in play with the introduction of a cloud paradigm. In fact, they have the potential to be amplified: Agility – Possibly the value pillar with the highest potential amplitude. The cloud paradigm (whether public, private, or something in between) has the potential for extreme agility. Automatically provisioning development, test, and production environments in a matter of minutes or hours instead of days or weeks has enormous potential Costs – Costs have the potential to be dramatically reduced by providing a commoditized set of services that can be automatically commissioned and decommissioned at will. Also, server utilization can be significantly improved through intelligent load balancing as demands for the service change, particularly due to seasonal demands from stores and online traffic Quality of Service – QoS in all its forms (reliability, scalability, performance, availability, etc.) can be greatly improved by intelligently and dynamically load balancing workloads across (potentially large) arrays of servers running as VMs on a farm of servers that are well-utilized Governance, Compliance, and Risk Management (GRC) – These three are related values and the cloud offers huge potential benefits here too. As services are defined (whether its infrastructure, platform, or software), they are standardized (one of the main tenets of cloud computing). Standardization has the natural implication of introducing governance and compliance regulations, which, in turn, has a direct net benefit to managing risk But, and it’s a really big but, what about complexity? You’re thinking about the sheer number of VMs that can get spun up in your data center. Where once you had a hundred or so servers, you now have somewhere between five hundred and a thousand VMs (you’re not really sure). Will implementing cloud exacerbate that VM growth? How can I contain it? How much should I contain it? So, therein lies the challenge before you: if you’re going to move to a private cloud because you and your business leadership team see the potential for huge benefits, how will you manage the complexity introduced by this cloud to be able to maintain and enhance your IT team’s ability to deliver for the business? What do you think? Do these ideas ring true with you? Are there other major considerations to weigh? Let us know what your experience has been. Have you answered these questions for your organization? Don’t be shy. We want to hear from you. All the best, Erik, Strategist, War on Cost