首页 > 解决方案 > 未完全迁移的积压和链接

问题描述

晚上好,

我一直在玩测试环境以准备迁移以正确配置。目前,我无法让源和目标之间的积压工作正确匹配。如果我查看源代码,我会在积压工作中看到 19 个用户故事、42 个错误和 89 个任务。迁移到测试环境后,我在 backlog 中有 36 个错误。此外,如果我查看各种工作项,我并没有看到所有链接都已迁移。现在,在最后一次运行之后,我在日志中有很多如下所示的行:

[SKIP] Already Exists a Link of type System.LinkTypes.Hierarchy-Reverse where wiSourceL=162, wiSourceR=156, wiTargetL=161, wiTargetR=155

我也有很多行看起来像:

[SKIP] Unable to migrate link where Link of type System.LinkTypes.Hierarchy-Reverse where wiSourceL=53, wiSourceR=48, wiTargetL=53, wiTargetR=48 as target WI has not been migrated

但我知道目标工作项存在。通过交换我在每次运行期间运行的处理器,我在此配置上总共运行了 5 次。最后两次运行是我最后的 WorkItemMigrationConfig。有人看到我错过了什么吗?

配置.json

{
  "ChangeSetMappingFile": null,
  "Source": {
    "$type": "TfsTeamProjectConfig",
    "Collection": "https://source.fdqn/Depreciated%20-%20MRM2%20Web%20App%20Development%20Team",
    "Project": "ProjectName",
    "ReflectedWorkItemIDFieldName": "TfsMigrationTool.ReflectedWorkItemId",
    "AllowCrossProjectLinking": false,
    "AuthenticationMode": "Prompt",
    "PersonalAccessToken": "",
    "LanguageMaps": {
      "AreaPath": "Area",
      "IterationPath": "Iteration"
    }
  },
  "Target": {
    "$type": "TfsTeamProjectConfig",
    "Collection": "https://target.fdqn/TestWeb",
    "Project": "ProjectName",
    "ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
    "AllowCrossProjectLinking": false,
    "AuthenticationMode": "Prompt",
    "PersonalAccessToken": "",
    "LanguageMaps": {
      "AreaPath": "Area",
      "IterationPath": "Iteration"
    }
  },
  "FieldMaps": [
    {
      "$type": "MultiValueConditionalMapConfig",
      "WorkItemTypeName": "*",
      "sourceFieldsAndValues": {
        "Field1": "Value1",
        "Field2": "Value2"
      },
      "targetFieldsAndValues": {
        "Field1": "Value1",
        "Field2": "Value2"
      }
    },
    {
      "$type": "FieldtoFieldMapConfig",
      "WorkItemTypeName": "*",
      "sourceField": "Microsoft.VSTS.Common.BacklogPriority",
      "targetField": "Microsoft.VSTS.Common.StackRank",
      "defaultValue": null
    },
    {
      "$type": "FieldtoFieldMultiMapConfig",
      "WorkItemTypeName": "*",
      "SourceToTargetMappings": {
        "SourceField1": "TargetField1",
        "SourceField2": "TargetField2"
      }
    },
    {
      "$type": "FieldValuetoTagMapConfig",
      "WorkItemTypeName": "*",
      "sourceField": "Microsoft.VSTS.CMMI.Blocked",
      "pattern": "Yes",
      "formatExpression": "{0}"
    },
  ],
  "GitRepoMapping": null,
  "LogLevel": "Information",
  "Processors": [
    {
      "$type": "WorkItemMigrationConfig",
      "Enabled": false,
      "ReplayRevisions": true,
      "PrefixProjectToNodes": false,
      "UpdateCreatedDate": true,
      "UpdateCreatedBy": true,
      "BuildFieldTable": false,
      "AppendMigrationToolSignatureFooter": false,
      "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan') AND [System.Id] < 30",
      "WIQLOrderBit": "[System.Id] asc, [System.ChangedDate] desc",
      "LinkMigration": false,
      "AttachmentMigration": true,
      "AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
      "FixHtmlAttachmentLinks": false,
      "SkipToFinalRevisedWorkItemType": true,
      "WorkItemCreateRetryLimit": 5,
      "FilterWorkItemsThatAlreadyExistInTarget": true,
      "PauseAfterEachWorkItem": false,
      "AttachmentMaxSize": 480000000,
      "CollapseRevisions": false,
      "LinkMigrationSaveEachAsAdded": false,
      "GenerateMigrationComment": false,
      "NodeBasePaths": [],
      "WorkItemIDs": null
    },
    {
        "$type": "TestConfigurationsMigrationConfig",
        "Enabled": false
    },
    {
        "$type": "TestPlansAndSuitesMigrationConfig",
        "Enabled": false
    },
    {
      "$type": "WorkItemMigrationConfig",
      "Enabled": false,
      "ReplayRevisions": true,
      "PrefixProjectToNodes": false,
      "UpdateCreatedDate": true,
      "UpdateCreatedBy": true,
      "BuildFieldTable": false,
      "AppendMigrationToolSignatureFooter": false,
      "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Plan') AND [System.Id] > 33 AND [System.Id] < 60 ",
      "WIQLOrderBit": "[System.Id] asc, [System.ChangedDate] desc",
      "LinkMigration": false,
      "AttachmentMigration": true,
      "AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
      "FixHtmlAttachmentLinks": false,
      "SkipToFinalRevisedWorkItemType": true,
      "WorkItemCreateRetryLimit": 5,
      "FilterWorkItemsThatAlreadyExistInTarget": true,
      "PauseAfterEachWorkItem": false,
      "AttachmentMaxSize": 480000000,
      "CollapseRevisions": false,
      "LinkMigrationSaveEachAsAdded": false,
      "GenerateMigrationComment": false,
      "NodeBasePaths": [],
      "WorkItemIDs": null
    },  
    {
        "$type": "TestConfigurationsMigrationConfig",
        "Enabled": false
    },
    {
        "$type": "TestPlansAndSuitesMigrationConfig",
        "Enabled": false
    },
    {
      "$type": "WorkItemMigrationConfig",
      "Enabled": false,
      "ReplayRevisions": true,
      "PrefixProjectToNodes": false,
      "UpdateCreatedDate": true,
      "UpdateCreatedBy": true,
      "BuildFieldTable": false,
      "AppendMigrationToolSignatureFooter": false,
      "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Plan') AND [System.Id] > 59",
      "WIQLOrderBit": "[System.Id] asc, [System.ChangedDate] desc",
      "LinkMigration": false,
      "AttachmentMigration": true,
      "AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
      "FixHtmlAttachmentLinks": false,
      "SkipToFinalRevisedWorkItemType": true,
      "WorkItemCreateRetryLimit": 5,
      "FilterWorkItemsThatAlreadyExistInTarget": true,
      "PauseAfterEachWorkItem": false,
      "AttachmentMaxSize": 480000000,
      "CollapseRevisions": false,
      "LinkMigrationSaveEachAsAdded": false,
      "GenerateMigrationComment": false,
      "NodeBasePaths": [],
      "WorkItemIDs": null
    },
    {
      "$type": "WorkItemMigrationConfig",
      "Enabled": true,
      "ReplayRevisions": true,
      "PrefixProjectToNodes": false,
      "UpdateCreatedDate": true,
      "UpdateCreatedBy": true,
      "BuildFieldTable": false,
      "AppendMigrationToolSignatureFooter": false,
      "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan')",
      "WIQLOrderBit": "[System.ChangedDate] desc",
      "LinkMigration": true,
      "AttachmentMigration": true,
      "AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
      "FixHtmlAttachmentLinks": false,
      "SkipToFinalRevisedWorkItemType": true,
      "WorkItemCreateRetryLimit": 5,
      "FilterWorkItemsThatAlreadyExistInTarget": false,
      "PauseAfterEachWorkItem": false,
      "AttachmentMaxSize": 480000000,
      "CollapseRevisions": false,
      "LinkMigrationSaveEachAsAdded": false,
      "GenerateMigrationComment": false,
      "NodeBasePaths": [],
      "WorkItemIDs": null
    }
  ],
  "Version": "11.9",
  "workaroundForQuerySOAPBugEnabled": false,
  "WorkItemTypeDefinition": {    
    "Code Review Request": "Task",
    "Code Review Response": "Task",
    "Feedback Request": "Task",
    "Feedback Response": "Task",
    "sourceWorkItemTypeName": "targetWorkItemTypeName"
  },
  "Endpoints": {
    "InMemoryWorkItemEndpoints": [
      {
        "Name": "Source",
        "EndpointEnrichers": null
      },
      {
        "Name": "Target",
        "EndpointEnrichers": null
      }
    ]
  }
}

标签: azure-devops-migration-tools

解决方案


该工具跳过链接是完全正常的。它一次迁移一个工作项,如果链接的工作项还不存在,那么它将跳过该链接。

当它点击链接的另一侧时,它会将链接添加回先前迁移的项目。

在日志中,您将准确看到在迁移过程中加载了多少工作项。


推荐阅读