Email : | Call Us Now : 479-321-3977
:: Home :: Sitemap ::
Follow Us

NULL Task UID – might be a bug, might not be

BY: Collin Quiring

The Background:

We are using Project Server 2010 with Timesheets and have Project Managers and Timesheet Managers.  Resources are assigned to tasks and the Resources report time weekly in the Timesheet page of Project Web APP (PWA).  Timesheet Managers are supposed to review timesheets weekly.  The Project Managers are supposed to review task updates weekly.

We run all sorts of reports based on Resources and Tasks and realized that they don’t all match.  In fact, in some cases, they don’t match because we can’t link tables due to that Task UID for a task being null.  Read the whole article for how this might not be a bug and how this can be considered a bug in the software as well.

The following is about why we think this is happening.



Just to be clear on the terminology being used for this article here are definitions:

Task – the line item in the schedule indicating the work we want done

Assignment – a combination of the Task and Resource (information about who is assigned to what task)

Timesheet Line Task – an item in the Timesheet that the Resource is putting hours against – normally a task from a schedule but can be a purely administrative item (that is a different article).  The catch here is that it is really just a Task being viewed by the Resource in PWA in the Timesheet view.

UID – the Unique Identifier.  This is the way the table structure keeps each task identified so that we can have multiple tasks with the same name in one schedule or the same task name in each of many schedules.

And, there are tables within Project Server for Tasks, Assignments and Timesheets.  And those tables are filled with UID’s that make linking them together easier.


Details of Issue:

For this example, we created the schedule named “zzTask UID Test” and created three tasks (named Task One, Task Two and Task Three).  We added one Resource to the Resource Team (NOTE – NOT a Team Resource, just a regular named person work Resource) but we did not assign the Resource to any tasks.  We Saved and Published the schedule.  And, all the tasks appear when you query the Tasks table.  This is expected since we have Tasks and do not yet have Assignments.  We see all three tasks and the summary task.

For those that care, here is the query:

SELECT     MSP_EpmProject_UserView.ProjectName, MSP_EpmTask_UserView.TaskUID AS Expr1, MSP_EpmTask_UserView.ProjectUID,

MSP_EpmProject_UserView.ProjectUID AS Expr2, MSP_EpmTask_UserView.TaskName AS Expr3

FROM         MSP_EpmTask_UserView INNER JOIN

MSP_EpmProject_UserView ON MSP_EpmTask_UserView.ProjectUID = MSP_EpmProject_UserView.ProjectUID

WHERE     (MSP_EpmProject_UserView.ProjectName = N’zzTask UID Test’)


Now, here is where the bug part comes in and/or the workflow depending upon how you view this situation.

The Resource that is on the schedule then goes to their Timesheet and assigns themselves to one of the tasks on the schedule.  We go to PWA, to Timesheets and then to Insert Row and then Add Yourself to a Task.  We add time to that task.  We save and send the task.  (Not the Timesheet yet, just the Task.)

And, herein lies the interesting part.  If you try to look at this task via the Timesheet tables, it doesn’t show up.  If you link the Task and Timesheet, it doesn’t show up.  You get no results. That is because at this point it doesn’t even show up in the Timesheet table.  And, that is where maybe this is a bug or maybe it is just an interesting design issue.  As far as the Resource is concerned they have added an item to their Timesheet and they have made an Assignment and they have added time to it.  This could very well affect the schedule.  But, it doesn’t show up in reports that try to link to Tasks.  Their is NOT a UID that matches in both sets of tables for that Task.  The Timesheet one is NULL.

When the Project Manager accepts the Task Update Assignment AND then accepts the hours update, the reports still does NOT show the update.  But, we know that you have to Publish the schedule as well.  So, after approving it is published in PWA.  And, yet, after the Publish, it still does NOT show up in the report.  (It does show up in the Assignment table at this point though).

Again, the query for those that care:

SELECT     MSP_EpmProject_UserView.ProjectName, MSP_EpmTask_UserView.TaskUID AS Expr1, MSP_EpmTask_UserView.ProjectUID,

MSP_EpmProject_UserView.ProjectUID AS Expr2, MSP_EpmTask_UserView.TaskName AS Expr3, MSP_TimesheetLine_UserView.TaskUID,

MSP_TimesheetLine_UserView.ProjectUID AS Expr4

FROM         MSP_EpmTask_UserView INNER JOIN

MSP_EpmProject_UserView ON MSP_EpmTask_UserView.ProjectUID = MSP_EpmProject_UserView.ProjectUID INNER JOIN

MSP_TimesheetLine_UserView ON MSP_EpmTask_UserView.TaskUID = MSP_TimesheetLine_UserView.TaskUID AND

MSP_EpmTask_UserView.ProjectUID = MSP_TimesheetLine_UserView.ProjectUID

WHERE     (MSP_EpmProject_UserView.ProjectName = N’zzTask UID Test’)


We get the same result if we accept only the Timesheet as well.

It appears that to get the data to show up in the Timesheet AND Task tables is to have BOTH the Timesheet approved and the Task update approved and have the Project then published.

This really becomes a matter of timing and of workflow.  If we only cared about weekly updates and we ALWAYS had every task that was self-assigned approved weekly AND we ALWAYS had every Timesheet accepted EVERY week then we would have no problem.  This cleans itself up every week AFTER all of the Timesheets and tasks are approved and the schedules are published again.

However, we have to determine ways around the reporting because if we have a task that we do not make an assignment for and we allow the resources to add it as they work on it we will come up with TaskUID is null when we try to link to the Timesheet table.  That means that our reports will be consistently incomplete.  And, we will therefore not be crediting a Resource for their work even after the Project Manager has accepted and published the work.  Even if we try to just use the Timesheet table, we still don’t see the information until after everything is published.

Is it a bug?

Maybe.  There is work assigned, completed, accepted and published.  But, it is invisible.  That can’t be good.  Once it is published it should be visible in the tables.  But, it doesn’t become visible until after both the timesheet and task are “done”.  Just because it came from the Resource assigning themselves doesn’t mean it shouldn’t be in the table structure.

Maybe not.  There is a workflow and it makes sense to a point.  It does make sense that until the self-assignment is accepted and published that it won’t show up.  Just because somebody self-assigns something doesn’t mean it is correct or something we want in reports.  But, is it part of the intentional workflow that it stays hidden until later?




Leave a Reply

You must be logged in to post a comment.