Версия 8.9.2 - когда я запускаю миграцию Azure DevOps в Azure DevOps с использованием базового процесса Scrum (модифицированного унаследованным процессом, который добавляет ReflectedWorkItemId в WIT), я наблюдаю исключения сохранения для небольшого процента рабочих элементов во время миграции. После миграции я обнаружил, что созданы пустые рабочие элементы без заголовка. Пример:

(Идентификатор сеанса: 5c74594c-ad96-4d2c-a056-8aec8e35e9f8)

[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Work Item has 10 revisions and revision migration is set to True
===============================================================================================
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Found 10 revisions to migrate on  Work item:120
===============================================================================================
[                Task][Complete: 1/10][sid:120   |Rev:1  ][tid:null   |  Processing Revision [1]
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | ...FAILED to Save
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Custom.ReflectedWorkItemId (ReflectedWorkItemId) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.BacklogPriority (Backlog Priority) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.CMMI.Blocked (Blocked) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Build.IntegrationBuild (Integration Build) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.Priority (Priority) | 2
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.ClosedBy (Closed By) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.ClosedDate (Closed Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.ActivatedBy (Activated By) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.ActivatedDate (Activated Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.StateChangeDate (State Change Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Common.Activity (Activity) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Microsoft.VSTS.Scheduling.RemainingWork (Remaining Work) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.BoardLane (Board Lane) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.BoardColumnDone (Board Column Done) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.BoardColumn (Board Column) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Tags (Tags) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.RelatedLinkCount (Related Link Count) | 0
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.History (History) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Description (Description) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.CreatedBy (Created By) | Lori Y
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.CreatedDate (Created Date) | 1/9/2019 8:40:17 AM
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.WorkItemType (Work Item Type) | Task
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AssignedTo (Assigned To) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Reason (Reason) | New task
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.ChangedBy (Changed By) | Taylor, Simon Z
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Rev (Rev) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Watermark (Watermark) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AuthorizedDate (Authorized Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.State (State) | To Do
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Title (Title) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AuthorizedAs (Authorized As) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AreaId (Area ID) | 23
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Id (ID) | 0
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.ChangedDate (Changed Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.RevisedDate (Revised Date) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AreaPath (Area Path) | Oit migration test
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.NodeName (Node Name) | Oit migration test
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AttachedFileCount (Attached File Count) | 0
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.HyperLinkCount (Hyperlink Count) | 0
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.CommentCount (Comment Count) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.RemoteLinkCount (Remote Link Count) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.Parent (Parent) | 
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.TeamProject (Team Project) | Oit migration test
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.ExternalLinkCount (External Link Count) | 0
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.IterationId (Iteration ID) | 23
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.IterationPath (Iteration Path) | Oit migration test
[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | System.AggregateException: One or more errors occurred. ---> Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Page not found.
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<HandleResponseAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__51.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__47`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__28`1.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at VstsSyncMigrator.Engine.WorkItemMigrationContext.ReplayRevisions(List`1 revisionsToMigrate, WorkItem sourceWorkItem, WorkItem targetWorkItem, Project destProject, WorkItemStoreContext sourceStore, Int32 current, WorkItemStoreContext targetStore) in D:\a\1\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 394
---> (Inner Exception #0) Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Page not found.
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<HandleResponseAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__51.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__47`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__28`1.MoveNext()<---

[Product Backlog Item][Complete: 1/10][sid:120   |Rev:10 ][tid:null   | Average time of 1:644 seconds per work item and 0 hours 0 minutes 16:440 seconds estimated to completion

Я воспроизвел эту ошибку, выполнив следующие действия: 1. Настройте измененный / унаследованный процесс Scrum «Миграция» с добавлением ReflectedWorkItemId в соответствующие WIT в двух отдельных организациях Azure DevOps. 2. Настройте исходный и целевой проекты «Тест миграции 2», используя процесс миграции, настроенный в (1). 3. Создайте и сохраните WIT элемента невыполненного журнала продукта в исходном проекте с заголовком «Проверка изменения PBI на задачу». 4. Измените тип только что созданного WIT на тип Task. Решите проблему с полем «Состояние», изменив значение «Новое» на «Задачи» и сохраните 5. Настройте конфигурацию configuration.json на основе сгенерированного по умолчанию ("init") json с типичными модификациями для каждого видео (карты пустых полей и т. Д.). Включите процессор итераций и процессор WIT. Измените QueryBit для процессора WIT, чтобы исключить только WIT Test Suite и Test Plan. Установите ReplayRevisions на true. 6. Запустите миграцию (на одном WIT, созданном и измененном в (2) и (3)). Воспроизведена ошибка:

(Идентификатор сеанса: 6984b357-03ec-401d-ba03-7d43c84c4c6e)

Found 'Custom.ReflectedWorkItemId' in this project, proceeding.
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Work Item has 2 revisions and revision migration is set to True
===============================================================================================
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Found 2 revisions to migrate on  Work item:150
===============================================================================================
[Product Backlog Item][Complete:1/1][sid:150   |Rev:1  ][tid:null   |  Processing Revision [1]
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | ...FAILED to Save
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Custom.ReflectedWorkItemId (ReflectedWorkItemId) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.BacklogPriority (Backlog Priority) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.AcceptanceCriteria (Acceptance Criteria) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Scheduling.Effort (Effort) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.BusinessValue (Business Value) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Build.IntegrationBuild (Integration Build) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.ValueArea (Value Area) | Business
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.Priority (Priority) | 2
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.ClosedBy (Closed By) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.ClosedDate (Closed Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.ActivatedBy (Activated By) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.ActivatedDate (Activated Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | Microsoft.VSTS.Common.StateChangeDate (State Change Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.BoardLane (Board Lane) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.BoardColumnDone (Board Column Done) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.BoardColumn (Board Column) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Tags (Tags) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.RelatedLinkCount (Related Link Count) | 0
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.History (History) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Description (Description) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.CreatedBy (Created By) | Taylor, Simon Z
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.CreatedDate (Created Date) | 5/11/2020 2:07:59 PM
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.WorkItemType (Work Item Type) | Product Backlog Item
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AssignedTo (Assigned To) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Reason (Reason) | New backlog item
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.ChangedBy (Changed By) | Taylor, Simon Z
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Rev (Rev) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Watermark (Watermark) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AuthorizedDate (Authorized Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.State (State) | New
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Title (Title) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AuthorizedAs (Authorized As) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AreaId (Area ID) | 40
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Id (ID) | 0
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.ChangedDate (Changed Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.RevisedDate (Revised Date) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AreaPath (Area Path) | Oit migration test 2
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.NodeName (Node Name) | Oit migration test 2
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AttachedFileCount (Attached File Count) | 0
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.HyperLinkCount (Hyperlink Count) | 0
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.CommentCount (Comment Count) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.RemoteLinkCount (Remote Link Count) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.Parent (Parent) | 
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.TeamProject (Team Project) | Oit migration test 2
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.ExternalLinkCount (External Link Count) | 0
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.IterationId (Iteration ID) | 40
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.IterationPath (Iteration Path) | Oit migration test 2
[                Task][Complete:1/1][sid:150   |Rev:2  ][tid:null   | System.AggregateException: One or more errors occurred. ---> Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Page not found.
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<HandleResponseAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__51.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__47`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

Перенесли с: https://github.com/nkdAgility/azure-devops -migration-tools / issues / 485

1
MrHinsh - Martin Hinshelwood 14 Июн 2020 в 12:22

1 ответ

Лучший ответ

Изучив документацию, я обнаружил элемент конфигурации SkipToFinalRevisedWorkItemType для процессора VstsSyncMigrator.Engine.Configuration.Processing.WorkItemMigrationConfig. Документы немного загадочны, но я попытался установить для этого элемента конфигурации значение true и обнаружил, что он устранил исключения сохранения, что привело к успешной миграции и отсутствию рабочих элементов с пустыми заголовками.

Я просмотрел все проблемы и не нашел упоминания о SkipToFinalRevisedWorkItemType, за исключением одной закрытой проблемы, которая включала список configuration.json.

Если предполагаемая функциональность SkipToFinalRevisedWorkItemType предназначена для устранения этого исключения сохранения, я бы предложил обновление документации, чтобы указать, что типы рабочих элементов, которые были изменены, не будут сохраняться при воспроизведении ревизий, если для SkipToFinalRevisedWorkItemType не установлено значение true. В идеале было бы добавлено обновление кода, которое привело бы к более изящной / информативной обработке исключений, если бы не функциональность, которая могла бы успешно перемещаться по изменениям типа рабочего элемента при воспроизведении ревизий.

Если ни один из этих вариантов в настоящее время невозможен, то этот вопрос может быть закрыт для использования в качестве номинальной документации.

1
MrHinsh - Martin Hinshelwood 14 Июн 2020 в 09:22