Jira Cloud Migration Assistant (JCMA) ですべてのボードとフィルターを移行する方法
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
Jira Cloud Migration Assistant 1.10.0 以降を使用して、プロジェクト間のボードとフィルターをクラウドに移行できるようになりました。
目的
このドキュメントでは、プロジェクト横断ボードを Jira Cloud Migration Assistant (JCMA) 経由で移行するための最新の機能フラグの利用方法をご説明します。
重要: 機能フラグは実験段階であることを、サポート、CMM、カスタマーが認識しておく必要があります。機能フラグによって移行に支障が生じた場合、アトラシアンは可能な限りのサポートを提供しますが、修正やインシデント対応は保証されません。機能フラグはすべてのエッジ ケースを網羅していません。機能フラグの利用が唯一の選択肢である場合は、機能フラグを有効にして、移行の完全なテストを行ってください。機能フラグで問題が発生した場合は、手動での回避策をご検討ください。
手順
このガイドでは、次のような特定の機能を取り上げます。
プロジェクト横断ボードとフィルター
移行するプロジェクトに直接関連しないボード
非アクティブなユーザーや削除されたユーザーに紐づくボード/フィルター
移行されないボードが使用しているフィルター (個人用フィルターを含む)
ここでは、確認すべき重要な手順が 2 つあります。
機能フラグが有効である場合、JCMA にはプロジェクト横断ボードまたはすべてのフィルターの移行の進捗が表示されません。代わりに次のように表示される場合があります。
移行の詳細に含まれるすべての項目に緑色のチェックマークがついている
移行ステークホルダーが Migration running または Migration incomplete (インポート側のエラーが発生した場合、または最後の CROSS_PROJECT_DATA 手順)
環境
Jira 7.6 以降
Jira Cloud Migration Assistant の バージョン 1.7.8 以降
サニティー チェック
JCMA で移行計画を実行する管理者ユーザーは、移行されるすべてのプロジェクトに対する「プロジェクトの参照」権限を持っている必要があります。詳細は MIG-1089 バグをご参照ください。
すべてのボードとフィルターを移行する前に、Jira Server のデータベースでいくつかの健全性チェック (と軽微な修正) を実行する必要があります。
JCMA は、フィルターが単一のプロジェクトを参照する場合にのみ、プロジェクトを含むボードを検索します。プロジェクト横断ボードやフィルターを移行する際、JCMA がボードの場所をボード管理者 (所有者) に設定します。ボード管理者またはフィルター所有者が非アクティブである場合は、JCMA によってプロジェクトの場所が適切に割り当てられない可能性があります。ボードやフィルターを正常に移行するために、こうした詳細を確認することをお勧めします。
すべてのボードとフィルターを移行する前に、次の事項をチェックしましょう。
ボードは有効なフィルターに関連付けられている必要があります
ボードの列は有効なステータスに関連付けられている必要があります
クイック フィルターの無効な JQL が修正されている必要があります
メール アドレスなどの個人データが、いずれのフィルターからも削除されている必要があります
共有権限の設定が有効なグループを参照している必要があります
非アクティブなユーザーや削除されたユーザーによって所有/作成されたボードやフィルターが、有効な所有者に割り当てられている必要があります
移行前チェック
次のような変更においては、データベース管理者または SQL クエリの利用方法を知っているユーザーが必要となります。
データベース レベルでのデータの変更が含まれるため、変更を行う際には十分にご注意ください。
移行の成功率を最大限に高めるためにも、ボードとフィルターの移行を試みる前に、サーバー インスタンスで次に示す項目をチェックすることをお勧めします。
存在しないフィルターにリンクされているボード
Jira 管理者が DB からオブジェクトを削除した場合や、Jira のバージョンが古い場合は、データの整合性が失われる可能性があります。また、存在しないフィルターにボードがリンクするような不一致につながる可能性もあります。
さらに、移行を実行する Jira 管理者が UI 経由で対象のフィルターやボードを見つけて修正するための権限 (DB レベルで権限を変更して Jira を再起動した場合を除く) を持っていない可能性があります。
機能しない (壊れた) ボードを修復するには、次のようないくつかの方法があります。
存在しないステータスにリンクされている列をフィルタリングする (オプション)
JCMA の最新バージョンでは、ステータスが欠落しているフィルターを移行できます。これによって、フィルターに依存しているボードが壊れた状態になる可能性があります。そのような箇所をすべて見つけて修正したい場合は、次の方法を実行します。
クイック フィルター内の無効な JQL
フィルターに特殊文字が含まれていると、次のエラーによって移行プロセスが失敗する可能性があります。
project-import We couldn't import Board <Board ID> (プロジェクトインポート ボード <ボード ID> をインポートできませんでした)。理由: クイック フィルターの JQL が無効です: 無効な JQL : JQL クエリのエラー: 「@」文字は予約済みの JQL 文字です。文字列内で囲むか、代わりにエスケープ文字「\u0040」を使用する必要があります。(行 1、文字 34)
メール アドレスについては、次のセクションもご参照ください。
UI によってフィルターの JQL を更新して、サポートされていない文字を削除します。
フィルターに含まれるメール アドレスなどの個人情報
この事前チェックは、次のような問題を防ぐために実行します。
Error in the JQL Query: The character '@' is a reserved JQL character. You must enclose it in a string or use the escape '\u0040' instead. (line 1, character 52)
「@」は予約文字ですが、サーバー/DC で「@」記号を含むフィルターのメール アドレスが二重引用符で囲まれていれば移行が可能となり、フィルターが Cloud サイトで機能するようになります。アカウント ID などに変更する必要はありません。
次の SQL クエリを実行すると、個人データ(メール アドレス)を含むすべてのフィルターを検索して、正しい書式であるかどうかを確認できます。次に例を示します。
project = "ABC" AND reporter = "username@yourcompany.com"
共有権限に無効なグループがある (オプション)
フィルターの共有権限の設定でグループが参照されているものの、そのグループ自体がすでに Jira に存在しないというケースがあります。フィルターは移行されますが、そのフィルターが破損するか、アクセスできなくなる可能性があります。壊れたボードを移行するリスクを軽減したい場合は、移行前にご確認ください。ユーザー & グループのスコープで移行する場合は、参照先のグループが現在のプランに含まれていないと、フィルターが破損する可能性があります。
非アクティブなユーザーや削除されたユーザーが所有するボード/フィルター
移行されたフィルターの所有権が、クラウド上で非アクティブであるユーザーを参照している場合があります。関連するプロジェクト横断ボードの場所は、移行後のプロセスで修正する必要があります。ただし、移行前に所有者を修正するほうが、より実現可能な作業です。
非アクティブなユーザーが所有するボード
修正 1 - Jira UI (ボード設定) でボード (上記の SQL SELECT クエリの出力に記載されたもの) を開き、手動でその所有者を変更します。これが行えない場合は以降の DB 修正のアプローチに進みます。
非アクティブなユーザーが所有するフィルター
修正 1 - Jira UI (ボード/フィルター設定) でフィルター (上記の SELECT SQL 文の出力に記載されたもの) を開いて所有者を変更
削除済みのユーザーが所有するボード
修正 1 - Jira UI (ボード設定) でボード (上記の SELECT SQL 文の出力に記載されたもの) を開いて所有者を変更
削除済みのユーザーが所有するフィルター
修正 1 - Jira UI (ボード/フィルター設定) でフィルター (上記の SELECT SQL 文の出力に記載されたもの) を開いて所有者を変更
マルチプロジェクト ボードの有無を判断する
マルチプロジェクト ボード (と単一プロジェクト ボード) がいくつ存在するのかを確認するには、次の手順に従います。
機能フラグでプロジェクト横断ボードとすべてのフィルターを移行する
初期設定では、JCMA はプロジェクト横断ボードまたはすべてのフィルターを移行しません。この機能は、機能フラグ (ダーク機能とも呼ばれる) の背後に実装されており、有効化する必要があります。機能フラグの使用方法に関する詳細な手順は、「Jira のダーク機能を有効化する」もご参照ください。同様に、移行計画のスコープ外である非公開フィルターも含まれません。
すべてのチェックと変更 (上記のセクションを参照) が完了したら、Jira Server インスタンスで次の機能フラグを追加します。
com.atlassian.jira.migration.export.all.filters
com.atlassian.jira.migration.export.multiprojects.boards
これらのフラグを組み合わせて使用すると、次のものが移行されます
含まれているプロジェクトと関連がないものも含めた、すべてのフィルター (これには個人用フィルターと、現在の計画に含まれていない他のプロジェクトを参照するフィルターも含まれます)
計画内のプロジェクトに関連するすべてのボードと、計画外のプロジェクトを参照するボード (プロジェクト横断ボード)
これらの機能フラグを適用するには、ご利用の Jira Server インスタンスで次の手順に従います。
次の URL に移動します。
${Jira_URL}/secure/admin/jira/views/SiteDarkFeatures!default.jspa
上のフラグのテキストを入力します。
[追加] をクリックします (Jira の再起動は不要です)。
バージョンの非互換性を回避して、移行時間を最小限に抑えるには、1 つの JCMA 計画のみで 2 つのダーク機能を使用する必要があります (下記の推奨アプローチを参照)。
可能である場合は、JCMA によって単一プロジェクトのボードがすべて移行され、プロジェクトの場所にリンクされます。さらに、まだ移行されていないプロジェクトにボードが依存している場合でも、(複数のプロジェクトを参照するフィルターを含む) プロジェクト横断ボードをボード所有者の場所にキープします。
これらのダーク機能を複数の計画に含めると、含まれているすべてのボードとフィルターが再移行されます。これによって、計画の実行中にサーバー側またはクラウド側でボードやフィルターに変更があった場合は、重複が起こる可能性があります。これはコンフィグ ドリフトと呼ばれます (下記を参照)。
つまり、次のいずれかのやり方を選択するのが推奨の手順となります。
両方のダーク機能を有効にします。
完全な JCMA 移行計画 (すべてのプロジェクト) を実行します。
計画が終了したら、両方のダーク機能を無効にします。
または
いずれのダーク機能も有効化しません。
JCMA でプロジェクトを移行します (お客様にとっての最適なシナリオに応じて、1 つまたは複数の計画)。
すべてのプロジェクトを移行したら、両方のダーク機能を有効にします。
課題 1 つだけを持つダミー プロジェクトを Jira Server に作成します。
JCMA 移行計画を、ダミー プロジェクトのみで実行します。
計画が終了したら、両方のダーク機能を無効にします。
既知の問題
- MIG-1648Getting issue details... STATUS
コンフィグ ドリフト
機能が何度か移行されると、コンフィグ ドリフトが起こる可能性があります。コンフィグ ドリフトは通常、移行のフェーズ間、または JCMA で移行計画が実行されている間にサーバー側の設定が変更されると発生します。また、クラウド側に更新があった場合にも発生する可能性があります。
フィルターとボードでは、次のようなケースでコンフィグ ドリフトが発生する可能性があります。
複数の計画 (または移行フェーズ) の期間中に両方の機能フラグ (上記) を設定した場合
計画を実行中 (機能フラグの有無にかかわらず)、あるプロジェクトに関連するフィルターまたはボードを別のプロジェクトに関連するものに変更した場合
後者が起こることは滅多にありませんが、機能フラグを有効にしたまま、ボードまたはフィルターを複数回移行するのはリスクがあることを理解しましょう。
計画間での変更 | 結果 | 特別な操作 |
---|---|---|
サーバーでフィルター (JQL) を変更 | クラウドでの変更はありません | 再移行する前に、クラウドのフィルター (とボード) を削除する |
クラウドでフィルター (JQL) を変更 | クラウドでの変更はありません | |
サーバーでボード (設定) を変更 | クラウドでボードの設定を更新 | |
クラウドでボード (設定) を変更 | クラウドでのボード設定の変更が失われました | クラウドで変更を再実装する |