Discussion About The Use Of Project Server 2013 Timesheet Custom Billing Categories (Post SP1 and April 2014 CU Install)

In support of a consulting company using timesheet custom billing categories to designate project time as billable onsite, billable offsite, and non-billable, I've encountered a series of issues which appear to be associated with the custom billing category
timesheet lines.  These issues cause timesheet users to get frustrated, and contribute to misalignment between project actuals and timesheet actuals.  We're in Single Entry Mode, no pre-population, SP1 and April 2014 CU Installed.
I'll enumerate the issues here and pose the question to the community as to whether others are experiencing any/all of these things, and if so,  ask if any workarounds have been discovered.  We're working with Microsoft to validate these independently,
but I am posing the questions to the community to gather additional information, and hopefully save some folks time in troubleshooting similar issues.
1.When time is entered on an assignment into timesheet lines of multiple billing categories, only time entered since the last save is getting saved and ultimately sent, on timesheet submit, to the approval center.  Although the previously entered and
saved time appears in the application interface when the timesheet is re-opened, only data since last save is actually saving to the server or processing through the approval center.  We believe this is the primary cause for timesheet and project actuals
being out of alignment.
2."_ Error Loading".  When assignments are added, deleted, or changed after a timesheet has been created, standard timesheet lines are added, deleted or changed (i.e. synchronize) with the assignments. However, for custom billing category
timesheet lines, they do not change when the assignments change, and they aren’t removed if the assignment is removed.  We believe this causes secondary errors, like the "_Error Loading"  (and others as will be described below).
3.When a timesheet with time in a non-standard billing category is deleted and recreated, time is arbitrarily moved to standard timesheet lines for the same assignment. If the task assignment is subsequently removed, the timesheet line causes the timesheet
to break.
4."Error Communicating with Server". When trying to submit a timesheet, a pop-up box appears indicating that there is an error communicating with the server.  This error appears because a timesheet line is no longer associated with a project.
In order to submit the timesheet the orphaned timesheet line must be identified and manually removed. One technique we found which helps to identify an orphaned timesheet line is to select a task and submit task progress. Repeat for all timesheet lines until
you get an error.  The timesheet line(s) with the error can be manually removed from the timesheet, fixing the error.
5. Unable to Open Specific Timesheets without Error. There are certain scenarios when the "Remove Task" feature is used or an assignment is otherwise removed after creation of a timesheet with custom billing category lines, which causes orphaned
timesheet lines. These orphaned lines can cause issues when trying to open a timesheet. The issue can appear when timesheets are in progress in multiple periods. In the problematic scenario, time is entered and submitted in one period and subsequently
the task is 'removed' from another period before the PM processes the first approval request. Process governance can certainly help here, but improvement in the way synchronization occurs between project assignments and custom billing category timesheet lines
would be great. The error can often be resolved by re-adding the assignment for the problematic timesheet user to the project (which creates a new assignment), and then allows you to open the timesheet.  Then time can be moved from the old timesheet
line to the new timesheet line, and the old one can be removed.
In 4 and 5, sometimes we can't open a timesheet without error, and other times we can open it but not submit it. We are not 100% clear on all the different causes for each. Each of these issues are suspected to be contributing the the misalignment of
data between project actuals and timesheets, which can be a real problem for external projects for which time collected through timesheets are being used to generate invoices.
Although these may seem like separate issues, warranting separate questions, I decided to post them together because they all seem to be related to synchronization of project assignments and timesheet lines for custom billing categories.
Any thoughts or suggestions from the community would be appreciated.
Best regards,
Justin
Justin Naughton

There are many causes for each of the errors mention.  It would be best to put one issue to the forum at a time.  For example, some of these issues occur then tasks are deleted from projects but a timesheet has been submitted.   Depending
on the scenario, some of these issues have been fixed with the latest service pack.
Other issues are due to bad scheduling habits with the project managers and so first determining what they have done can help resolve some the issues.
_error Loading, is because something is NULL in the data and the jave is choking when it build the form. Again, these may be because of delete tasks, resources, projects  or someone doing copying and pasting of rows.
cheers!
PS.  Train your PM to not COPY and PASTE rows in project schedules.  It can be done, but it can create problems.  There are over 500 fields and some have unique data and the copy paste creates havic.
Michael Wharton, MVP, MBA, PMP, MCT, MCTS, MCSD, MCSE+I, MCDBA
Website http://www.WhartonComputer.com
Blog http://MyProjectExpert.com contains my field notes and SQL queries

Similar Messages

  • Project Server 2013: Timesheet Managers are able to view and edit all resources' timesheets

    Regarding the Timesheet Managers list, per this
    Office Blog post: "This feature is designed to support scenarios where the regular timesheet approver may be out of the office or any other scenario where a user must submit their timesheet to a different approver each period." 
    In Project 2013, a resource must be added to the Timesheet Managers list in order to be able to approve timesheets.  With that, is there a way to restrict the resources in the Timesheet Managers list from viewing and editing timesheets where they are
    not the resource's designated timesheet approver?

    Hi,
    As far as I know, the users that are in the timesheet manager list will not see all the timesheets but only the ones they have been designated as approvers. Did you experienced a different behavior? Can you detail it?
    Here is an excellent
    blog post which explains in detail how does this feature works.
    Hope this helps,
    Guillaume Rouyre, MBA, MVP, P-Seller |

  • Error using Line Classifications in Project Server 2013 Timesheets

    Background:
    I'm working on a Project Server 2013 environment that is using Timesheet Line Classifications. In our environment we are not utilizing the Standard Classification but, we are instead using Billable Onsite, Billable Offsite and Nonbillable.
    Issue:
    If I have created a timesheet, then I am assigned an additional task and try to add the task to my timesheet using a Line Classification other than standard, I get an error pop-up. As long as I add the Standard line classification first, everything
    works fine. If I delete and recreate the timesheet it prepopulates the standard tasks which also resolves the issue.
    Questions:
    1.) Has anyone else ran across this issue and have a fix?  
    2.) Is anyone aware of a product fix in a CU or Hotfix to resolve this issue?
    Thanks,
    Dustin

    Dustin - as I understand it Timesheet Line Classifications allow you to
    "Duplicate" Timesheet lines for business purposes or accounting reasons. When I first saw this explanation I was at a loss as to the benefit or purpose of this feature, fortunately I work with some smart customers and they soon opened my eyes to the
    potential of this feature.
    The operative word in the description is "Duplicate". Additional Timesheet line classifications are available but
    not in lieu of the Standard Line Classification. As you have experienced if the "Standard" line is added to a Timesheet then an associated Duplicate Line Classification for the same task can be
    added to the Timesheet.
    To realise your requirement you might just decide what type of work is it you do that is most prevalent and regard that as being "Standard" and then use other line classifications to identify other Billable time - Non Billable Time reporting in a Timesheet
    is available by default if it is enabled in Timesheet Settings and Defaults.
    As an alternative do your Timesheet compilers decide the classification of the work they are booking time to?
    You could consider Task Custom Fields using a lookup table to denote whether work is on-site or off-site with the Calculation for Assignment Rows option set to "Rolldown unless manually specified" - this will associate the task field value with the associated
    Assignment. Using Task level fields set by whoever creates the project plan would remove the responsibility for differentiating the work "type" for your Timesheet users.
    The querying and reporting of the different classifications of work as recorded in Timesheets would then be possible by virtue of the task field.
    Dominic Moss | MAPM Microsoft Certified Technology Specialist | Our Newsletter:
    PM News Project Server Specialists
    Project Server PRIME | Twitter:
    @Twitter | Facebook:
    @Facebook | Linkedin:
    Wellingtone

  • Failed to build the OLAP cubes (Project Server 2013)

    We are receiving errors when attempting to build our OLAP cubes.  We've attempted to install the 2008 version of the SQL server native client 2008 but still the error appears.  Please advise.
    Configuration:
    Project Server 2013
    SharePoint 2012
    SQL Server 2012
    Error Message:
    ===== Initiating OLAP database build process =====
    [1/7/2014 2:00 AM] Cube build request message has been added to the Project Server queue ===== Verifying and running pre-build server event handler =====
    [1/7/2014 2:00 AM] Verifying and running pre-build server event handler ===== Determining database and OLAP database structure =====
    [1/7/2014 2:00 AM] Cube build initialization started ===== Building database and cubes =====
    [1/7/2014 2:00 AM] Cube build session started ===== Verifying and running post-build server event handler =====
    [1/7/2014 2:00 AM] Verifying and running post-build server event handler ===== Processing OLAP database =====
    [1/7/2014 2:00 AM] Process OLAP database session started ===== Process Completed =====
    [1/7/2014 2:00 AM] Failed to build the OLAP cubes. Error: Failed to process the Analysis Services database OLAP_FTF on the XYZ server. Error: Errors in the back-end database access module. The provider 'SQLNCLI10' is not registered.
    The following system error occurred:  Class not registered Errors in the high-level relational engine. A connection could not be made to the data source with the DataSourceID of 'Project Reporting data source', Name of 'Project Reporting
    data source'.
    Errors in the OLAP storage engine: An error occurred while the dimension, with the ID of 'Project List', Name of 'Project List' was being processed.
    Errors in the OLAP storage engine: An error occurred while the 'Start Date' attribute of the 'Project List' dimension from the 'OLAP_FTF' database was being processed.
    Internal error: The operation terminated unsuccessfully.
    Server: The current operation was cancelled because another operation in the transaction failed.

    Hi Importek,
    Please have a look to a similar threads that has been answered.
    http://social.msdn.microsoft.com/Forums/en-US/a2696e29-e68e-45a8-8dae-fa8fa5640575/receive-the-following-error-when-trying-to-build-cube-errors-in-the-highlevel-relational-engine?forum=sqlanalysisservices
    http://social.technet.microsoft.com/Forums/projectserver/en-US/420958bd-4613-451c-ac06-a1f149f64da9/problem-when-trying-to-build-the-cube?forum=projectserver2010general
    Finally an article by Brian Smith:
    http://blogs.msdn.com/b/brismith/archive/2007/07/16/yet-another-olap-error-message-the-longest-yet.aspx
    This might be an issue of the SQL instance alias.
    Hope this helps.
    Guillaume Rouyre - MBA, MCP, MCTS

  • Project Server 2013 timesheets not showing up for approval

    We're using Project Server 2013 and entering timesheets. I'm a team manager who is set up as the timesheet approver for a few people, including Nicole.
    Nicole opens her timesheet and fills it in for the week.  She applies time to four Administrative tasks and two project tasks.
    Nicole submits her final timesheet for approval.  (We have also tried having her save it first, then to the final submission, with the same results.)
    I go to my approval screen and see the four Administrative tasks listed as separate lines.  I do not see the project tasks.
    I select the four Administrative tasks and approve them.  They disappear when the screen is submitted.
    In previous weeks, and with some other employees, I would immediately see a single line item that said "My Timesheet" for Nicole which I could then approve.  But recently this stopped, and I do not see her timesheet.
    If Nicole checks the status of the timesheet it says it's submitted to me.
    On my Approval page if I go to History, Timesheets this timesheet is not listed under "approved by me" nor is it under "my resources unsubmitted timesheets."  It's in limbo.
    The only fix is for Nicole to recall the timesheet and resubmit it.  Then it shows up on my Approval page.
    Any suggestions?
    -- Paul

    We resolved this. The solution was as follows:
    Go to PWA Settings, and under Security choose Manage Groups.
    Click the Team Members group.
    Scroll to the Categories section, and in the Selected Categories area highlight (select)
    My Tasks.
    Click the box to allow the permission called Adjust Timesheet which is under the grouping for Resource.
    Now don't ask me how or why that works.  It's not a setting that intuitively matches what's going on.  But it fixed it for us.
    By the way, we had a number of other timesheet issues (view failures, etc.) that were all cleared up when we installed the April 2014 Cumulative Update for Project Server 2013, as well as SharePoint 2013 SP1.  I highly recommend both.
    -- Paul
    Paul LoSacco, Web Presence Team, Omnicare

  • How should we be going about creating and saving and/ or exporting our ODC files using Excel 2013 for use in Project Server 2013 Online?

    Hi I need your guidance on how I should go about setting up my Excel 2013 reports so that others in our Project Online 2013 environment can access and updates these reports of mine.
    My questions are as follows:
    I presume I need to create and save my ODC files in a PWA > Data Connections folder.  I have English and French users in our environment.  Do I need save them twice?  Once in the French and again in the English Data Connections folder?
     Likewise for the Excel file? 
    How should I go about creating my ODC files within Excel?  By default, the ODC files are being created on my PC's > My Documents > My Data Sources folder.  I presume I need to get them saved or exported to the PWA > Data Connections
    folder. So, How should I be going about creating and saving and/ or exporting the ODC files???
    FYI...My oData Feeds that I wish to use and join in this particular Excel file are as follows:
    https://cascades.sharepoint.com/sites/pwa/_api/projectdata/AssignmentTimephasedData01T00:00:00'
    https://cascades.sharepoint.com/sites/pwa/_api/projectdata/Projects()?$select=ProjectId,ProjectName,CAS_Classification,CAS_PCO,CAS_IT_Department,CAS_Program,CAS_SubProgram
    https://cascades.sharepoint.com/sites/pwa/_api/projectdata/TimeSet()?select=TimeByDay,TimeDayOfTheWeek$filter=TimeByDay ge datetime'2014-10-19T00:00:00'
    https://cascades.sharepoint.com/sites/pwa/_api/projectdata/Resources()?$select=ResourceId,ResourceName,Programs,Supplier,Source,Role,CostType
    Thanks in advance,
    \Spiro Theopoulos PMP, MCITP. Montreal, QC (Canada)

    Thank you Guilaume.  May I ask you to help clarify a bit more for me?  If I have to do it for both languages (the reports and ODC files), do I simply copy the same ODC files from e.g., the English to French folder in PWA (Odc files)?  Or does
    that defeat the purpose?  Or, do I need to create a new set of oData Feed Connection files with a French version of Excel 2013 and save them to the French Data Connections folder in PWA?  Do I need to have a French version of Excel 2013 to create
    French ODC files and ultimately French based reports and/ or vice versa?
    I did notice that the following oData metadata command from within a browser produces different results (ie., English versus French metadata returned) depending on who runs it (i.e., French or English user, etc).  As you can see I am a bit confused.
     Any help you can provide would be greatly appreciated.
    https://XXXXX.sharepoint.com/sites/pwa/_api/projectdata/$metadata
    \Spiro Theopoulos PMP, MCITP. Montreal, QC (Canada)

  • Project server 2013----new custom field value is not synced between my work assignment view and project professional

    Hi All,
    I would like to add a new custom enterprise field in project server to caculate the effective work. I hope it can work as the default field "work" and "overtime work". And I add my custome enterprise field to my work assignment and the
    related details view. User can update the values in "my task" but after PM accept the updates, these values are not synced to the project center as well as project professional. Any idea?
    Regards,
    Anna

    Yes, I am saying that the PM cannot see the updated values in the enterprise project in Microsoft Project 2013. It is a task custom field. No errors for it. Would you please help create a task custom field on your side to see whether you can reproduce
    this issue? After creating the field, please add it to the "My task" related views so that project members can update the value for the task when they update the task information under "my tasK" page. After that, open the project plan as
    project manager to see whether you get the updated value. Thanks a lot!
    Regards,
    Anna

  • Can new PWA views be created whereby a filter can be set and associate to the view by default? (Project Server 2013 ONLINE)

    My main question is: Can new PWA views be created whereby a filter for that view can be set, and associate to the view by default? (Project Server 2013 ONLINE)? and can I have a filter set to filter on person logged on to...
    In previous versions of Project Server, when CREATING a PWA view, we were able to apply/ define a filter for that view.  Does not seem like it is the case in Project Server 2013 Online.  And if I remember, we could also use the URL Guid_view_id. 
    Please confirm; and / or tell me how-to.
    What I was hoping to do is the following... Given that our standard that we have adopted for reporting time is 'My Timesheets' (fyi, Single Mode Entry=ON), we have some resources who have others who do it on their behalf via 'My Tasks' (ie., accomplished
    by using the 'Assignment Owner' field, accordingly).  Therefore, when entering time on someone else's behalf within 'My Tasks', we like to present the user that is logged in only the tasks that they are are assigned to update on others' behlaf.
    I know that there is another more elegant approach to doing this which may be to use the Delegation feature. But since we are trying to stick to Sharepoint Security mode for now, this is not an option for the time being.
    Any help appreciated would be greatly appreciated.
    \Spiro Theopoulos PMP, MCITP. Montreal, QC (Canada)

    Hi Spiro,
    1- You still can define in Project Online a filter in the view settings, it is located just above the category setting. Here is a screenshot of the summary project center view:
    2- The view GUID is not anymore in the URL, since the URL triggers an action only on the webpart and not on the whole page. I agree this is annoying since it was great to send a URL with a specific view.
    3- Concerning the access to my timesheet versus my task, I'm not sure to get a full understanding but on a general way, it is much more easy to deal with those situation using categories which you cannot do with the SP permission mode.
    Hope this helps,
    Guillaume Rouyre, MBA, MVP, P-Seller |

  • When attempting to edit a project in the PWA I receive the error: 'An error occurred while opening your project. Give us a few minutes and try again...' Project Server 2013

    Hello,
    I am hoping someone can assist with the error we are encountering when trying to edit a project from the PWA in Project Server 2013.  I can click on the project name and go to the detail page and I can
    click and see the schedule.  However, if I click on a task in the schedule and attempt to edit it, I receive the following error:
    'An error occurred while opening your project. Give us a few minutes and try again. If this happens again, contact your administrator.'
    At this point I must click cancel twice to get rid of the error pop-up message.  At this point, I am no longer able to look
    at the schedule of the project either.  Can someone assist with this issue?
    Thanks

    Hi antonio,
    In addition to Phani's advice, which version of IE are you using?
    Can you reproduce the issue on another mahcine and with another browser?
    Hope this helps,
    Guillaume Rouyre, MBA, MCP, MCTS |

  • Error in Project Server 2013

    Hi,
    I set myself as team member in Project Server 2013, when i click on Project,Approvals and Timesheet i receive the below error:
    "Cannot communicate with the server. Verify your connection and try again"
    I have other account with Project Manager rights, with that account i can open these pages.
    Please help.
    K.Gokulraj

    Hi Gokulraj,
    What permission mode are you using in project server 2013? Is it "project permissions mode" or "SharePoint permissions mode"?
    If you are using "project permissions mode", then go to Server Settings -> Manage users and click on the user with "team member" permissions to edit.
    In the next page, expand "Global Permissions" and "View Approval" permission.
    It could be the issue with the categories and category level permissions.
    Happy troubleshooting...
    Vikram Daruru - MSFT

  • Error creating Project Server 2013 Server Side Event Handlers

    Hi,
    I have created a WCF service and deployed it successfully.  Now when trying to add a new event receiver for Project CheckIn event, nothing happens.  Checking the service using Services panel, it shows Microsoft Project Server Events Service 2013
    is started.  I check the ULS logs and see exception:
    System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'pub.MSP_ADMIN_SetEventReceivers15RTM'
    I have service pack 1 installed for Project Server and SharePoint, version 15.0.4571.1502.  Any ideas?  I see there is a stored procedure without '15RTM' suffixed in PWA database.  I read another post on the forum relating to this same issue
    but didn't want to create each additional item in the DB (table, data type, stored procedure, etc).  Am I missing something?  Looking for suggestions here.  Your help is always appreciated.
    Thanks,
    kashif

    Hi Gokulraj,
    What permission mode are you using in project server 2013? Is it "project permissions mode" or "SharePoint permissions mode"?
    If you are using "project permissions mode", then go to Server Settings -> Manage users and click on the user with "team member" permissions to edit.
    In the next page, expand "Global Permissions" and "View Approval" permission.
    It could be the issue with the categories and category level permissions.
    Happy troubleshooting...
    Vikram Daruru - MSFT

  • Project Server 2013: customize JSGrid (Project Center, MyTasks, etc...) ?

    Hi,
    In Project Server 2010, it was possible to customize the JSGrid, thanks to the tutorial included in the SDK "Walkthrough:
    Customizing the PWA Ribbon and Accessing the JS Grid". It works really fine, and I used this possibility in many Project Server 2010 implementation for Customer.
    I would like to make it on Project Server 2013, but the same code doesn't work. I found some posts
    here, where people had the same issue, but no clear answer.  
    The Project Server 2013 SDK does not contain the same tuto upgraded for 2013, and I hope that this possibility still exists.
    If somebody has a very basic example to show how to execute some custom code on Focus Change event, or clic, or what ever event happening on this JSGrid, it would be very nice to share.
    My installation is On Premise, not in On Line.
    Thank you for your help !
    Sylvain

    Hi,
    In fact for filtering, you have to use delegate.
    The "HandleFilter" function must be created by you. You have to bind this function to the correct delegate. 
    For filtering, the main delegates are:
    SP.JsGrid.DelegateType.AutoFilter
    SP.JsGrid.DelegateType.LaunchFilterDialog
    SP.JsGrid.DelegateType.GetAutoFilterEntries
    The post
    here explains the process for 2010. For Project Server 2013, the difference is that we don't have the same objects.
    Here you can find the way to declare the delegate in Project Server 2013, with the SetDelegate method:
    var pc; // Contains the Project Center extension object.
    var JsGridControlInstance;
    var JsGridSatellite;
    _spBodyOnLoadFunctionNames.push("ProjectCenterMain");
    function ProjectCenterMain() {
    pc = new ProjectCenterExtension();
    function ProjectCenterExtension() {
    if (typeof projectCenterComponent === 'undefined')
    return;
    JsGridSatellite = projectCenterComponent.get_GridSatellite();
    JsGridControlInstance = projectCenterComponent.get_GridSatellite().GetJsGridControlInstance();
    JsGridSatellite.get_tableViewParameters().bAutoFilterableColumns = true;
    JsGridControlInstance.SetDelegate(SP.JsGrid.DelegateType.AutoFilter, HandleFilter);
    JsGridControlInstance.SetDelegate(SP.JsGrid.DelegateType.LaunchFilterDialog, FilterDialog);
    JsGridControlInstance.SetDelegate(SP.JsGrid.DelegateType.GetAutoFilterEntries, FilterMenu);
    function HandleFilter(newState) {
    alert("Filter !");
    function FilterDialog(param) {
    alert("FilterDialog !");
    function FilterMenu(param) {
    alert("FilterMenu !");
    My advice to search, is to put a break point on the ProjectCenterExtension function, and through debugger, tou can drill down in the main methods and properties. 
    Often you will see functions with get_XYZ(), and then be able to make the matching with the Project Server 2010 syntax.
    For the filtering implementation, I beleive that you can deal with your article based on 2010: it should work as soon as you will get the equivalent objects in 2013.
    Hope it helps !
    Sylvain

  • Recall and Delete timesheet in Project Server 2013

    Hi,
    How to recall a timesheet and how to delete the submitted timesheet by the user in Project Server 2013?
    K.Gokulraj

    Also, in case you would like to connect as the user and delete his timesheets, yu can use Manage Delegates.
    Then connect as the user, go to his Manage Timesheets > Recall the Timesheet > Delete the Timesheet.
    Cheers! Happy troubleshooting !!! Dinesh S. Rai - MSFT Enterprise Project Management Please click Mark As Answer; if a post solves your problem or Vote As Helpful if a post has been useful to you. This can be beneficial to other community members reading
    the thread.

  • Project Server 2013 - "An unknown error has occured"

    Hi !
    Whenever I navigate to Project Center in Project Server 2013 the credentials window pops-up continuously even after entering correct admin account and after several clicks on OK button in credential window it says "An unknown error has occurred".
    This is happening at every links. Even at Resources, Tasks, Reports, etc.. Is this Project Server 2013 stable or still has bugs in it.
    I recently installed March 2013 hotfix for Project Server but still no luck. In ULS or Event Viewer I didn't got any
    relevant exceptions.
    I am even unable to connect to Project Server from Project Professional.
    Thanks & Regards.

    "An unknown error has occurred" usually means that the browser cannot resolve some data or something is missing. This can be caused by many issues. One for instance is deleting projects, but timesheets are still referencing it. Many others.   This
    is one of the harder issues to resolve, because often you don't find anything in the ULS.
    Seeing that this error is occurring everywhere on PWA, I would first try rerunning the "SharePoint Product Configuration Wizard".  If this fails at any place, that will be the first thing to fix.
    Cheers
    Michael Wharton, MVP, MBA, PMP, MCT, MCTS, MCSD, MCSE+I, MCDBA
    Website http://www.WhartonComputer.com
    Blog http://MyProjectExpert.com contains my field notes and SQL queries

  • Publication of the big-sized Enterprise projects from Project Professional 2013 to Project Server 2013 takes about 60+ minutes.

    Dear Sirs,
    I need your support over the following MS EPM 2013 issue:
    Publication of the big-sized Enterprise projects from Project Professional 2013 to Project Server 2013 takes about 30+ minutes. We
    need to reduce this total publication time down to acceptable working values 10+- minutes.
    Environment information:
    Single App Server (Virtual): 16 Gb RAM, x64 4xCPU, HDD > 50 GB free disk space, OS Windows Server 2012 Standard Edition x64 Service
    Pack 1, MS SharePoint Server 2013 and MS Project Server 2013 with CU December 2013 (KB 2850024) applied.
    Single RDBMS MS SQL Server (Virtual): 8 Gb RAM, x64 4xCPU, HDD > 200 GB free space, OS Windows Server 2012 Standard Edition x64 Service
    Pack 1, MS SQL Server 2012 x64 SP 1 Enterprise Edition.
    We have 1Gbit LAN between APP, DB server and 1Gbit LAN between APP and Proj Prof Client.
    Yes, we are on the way of migrating to the Prod environment
    with 3-tiered architecture (with SP1 slipstream and CU December 2014 applied), but this issue also
    presents there.
    Project’s file information:
    Tasks in the file: [~4900], resources in the file [~396] enterprise task’s custom fields used in the file [~23].
    Project save procedure for this new project would last about 7 minutes. Project publication would last about 47 minutes. We noticed that
    tasks synchronization process took about 1 second for each ~2,5 tasks, to add them to the sharepoint tasks list. So for all 5148 tasks it took about 5148/3/60 =  34 minutes. Other 13 min was used for reporting database publication and other tasks relevant
    for new sharepoint site creation.
    Case 1: Issue description:
    During the Enterprise project’s file save and publication we have the following sharepoint 2013 log messages:
    07.31.2014 12:43:17.22 Microsoft.Office.Project.Server (0x0358) 0x3D5C SharePoint Foundation Monitoring b4ly High Leaving Monitored Scope
    (Persisting list changes). performing time =376.068676326181 22dca99c-4696-70f1-e9e2-06851d0bcffd
    07.31.2014 12:43:17.69 Microsoft.Office.Project.Server (0x0358) 0x3D5C SharePoint Foundation Monitoring b4ly High Leaving Monitored Scope
    (Persisting list changes). performing time =361.652807828928 22dca99c-4696-70f1-e9e2-06851d0bcffd
    It shows that sharepoint spend at least ~350 milliseconds (or 0,35 sec*4900 tasks = 1715 sec, or 28,5 min) for each task update during
    project publication. And we also have another log file that shows that about 0,7 sec (or 0,7 sec*4900 tasks = 3430 sec, or 57 min) sharepoint spend for save each task in project file to project server. So total save and publication time more then 60+ minutes
    for that project file. The same result we have even if user didn’t do any changes at the project file.
    We use only enterprise projects (dbo.MSP_EpmProject_UserView.projectvisibilitymode = «False»), and do not use sharepoint tasks lists,
    but the synchronization between MSP Plan and SharePoint tasks list works at any case.
    Case 2: Issue description:
    - For the second test we created a new project with new sharepoint project’s site on basis of our «issue» project, with total amount
    of tasks in it of 5148 (yes, we increased the tasks list default limit at the sharepoint site up to 6000 items in it – standard limits for sharepoint view list – 5000 items).
    - Project save procedure for this new project would last about 7 minutes. Project publication would last about 47 minutes. We noticed
    that tasks synchronization process took about 1 second for each ~2,5 tasks, to add them to the sharepoint tasks list. So for all 5148 tasks it took about 5148/3/60 =  34 minutes. Other 13 min was used for reporting database publication and other tasks
    relevant for new sharepoint site creation.
    -Then we deleted the
    tasks list for that new test project from the sharepoint site and republish the project plan one more time. This time project save procedure took about 7 minutes, project publication about 2 minutes and 3 minutes for other relevant queue jobs. So total time
    is 12 minutes.
    As a conclusion: yes, we have determined
    the exact problem - during synchronization process (from Project Server to SharePoint) it perform copying all tasks and related data from Project to SharePoint in spite of fact that you changed only ONE task or ALL of them. At any case, synchronization will
    copy ALL of them from Project Server to SharePOint task’s list.
    Our workaround is to disable the task’s synchronization for such big-sized project plans:
    – to delete the SharePoint «tasks» list at the SharePoint site tied with project plan.
    - or deattach the SharePoint site from the project plan.
    Thank you for reading this topic, please if you also forced with such issue provide us any known workaround or maybe any official response
    \ feedback from MS about it.
    Thank you in advance,
    Best Regards, Andrey

    Regarding my topic, I also said that every time when sync works it updates All items from project’s plan at Project Server to corresponded task’s list at SharePOint server. Inspire of the fact that you changed only One task or group /
    all of them at your project’s plan.
    And it seems to me and my colleagues that it’s probably (maybe) a “bug” at the product. Here is what we have if looked a little bit closer to the code:
    Share Point determines what task to sync from Project’s plan to sharepoint list. To do that sharepoint needs to know was that task changed or not, based on the following fileds (check SQL stored procedure “[MSP_READ_TASKS_FOR_SYNCRONIZATION]”):
    TASK_UID    TASK_NAME    TASK_START_DATE    TASK_FINISH_DATE    TASK_PCT_COMP    TASK_PARENT_UID    TASK_OUTLINE_NUM   
    WSS_LISTITEM_UID   TASK_ID    TASK_IS_ACTIVE
    We noticed that at any case synchronization performs for all tasks, EXCEPT the ROOT one. Then we looked at the comparison of TASK_PARENT_UID field. So sharepoint compares TASK_PARENT_UID with ParentID (this is internal name for lookup
    field “Tasks” at the Sharepoint, and it stores their values at the format "ID;#Title").
    And comparison performs like following:
    SharePoint looks for Task at the Tasks’s list corresponded to Project’s plan with ID represented at the TASK_PARENT_UID field. Then it takes SharePoint ListItem ID (“int” type) and store it to the “num” parameter;
    num = this.GetCachedListItemByUniqueId(listItem.ParentList, nullable.Value).ID;
       2.Then it compares “num” with task’s “ParentID” at SharePOint as follow with operator “!=”:
    ((SPItem) listItem)["ParentID"] != (System.ValueType) num
       3. If comparison was success (true) – then it tell us that values (at the Project’s plan for tasks) was changed, then it need to be synchronized. Corresponded Method setup “true” flag, and then returns it.
    The “bug” is that this expression at the Step 2 will always return “true”, because in fact it compares “string” (see above – that this is lookup field at SharePoint side)
    with “number”. For example if the parant task ID is “55”, then we get:
    "55;#Task 1" != 55
    And by the rules of .Net the “string” will never equal “number”
    Furthermore this is approved by the SharePoint logs:
    In that case we always get the note “Setting ParentID to” at the logs (we see it if turns on Verbose for “Project Server” -> “Sharepoint Integration” category).
    So at any case of publishing project’s plan we always get that note at the logs for tasks that have Parent task, and we have Parent for all of them EXCEPT the ROOT one, exact logs represented further:
    10/15/2014 02:37:32.26    Microsoft.Office.Project.Server (0x07D8)    0x06E8    Project Server    Sharepoint Integration    ado0d   
    Verbose    Setting ParentID to 1    bf2fc29c-7727-b00d-fa4a-34f22ea9ec1d 10/15/2014 02:37:32.62    Microsoft.Office.Project.Server (0x07D8)    0x06E8   
    Project Server    Sharepoint Integration    ado0d    Verbose   
    Setting ParentID to 1    bf2fc29c-7727-b00d-fa4a-34f22ea9ec1d 10/15/2014 02:37:32.63    Microsoft.Office.Project.Server (0x07D8)    0x06E8    Project Server   
    Sharepoint Integration    ado0d    Verbose   
    Setting ParentID to 1    bf2fc29c-7727-b00d-fa4a-34f22ea9ec1d 10/15/2014 02:37:32.67    Microsoft.Office.Project.Server (0x07D8)    0x06E8    Project Server   
    Sharepoint Integration    ado0d    Verbose   
    Setting ParentID to 1    bf2fc29c-7727-b00d-fa4a-34f22ea9ec1d 10/15/2014 02:37:32.69    Microsoft.Office.Project.Server (0x07D8)    0x06E8    Project Server   
    Sharepoint Integration    ado0d    Verbose   
    Setting ParentID to 5    bf2fc29c-7727-b00d-fa4a-34f22ea9ec1d
    The following is the complete Method’s code from the corresponded reflector:
    private bool UpdateParentID(DataSet taskDS, DataRow row, SPListItem listItem, Dictionary<Guid, SPListItem> redoEntries)
    bool flag = false;
    int index = taskDS.Tables[0].DefaultView.Find((object) DataRowExtensions.Field<Guid>(row, "TASK_PARENT_UID"));
    if (index >= 0)
    Guid? nullable = DataRowExtensions.Field<Guid?>(taskDS.Tables[0].DefaultView[index].Row, "WSS_LISTITEM_UID");
    int num = -1;
    if (listItem.Fields.ContainsField("ParentID"))
    if (nullable.HasValue)
    try
    // STEP 1
    num = this.GetCachedListItemByUniqueId(listItem.ParentList, nullable.Value).ID;
    catch (ArgumentException ex)
    if (redoEntries != null)
    if (!redoEntries.ContainsKey(DataRowExtensions.Field<Guid>(row, "TASK_UID")))
    redoEntries.Add(DataRowExtensions.Field<Guid>(row, "TASK_UID"), listItem);
    //STEP 2
    if (num != -1 && ((SPItem) listItem)["ParentID"] != (System.ValueType) num)
    ((SPItem) listItem)["ParentID"] = (object) num;
    ULS.SendTraceTag(845443U, (ULSCatBase) ULSCat.msoulscat_PS_ProjectSharepointIntegration, ULSTraceLevel.Verbose, "Setting ParentID to {0}", new object[1]
    ((SPItem) listItem)["ParentID"]
    //STEP 3
    flag = true;
    else if (((SPItem) listItem)["ParentID"] != null)
    ((SPItem) listItem)["ParentID"] = (object) null;
    ULS.SendTraceTag(2495056U, (ULSCatBase) ULSCat.msoulscat_PS_ProjectSharepointIntegration, ULSTraceLevel.Verbose, "Resetting ParentID to null");
    flag = true;
    return flag;
    Any thoughts about it would be much appreciated!

Maybe you are looking for