Hi Maria,
I haven’t seen that issue so far, but our customers are nearly not using
adjustments following a different process. We ourselves are using very
limited that, but I have never had that issue.
First let me explain shortly what happens in Project Server:
Creating or modifying a timesheet will start queue job types ‘Reporting
(Timesheet …)’. They are populating your changes to Reporting DB and you can
find this data in views Timesheet*_OlapView. Went these jobs through without
errors?
Any modification will create additional records with adjustment IDs as I
explained in the other forum. The newest record will always have an
AdjustmentUID= 00000000-0000-0000-0000-000000000000
Building a cube will take these data to re-create your Analysis Datebase.
Was your build job successful?
Unfortunately I don’t know how cube building is working in detail: Does it
take the record with = 00000000-0000-0000-0000-000000000000 or is it
building a sum of all hours of that timesheetline for a certain date?
I am not sure what data you want to access when writing ‘Excel or Data
Analysis’. However, I think first of all you should check your data in
Reporting DB.
To find the record negative hours with AdjustmentUID =
00000000-0000-0000-0000-000000000000 you can use this query:
SELECT dbo.MSP_TimesheetActual_OlapView.TimeByDay,
dbo.MSP_TimesheetResource_OlapView.ResourceName,
dbo.MSP_TimesheetProject_OlapView.ProjectName,
dbo.MSP_TimesheetTask_OlapView.TaskName,
dbo.MSP_TimesheetPeriod_OlapView.PeriodName,
dbo.MSP_TimesheetActual_OlapView.ActualWorkBillable AS
MostRecentActualWorkBillable,
dbo.MSP_TimesheetActual_OlapView.TimesheetLineUID,
dbo.MSP_TimesheetActual_OlapView.AdjustmentUID FROM
dbo.MSP_TimesheetResource_OlapView INNER JOIN dbo.MSP_Timesheet_OlapView ON
dbo.MSP_TimesheetResource_OlapView.ResourceNameUID =
dbo.MSP_Timesheet_OlapView.OwnerResourceNameUID INNER JOIN
dbo.MSP_TimesheetLine_OlapView ON dbo.MSP_Timesheet_OlapView.TimesheetUID =
dbo.MSP_TimesheetLine_OlapView.TimesheetUID INNER JOIN
dbo.MSP_TimesheetActual_OlapView ON
dbo.MSP_TimesheetLine_OlapView.TimesheetLineUID =
dbo.MSP_TimesheetActual_OlapView.TimesheetLineUID INNER JOIN
dbo.MSP_TimesheetPeriod_OlapView ON dbo.MSP_Timesheet_OlapView.PeriodUID =
dbo.MSP_TimesheetPeriod_OlapView.PeriodUID INNER JOIN
dbo.MSP_TimesheetProject_OlapView ON
dbo.MSP_TimesheetLine_OlapView.ProjectNameUID =
dbo.MSP_TimesheetProject_OlapView.ProjectNameUID INNER JOIN
dbo.MSP_TimesheetTask_OlapView ON dbo.MSP_TimesheetLine_OlapView.TaskNameUID
= dbo.MSP_TimesheetTask_OlapView.TaskNameUID WHERE
(dbo.MSP_TimesheetActual_OlapView.AdjustmentUID =
'00000000-0000-0000-0000-000000000000') AND
(dbo.MSP_TimesheetActual_OlapView.ActualWorkBillable < 0)
Are there any records listed?
With the next one you can check if any sum of actuals is negative:
SELECT dbo.MSP_TimesheetActual_OlapView.TimeByDay,
dbo.MSP_TimesheetResource_OlapView.ResourceName,
dbo.MSP_TimesheetProject_OlapView.ProjectName,
dbo.MSP_TimesheetTask_OlapView.TaskName,
dbo.MSP_TimesheetPeriod_OlapView.PeriodName,
SUM(dbo.MSP_TimesheetActual_OlapView.ActualWorkBillable) AS
SumOfACtualWorkBillable, dbo.MSP_TimesheetActual_OlapView.TimesheetLineUID
FROM dbo.MSP_TimesheetResource_OlapView INNER JOIN
dbo.MSP_Timesheet_OlapView ON
dbo.MSP_TimesheetResource_OlapView.ResourceNameUID =
dbo.MSP_Timesheet_OlapView.OwnerResourceNameUID INNER JOIN
dbo.MSP_TimesheetLine_OlapView ON dbo.MSP_Timesheet_OlapView.TimesheetUID =
dbo.MSP_TimesheetLine_OlapView.TimesheetUID INNER JOIN
dbo.MSP_TimesheetActual_OlapView ON
dbo.MSP_TimesheetLine_OlapView.TimesheetLineUID =
dbo.MSP_TimesheetActual_OlapView.TimesheetLineUID INNER JOIN
dbo.MSP_TimesheetPeriod_OlapView ON dbo.MSP_Timesheet_OlapView.PeriodUID =
dbo.MSP_TimesheetPeriod_OlapView.PeriodUID INNER JOIN
dbo.MSP_TimesheetProject_OlapView ON
dbo.MSP_TimesheetLine_OlapView.ProjectNameUID =
dbo.MSP_TimesheetProject_OlapView.ProjectNameUID INNER JOIN
dbo.MSP_TimesheetTask_OlapView ON dbo.MSP_TimesheetLine_OlapView.TaskNameUID
= dbo.MSP_TimesheetTask_OlapView.TaskNameUID GROUP BY
dbo.MSP_TimesheetActual_OlapView.TimeByDay,
dbo.MSP_TimesheetResource_OlapView.ResourceName,
dbo.MSP_TimesheetProject_OlapView.ProjectName,
dbo.MSP_TimesheetTask_OlapView.TaskName,
dbo.MSP_TimesheetPeriod_OlapView.PeriodName,
dbo.MSP_TimesheetActual_OlapView.TimesheetLineUID HAVING
(SUM(dbo.MSP_TimesheetActual_OlapView.ActualWorkBillable) < 0)
Are there any records listed?
If you found negative records with any of these statements, you could force
a rebuild of Reporting DB. Do that outside of normal working hours, it will
slow down your system. Do an Administrative Backup of ‘Enterprise Custom
Fields’ and a restore of them if job is finished.
If you haven’t any negative records, I suggest to create a new cube (Server
Settings – Build Settings – new name in ‘Analysis Datebase to be created’)
and see if data is correct in that one.
Let us know what you found, to help to resolve!
Regards
Barbara