It’s time again for another posting from me, David Ducolon, on some best practice use of Project Server. This time I will go in depth about the Administrative Time feature in Project Server 2007.
Before I tell you about what 2007 has to offer and how best to implement and use it, I feel I must first tell you about the history of this feature area.
So with the experiences of 2002 and 2003, we took a long hard look at this feature for 2007. I am happy and proud to announce that in 2007, the process was further streamlined, the architecture was extremely scalable, performance out does previous versions and the category type and behavior is fully customizable to meet your needs for planning, tracking and reporting on work other than project assignments.
The functionality is so dramatically different that we changed the name to “Administrative Time”. The setup work requires:
i) Non Working Time – Time scheduled as project calendar exceptions directly from the user without the need to involve Project Professional. While it still blocks the Project scheduling engine from assigning work to the individual during that time. ii) Working Time – Time scheduled as virtual task assignments. These are virtual, since they do not reside in any true project file, instead they are simple records in the SQL database. This has the effect of allowing resources to be scheduled in excess of 100%.
i) Non Working Time – Time scheduled as project calendar exceptions directly from the user without the need to involve Project Professional. While it still blocks the Project scheduling engine from assigning work to the individual during that time.
ii) Working Time – Time scheduled as virtual task assignments. These are virtual, since they do not reside in any true project file, instead they are simple records in the SQL database. This has the effect of allowing resources to be scheduled in excess of 100%.
Customers may create as many “categories” as they want without any impact on performance or scalability.
Simple Example for Managing Administrative Time Categories
Simple Example for Managing Administrative Time Categories
Categories may be renamed, but they cannot be deleted once they have been saved to the database. This preserves the integrity of timesheets. If the category is no longer applicable you must close the category’s status and it will no longer be available to users without disrupting the integrity of the historical timesheets.
HOW TO USE
Let’s now talk about how best to implement and use these options. To begin with I would like you to consider the term “Non Working” and “Working” as terms that mean “Block Scheduling” and “Allow Over Allocation” respectively. With that understood, the first rule to consider is:
Non Working work type should only be used on administrative categories that will be used to plan time off. This is important since Project does not like to move actual work once established and calendar exceptions cannot allow work to exist during time periods which they are set to occupy. An example of what you should NOT do is as follows: i) You create a category called “Sick time” and make that non working. ii) A member of your team comes to work on Monday and works on a task that begins on Monday and goes for two days. iii) The team member reports that the task is 50% complete. But then the employee goes home sick. iv) At the end of the week the team member fills in his timesheet and reports 4 hours of sick time on Monday. Result: Project took the 16 hour task and assigned 50% of the work as actual work reported by the team member on Monday. But the timesheet also wants to place a calendar exception for that day. The team member should only have been able to logically complete 25% of the work on the task. Below are screen shots of what happens:
Non Working work type should only be used on administrative categories that will be used to plan time off.
This is important since Project does not like to move actual work once established and calendar exceptions cannot allow work to exist during time periods which they are set to occupy. An example of what you should NOT do is as follows:
i) You create a category called “Sick time” and make that non working.
ii) A member of your team comes to work on Monday and works on a task that begins on Monday and goes for two days.
iii) The team member reports that the task is 50% complete. But then the employee goes home sick.
iv) At the end of the week the team member fills in his timesheet and reports 4 hours of sick time on Monday.
Result: Project took the 16 hour task and assigned 50% of the work as actual work reported by the team member on Monday. But the timesheet also wants to place a calendar exception for that day. The team member should only have been able to logically complete 25% of the work on the task. Below are screen shots of what happens:
16 hours of work on Wednesday and Thursday, auto imported from My Tasks, with 8 hours of “Dr. Appointment” (non working time) entered into the timesheet.
After the timesheet is saved, the calendar exception is created. As you can see the assignment to task “Plan 1” seems to have lost the 8 hours of work on Wednesday (2/4). But the total work is still at 2 days with only 8 hours of actual work. This presents a difficult situation for Project to understand.
If all of your calendars and time settings are set to 8 hours for the definition of a day, after a round trip through project all will be fine. However if either the project or resource calendar or PWA setting of a day is not 8 hours, the results will be to reduce the work and to apply 8 hours of non working time.
To avoid this situation I strongly encourage all customers to be very careful when creating an Administrative time category with a Working Type setting of “non working”. Personally I set my server to break “sick” time into two categories.
1. I re-label the standard “Sick” category to “Dr. Appointment” and 2. I create a new category called “Illness” and set the working type option to “working”.
1. I re-label the standard “Sick” category to “Dr. Appointment” and
2. I create a new category called “Illness” and set the working type option to “working”.
I would expect employees to plan for Doctor related absences in the future or before submitting actual work; which is really the problem. And Illnesses would conversely be submitted after returning to work when it would be reasonable and somewhat common to report the hours away from work after entering actual work possibly on the same day.
This will allow the resource to be overscheduled for Illnesses which will not automatically slip the project schedule and allow planned absences to be entered while not allowing the resource to be overscheduled and if initially planned then the task will slip accordingly.
I hope this has been enlightening and useful. If you find any particular aspect of Project Server that you wish to have explained with best practices feel free to drop a comment on this blog and you may see your suggestion in a future best practice update.
Thanks David. Would you know how time recorded in the admin time categories can be reported on through cubes or by querying the reproting DB through an SSRS report? For example, we might be interested in knowing how many sick days have been taken over a period of time?
Eureka. That makes sense - thanks for the blog
You must query the RDB and here is the query that I suggest you start with.
-- Query to report on "Working" Admin time
-- 1. Line Class UID has three types:
-- 0 - Standard Line classification
-- 1 - Non working admin time (generates a calendar exception and decrements resource capacity in msp_epmresourcebyday)
-- 2 - Working admin time (generates a pseudo-assignment to tell the PM that the resource is doing this)
-- 2. The line classes are localized, so sites with language packs installed should use the LCID to get the right string
-- 3. The query uses the resource name dimension (so if a resource's name has changed you'll get records for each name)
-- to use the current name join through to msp_epmresource using the ResourceUID property
-- 4. The values are summed because of the journalling structure of the schema (changes come in as adjustments)
-- pmc 02/20-09
SELECT TSR.ResourceName, TSA.TimeByDay, TSC.ClassName, SUM(TSA.PlannedWork) AS N'Planned', SUM(TSA.ActualWorkBillable) AS N'Actual'
FROM dbo.MSP_TimesheetActual AS TSA -- Stores planned & actual work per day
INNER JOIN dbo.MSP_TimesheetLine AS TSL
ON TSA.TimesheetLineUID = TSL.TimesheetLineUID -- Tells us what line type the actual belongs to
INNER JOIN dbo.MSP_TimesheetClass AS TSC
ON TSL.ClassUID = TSC.ClassUID -- Tells us all the line types
INNER JOIN dbo.MSP_Timesheet AS TS
ON TS.TimesheetUID = TSL.TimesheetUID -- Tells us who's timesheet the line belongs to
INNER JOIN dbo.MSP_TimesheetResource AS TSR
ON TS.OwnerResourceNameUID = TSR.ResourceNameUID -- tells us the TS resource name when the TS was submitted
WHERE TSC.LCID = 1033 -- EN-US
AND TSC.Type = 2 -- "working" Admin time, generates a dummy assignment
GROUP BY TSR.ResourceName, TSA.TimeByDay,TSC.ClassName -- Group to aggregate out journalling
The ClassUID is the same thing as Admin Categories. these are stored in the same table and come across to the RDB in the same field.
Where we can find actual work per resources per day. In what table. Could you advise. Thanks before.
My client has a vacation calendar that contains all the vacation time for individuals in the organization. I want to transition this to Project Server which works well for having staff request their vacation days by entering and allowing workflow to route to their supervisor. My question is: How do I make this vacation calendar viewable by all staff so that if you want to see when an individual is scheduled for vacation or who is on vacation for a specific day you can see that?
I have an issue with Admin time and was wondering if you could give me your view?
Project Server was set up with timesheets and users were suppose to report updates on a daily basis. After a while we realised that this wasn't fitting our business and so decided to switch to weekly updates. I changed the Server Settings of Timesheets to have weekly updates. This worked fine for task updates. However once I made this change the admin time fields seem to lock and I couldn't diretly enter admin time into the grid. I have to add admin time by the planning dialogue.
Is this standard functionality? As soon as I switch back to daily (i.e. a 7 day grid) I can add admin time directly into the grid again.
All information in books and online seem to be related to having updates daily, no once has documented a weekly timesheet.
Unfortunately, my company had the need to publish certain Administrative tasks to certain individuals. For instance, we wanted to restrict which of our Engineers could charge 'Quote Development' instead of making it viewable to everyone.
We also needed those tasks be able to carry Enterprise Custom Fields for use in reporting our time back to our ERP system. Administrative Time in 2007 does not give you this capability.
I see that you did streamline the Administrative Time in 2007, but I much prefer the flexibility offered with 2003. It was easy to discern Administrative projects from Billable ones. Perhaps it could have been built as an option rather than stripped from the new version.
Is there a way to create an overview (preferably in the Resource Assignments view) of the Administrative time.
I need to have a complete overview of working and non-working hours.
Thanks in advance.
Before you add any more features, PLEASE go get the basic functionality working. One of my biggest gripes with Project is that task names disappear between save/open cycles. When a task group is collapsed, sometimes the next time I open the file and un-collapse (ie expand) the tasks, THEY ARE BLANK. All the dates and resources, etc.. are there, but the NAMES ARE ALL BLANK. So, I have to go to an old version, and copy back all the names, checking one by one that I account for row deletions, additions. Over and over..
GET THE BASIC FUNCTIONALITY WORKING.
No one uses Project because they love it, we use it because we must at work; hence the extraordinary frustration you read about every day..
This example was only one of many basic functionality items that does not work reliably.
Is there a way to have a specific category always display for individual users timesheets instead of all users timesheets?
We are testing Planned Admin Time and when type a description when requesting the time, the description comes up blank when the manager views the request for approval. When the requestor goes back in, the description is still there....just the manager can't see it. We want to use this as a communication that the requestor has gotten required approval. Any suggestions?
We are using Project Server 2007.
After creating the relevant timesheets and some administrative categories, I entereded in one of my timesheets for one of the days "8h" at "Vacancy", which is defined as Status = open, Work Type = Non Work, Approve = Yes and Always Display selected.
At first, I clicked on "Save" and as a result, the green bullit at Vacancy turned to yellow (right).
Then, I clicked on "Save and Submit" and as a result the message in red appears: "The submitted timesheet contains lines which either are pending approval or have been rejected. You must either delete these lines from your timesheet or obtain approvals and resubmit." (right).
When I turned to the user which is the Timesheet manager for this resource, I saw the approval request for "Vacancy" with "0h". I originally requested 8h vacancy. Why has this value turned to zero instead of 8 hours?
When the Timesheet manager approves the vacancy request, my timesheet shows the correct 8h Vacancy with the green status.
Does anyone know why the approval request showed 0 hours instead of 8 hours?
Many thanks in advance!