Error when syncing SharePoint list to Project with a deleted milestone when using PSI RRS feed

  • Question

  • Hi folks,

    The scenario is that I have a SharePoint task list which I have successfully synced with Project Server.

    When I add a task or update the properties of the task on the SharePoint side, the call to SyncProjectWithWss works like a charm.

    If I delete a task in SharePoint and then initiate the sync, the server returns an error.  In the ULS log, I see the following:

    Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Project.SyncProjectWithWss System.Data.DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row.    
    at System.Data.DataRow.GetDefaultRecord()    
    at System.Data.DataRow.get_Item(DataColumn column)    
    at Microsoft.Office.Project.Server.Schema.ProjectDataSet.TaskCustomFieldsRow.get_TASK_UID()    
    at Microsoft.Office.Project.Server.BusinessLayer.Sync.PSTaskCollection.<AddRequiredCustomFields>b__14(TaskCustomFieldsRow tcf)    
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()    
    at System.Collections.Generic.HashSet`1.UnionWith(IEnumerable`1 other)    
    at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection, IEqualityComparer`1 comparer)    
    at Microsoft.Office.Project.Server.Library.PSUtility.ToSet[TBase](IEnumerable`1 enumerable)    
    at Microsoft.Office.Project.Server.BusinessLayer.Sync.PSTaskCollection.AddRequiredCustomFields()    
    at Microsoft.Office.Project.Server.BusinessLayer.Sync.PSTaskCollection.CommitChanges()    
    at Microsoft.Office.Project.Server.BusinessLayer.Sync.ProjectWssSyncEngine.SyncProjectWithWssInternal()    
    at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()    
    at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)    
    at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)    
    at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)    
    at Microsoft.Office.Project.Server.BusinessLayer.Sync.ProjectWssSyncEngine.SyncProjectWithWss(SyncDataSet syncDataSet, String projectName)    
    at Microsoft.Office.Project.Server.BusinessLayer.Project.DoSync(SyncDataSet syncDataSet, String projectName)    
    at Microsoft.Office.Project.Server.BusinessLayer.Project.SyncProjectWithWss(Guid syncEntityUid, SyncEntityUidType syncEntityUidType)    
    at Microsoft.Office.Project.Server.Wcf.Implementation.ProjectImpl.SyncProjectWithWss(Guid syncEntityUid, SyncEntityUidType syncEntityUidType)    adf29347-b823-4a9c-9afd-0b29b0f0dbb1

    The error is a low level System.Data error, which leads me to believe that this is a problem with the core implementation of the SyncProjectWithWss method.  The error also occurs when a sync is initiated from the UI when a task is deleted.

    I wonder if this is simply not supported (sync after deleting an item)? Or is there a workaround for the case where there is a delete?  Or is there perhaps a configuration issue? | |

    Friday, July 5, 2013 8:37 PM


  • I have tested with latest cumulative patched system and able to repro. I can add the repro for future review, however at this point cannot comment on fix.

    Wednesday, July 17, 2013 8:13 PM

All replies

  • Based on the exception"System.Data.DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row." looks like you are correct and the issue is due to the deleted row isn't accessible.

    I went and tested the behaviour OOB and found issue occurs when a task list item is deleted and if we try to sync back from project. It seems to be an issue when trying to resync task list with deleted task. Even if you create task with same name in list, it would not resolve. Additionally, any future sync is impacted.

    Quick workaround is go to "Delete Enterprise objects" - Delete the Task which you would see as a project. Create a new Project from SharePoint task list sync and it will work.

    Seems like its not able to sync due to deleted row and throws exception - System.Data.DeletedRowInaccessibleException

    Wednesday, July 17, 2013 7:37 PM
  • Shazeb,

    Your suggestion is exactly what I am doing right now in code as a workaround.  I delete the entire Project Plan using PSI call and queue a new sync.

    However, as you can understand, this is clearly a less than desirable solution as any Project specific information would be deleted as well.

    I noted the same behavior as you that when an item is deleted, it is not possible to get the sync to work thereafter, even if I add a new task with the same name.  My guess is that the underlying sync logic uses the ID of the task in the list so sync to a task in Project so when the item is deleted in SP, this error occurs at the low level LINQ code.

    Seems like a product defect -- would it be possible to get this fixed in a future CU? | |

    Wednesday, July 17, 2013 7:51 PM
  • I have tested with latest cumulative patched system and able to repro. I can add the repro for future review, however at this point cannot comment on fix.

    Wednesday, July 17, 2013 8:13 PM
  • Shazeb,

    Thanks for the followup.

    I too, have tested with the latest (available) CU and can confirm your findings.

    I am working with a large pharma customer in an enterprise deployment project for SharePoint and Project server integration right now so I'm sure the customer would be really happy if this could get fixed one day :)

    I guess we will look forward to it in a future CU.

    Thanks! | |

    Wednesday, July 17, 2013 8:24 PM
  • I confirm this behavior when any Sharepoint task is deleted.

    Is it any new new solution for this issue?

    Monday, February 16, 2015 7:51 AM