Share via


Project Server: Troubleshooting Unknown Error when opening Approval Center

Do not adjust your browser. The unknown error message below is what you may see when accessing the Approval Center page.

<picture missing>

Issue

If you have seen this before, then you know the feeling.  It’s a general emptiness that you have because there are no traces for determining what caused it and yet you must solve this. When looking in the ULS logs there is nothing.  This is because the error is coming from the browser and not the project server.  The browser is expecting something and  it was NULL. This is my most feared error message.

I originally used the “Developer Dashboard” to troubleshoot this message.  I actually felt I got pretty far with my analysis.  It failed on a store procedure called MSP_WEB_SP_QRY_Status_ReadTimePhasedDataForAssignments. The problem was that one or more AssnUID were invalid.  I learned later that in this case a timesheet was referring to a project that no longer existed. 

The fix to the problem is relatively simple.

Troubleshooting steps

  1. Run the SQL query below
  2. If the query returns enough information to determine
    • Which resource that submitted the bad timesheet
    • Which project and task is missing
  3. The resource listed then needs to do the following
    • Recall timesheet
    • Delete timesheet
    • Create the timesheet
    • Re-submit the timesheet

 

SQL Script

USE ProjectWebApp 
  
SELECT  
    TSL.TS_UID Affected_TimeSheetID, 
    TS.TS_NAME TimeSheet_Name, 
    TSL.TS_LINE_CACHED_PROJ_NAME Deleted_Proj_Name, 
    RES.RES_NAME ResourceNamne, 
    TP.WPRD_START_DATE TimesheetStart, 
    TP.WPRD_FINISH_DATE TimesheetFinish 
FROM 
    PUB.MSP_TIMESHEET_LINES TSL                                             -- Timesheet Lines 
    Full OUTER JOIN PUB.MSP_PROJECTS P          ON P.PROJ_UID=TSL.PROJ_UID  -- Projects 
    Full OUTER JOIN PUB.MSP_TIMESHEETS TS       ON TS.TS_UID=TSL.TS_UID     -- Timesheets 
    Full OUTER JOIN PUB.MSP_RESOURCES RES       ON TS.RES_UID=RES.RES_UID   -- Resources 
    Full OUTER JOIN PUB.MSP_WEB_TIME_PERIODS TP ON TP.WPRD_UID=TS.WPRD_UID  -- Timesheet Periods 
WHERE 
    TSL.TS_Line_validation_Type = 1         -- 0 is Administrative Task, 1 is Project Task 
    AND P.PROJ_NAME is null                 -- Check for Deleted Projects 
    AND TS.TS_STATUS_ENUM IN (1,2)          -- Check for Submitted Timesheets 
GROUP BY 
    TSL.TS_UID 
    , TS.TS_NAME 
    , TSL.TS_LINE_CACHED_PROJ_NAME  
    , RES.RES_NAME 
    , TP.WPRD_START_DATE 
    , TP.WPRD_FINISH_DATE