How do you report on total 'Actual Effort' or 'Time Worked' for a project?

kellykaufmann
Mega Guru

Part 1:

We are setting up 'Time Worked' and 'Time Cards' right now. For a Project, we want to be able to capture & report on Time Worked against the Project as well as the Project's: tasks, requirements, issues, defects, decisions, risks, and Story Tasks. Our plan is to have 'Time Worked' for each of these populate the 'Actual Effort' field for each, so nobody will actually type into the 'Actual Effort' field. Currently, Actual Effort on Project Tasks rolls into the Project's Actual Effort value. We want Time Worked / Actual Effort for each of these to also roll up to the Project's Actual Effort value, so you can see a rollup of all time reported against project things.

Has anyone done this? What was your approach?

It seems it's tricky to get the Actual Effort from all these different tables to roll up into one field (the Project's total Actual Effort). Any suggestions on doing this? Or do I just need to remove 'Actual Effort' from the Project form so people don't think it's a rollup of all the project's hours, and have them instead rely on creating a report on that project?

Part 2:

Speaking of reporting...how do you report time on a specific project for all that project's different time areas captured (requirements, issues, defects, decisions, risks, etc)? If I run the report against the Time Worked table, I can't use Top Task to pull in all those areas with the same Top Task (which is the Project number). If I use the Project table, it will just pull time reported directly against the parent project (and not against requirements, issues, defects, decisions, risks, etc).

18 REPLIES 18

kellykaufmann
Mega Guru

Anyone? Anthony Okumura?


Uncle Rob
Kilo Patron

CAVEAT EMPTOR:   Never done this or even looked at doing it.



Here's what we know:


- Time Cards are related to any task type.


- time_worked exists on task and automatically sums the tasks Time Cards


- Some Tasks are parents to others (ie Project to Project Task).


- Parents, being tasks, have Time Cards just like their children.



So each task is *already* summing its Time Cards in real time.   What I suspect you want is the Actual Effort to be the sum of the Time Cards on a task AND the Actual Effort of any children.   Like the Project record might have its own Time Cards, but also have Project Task children with their own Time Cards.



I think one question that will help determine the mechanics of the solution is "when do you want this to happen"?


- If you want it close to real time, any time you update the Actual Effort it needs to push that to the Parent Record's Actual Effort sum, then update.   Each update will trigger the business rule for that task type to push the Actual Effort to its parent's sum.   I'm not certain, but that might be a TON of updates in a very short period.  


- You can also do a scheduled job that scripts it periodically.   OR you could have the job launch at major events, like project closure or something.




I know there wasn't a ton of specifics in there, but I hope it helps.


kellykaufmann
Mega Guru

Haha love the caveat!



Question: What do you mean by "time_worked exists on task and automatically sums the tasks Time Cards" > are you referring to Time Worked rolling up into that day's sum on the Time Cards?



"- Some Tasks are parents to others (ie Project to Project Task)." > Yes but the problem is when you have a multi-level project schedule, many project task's parents are...project tasks, whose parents are...project tasks. That's the problem with reporting against Parent.



"What I suspect you want is the Actual Effort to be the sum of the Time Cards on a task AND the Actual Effort of any children.   Like the Project record might have its own Time Cards, but also have Project Task children with their own Time Cards."   > Yes two things. (1) Want 'Actual Effort' on the PRJ form to be a sum of Time Worked / Time Cards (for us they will always match up since people are only entering Time Worked which will auto-update Time Cards, and they are being told to not update task hours in Time cards)   for Time Worked against that PRJ + Time Worked against everything that eventually rolls up to that PRJ - Time Worked for all the project tasks no matter the task level (this part is easy), Time Worked for all that project's requirements whose parent is the PRJ or whose parent is a PRJ Task, etc etc.; (2) To be able to do reporting of Time Worked for everything that rolls up to that PRJ.



As for the 'when' > I'd be happy if this happens when you save the project form.


Hi Kelly. I believe a lot of what you need to accomplish as far as rolling the effort up can be done by leveraging the existing business rules on the project task table. For every table that extends the planned task table - Project Task, Decision, Requirement, Story, etc. we have the Actual Effort field that can be automatically populated with time entered on the Time Card. (There is a Time Card configuration property that is used to control this behavior). Furthermore you can create planned tasks under each Project Task, Requirement, Decision, etc. and all the effort reported on these sub tasks will roll into the respective Parent. Issues and Risks behave differently as they do not extend planned task, so you are looking at creating custom fields to allow for effort reporting there.


As far as effort roll up into the project parent, it will happen automatically for project tasks. However, effort reported against Decisions, Requirements, Stories, will not roll into the overall project effort (although it will sum up the effort reported against their sub tasks). I have not done this myself, but I believe we are looking at customizing the Project Effort Update business rule to include effort from other tables (other than Project Task, e.g. Decision, Requirement, etc.) to contribute to the overall project effort.


For reporting, you could go write a report against the Requirements, Decision, etc tables and pull the Actual effort for the record whose Parent field matches the Project ID.


Hope this is helpful.