none
Errors with timesheet approvals after unpublishing or deleting tasks RRS feed

  • Question

  • Hello,

    We have been having some issues with timesheet approvals in 2013. The approval of timesheets is working well, everything in Single Entry Mode, up to the following scenario :

    • A task update has been approved by the project manager
    • the timesheet is still submitted and is waiting for weeks to be approved
    • The project manager wants to prevent further registration of actuals on specific tasks. He changes the publish column to No.
    • The project manager removes tasks with actuals and balances the actual work to new tasks. But the task with approved actuals is deleted while the timesheet is still submitted.

    Apparently this brings the database in an inconsistent state.

    • The team member can suddenly not access that timesheet anymore
    • The timesheet manager cannot load the approval screen. He sees an error on top o f the screen like this : one or more categories could not be loaded

    This way the timesheet can never be approved ! And this is bugging us for some weeks now.

    When looking deeper in what is happening, analyzing the ULS log, I see the following :

    Node Consistency Error: Exception loading Assignment. Uid=6c5a411f-1f80-e211-a2cb-001e37e5967d

    [bucketHash:F4424787] Exception occured in method 'TimeSheet.GetTimesheetForGridJsonFromViewUid' System.InvalidOperationException: GetDataForAssignment: Did not find data for assignment. ProjUid=a76ff23c-c766-e211-874c-0050568e3134 AssnUid=6c5a411f-1f80-e211-a2cb-001e37e5967d   

    at Microsoft.Office.Project.Server.BusinessLayer.TimePhasedDataAccess.GetDataForAssignment(Guid docGuid, Guid guidAssn)   

    at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.LoadAssnData(ISvrDataAccess dataAccess, Guid docGuid, Guid assnGuid)   

    at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.LoadNode(Guid guid)   

    at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.FindAssnNode(Guid guid)   

    at Microsoft.Office.Project.Server.BusinessLayer.Statusing.<>c__DisplayClass43.<ReadStatusTimephasedDataForTimesheet>b__41(KeyValuePair`2 projAssn)   

    at Microsoft.Office.Project.Server.Library.PSUtility.Apply[T](IEnumerable`1 enumerable, Action`1 fn)   

    at Microsoft.Office.Project.Server.BusinessLayer.Statusing.ReadStatusTimephasedDataForTimesheet(IDictionary`2 projAssignments, DateTime start, DateTime end, Int64 intervalInMinutes)   

    at Microsoft.Office.Project.Server.BusinessLayer.Timesheet.ImportActuals(ISet`1 assignmentUids, ISet`1 userImported, Boolean acceptChanges)   

    at Microsoft.Office.Project.Server.BusinessLayer.Timesheet.ImportActualsAndCustomFields(IEnumerable`1 assignmentUids, ISet`1 userImported)   

    at Microsoft.Office.Project.Server.BusinessLayer.TimesheetLoaderForGrid.Load()   

    at Microsoft.Office.Project.Server.BusinessLayer.TimeSheet.GetTimesheetForGridJsonFromViewUid(JsGridSerializerArguments gridSerializerArgs, Guid tsUid, Guid viewUid, String changesJson, String viewOptionsJson)   

    at Microsoft.Office.Project.Server.Wcf.Implementation.PWAImpl.<>c__DisplayClass2f5.<TimeSheetGetTimesheetForGridJsonFromViewUid>b__2f4()   

    at Microsoft.Office.Project.Server.Wcf.Implementation.WcfMethodInvocation.InvokeBusinessObjectMethod(String businessObjectName, String methodName, IEnumerable`1 actions) StackTrace:

    at Microsoft.Office.Project.Server.Native.dll: (sig=85ae470f-554c-4a8c-992e-92aeb657c829|2|microsoft.office.project.server.native.pdb, offset=3C1E)

    at Microsoft.Office.Project.Server.Native.dll: (offset=1255D)

    Watson bucket parameters: Microsoft Project Server 2013, ULSException14, 070f6ea0 "project server", 0f001181 "15.0.4481.0", 9c2bade2 "microsoft.office.project.server", 0f001199 "15.0.4505.0", 51481b12 "tue mar 19 09:00:18 2013", 00004817 "00004817", 00000047 "00000047", 54e7243f "invalidoperationexception", 00101621 "aeby7"

    When looking even deeper in the SQL tracer, I can clearly see that Project Server is fetching assignment records pretty well from its database. So there must really be an exception in the code of the PSI calls. Is this a known problems, and will this be fixed ? We are running the April CU of the 2013 version.

    Please help us with this issue.

    Wednesday, June 26, 2013 9:19 AM

Answers

  • Microsoft admitted yesterday that it is a bug in Project Server 2013. Until it's fixed you can open affected time sheets if you disable Single Entry Mode.
    • Proposed as answer by Alex Mandriko Thursday, August 8, 2013 3:51 PM
    • Marked as answer by Guy Anthuenis Thursday, August 8, 2013 9:47 PM
    Thursday, August 8, 2013 3:51 PM

All replies

  • [bucketHash:F4424787] Exception occured in method 'TimeSheet.GetTimesheetForGridJsonFromViewUid' System.InvalidOperationException: GetDataForAssignment: Did not find data for assignment. ProjUid=a76ff23c-c766-e211-874c-0050568e3134 AssnUid=6c5a411f-1f80-e211-a2cb-001e37e5967d   

    Based on above error looks this one needs some cleanup and might need more investigation. As you have good repro steps and information, I would request you to open a ticket with Microsoft support to help you clean procedure.

    Monday, July 1, 2013 8:20 PM
  • Thanks for the answer. Although it looks more like a bug in the 2013 version. This looks new to me as of the 2013 version that timesheets are retrieving data of task assignments of the project plans, and that this generates exceptions in code when the assignment isn't there anymore.

    Cleaning up my database is something I already did, but the problem still exists on new timesheet entries and newly deleted tasks.

    Is there someone that has the same issue as well ?

    Monday, July 1, 2013 8:34 PM
  • We are experiencing the same error on our test upgrade Project 2013 server.

    Guy, have you created a ticket? Was there any help from Microsoft did they at least admit it is a bug in PS2013?

    Monday, July 22, 2013 7:26 PM
  • Hello,

    No, I didn't get any feedback so far. I didn't open a ticket with Microsoft as I didn't have the time for that yet. However, I am not convinced that a support ticket, which is for lots of people a payable service, should be the way to report bugs that are due to upgrades to the most recent version.

    Still, any feedback would help us further.

    Tuesday, July 23, 2013 7:22 AM
  • We've submitted a support request using our advisory hours. Will keep this thread updated.
    Wednesday, July 31, 2013 7:09 PM
  • Microsoft admitted yesterday that it is a bug in Project Server 2013. Until it's fixed you can open affected time sheets if you disable Single Entry Mode.
    • Proposed as answer by Alex Mandriko Thursday, August 8, 2013 3:51 PM
    • Marked as answer by Guy Anthuenis Thursday, August 8, 2013 9:47 PM
    Thursday, August 8, 2013 3:51 PM
  • Thanks for the follow-up and your effort. Appreciate it. Now let's hope that we get a fix pretty soon, because working without Single Entry Mode is not ideal either. But I'm glad to know that a fix will follow now.
    Thursday, August 8, 2013 9:48 PM
  • Alex - thanks for doing that.

    Please post when you get any news as I have a case of this problem happening as well.

    Cheers,

       James.


    James Boman - http://www.boman.biz Software Consultant for IPMO - http://www.ipmo.com.au

    Tuesday, December 10, 2013 1:17 AM
  • I just thought I would add what the weekly steps are to live with this defect:

    1. Receive the "Error: One or more categories of approval could not be loaded" message in the Approval Center
    2. Go to the ULS log to find the message like this:
      "
      Node Consistency Error: Exception loading Assignment. Uid=6c5a411f-1f80-e211-a2cb-001e37e5967d"
    3. Execute the following SQL to find the corrupted timesheet

    SELECT ts.TimesheetName, tsr.ResourceName, tspe.PeriodName ,tsp.ProjectName, tst.TaskName

      FROM [ProjectServer].[dbo].[MSP_TimesheetLine] tsl

           inner join MSP_Timesheet ts

                  on tsl.TimesheetUID = ts.TimesheetUID

           inner join MSP_TimesheetResource tsr

                  on ts.OwnerResourceNameUID = tsr.ResourceNameUID

           inner join MSP_TimesheetProject tsp

                  on tsl.ProjectNameUID = tsp.ProjectNameUID

           inner join MSP_TimesheetStatus tss

                  on ts.TimesheetStatusID = tss.TimesheetStatusID

           inner join MSP_TimesheetTask tst

                  on tsl.TaskNameUID = tst.TaskNameUID

           inner join MSP_TimesheetPeriod tspe

                  on ts.PeriodUID = tspe.PeriodUID

           inner join [ProjectServer].[pub].[MSP_TIMESHEETS] pubTs

                  on pubTs.TS_UID = ts.TimesheetUID

      where tsl.AssignmentUID = '6c5a411f-1f80-e211-a2cb-001e37e5967d'

                  and pubTs.TS_STATUS_ENUM = 1

    4. Become a delegate as that user, go and take a screenshot of the timesheet, delete it, and recreate it with the same hours.

    5. Undelegate, go back to the approval center, if the error is still there, then look at the ULS log, rinse and repeat.

    This gets rid of the error without turning off Single Entry mode .... until next week when you have to do it all again!

    Cheers,

       J.


    James Boman - http://www.boman.biz Software Consultant for IPMO - http://www.ipmo.com.au


    Tuesday, January 21, 2014 10:13 PM
  • Has anyone heard more on this issue and possible fix?   We are on Project Server 2013 (Dec 2013 CU) and are receiving multiple errors of this nature.
    Monday, March 10, 2014 7:57 PM
  • Is there any news on this issue, got a case of this error:

    Exception occured in method 'TimeSheet.GetTimesheetForGridJsonFromViewUid' System.InvalidOperationException: GetDataForAssignment: Did not find data for assignment. ProjUid= SomeGUID AssnUid= SomeGUID


    - Dennis | Netherlands | Blog | Twitter

    Tuesday, April 29, 2014 12:57 PM
  • Is there any news on this issue, got a case of this error:

    I am going to install the re-released SP1 and the April CU to see if this fixes it, however I am not hopeful as Brian mentions that there are sill some timesheet bug fixes that didn't make it into the latest CU.

    J.


    James Boman IPMO http://www.ipmo.com.au

    Tuesday, April 29, 2014 1:04 PM
  • Hello James,

    Thanks for the update & the link of Brians blog article!

    Can you keep me posted on the result of installing the re-release SP1 and the April 2014 CU?


    - Dennis | Netherlands | Blog | Twitter

    Tuesday, April 29, 2014 2:28 PM
  • HI - I applied the updated Service pack, and the April 2014 CU and it did not fix the issue
    Wednesday, April 30, 2014 5:37 PM
  • Hi there,

        The June CU has definitely changed the behaviour.

    Although the individual timesheets now appear to be better, the approvals page now crashes with errors like:

    General Unhandled Exception in _Statusing.ReadStatusApprovalsForProjectForGridJson_ Attributes:  System.ArgumentException: Object must be of type String

    Exception occured in method 'Statusing.ReadStatusApprovalsForProjectForGridJson2' System.ArgumentException: Object must be of type Double

    My colleague has started an additional thread for the new problem.

    We may have to log a call to get to the bottom of this one.

    Cheers,

        J.


    James Boman IPMO http://www.ipmo.com.au @JBoman32768

    Sunday, June 29, 2014 10:43 PM
  • Hello James,

    Just to inform you. We also registered a case at Microsoft and got a reponse that Microsoft is gonna fix it in one of the next CU's.

    By the looks of things this will probably be in the August CU.  

    When I know more I will give an update in this thread.


    - Dennis | Netherlands | Blog | Twitter

    Monday, June 30, 2014 8:18 AM
  • Ok great, I am experiencing the same thing.
    Thursday, July 31, 2014 1:43 PM
  • Ok great, I am experiencing the same thing.

    Just an update: We installed up to the June 2014 CU and this doesn't appear to be happening any more. 

    We then had a different error in the approval center- had to log a MS case for it and got a SQL fix.

    Seems fine now.

    Cheers,

       J.


    James Boman IPMO http://www.ipmo.com.au @JBoman32768


    • Edited by James Boman Thursday, July 31, 2014 11:12 PM
    Thursday, July 31, 2014 11:11 PM
  • Hey James Boman,

    we have the same issue - Can you please share your SQL fix? Thx a lot!

    [bucketHash:F7FCF3EC] Exception occured in method 'Statusing.ReadStatusTimephasedData' System.InvalidOperationException: GetDataForAssignment: Did not find data for assignment. ProjUid=3d3b4e11-6bfd-4763-97ed-5010bccf3721 AssnUid=4f363b62-149b-4ee1-aa56-1d1d450e3cd1    
     at Microsoft.Office.Project.Server.BusinessLayer.TimePhasedDataAccess.GetDataForAssignment(Guid docGuid, Guid guidAssn)    
     at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.LoadAssnData(ISvrDataAccess dataAccess, Guid docGuid, Guid assnGuid)    
     at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.LoadNode(Guid guid)    
     at Microsoft.Office.Project.DataEdit.Assignments.AssnCntr.FindAssnNode(Guid guid)    
     at Microsoft.Office.Project.Server.BusinessLayer.Statusing.<>c__DisplayClass4e.<ReadStatusTimephasedDataForTimesheet>b__4c(KeyValuePair`2 projAssn)    
     at Microsoft.Office.Project.Server.Library.PSUtility.Apply[T](IEnumerable`1 enumerable, Action`1 fn)    
     at Microsoft.Office.Project.Server.BusinessLayer.Statusing.ReadStatusTimephasedDataForTimesheet(IDictionary`2 projAssignments, DateTime start, DateTime end, Int64 intervalInMinutes)    
     at Microsoft.Office.Project.Server.BusinessLayer.Statusing.ReadStatusTimephasedData(Guid projid, Guid assnid, DateTime start, DateTime end, Int64 intervalInMinutes)    
     at Microsoft.Office.Project.Server.Wcf.Implementation.StatusingImpl.<>c__DisplayClass5d.<ReadStatusTimephasedData>b__5c()    
     at Microsoft.Office.Project.Server.Wcf.Implementation.WcfMethodInvocation.InvokeBusinessObjectMethod(String businessObjectName, String methodName, IEnumerable`1 actions) StackTrace: 
     at Microsoft.Office.Project.Server.Native.dll: (sig=6ea170d1-988e-4153-9f1d-0305c0ea0309|2|microsoft.office.project.server.native.pdb, offset=3C1E)
     at Microsoft.Office.Project.Server.Native.dll: (offset=1255D)


    Thursday, December 18, 2014 2:27 PM
  • Florian,

       To resolve the particular error you posted - you will still need to follow the 5-step process in my post earlier in this thread.  The SQL fix we got from MS Support was for a different error.

    If your environment is updated to the latest, you will experience this problem with time sheets that were created before the update that fixed it was applied.  Trust me - The errors do eventually go away! 

    Cheers,

       J.


    James Boman IPMO http://www.ipmo.com.au @JBoman32768

    Thursday, December 18, 2014 10:59 PM