Team Foundation Server / Project Server synchronization fails with TF53010 error

Article ID: 2591976 - View products that this article applies to.
Expand all | Collapse all

Symptoms

You have Team Foundation Server 2010 SP1 and Project Server 2010 or Project Server 2007. You have installed the Microsoft Team Foundation Server 2010 and Microsoft Project Server Integration Feature Pack. You have successfully configured the integration, and synchronization is working properly. You have created two workitems in Team Foundation Server, and these workitems are configured to sync with Project Server. These workitems are linked, and the link was created by a user who is not a member of the Team Project Collection Administrators group. You delete the link, or one of the linked tasks, from the Enterprise Project Plan in Project Server.

The synchronization fails, and you receive Application Event Log errors similar to the following:

Log Name:      Application
Source:        TFS Sync Service
Date:          7/28/2011 9:09:36 AM
Event ID:      9000
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      TFS-AT-Computername
Description:
TF53010: The following error has occurred in a Team Foundation component or extension:

Date (UTC): 7/28/2011 1:09:36 PM
Machine: TFS-AT-Computername
Application
Domain: TfsJobAgent.exe
Assembly: Microsoft.TeamFoundation.Framework.Server, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Service Host:
Process Details:
Process Name: TFSJobAgent
Process Id: 3132
Thread Id: 5948
Account name: domain\TFSServiceAccount

Detailed Message:

Microsoft.TeamFoundation.Sync.WorkitemProvider.AbortSyncException: TF287020: An error occurred while updating the linking of work items in Team Foundation Server and tasks in Project Server. Synchronization cannot proceed. Contact your administrator for Team Foundation Server to determine the cause of the error.
   at Microsoft.TeamFoundation.Sync.WorkitemProvider.WorkItemPlanSyncProvider.NotifyPreCommitChangeBatch(Dictionary`2 originalChangeToWorkItemMap, Dictionary`2 modifiedChangeToOriginalChangeMap, List`1 modifiedChangesToSave)
   at Microsoft.TeamFoundation.Sync.WorkitemProvider.WorkitemSyncProvider`1.ProcessSyncChangeBatch(UInt32 batchSize, ChangeBatch changeBatch, ISourceDataProvider sourceDataProvider, IProcessingFeedback processingFeedback)
   at Microsoft.TeamFoundation.Sync.WorkitemProvider.WorkItemPlanSyncProvider.ProcessSyncChangeBatch(UInt32 batchSize, ChangeBatch changeBatch, ISourceDataProvider sourceDataProvider, IProcessingFeedback processingFeedback)
   at Microsoft.TeamFoundation.Sync.Framework.SyncOrchestrator.Sync()
   at Microsoft.TeamFoundation.Sync.Session.ProjectSyncExecutor.ExecuteSerial(IEnumerable`1 syncOrchestrators)
   at Microsoft.TeamFoundation.Sync.JobExtension.JobServicePlugin.Run(TeamFoundationRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime jobQueueTime, String& resultMessage)

Cause

This is a bug in the process that performs the synchronization.

Resolution

Temporarily provide the non-administrative user administrative permissions to allow the synchronization to complete.

Steps:

Obtain a trace of the TFSJobAgent process when the synchronization fails.   Follow steps below to create a job agent log.  As the error occurs frequently, logging for a few minutes should be sufficient.

1. On the TFS application tier server, stop the TFS job agent service. Perform this at an administrative command prompt, with the command:
net stop tfsjobagent.

2. Enable tracing for TFS job agent:

•  Take a backup of the tfsjobagent.exe.config file. This file normally found in the folder C:\Program Files\Microsoft Team Foundation Server 10.0\Application Tier\TFSJobAgent directory on the TFS application tier server.

•  Modify the config file:

a. uncomment the trace listener
b. modify the path where the logs files are stored - the account under which job agent service is running must have write permission to that path
c. change the trace level to verbose.

The entire config file should similar to the below:
<system.diagnostics>
  <trace autoflush="false" indentsize="4">
<listeners>
      <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\jobagent.log" />
      <remove name="Default" />
</listeners>
  </trace>
  <switches>
    <add name="API" value="4" />
    <add name="Authentication" value="4" />
    <add name="Authorization" value="4" />
    <add name="Database" value="4" />
    <add name="General" value="4" />
    <add name="traceLevel" value="4" />
  </switches>
</system.diagnostics>

3. Start the TFS job agent. Perform this at an administrative command prompt, with the command:
net start tfsjobagent

4. Wait for a sync attempt to occur, this should happen every 30 seconds.

Once you have completed the logging, be sure to revert back to the original config file to turn off logging.

Find the workitem which is causing the sync to fail:

1. Edit the log file to view the exception.

2. From the bottom of the trace file, search for the word "Exception".

3. From that point, scroll up from the error until you see a section like this:

  <InsertWorkItemLink SourceID="20" TargetID="21" LinkType="2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="20" TargetID="22" LinkType="2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="21" TargetID="20" LinkType="-2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="22" TargetID="20" LinkType="-2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="23" TargetID="24" LinkType="2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="23" TargetID="25" LinkType="2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="24" TargetID="23" LinkType="-2" AutoMerge="true" Comment="" Lock="false" />
  <InsertWorkItemLink SourceID="25" TargetID="23" LinkType="-2" AutoMerge="true" Comment="" Lock="false" />

4. Make a list of the workitemids, and find the task for the workitem which no longer exists, or the tasks for which the link no longer exists, in the Project Server Enterprise Project Plan

5. In Team Explorer, open the workitem and view the history for that workitem, and the linked workitem, as listed above. Check the history for both workitems, and find which user performed the edit that added the link.

 Add that user's account to the Project Collection Administrators group in TFS 2010.    Here are the steps for accomplishing this:

1. Open Team Explorer.

2. Right click the Collection that contains the project.

3. Choose Team Project Collection Settings and Group Membership.

4. Highlight the [project collection name]\Project Collection Administrators.

5. Press Properties and choose the "Windows User or Group" radio button.

6. Click Add and add user account to this group.

The synchronization should now succeed. Once the first synchronization has completed, you can remove the user account from the Project Collection Administrators group and the Project Server Sync and the work items should function normally.

Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properties

Article ID: 2591976 - Last Review: September 30, 2011 - Revision: 2.0
APPLIES TO
  • Microsoft Visual Studio Team Foundation Server 2010
Keywords: 
KB2591976

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com