Friday, April 03, 2009

Work, Estimated Work, Actual Work, Remaining Work and Work Variance All At Once

Here's a bit more detail on how you can track Work, Estimated Work, Actual Work, Remaining Work and Work Variance using either IntelliGantt or the IntelliGantt Add In for Microsoft Project with WSS 3.0/MOSS 2007.

First of all, you want to make sure your 'Workspace Settings' activate the work fields you need. For this example we will use all the Work Group and the Work Remaining fields, so we mark them as 'Members Read' and 'Members Write' like so:



You won't be able to set the 'Members Write' checkbox for Work Variance because this is a read only field. That is, the value is always computed.

When you share a project to SharePoint with these workspace settings, you'll have the work fields you enabled available for you to edit, like so:



In IntelliGantt or Microsoft Project, when you update 'Work' fields, you will see the ramifications to your updates immediately with schedule changes, percent complete changes or work percent complete changes. This makes it easy to also undo a change. With SharePoint, we get all the data at once and its up to IntelliGantt to make sense of it.

So how does it handle changes to Work, Estimated Work, Actual Work and Remaining Work at once? IntelliGantt enforces an implied order to your changes. That is, IntelliGantt will order the datastream coming back from SharePoint and evaluate the 'Work' fields in the following order:

1) Work
2) Estimated Work
3) Actual Work
4) Remaining Work

Because IntelliGantt has its own scheduling model, it can apply changes that affect the schedule as it works down the list. For example, let's say I only update the Work field. We see in the above example it is 16 hours. What if I make it 24 hours?



I click 'Update' in IntelliGantt and it communicates with SharePoint, performs its calculations and changes the list to...



Wait a second, what happened? The answer is that first it applied the change to Work, which increased from 16 hours to 24 hours. This resulted in the project model being updated. Estimated Work and Actual Work were unaffected by this change. Remaining Work, however, was affected. In the IntelliGantt model the Remaining Work value jumped from 6 hours to 14 hours; an increase of 8 hours-- the same 8 hours we increased Work by.

However, the value in the SharePoint field Remaining Work was still 6. It had not changed. So, as IntelliGantt worked through the order of 'work field' updates, it computed the difference between the IntelliGantt models Remaining Work and SharePoint's incoming data value for Remaining Work. That value? Negative 8 hours, which cancelled the 8 hours we just added. The model worked perfectly! :)

For those non-model types (myself included in this category), we can do a couple things to change behavior so that our Work update 'sticks'.

1) We can turn off the 'Members Write' flag for the Remaining Work field. If this flag is off, IntelliGantt will not receive the Remaining Work value, the difference won't be computed and therefore the model won't add the opposite of the Work value we put in.

2) We can update what we want the new Remaining Work value to be. If we add 8 hours to Work, then we can add 8 hours to Remaining Work. When IntelliGantt adds the new Work value, it will add 8 hours to Work and to Remaining Work in its model. As IntelliGantt works through its order of updates, when it gets to Remaining Work, it will compare the incoming SharePoint value with the value in its model-- and it will match. So no update will happen. Which means Work will be 24 hours and Remaining Work will be 14 hours.

Would you believe there's actually a third way to update Work without updating two fields or performing any match? Remember that these work fields are processed in the order defined above: starting with Work and finishing with Remaining Work. We can take advantage of this and only update Remaining Work like so:



When IntelliGantt processes the incoming data, it will evaluate the work fields as follows:

1) Work -- No Change
2) Estimated Work -- No Change
3) Actual Work -- No Change
4) Remaining Work -- 8 hour change therefore add 8 hours to Work

Of course, we don't want to always add to our work load. We also want to get things done. This is best done by changing Actual Work to reflect how much work you've done and then by changing Remaining Work to reflect how much work you believe is remaining. For example, with our original values:



Let's say I've actually worked (yes, hard to believe) an additional 2 hours but believe there's still 5 hours remaining. In this case, I would add 2 hours to the existing 10 hours in Actual Work and subtract a single hour from Remaining Work.



When IntelliGantt performs a synchronization, it will do the following:

1) Work -- No Change
2) Estimated Work -- No Change
3) Actual Work -- Add 2 hours and, by implication, subtract 2 hours from Remaining Work
4) Remaining Work -- Add 1 hour and, by implication, add 1 hour to Work

The end result will look like this:



Granted, it is easier to simply modify the percent complete field and call it good. But if you'd like to be more rigorous than percent complete updates and want to start tracking hours, simple math with Actual Work and Remaining Work can lead to powerful results.

No comments: