Jira の移行前のチェックリスト

移行は、複雑で困難なプロセスになることがあります。

Atlassian ではお客様をサポートするために、データを Jira Server または Data Center からクラウドに移行する準備が整っていることを確認するために必要なすべての項目を示したチェックリストを作成しました。

一般的なエラーを防ぐため、移行を試す前に次の確認を完了します。

はじめる前に

1. 移行方法を確認する

確認する内容は、利用する移行方法によって異なります。このチェックリストでは、次の方法を網羅しています。

次に、選択した移行メソッドに対応した移行前のチェックに従います。

2. 準備する

移行前のチェックを完了するには、以下へのアクセス権が必要な場合があります。

Jira Cloud Migration Assistant のチェックリスト

Jira Cloud Migration Assistant は、データに一般的なエラーがないかどうかを自動的に確認します。次の点が確認されます。

  • すべてのユーザーが有効なメール アドレスを持っていること

  • すべてのユーザーが一意のメール アドレスを持っていること

  • プロジェクト名またはキーがクラウド内のプロジェクト名またはキーと競合していないこと

  • 移行アシスタントが最新かどうか

ただし、移行アシスタントはすべてを確認するわけではありません。このため、移行を開始する前に次のリストを使用したチェックを行う必要があります。

1. ユーザーの移行計画を作成する (必須)

外部ディレクトリ

アクティブな外部ユーザー ベースを同期して、ユーザー移行戦略の一環としてすべてのユーザーやグループが適切に移行されていることを確認します。また、これによって、移行中にデータが適切なユーザーに引き続きリンクされるようにします。

外部プロバイダを使用してユーザーを管理している場合、移行前に、それらのユーザーがアクティブで、内部ユーザー ベースと同期されていることを確認します。 

Jira Server の UI を使用した同期

  1. アプリケーションの右上にある歯車アイコンをクリックします。

  2. [ユーザー管理] を選択します。

  3. [ユーザー ディレクトリ] を選択します。

  4. 最後に、[同期] を選択します。

サポート Zip を使用した検証

Epoch タイムスタンプは https://www.epochconverter.com/ などのサイトで照合できます。

必要なディレクトリがアクティブに設定されていることを確認します。


前回の外部ユーザー同期の検証

1 2 3 4 5 6 7 grep "com.atlassian.crowd.directory.sync.laststartsynctime" <Support Zip Location>/auth-cfg/directoryConfigurationSummary.txt Example Output: com.atlassian.crowd.directory.sync.laststartsynctime: 1586922783853 com.atlassian.crowd.directory.sync.laststartsynctime: 1586911983804 com.atlassian.crowd.directory.sync.laststartsynctime: 1579025414214


アクティブな外部ディレクトリの検証

1 2 3 4 5 6 7 8 9 grep "Active:" <Support Zip Location>/auth-cfg/directoryConfigurationSummary.txt Example Output: Active: true Active: true Active: true Active: false Active: true

Jira Cloud Migration Assistant は次を移行します。

  • すべてのユーザーまたはグループ

  • 選択したプロジェクトに関連するユーザーとグループ

2. Jira Server のバージョンを確認する (必須)

Jira がサポート対象バージョンで実行していることを確認します。サポート対象のバージョンではない場合、移行アシスタントは機能しません。

Jira Server の UI を使用した検証

  1. アプリケーションの右上にある歯車アイコンをクリックします。

  2. [システム] を選択します

  3. 左側のナビゲーション パネルにある [システム情報] を選択します

  4. 最後に、Jira のバージョンを確認します

 

サポート Zip を使用した検証
製品バージョンの検証

1 2 3 4 5 grep "<product name" <Support Zip Location>/application-properties/application.xml Example Output: <product name="Jira" version="8.7.1"/>

3. 重複しているメール アドレスを修正する (必須)

メール アドレスの重複は Jira Cloud でサポートされていないため、これらのユーザーは Jira Cloud Migration Assistant では移行できません。エラーを回避するために、移行前にメール アドレスの重複を見つけて修正する必要があります。ユーザー情報が LDAP サーバーで管理されている場合は、移行前にそこでメールを更新して、Jira と同期する必要があります。ユーザー情報をローカルで管理している場合は、Jira Server または Data Center の UI でそれらを修正できます。 

SQL を使用した検証 (Postgres でテスト済み)

次のクエリを使用して、重複しているメール アドレス (存在する場合)、これらのアドレスの重複回数、そのメール アドレスに割り当てられたユーザーを見つけられます。

1 2 select lower_email_address, count(lower_email_address), array_agg(user_name) as "Users with Dupe E-Mail" from cwd_user group by lower_email_address having count(lower_email_address) > 1;

4. 適切な権限を持っていることを確認する (必須)

移行を実行するユーザーが、次の権限を持っていることを確認します。

5. グループ名の競合を確認する (必須)

クラウド サイトのグループの名前がサーバー サイトのグループと異なることを確認します (意図的に統合しようとしている場合を除く)。「移行アシスタントがグループ名の競合を処理する方法」をご確認ください。

一部の移行シナリオでは、サーバー サイトにアドオン ユーザーが発生することがあります。サーバーの世界においてアドオン ユーザーは一般的ではないため、クラウドに戻す移行の際にいくつかの問題が発生する可能性があります。移行の前に、これらのアドオン ユーザーを削除または更新します。

SQL を使用した検証 (Postgres でテスト済み)

次のクエリを使用してこれらのユーザーを見つけ、削除するかメール アドレスを @connect.atlassian.com 以外のものに更新します。

1 2 --ADD-ON USERS - TESTED ON POSTGRESQL select * from cwd_user where lower_email_address like '%connect.atlassian.com%';

6. ファイアウォールの許可ルールを更新する (必須)

移行アシスタントは移行を実行するためにアトラシアンのドメインに接続します。ファイアウォールまたはリバース プロキシによってドメインがブロックされると、移行は失敗します。

アトラシアンのドメインに接続できることの検証

移行前に、「アトラシアンのクラウド製品の IP 範囲とドメイン」に記載されているドメインがセキュリティ ルールでブロックされていないことを確認します。さらに、次のエンドポイントを許可します。

7. アプリの移行方法を決定する (必須)

Jira Cloud Migration Assistant は、アプリまたはアドオン データを移行しません。移行するアプリ データがある場合は、データを適切に移行する方法を事前にベンダーに問い合わせてください。これには、Portfolio for Jira などの Atlassian のアプリが含まれます。Portfolio for Jira を移行する必要がある場合は、関連する機能リクエストをウォッチすると最新情報を受け取れます。

Jira Cloud 内では Portfolio はスタンドアロン アプリとしては提供されていませんが、Jira Software Cloud Premium の Advanced Roadmaps として機能を利用できます。詳細情報

8. パブリック アクセス設定を確認する (必須)

Jira Server または Jira Cloud サイトをインターネットに公開するように構成できます。コンテンツを意図的に公開する場合を除いて、プロジェクト権限を確認する必要があります。Jira Server に公開プロジェクトがある場合は、クラウドへの移行前にそれらの匿名アクセスのセットアップを削除します。これらのプロジェクトは移行後にいつでも公開できます。パブリック アクセス設定のチェックに関する詳細。 

SQL を使用した検証 (Postgres でテスト済み)

プロジェクト

これにより、プロジェクトの閲覧権限がすべてのユーザーに設定されているプロジェクトを見つけることができます。

1 2 3 4 5 6 7 8 9 10 11 12 13 // get list of project permission schemes which has share type as "Anyone" (i.e. open) SELECT p.id, p.pname, ps.name FROM project p INNER JOIN nodeassociation na ON p.id = na.source_node_id INNER JOIN schemepermissions sp ON na.sink_node_id = sp.scheme INNER JOIN permissionscheme ps ON na.sink_node_id = ps.id WHERE na.source_node_entity = 'Project' AND na.sink_node_entity = 'PermissionScheme' AND sp.permission_key='BROWSE_PROJECTS' AND sp.perm_type='group' AND sp.perm_parameter is null

 

フィルター

"全員で共有" 共有タイプ (グローバル) のフィルターの一覧を取得します。

1 2 3 4 5 // get list of filters which has share type as "share with everyone" (i.e. global) SELECT sr.filtername, sp.sharetype AS current_share_state, sr.username AS owner_name, sr.reqcontent AS JQL FROM searchrequest sr INNER JOIN sharepermissions sp ON sp.entityid = sr.id WHERE sp.sharetype='global' and sp.entitytype ='SearchRequest';

 

アジャイルボード

"全員で共有" 共有タイプ (グローバルなど) のアジャイル ボードのリストを取得します。

1 2 3 4 5 6 // get list of Agile boards which has share type as "share with everyone" (i.e. global) SELECT DISTINCT "rv"."NAME" as "Board Name", sr.filtername, sp.sharetype AS current_share_state, sr.username AS owner_name FROM "AO_60DB71_RAPIDVIEW" as rv INNER JOIN searchrequest sr ON sr.id = rv."SAVED_FILTER_ID" INNER JOIN sharepermissions sp ON sp.entityid = sr.id WHERE sp.sharetype='global' and sp.entitytype ='SearchRequest';

 

ダッシュボード

"全員で共有" 共有タイプ (グローバル) のダッシュボードの一覧を取得します。

1 2 3 4 5 6 // get list of Dashboard which has share type as "share with everyone" (i.e. global) SELECT DISTINCT pp.id as Dashboard_Id, pp.pagename AS Dashboard_name, sp.sharetype AS current_share_state, pp.username AS owner_name FROM portalpage pp INNER JOIN sharepermissions sp ON sp.entityid = pp.id WHERE sp.sharetype='global' and sp.entitytype ='PortalPage' ORDER BY pp.id;

9. サーバーのセットアップを確認する (必須)

移行する課題またはプロジェクトの量によっては、移行全体のクラッシュの原因になりうる OutOfMemory エラーが Jira Server で発生する場合があります。これを防ぐため、「Jira アプリケーションのメモリの容量を増やす」に記載されているパラメーターを確認して、アプリケーションが 4GB 以上のヒープ割り当てで実行されていることを確認します。

また、オープンなファイルの制限を確認します。32768 になるべく近い数が理想的です。システムに設定されるオープンなファイルの数は、Linux ディストリビューションに応じて異なる場合があります。これをシステム コマンド経由で確認する方法が不明な場合は、サポート Zip を作成して application-properties/application.xml ファイルを開き、<max-file-descriptor> を検索します。この数が 32768 に近い場合は、必要に応じて調整します。詳細については、「Too many open files エラー」ドキュメントでご確認ください。これは、Windows を実行している場合には適用されません。

サポート Zip を使用した検証

Xmx および Xms の値が 4096m または 4g 以上であることを確認します。

1 2 3 4 5 grep -i "xmx"" <Support Zip Location>/application-properties/application.xml Example Output: <JVM-Input-Arguments>-Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Xms4g -Xmx4g

<max-file-descriptor> の値が 32768 に近いことを確認します

1 2 3 4 5 grep -i "<max-file-descriptor>"" <Support Zip Location>/application-properties/application.xml Example Output: <max-file-descriptor>32,000</max-file-descriptor>

ヒープ サイズを検証する別の方法

Linux の場合

/jira-installation-directory/bin/setenv.sh ファイルに移動し、次の両方のパラメーターが 4096m または 4g (メガバイトではなくギガバイトで設定されている場合) を上回っていることを確認します。

1 2 JVM_MINIMUM_MEMORY="4096m" JVM_MAXIMUM_MEMORY="4096m"


Windows の場合 (サービスとして実行していない場合) 

/jira-installation-directory/bin/setenv.bat ファイルに移動し、次の両方のパラメーターが 4096m または 4g (メガバイトではなくギガバイトで設定されている場合) を上回っていることを確認します。

1 2 JVM_MINIMUM_MEMORY="4096m" JVM_MAXIMUM_MEMORY="4096m"


Windows の場合 (サービスとして実行している場合)

この記事の手順に従います。

10. サーバーのタイムゾーンを確認する (クラウド サイトを統合する場合) (必須)

Jira Cloud サイトを統合するために移行アシスタントを使用している場合、課題のタイムスタンプのタイムゾーンがわずかに変わることがあります。Jira Cloud は UTC を使用します。Jira Server インスタンスがこれ以外のタイムゾーンを使用している場合、UTC との時差に基づいて時間が変更されます。

回避策として、こちらの記載に従い、Jira Server インスタンスの -Duser.timezone=UTC にシステム フラグを追加します。 

Jira Server の UI を使用した検証

サーバーのタイムゾーンを確認するには、次の手順を実行します。

  1. アプリケーションの右上にある歯車アイコンをクリックします。

  2. [システム] を選択します

  3. 左側のナビゲーション パネルにある [システム情報] を選択します

  4. 最後に、jvm.system.timezone を見つけます。

 

サポート Zip を使用した検証

サーバーのタイムゾーンを検証するには次のクエリを使用できます。

1 2 3 4 5 grep "<jvm.system.timezone>" <Support Zip Location>/application-properties/application.xml Example Output: <jvm.system.timezone>America/New_York</jvm.system.timezone>

11. 共有されている構成名の重複を修正する (推奨)

移行での競合を防ぐために、クラウド サイトの共有設定と同じ名前を持つ、サーバー インスタンスの共有設定 (ワークフローまたは権限スキーム) の名前を変更します。競合が見つかった場合、移行中に設定の名前が変更される場合があります

12. ストレージの上限を超えていないことを確認する (推奨)

Atlassian のクラウド プランには個別のストレージ制限があります。移行前に、現在使用しているディスク領域と、弊社のクラウド ストレージのドキュメントをご確認ください。 

13. サーバー インスタンスを準備する (推奨)

サーバー データが正常に移行されるように、データベース整合性チェッカー (Jira Server のネイティブ機能) と Atlassian Marketplace の Integrity Check for Jira アプリを使用して、データのステータスを確認します。

他のチェックおよび実行すべきアクションは次のとおりです。

  • すべての必須フィールドが値を持ち、null が使用されていないこと

  • 移行したいアーカイブ済みのプロジェクトを再有効化していること

  • 移行した非アクティブなユーザー ディレクトリを再有効化していること

データのクリーン アップの詳細については、「移行前のサーバー インスタンスのクリーン アップ」を参照してください。

14. クラウド サイトを準備する (推奨)

クラウド サイトのセットアップ時には次の点を考慮します。

  • クラウド サイトでは、サーバー サイトと同じ Jira 製品が有効化されている必要があります (Jira Service Management (旧 Jira Service Desk) を除く)。たとえば、サーバー サイトに Jira Core と Jira Software がある場合は、Jira Core プロジェクトを移行していない場合でもクラウド サイト上で両方が必要になります。これは、すべてのユーザーとグループを正常に移行するためです。移行後にこれらの製品を使用しない場合は、関連製品の無料トライアルをセットアップしてから移行後にそれらを無効化します。

  • クラウド サイトの言語が、サーバー サイトの言語と同じであることを確認します。言語が異なる場合、一部のフィールドが適切に移行されない場合があります。

  • Atlassian Access を使用する場合は、移行前にそれをセットアップする必要があります。

15. データのバックアップを作成する (推奨)

移行を実行する前に、現在の Jira Server サイトをバックアップすることをおすすめします。移行先の Cloud サイトに既存のデータがある場合、同様に Jira Cloud サイトもバックアップします。

16. テスト移行を実行する (推奨)

テスト移行を行ってから本番環境への移行を行うことを強く推奨します。移行テストのガイダンスをご参照ください。

17. 移行プランをサポートに通知する (推奨)

週末や祝日に移行する、またはクラウド上のユーザーが 1,000 人を超える場合は、1 ~ 2 か月前に移行サポート チームにお問い合わせすることをお勧めします。弊社で人員を用意して、移行をサポートします。 

アトラシアンでのクラウドへの移行のサポートについてご確認ください。

Jira サイト インポートのチェックリスト

Site Import will no longer be available for server to cloud migrations

From February 1, 2022, we’ll discontinue server to cloud migrations using Site Import depending on the number of users you’re looking to migrate.

If you’re looking to migrate:

  • 1-10 users - Site Import will be available until 2022年01月31日

  • 11 - 100 users - Site Import will be available until 2022年02月28日

  • 101-250 users - Site Import will be available until 2022年03月31日

  • 251 - 1000 users - Site Import will be available until 2022年04月30日

  • More than 1000 users - Site Import will continue to be available until further notice.

To view the number of licensed Jira Server or Data Center users, see the Viewing your licensed user count section on the Licensing your Jira applications page.

We recommend you use the Jira Cloud Migration Assistant for all your migration needs. The Migration Assistant offers several benefits including Apps and Jira Service Management migrations. We’ll soon support Advanced Roadmaps migrations.

For more information on this announcement, read our community post. For any technical or compatibility concerns with this change, contact us.

1. Jira Server のバージョンを確認する (必須)

インポートが機能するには、バックアップの XML ファイルがサポート対象のバージョンの Jira Server または Data Center から取得されたものである必要があります。

 

Jira Server の UI を使用した検証

  1. アプリケーションの右上にある歯車アイコンをクリックします。

  2. [システム] を選択します

  3. 左側のナビゲーション パネルにある [システム情報] を選択します

  4. 最後に、Jira のバージョンを確認します

サポート Zip を使用した検証

製品バージョンの検証

1 2 3 4 5 grep "<product name" <Support Zip Location>/application-properties/application.xml Example Output: <product name="Jira" version="8.7.1"/>

 

XML バックアップ ファイルを使用して検証

Jira Server のビルドとバージョンを使用して、ビルド番号を Jira バージョンに照合できます。

製品バージョンの検証

1 2 3 4 5 grep 'Build #' <Backup File Location>/entities.xml Example Output: Build # : 100118

2. XML ファイルが有効であることを確認する (必須)

entities.xml と activeobjects.xml の両方が有効な XML ファイルであることを確認します。複雑な環境を持つ大規模なお客様の環境からのエクスポートでは、XML 構造が無効になる場合があります。

XML バックアップ ファイルを使用して検証

次のクエリを使用して、ファイルが有効であるかどうかを確認します。

1 2 xmllint --noout <Backup File Location>/entities.xml xmllint --noout <Backup File Location>/activeobjects.xml : 100118

コマンドで出力が返されない場合、ファイルは有効です。例外が発生した場合、フォーマット エラーのある箇所が示されます。

3. XML ファイルの構造を確認する (必須)

バックアップ ファイルがインポート用として適切に構築されていることを確認します。大きなインスタンスがある場合は、クラウドのバックアップ ファイルを、activeobjects.xml と entities.xml を含むデータベース ファイルと、添付ファイルやその他のメディアを含むファイルに分割することをお勧めします。

これによってタイムアウト エラーを防いだり、インポート時の問題のリスクを軽減したりすることができます。

.xml ファイルの合計サイズは、圧縮してインポートする前の段階で、10GB 以下である必要があります。それ以上のサイズのファイルをインポートする場合は、サポートにお問い合わせください

XML バックアップ ファイルを使用して検証

メディアやその他の添付ファイルからデータを分離するかどうかに応じて、階層が次の関連する形式に一致するかどうかを確認します。

添付ファイルとデータ

1 2 3 4 5 6 7 JIRA-backup-XXXXXX ├── activeobjects.xml ├── entities.xml ├── data │ ├── attachments │ └── avatars └── logos

添付ファイルと他のメディアのみ

1 2 3 4 5 6 7 8 9 10 media-only-X.zip └─── data ├── attachments │ ├── ProjectKey │ │ └── 10000 │ │ ├── IssueKey-1 │ │ ├── IssueKey-2 │ │ └── IssueKey-3 │ └─── ProjectKey2 └── avatars


4. 失敗したアップグレード タスクを確認する (必須)

Jira Server に、アップグレードに失敗したタスク、またはアップグレードが保留中となっているタスクがある場合、クラウドへのインポートが失敗することがあります。 

XML バックアップ ファイルを使用して検証

クラウドへのインポートを試みる前に、以下を実行してアップグレードに失敗したタスクを特定します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 grep '<UpgradeHistory' <Backup File Location>/entities.xml | awk 'BEGIN{ORS="\n"};{print $2}{print $5"\n"}' Example Output: id="10000" status="complete" id="10100" status="complete" id="10101" status="complete" id="10104" status="complete" id="10105" status="failed"

 

1 2 3 4 5 6 7 8 9 10 11 12 grep '<UpgradeTaskHistory' <Backup File Location>/entities.xml | awk 'BEGIN{ORS="\n"};{print $2}{print $5"\n"}' Example Output: id="10000" status="complete" id="10100" status="complete" id="10101" status="complete" id="10104" status="complete" id="10105" status="failed"

任意のアップグレード タスクが "failed" を返す場合、回避策として、それらを "complete" に更新するか、失敗したアップグレード タスクをまとめて削除します。要素を削除する際には、結果となる XML 構造が有効であることを確認します。

変更を加えたら、ファイルを保存して再度圧縮し、元のバックアップ ファイルと同じファイル構造を保持するようにします。

5. 重複しているユーザー メールや無効なユーザー メールを確認する (必須)

インポートに失敗する最も一般的な理由の 1 つは、メールの重複や無効なメールです。インポート チェックでは重複しているメールや無効なメールが確認されますが、これによって時間がかかるインポートまたはアップロードに失敗したり、大規模なお客様の場合はメンテナンス時間がかかったりする場合があります。ベスト プラクティスは、このようなメール アドレスを事前に確認することです。

XML バックアップ ファイルを使用して検証

重複ユーザー
以下を実行して、重複メールを特定します (メールの左側に 2 以上の数が表示される)。

1 2 3 4 5 6 7 grep 'lowerEmailAddress="' <Backup File Location>/entities.xml | awk -F\lowerEmailAddress=\" '{print $2}' | cut -d\" -f1 | sort | uniq -с Example Output: 1 felix.test@test.com 2 fixed.test@test.com 1 florian.test@test.com

以下は db の追加クエリです (上記と同じ機能を持つ)。

1 2 3 4 5 SELECT lower_email_address, count(lower_email_address), array_agg(user_name) AS "Users with Dupe E-Mail" FROM cwd_user GROUP BY lower_email_address HAVING count(lower_email_address) > 1;

重複が見つかった場合、ソース インスタンスでそれらを修正するか entities.xml を編集して一意にします。

さらに、アドオン ユーザーが存在する場合は、移行時に問題が発生する可能性があります。クラウドにインポートする前にアドオン ユーザーをクリーン アップすることで、この問題を回避できます。

SQL を使用した検証 (Postgres でテスト済み)

アドオン ユーザー

次のクエリを使用してこのような条件を満たすユーザーを見つけ、ソースでメールを削除するか更新して、@connect.atlassian.com 以外が設定されるようにします。

1 2 --ADD-ON USERS - TESTED ON POSTGRESQL select * from cwd_user where lower_email_address like 'connect.atlassian.com';

6. テスト中にクラウドで受信メール ハンドラーを無効にする (必須)

デフォルトでは、受信メール ハンドラーはインポート後に有効になります。これによって、クラウドのメール ハンドラーがサーバーのメール ハンドラーの代わりにメールを処理する可能性があります。メールが誤って処理されないように、テスト中はこれらの機能を無効にすることを強くお勧めします。

以下を実行できます。

  1. [Jira 設定] > [システム] の順にクリックします。

  2. [グローバル メール設定] を選択して、[メールのプル機能] と [メールのプロセス機能] をオフにします。

  3. [受信メール] を選択して、すべてのメール サーバーとハンドラーを削除します。

  4. Jira Service Management を使用している場合は、[設定] > [製品] > [メール リクエスト] の順に移動して、[メール アドレス] セクションが空であることを確認します。

7. 無効な文字や処理されていない文字を確認する (必須)

古いバージョンの Jira では、制御文字を含むテキストをコピーして Jira 課題のフィールドに貼り付けることができました。Jira のバックアップ形式は XML であり、XML ではほとんどの制御文字が保存されないため、これによって問題が発生します。制御文字を含む XML が Jira にインポートされると、不可逆なエラーが発生してインポートに失敗します。

これを防ぐために、ガイドに従って entities.xml と activeobjects.xml の両ファイルで XML バックアップから無効な文字を削除します

8. 重複しているワークフローを修正する (必須)

バックアップ ファイルに同じ名前のワークフローがある場合は、インポートに失敗することがあります。製品設計によって、ユーザー インターフェイスからワークフローを作成した場合、それらは別の名前を持つ可能性があります。ただし、ワークフロー名に大文字と小文字が異なる同じ名前がある場合 (例:「workflow1」と「WORKFLOW1」)、インポートの失敗につながる可能性があります。

XML バックアップ ファイルを使用して検証

ワークフローの重複

次のクエリを使用して、ワークフローのすべての名前が一意であることを確認します。

1 2 3 4 5 6 7 8 9 10 11 12 13 cat <Backup File Location>/entities.xml | grep '<Workflow id="' | cut -d " " -f7- | sort | uniq -c Example Output: 1 name="Software Simplified Workflow for Project SER"> 1 name="Software Simplified Workflow for Project SKP"> 1 name="Software Simplified Workflow for Project TES"> 1 name="TEST: Change Management workflow for Jira Service Desk"> 1 name="TEST: Incident Management workflow for Jira Service Desk"> 1 name="TEST: Jira Service Desk default workflow"> 1 name="TEST: Problem Management workflow for Jira Service Desk"> 1 name="TEST: Service Request Fulfilment with Approvals workflow for Jira Service Desk"> 1 name="TEST: Service Request Fulfilment workflow for Jira Service Desk"> 1 name="company-managed default workflow">

出力のそれぞれのワークフロー名が一意である (名前の左側に 1 が表示されている) ことを確認します。重複が見つかった場合は、ソース インスタンスでそれらを修正するか entities.xml を編集して一意にします。

9. 重複クラスター ジョブを見つける (必須)

バックアップ ファイルに同じ ID の重複クラスタ ジョブがある場合は、インポートに失敗することがあります。このページの記載に従って、インポート前にクラスタ ジョブに重複 ID がないことを確認する必要があります。

SQL を使用した検証 (Postgres でテスト済み)

クラスタ ジョブの重複を見つける

次のクエリを使用して、重複しているクラスタ ジョブを見つけます。

1 2 3 SELECT * FROM clusteredjob WHERE job_id in (SELECT job_id FROM clusteredjob GROUP BY job_id HAVING COUNT(*)>1)

ソース インスタンスでの移行

  1. Jira をシャット ダウンして、データベースを適切にバックアップする

  2. 重複しているエントリのいずれかを削除します。 

    1 delete from clusteredjob where id =XXXXX;
  3. Jira を再起動する

XML バックアップ ファイルを使用して検証

最初に、次のクエリを実行します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 grep 'ClusteredJob id="' <Backup File Location>/entities.xml | cut -d "=" -f2 | sort | uniq -c Example Output: 1 "10001" jobId 1 "10107" jobId 1 "10201" jobId 1 "10202" jobId 1 "10204" jobId 1 "10205" jobId 1 "10300" jobId 1 "10301" jobId 1 "10302" jobId 1 "10303" jobId 1 "10304" jobId 1 "10307" jobId 1 "10308" jobId 1 "10309" jobId 1 "10311" jobId

出力のそれぞれの名前が一意である (名前の左側に 1 が表示されている) ことを確認します。重複が見つかった場合は、ソース インスタンスでそれらを修正するか entities.xml を編集して一意にします。

10. 添付ファイル名の長さを確認する (必須)

バックアップに 250 文字を超えるファイル名を持つ添付ファイルがある場合、インポートに失敗することがあります。

SQL を使用した検証 (Postgres でテスト済み)

次のクエリは、250 文字を超える添付ファイルを識別します。

1 2 3 SELECT id,issueid, char_length(filename) FROM fileattachment WHERE char_length(filename) > 250

XML バックアップ ファイルを使用して検証

次のコマンドで、250 文字を超えるファイル名が返されないことを確認します。0 と表示されるはずです。

1 2 3 4 5 grep <Backup File Location>/entities.xml | cut -d\ -f9 | awk 'length > 250 {print ;}' | wc -l Example Output: 0

250 文字を超えるファイルを見つけたら、それを entities.xml で特定して filename フィールドを [XXXXX.txt] に名称変更します。

11. パブリック アクセス設定を確認する (必須)

Jira Server または Jira Cloud サイトをインターネットに公開するように構成できます。コンテンツを意図的に公開する場合を除いて、Jira Server で一般に許可しているプロジェクトの権限を再確認して、クラウドに移行する前にそれらの匿名アクセスのセットアップを削除することを強くお勧めします。

SQL を使用した検証 (Postgres でテスト済み)

プロジェクト

これにより、プロジェクトの閲覧権限がすべてのユーザーに設定されているプロジェクトを見つけることができます。

1 2 3 4 5 6 7 8 9 10 11 12 13 // get list of project permission schemes which has share type as "Anyone" (i.e. open) SELECT p.id, p.pname, ps.name FROM project p INNER JOIN nodeassociation na ON p.id = na.source_node_id INNER JOIN schemepermissions sp ON na.sink_node_id = sp.scheme INNER JOIN permissionscheme ps ON na.sink_node_id = ps.id WHERE na.source_node_entity = 'Project' AND na.sink_node_entity = 'PermissionScheme' AND sp.permission_key='BROWSE_PROJECTS' AND sp.perm_type='group' AND sp.perm_parameter is null

 

フィルター

"全員で共有" 共有タイプ (グローバル) のフィルターの一覧を取得します。

1 2 3 4 5 // get list of filters which has share type as "share with everyone" (i.e. global) SELECT sr.filtername, sp.sharetype AS current_share_state, sr.username AS owner_name, sr.reqcontent AS JQL FROM searchrequest sr INNER JOIN sharepermissions sp ON sp.entityid = sr.id WHERE sp.sharetype='global' and sp.entitytype ='SearchRequest';

 

アジャイルボード

"全員で共有" 共有タイプ (グローバルなど) のアジャイル ボードのリストを取得します。

1 2 3 4 5 6 // get list of Agile boards which has share type as "share with everyone" (i.e. global) SELECT DISTINCT "rv"."NAME" as "Board Name", sr.filtername, sp.sharetype AS current_share_state, sr.username AS owner_name FROM "AO_60DB71_RAPIDVIEW" as rv INNER JOIN searchrequest sr ON sr.id = rv."SAVED_FILTER_ID" INNER JOIN sharepermissions sp ON sp.entityid = sr.id WHERE sp.sharetype='global' and sp.entitytype ='SearchRequest';



ダッシュボード

"全員で共有" 共有タイプ (グローバル) のダッシュボードの一覧を取得します。

1 2 3 4 5 6 // get list of Dashboard which has share type as "share with everyone" (i.e. global) SELECT DISTINCT pp.id as Dashboard_Id, pp.pagename AS Dashboard_name, sp.sharetype AS current_share_state, pp.username AS owner_name FROM portalpage pp INNER JOIN sharepermissions sp ON sp.entityid = pp.id WHERE sp.sharetype='global' and sp.entitytype ='PortalPage' ORDER BY pp.id;

12. クラウド ユーザーの上限を超えていないことを確認する (必須)

サーバーから移行するユーザーと、クラウドにすでに存在するユーザーの合計がサブスクリプション ユーザー階層を超えないようにします。たとえば、51 ~ 100 ユーザーのサブスクリプションを契約しているときに 110 人のアクティブなユーザーをインポートしようとすると、移行は失敗します。 

これを解決するには、次のいずれかの方法に従ってください:

SQL を使用した検証 (Postgres でテスト済み)

Jira Server のライセンス付与済みユーザーのリストを取得する」ガイドで紹介されているクエリを使用して、ライセンス付与済みユーザーの数を取得します。

サポート Zip を使用した検証

移行を実行する前に次のクエリを使用し、移行するユーザーの数とご利用のクラウド プランのユーザーの上限を検証します。必要に応じて、ユーザー数の削減、クラウド プランのアップグレード、サブスクリプションへのユーザー数の追加などを行います。

1 2 3 4 grep "<Users>" <Support Zip Location>/application-properties/application.xml Example Output: <Users>2205</Users>

13. 添付ファイルのサイズを確認する (推奨)

Jira Cloud へのインポートに多数の添付ファイル (未圧縮で 20+ GB) が含まれる場合、遅延やタイムアウトが発生する可能性があります。データベース バックアップ (entities.xml および activeobjects.xml ファイル) をインポートしてからメディア (添付ファイル、プロジェクト アバター、およびロゴ) を個別にインポートすることをおすすめします。

SQL を使用した検証 (Postgres でテスト済み)

次の 1 つめのクエリは、データベースの添付ファイルの全体的なサイズを識別します。さらに評価する必要がある場合は、2 番目のクエリでプロジェクトごとにそれらを分割します。

1 2 3 4 5 6 7 8 9 10 11 select round(sum(filesize)/1024/1024,2) as "Total Attachment Size(MB)" from fileattachment join jiraissue on jiraissue.id = fileattachment.issueid; select round(sum(filesize)/1024/1024,2) as "Size(MB) by Project", project.pname as "Project Name" from fileattachment join jiraissue on jiraissue.id = fileattachment.issueid join project on project.id = jiraissue.project group by project.pname order by "Size(MB) by Project" desc;

14. 孤立データを確認する (推奨)

バックアップに孤立データがある場合は、それらがクラウド内で適切に処理されずにインポートが失敗することがあります。一般的なシナリオとして、null プロジェクト キーがあります。

XML バックアップ ファイルを使用して検証

次のコマンドを使用して、一部の孤立データの特定を試みます。

出力に空白行がある場合は、null のプロジェクト キーが存在する可能性が高いです。key 値が空にならないようにこれを修正する必要があります。クラウドにインポートする前に、entities.xml で修正を行います。

XML の有効性の検証

1 2 3 4 5 6 7 8 xmlstarlet sel -t -v "/entity-engine-xml/Project/@key" -n <Backup File Location>/entities.xml Example Output: SER SKP TEST

15. ストレージの上限を超えていないことを確認する (推奨)

Atlassian のクラウド プランには個別のストレージ制限があります。移行前に、現在使用しているディスク領域と、弊社のクラウド ストレージのドキュメントをご確認ください。 

16. データのバックアップを作成する (推奨)

移行や本ガイドで推奨されているいずれかの更新を実行する前に、復元ポイントを確保できるように、現在の Jira Server サイトをバックアップすることをお勧めします。移行先の Cloud サイトに既存のデータがある際は、移行後に何らかの理由で変更を元に戻す必要が発生した場合に備えて、同様に Jira Cloud サイトもバックアップします。これはベスト プラクティスであり、メンテナンスを元に戻す必要が発生した場合に備えて復元ポイントを追加します。

17. テスト移行を実行する (推奨)

テスト移行を行ってから本番環境への移行を行うことを強く推奨します。移行テストのガイダンスをご参照ください。

18. 移行プランをサポートに通知する (推奨)

週末や祝日に移行する、またはクラウド上のユーザーが 1,000 人を超える場合は、1 ~ 2 か月前に移行サポート チームにお問い合わせすることをお勧めします。弊社で人員を用意して、移行をサポートします。 

アトラシアンでのクラウドへの移行のサポートについてご確認ください。

詳細情報とサポート

移行をサポートする多数のチャネルをご用意しています。

 

最終更新日 2021年11月19日)
次でキャッシュ 2:12 AM on Nov 27, 2021 |

その他のヘルプ