プロセス テンプレートに関連するエラーを検証して解決する

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

移行インポート プロセスの一環として、データ移行ツールはコレクション内のプロジェクトで使用されるプロセスをチェックします。 フラグが設定されたエラーを修正します。

エラーを解決したら、データ移行ツールの validate コマンドを再実行して、すべてのエラーが修正されたことを確認します。

Note

移行ガイドを使用してインポートを進行することをお勧めします。 このガイドは、必要に応じて技術ドキュメントにリンクしています。

Azure DevOps Server 2019 のリリースでは、TFS データベース インポート サービスのブランドが変更され、Azure DevOps に移行されました。 これには、TfsMigrator が略してデータ移行ツールまたは移行ツールになることが含まれます。 このサービスは、古いインポート サービスとまったく同じように動作します。 TFS をブランド化したオンプレミスの古いバージョンを使用している場合でも、サポートされているバージョンのいずれかにアップグレードする限り、この機能を使用して Azure DevOps に移行できます。

プロセス検証の種類

検証中に、データ移行ツールによって各プロジェクトのターゲット プロセス モデルが決定されます。 次の 2 つのプロセス モデルのいずれかが、コレクション内の各プロジェクトに自動的に割り当てられます。

  • 継承されたプロセス モデル: プロジェクトがアジャイル、スクラム、または CMMI プロセス テンプレートを使用して作成され、カスタマイズされなかった場合。
  • ホストされる XML プロセス モデル: プロジェクト プロセスがカスタマイズされたと思われる場合。 カスタマイズされたプロセスには、ユーザー設定フィールド、作業項目の種類、またはその他の種類のカスタマイズが含まれます。

Hosted XML プロセスがターゲット プロセス モデルである場合、データ移行ツールはカスタマイズを移行できるかどうかを検証します。 データ移行ツールは、検証中に次の 2 つのファイルを生成します。

  • DataMigrationTool.log: コレクション内で検出されたプロセス検証エラーのセットが含まれています。 移行を続行するために検出されたすべてのプロセス エラーを修正します。

  • TryMatchOobProcesses.log: ターゲット プロセス モデルである継承またはホストされた XML の各プロジェクトの一覧です。 Hosted XML プロセス モデルをターゲットに設定されているプロジェクトの場合は、それらがカスタマイズされていると見なされる理由について説明します。 これらのエラーを修正する必要はありませんが、継承プロセス モデルに移行する場合のガイダンスが提供されます。 コレクションがインポートされると、プロジェクトを継承プロセス モデルに移行できることに注意してください。

ほとんどのお客様には、コレクション内にプロジェクトが混在しています。 既定のプロセス テンプレートを使用するプロジェクトもあれば、カスタム プロセス テンプレートを使用するプロジェクトもあります。 データ移行ツールは、各プロジェクトをチェックし、それに応じて検証します。 プロジェクトが混在し、一部が継承プロセスにマップされ、他のプロジェクトがホストされた XML プロセスにマップされる可能性があります。

カスタマイズされていないプロジェクトについては、TryMatchOobProcesses.log確認してエラーがあるかどうかを判断することをお勧めします。 その場合は、データのインポート時にプロジェクトを継承プロセスにマップできるように、それに応じて調整を行います。

システム プロセスへの更新

以前のバージョンの Azure DevOps Server を使い始めた場合、プロジェクトでまだ古いプロセス テンプレートが使用されている可能性があります。 これらのプロジェクトが機能の構成ウィザード使用して更新されていない場合、データ移行ツールはプロセス エラーを検出します。 まれに、プロセスが非常に古い場合は、機能の構成ウィザードでもエラーを解決できません。

表示される可能性があるエラー メッセージの例を次に示します。

Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element PortfolioBacklog is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element BugWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element FeedbackRequestWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element FeedbackResponseWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Team.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField RemainingWork.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Order.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Effort.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Activity.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationStartInformation.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationLaunchInstructions.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationType.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF400572: The Project Process Settings must be configured for this feature to be used.

プロジェクトをカスタマイズしたことがない場合 (フィールドや作業項目の種類などを追加)、これらのエラーの修正は実際には非常に簡単です。 プロセスをカスタマイズした場合、このアプローチは機能しません。 カスタマイズが上書きされないように、プロセス テンプレートを手動で変更する必要があります。

最初に、プロジェクトが開始されたプロセスを把握していることを確認します。 それはスクラム、アジャイルまたはCMMIですか? この例では、アジャイルを想定します。 次に 、GitHub で提供されているプロセス カスタマイズ スクリプト に移動し、リポジトリをダウンロードします。 この例では、Import フォルダー内のコンテンツに焦点を当てます。

ConformProject.ps1 スクリプトを使用して、選択したプロジェクトをアジャイル システム プロセスに準拠します。 これにより、プロジェクト全体がアジャイルに更新されます。

.\ConformProject.ps1 "<collection url>" "<project name>" "c:\process-customization-scripts\import\agile" 

これは、各プロジェクトに対して行ってください。

プロセス エラーを解決する

プロセス テンプレートはカスタマイズされていますか? 古い古いプロセス テンプレートを使用していますか? その場合は、プロセス検証エラーが発生する可能性が最も高くなります。 データ移行ツールは、プロセス テンプレートに対して完全なチェックを実行します。 Azure DevOps Services に対して有効であることを確認するチェックがあります。 調整を行い、コレクションに適用する必要がある可能性があります。

Note

OOB アジャイル、スクラム、または CMMI プロセスを使用している場合は、DataMigrationTool.logにエラーが表示されない可能性があります。 代わりに、エラーのTryMatchOobProcesses.logをチェックします。 エラーが発生しないと、プロジェクトは OOB プロセスにマップされます。

Azure DevOps Services では機能しないカスタマイズがいくつかあります。 サポートされているカスタマイズの 一覧を 確認してください。

古いプロセス テンプレートを使用しているプロジェクトがある場合、データ移行ツールはいくつかのエラーを検出します。 これは、プロセス テンプレートが最新のプロセス テンプレートと一致するように更新されていないためです。 開始するには、プロジェクトごとに機能の 構成ウィザード を実行してみてください。 これにより、最新の機能でプロセス テンプレートの更新が試みられます。 そうすることで、エラー数が大幅に減るはずです。

最後に、プロセス エラーの修正に使用するマシンがあることを確認 witadmin します。 ローカル デスクトップを使用できます。 witadminコマンド ライン ツールは自動スクリプトで使用され、プロセス テンプレートに変更を加えるたびに必要です。

手順 1 - エラーを確認する

DataMigrationTool.logファイルが生成され、検証プロセスで検出されたエラーの一覧が含まれます。 ログを表示するには、ファイルDataMigrationTool.log開きます。 "Validation - Starting validation of project 1" という文字列を検索します。 各プロジェクトが検証されます。 すべてのプロジェクトをスキャンし、[エラー ...] のプレフィックス を含む行を検索します

データ移行ツールによって生成されたプロセス ログ ファイル

検証エラーの一覧については、「プロセスインポートの検証エラーを解決する」を参照してください。 検証エラーごとに、エラー番号、説明、および解決するメソッドを指定しました。

手順 2 - エラーを修正する

エラーがあるプロジェクトとエラーの詳細を特定したら、エラーを修正します。 エラーを修正するには、XML 構文を変更し、変更をプロジェクトに適用する必要があります。

Note

TFS Power Tools を使用してこの作業を実行しないことをお勧めします。 代わりに、XML を手動で変更することを強くお勧めします。

プロジェクトからプロセス テンプレートを取得するには、データ移行ツール コマンドの実行時に /SaveProcesses パラメーターを追加します。

Migrator validate /collection:{collection URL} /tenantDomainName:{name} /region:{region} /SaveProcesses

このコマンドは、プロジェクトから XML を抽出し、ログと同じフォルダーに配置します。 zip ファイルをローカル コンピューターに抽出して、ファイルを編集できるようにします。

次に、XML を修正します。 ファイルのログを DataMigrationTool.log 使用して、各プロジェクトのエラーを特定します。

データ移行ツールによって生成されたプロセス ログ ファイル

一部のエラーでは、コマンドを使用する必要があります witadmin changefield 。 フィールド名の変更は最も一般的な例です。 時間を節約するには、コマンドを witadmin changefield 実行してから、データ移行ツールを再実行することをお勧めします。 これを行うと、修正された名前で XML が再エクスポートされます。 それ以外の場合は、XML 構文のフィールドも手動で修正する必要があります。

修正を行ったら、変更を Azure DevOps Server に適用し直します。 これを行うには、行った変更に応じて、1 つ以上 witadmin のコマンドを実行する必要があります。 これを簡単にするために、プロセスを自動化する PowerShell スクリプトを作成しました。 スクリプトには、プロセス全体に witadmin 準拠するために必要なすべてのコマンドが含まれています。

スクリプトはプロセス カスタマイズ スクリプト取得できます。 import/ConformProject.ps1 スクリプトを使用します。

.\conformproject.ps1 "<collection url>" "<project name>" "<process template folder>"

実行中のプロジェクト プロセス スクリプトに準拠する

スクリプトが完了したら、データ移行ツールを再実行してコレクションを検証します。 データ移行ツールで検証エラーが発生しないまで、手順 1 から 3 に従います。

ヒント

XML witadminを初めて使用する場合は、一度に 1 つの修正を行ってから準拠することをお勧めします。 すべてのエラーが解決されるまで、このループを続行します。

一般的な検証エラー

VS402841: 作業項目の種類のフィールド X には、syncnamechanges=false がありますが、ID フィールドにするルールがあります。 ID フィールドには syncnamechanges=true が必要です。 プロセス テンプレートを更新して、この変更を含めてください。

Azure DevOps Services では、すべての ID フィールドに syncnamechanges=true 属性が必要になるようにルールを追加しました。 Azure DevOps Server では、ルールは適用されません。 そのため、データ移行ツールはこれを問題として識別します。 オンプレミスの Azure DevOps Server でこの変更を行っても、問題は発生しません。

witadmin changefield コマンドを実行します。 コマンドの構文は次のようになります。

witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:fieldname /syncnamechanges:true

コマンドの詳細については、作業項目フィールドの管理をwitadmin changefield参照してください

TF402556: フィールド System.IterationId を適切に定義するには、それにイテレーション ID という名前を付け、その型を整数に設定する必要があります。

このエラーは、古いプロセス テンプレートの場合に一般的です。 各プロジェクトで機能の 構成ウィザード を実行してみてください。 または、次 witadmin のコマンドを実行できます。

witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:fieldname /name:newname

TF402571: 必須要素 BugWorkItems がプロセス構成にありません。

このエラーは通常、プロセスがしばらく更新されていない場合に発生します。 解決するには、 各プロジェクトで機能の構成ウィザード を実行してみてください。

TF402564: XX グローバル リストを定義しました。 許可されるのは 64 個のみです。

既定では、Azure DevOps Services では 64 個のグローバル リストがサポートされます。 多くのビルド パイプラインがある場合は、通常、このエラー全体を実行します。 Build - TeamProjectName という名前のグローバル リストは、新しいビルド パイプラインごとに作成されます。 古いグローバル リストを削除する必要があります。