This applies equally to Project Server too – and the term Protected Actuals goes back a bit in Project Server – but I am specifically talking about this innocent looking checkbox on the Task Settings and Display page – Only allow task updates via Tasks and Timesheets. When this box is checked in your Project Online or Project Server Project Web App instance then actual work cannot be modified in Project Professional.
If you try and edit actual work you will see something like this message – Change would modify work entered by a team member. We can’t make that change because Project Web App is set to only allow actual work to be entered by team members through timesheets or My Work.
In this very obvious case I just tried to enter details in actual work on the Task Usage view – but there are very many other ways that a change you make in Pro will try and modify actual work, and some of these are not always obvious depending which screen you are looking at. One example – making a task 100% complete. If there are unfinished assignments with remaining work you are really saying that all this work has now been completed – so all remaining work becomes actual work. Another – change a task actual finish to an earlier date – this could lose all of the actual work on any and all assignments beyond the new date. We do very occasionally see a bug where things that aren’t really doing anything to actuals are triggering the dialog too – but most times there is a real reason. Open a support case if you run into something like this – we’d be far happier looking at a bug or perhaps explaining why it does really affect actuals rather than trying to explain later why your plan no longer matches your timesheets if you choose to turn off this protection to overcome the dialog. Which brings me to…
In some cases customers will uncheck the box to allow changes to be made in a plan – but please, please, please make sure you do this as a last resort and be sure that no one else will connect to the PWA with Project Professional while you are doing this. And also keep an eye on the actual work yourself – be sure nothing happened that you were not expecting – and double check before you save the plan. I’d even go as far as being sure that auto save was turned OFF just in case you need to undo something – or just choose to close and lose your changes (which won’t get undone if Project has auto saved (quick aside – auto save will reset the undo buffer – so I know many people prefer not to have auto save active at all!). One idea is to have the project summary task showing and actual work rolled up – perhaps even take a screenshot of the task usage showing monthly totals of actual work. Make your changes – then before saving confirm that the totals are what you would expect taking into account the changes you made. Only when you are 100% happy should you save. It is very difficult to try and reconcile timesheets to project plan totals if manual edits may have caused loss or gain of actual work.
Getting back to the point that no one should connect while this is unchecked – I’ll explain how this works. When Project Professional connects to PWA it will know if the box is checked or not – and this knowledge is recorded as a property in the application object model – Application.EnterpriseProtectActuals – which is set to True when Project is opened and connects to PWA and the box is checked – and False if the box is unchecked when Project Pro connects. The key thing here is ‘when Project Pro connects’. For example I could connect while one of my colleagues is doing some ‘quick’ corrections – and not know that I am then at risk of accidentally changing actual work. My colleague may finish their corrections and check the box again – BUT I AM STILL ABLE TO CHANGE ACTUALS UNTIL I RESTART PROJECT! This might not be for weeks if I generally leave Project open on my PC…
The VBA programmers amongst you may be a step ahead of my already – as I mentioned that Application.EnterpriseProtectActuals property is set – so we can potentially check the value using a VBA macro and take some action. This could be as simple as a warning dialog when connecting – or you could even use it to stop users unless they take some action (password?). Obviously you need a way to get past the dialog if you are the person making some corrective actions.
I’m not going deep into VBA here – so you may need to read THE book on VBA (search on your favorite online book store for VBA Rod Gill and it will find it) – or just use Bing to find some of the key topics – storing macros in Enterprise Global and enabling macros to run by setting security levels correctly – but if you are already familiar this is just meant to show a way to help protect your actuals.
If you have the following VBA in your enterprise global then when you open Project and connect to the server it will pop a dialog to show the current state:
Sub Project_Open(ByVal pj As Project)
If (Application.EnterpriseProtectActuals = True) Then
MsgBox "Protected actuals is on - no changes that affect actual work are allowed"
MsgBox "Protected actuals is OFF - do not open or save any projects during this session as this can lead to diescrepancies between timesheets and the plan!"
When the value is True then things will be protected (you might not even want to show a dialog in this case).
If the checkbox is off (then you see my typo – what’s a die-screpancy?) then the dialog will give a dire warning!