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
TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 7/28/2011 1:09:36 PM
Assembly: Microsoft.TeamFoundation.Framework.Server, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Name: TFSJobAgent
Process Id: 3132
Thread Id: 5948
Account name: domain\TFSServiceAccount
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.Session.ProjectSyncExecutor.ExecuteSerial(IEnumerable`1 syncOrchestrators)
at Microsoft.TeamFoundation.Sync.JobExtension.JobServicePlugin.Run(TeamFoundationRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime jobQueueTime, String& resultMessage)
This is a bug in the process that performs the synchronization.
Temporarily provide the non-administrative user administrative permissions to allow the synchronization to complete.
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:
<trace autoflush="false" indentsize="4">
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\jobagent.log" />
<remove name="Default" />
<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" />
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.
for other considerations.
Article ID: 2591976 - Last Review: September 30, 2011 - Revision: 2.0
- Microsoft Visual Studio Team Foundation Server 2010