Skip to content

[Bug]: Assignee (AssignedTo, ResolvedBy, ClosedBy) is set to migration user #2869

@JDAVF

Description

@JDAVF

Version

  • I confirm that I am using the latest version

Source Version

Azure DevOps Server 2022

Target Version

Azure DevOps Service

Relevant configuration

// We disabled that because the usernames have chars like ö in it.
      "StringManipulatorTool": {
        "Enabled": false
      },
      "TfsUserMappingTool": {
        "Enabled": true,
        "UserMappingFile": "D:\\Temp\\userExport.json",
        "MatchUsersByEmail": true,
        "IdentityFieldsToCheck": [
          "System.AssignedTo",
          "System.ChangedBy",
          "System.CreatedBy",
          "Microsoft.VSTS.Common.ActivatedBy",
          "Microsoft.VSTS.Common.ResolvedBy",
          "Microsoft.VSTS.Common.ClosedBy"
        ]
      }



    "Processors": [
      {
        "ProcessorType": "TfsWorkItemMigrationProcessor",
        "Enabled": true,
        "UpdateCreatedDate": true,
        "UpdateCreatedBy": true,
        //"WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject AND [System.Id] > 9000 and [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
        "WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject and [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
        "FixHtmlAttachmentLinks": true,
        "WorkItemCreateRetryLimit": 5,
        "FilterWorkItemsThatAlreadyExistInTarget": false,
        "PauseAfterEachWorkItem": false,
        "AttachRevisionHistory": false,
        "GenerateMigrationComment": false,
        "SourceName": "Source",
        "TargetName": "Target",
        "WorkItemIDs": [],
        "MaxGracefulFailures": 4,
        "SkipRevisionWithInvalidIterationPath": false,
        "SkipRevisionWithInvalidAreaPath": false
      },

Relevant log output

Variant 1:
[11:39:09 DBG] [16.2.9] ###################################################################################### 
[11:39:09 DBG] [16.2.9] ProcessWorkItem: 9005 
[11:39:09 DBG] [16.2.9] ###################################################################################### 
[11:39:09 DBG] [16.2.9] WorkItemQuery: ===========GetWorkItems============= 
..
[11:39:09 DBG] [16.2.9] Query sent 
[11:39:09 INF] [16.2.9] [                Task][Complete:   472/8132][sid:  9005|Rev:  8][tid:  null | Work Item has 8 revisions and revision migration is set to true 
[11:39:09 DBG] [16.2.9] TfsRevisionManagerTool::EnforceDatesMustBeIncreasing 
[11:39:09 INF] [16.2.9] Source: Found 8 revisions to migrate on  Work item:Source 
[11:39:09 DBG] [16.2.9] Source: RevisionsToMigrate:---------------------------------------------------- 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:0 - Number:1 - ChangedDate:"2025-06-04T14:03:12.3400000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:1 - Number:2 - ChangedDate:"2025-06-04T14:03:37.0700000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:2 - Number:3 - ChangedDate:"2025-06-05T08:49:17.7870000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:3 - Number:4 - ChangedDate:"2025-06-05T08:49:20.7470000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:4 - Number:5 - ChangedDate:"2025-06-05T09:00:04.3570000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:5 - Number:6 - ChangedDate:"2025-06-05T09:05:43.0730000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:6 - Number:7 - ChangedDate:"2025-06-10T17:03:47.3100000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:7 - Number:8 - ChangedDate:"2025-06-13T17:17:26.6230000+02:00" 
[11:39:09 DBG] [16.2.9] Source: RevisionsToMigrate:---------------------------------------------------- 
[11:39:09 DBG] [16.2.9] Target: RevisionsToMigrate: No revisions to migrate 
[11:39:09 DBG] [16.2.9] TfsRevisionManagerTool::GetRevisionsToMigrate: Raw Source Has 8 revisions 
[11:39:09 DBG] [16.2.9] TfsRevisionManagerTool::GetRevisionsToMigrate::RemoveRevisionsAlreadyOnTarget Target is null 
[11:39:09 INF] [16.2.9] Source: Found 8 revisions to migrate on  Work item:Source 
[11:39:09 DBG] [16.2.9] Source: RevisionsToMigrate:---------------------------------------------------- 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:0 - Number:1 - ChangedDate:"2025-06-04T14:03:12.3400000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:1 - Number:2 - ChangedDate:"2025-06-04T14:03:37.0700000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:2 - Number:3 - ChangedDate:"2025-06-05T08:49:17.7870000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:3 - Number:4 - ChangedDate:"2025-06-05T08:49:20.7470000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:4 - Number:5 - ChangedDate:"2025-06-05T09:00:04.3570000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:5 - Number:6 - ChangedDate:"2025-06-05T09:05:43.0730000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:6 - Number:7 - ChangedDate:"2025-06-10T17:03:47.3100000+02:00" 
[11:39:09 DBG] [16.2.9] RevisionsToMigrate: Index:7 - Number:8 - ChangedDate:"2025-06-13T17:17:26.6230000+02:00" 
[11:39:09 DBG] [16.2.9] Source: RevisionsToMigrate:---------------------------------------------------- 
..
[11:39:09 DBG] [16.2.9] TfsUserMappingTool::MapUserIdentityField [ReferenceName|Microsoft.VSTS.Common.ClosedBy] 
[11:39:09 DBG] [16.2.9] TfsUserMappingTool::MapUserIdentityField [ReferenceName|Microsoft.VSTS.Common.ActivatedBy] 
[11:39:09 DBG] [16.2.9] TfsUserMappingTool::MapUserIdentityField [ReferenceName|System.CreatedBy] 
[11:39:09 DBG] [16.2.9] PopulateWorkItem:FieldUpdate: System.CreatedBy | Source:ORIGINALUSER Target:CLOUDUSER
[11:39:09 DBG] [16.2.9] StringManipulatorTool::ProcessString 
[11:39:09 DBG] [16.2.9] StringManipulatorTool::ProcessString::Disabled 
[11:39:09 DBG] [16.2.9] PopulateWorkItem:FieldUpdate: System.CreatedDate | Source:"2025-06-04T14:03:12.3400000+02:00" Target:"2025-06-04T14:03:12.3400000+02:00" 
[11:39:09 DBG] [16.2.9] TfsUserMappingTool::MapUserIdentityField [ReferenceName|System.AssignedTo] 
[11:39:09 DBG] [16.2.9] PopulateWorkItem:FieldUpdate: System.AssignedTo | Source: Target:MIGRATIONUSER

[11:39:09 DBG] [16.2.9] TfsExtensions::SaveToAzureDevOps 
[11:39:09 DBG] [16.2.9] TfsExtensions::SaveToAzureDevOps: ChangedBy: ORGINALUSER, AuthorisedBy: MIGRATIONUSER
[11:39:10 INF] [16.2.9] [                Task][Complete:   472/8132][sid:  9005|Rev:  8][tid:  null |  Saved TargetWorkItem 551852. Replayed revision 1 of 8 

Variant 2:
[11:39:21 INF] [16.2.9] [                Task][Complete:   472/8132][sid:  9005|Rev:  8][tid:  null |  Processing Revision [7] 
[11:39:21 DBG] [16.2.9] TfsUserMappingTool::MapUserIdentityField [ReferenceName|Microsoft.VSTS.Common.ClosedBy] 
[11:39:21 DBG] [16.2.9] PopulateWorkItem:FieldUpdate: Microsoft.VSTS.Common.ClosedBy | Source:ORGINALUSER Target:MIGRATIONUSER

What happened?

The migration is working successfully, but assignee are changed

  1. Work item (bug, task) is created
    Bug-Variant 1: "Assigned To" is empy in the source, but is set to migration user
  2. Work item is closed: ClosedBy is set to correct user
  3. Work item is updated (attachment or link added)
    Bug-Variant 2: ClosedBy is changed from the correct user to migration user

Debug in Visual Studio

  • Visual Studio Debug

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    To do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions