You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps同组织跨项目迁移工作项报VS403417错误咨询

错误原因

你遇到的报错核心信息为:

Microsoft.TeamFoundation.WorkItemTracking.Client.UnexpectedErrorException: 服务器发生异常,请联系Azure DevOps Server管理员。---> System.Web.Services.Protocols.SoapException: VS403417: 指定BypassRules参数时,ChangedBy字段值不能为空

这个报错是Azure DevOps接口的规则校验返回:当调用工作项写入接口时如果传了BypassRules=true参数(用于绕过流程规则强制修改系统字段,比如创建时间、创建人),必须同时给System.ChangedBy(修改人)字段传入有效值,不能留空。
结合你使用的12.0.3版本迁移工具、贴出的配置,以及同组织同模板迁移的场景,报错由三个配置问题叠加触发:

  • 你只开启了UpdateCreatedDate、UpdateCreatedBy两个创建元数据更新开关,没有开启对应的UpdateChangedBy、UpdateChangedDate开关,工具回放工作项历史修订时不会主动填充ChangedBy字段值。
  • FieldMaps配置里残留了测试用的空FieldtoFieldMultiMapConfig块,只有占位用的SourceField1/TargetField1无效映射,会打断正常的字段取值流程,导致工具拿不到源端的ChangedBy值。
  • 你开启了SkipToFinalRevisedWorkItemType: true,这个参数是为跨不同流程模板迁移的场景设计的,12.0.3版本在同模板迁移场景下开启该参数,会触发已知bug,直接跳过历史修订中ChangedBy字段的传参步骤。
修复步骤

按以下顺序调整配置即可解决问题:

  • 找到Processors数组下的WorkItemMigrationConfig节点,补全两个缺失的修改元数据更新开关:
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"UpdateChangedDate": true,
"UpdateChangedBy": true,
  • 删除FieldMaps数组中无效的占位配置块,也就是下面这段没有实际映射逻辑的内容,避免干扰正常字段映射:
{
"$type": "FieldtoFieldMultiMapConfig",
"WorkItemTypeName": "*",
"SourceToTargetMappings": {
"SourceField1": "TargetField1",
"SourceField2": "TargetField2"
}
},
  • 将同节点下的SkipToFinalRevisedWorkItemType参数值从true改为false。你的源和目标项目使用完全相同的流程模板,不需要这个跨模板兼容逻辑,关闭后即可避开12.0.3版本的字段漏传bug。
  • 确认Source和Target节点中的PersonalAccessToken已填入有效值:PAT需要勾选工作项“读取、写入和管理”权限范围,且对应账号在目标项目中拥有“绕过规则更新工作项”的权限(默认项目管理员组拥有该权限)。
  • 修正附件临时路径的转义问题,将AttachmentWorkingPath的值改为"c:\\temp\\WorkItemAttachmentWorkingFolder\\",避免后续迁移附件时触发路径非法错误。
迁移验证

配置修改完成后,先在WorkItemMigrationConfig节点的WorkItemIDs参数中填入单个测试工作项ID(格式为[123],123替换为源项目内任意一个有效工作项ID),执行单工作项迁移测试,确认无报错后,再清空WorkItemIDs参数执行全量迁移即可。


内容的提问来源于stack exchange,提问作者user14315777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:45:45