依存関係が欠落しているため、プロジェクト バージョンをインポートできない: プロジェクト - 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 (JCMA) の実行を試みた際に移行計画が失敗し、プロジェクト バージョンに問題がある可能性がある旨を示す次のメッセージが表示される。
ERROR <Project_Key> project-import We couldn't import Project Version <Version_Name> because of <Number_of_Occurrences> missing dependencies: Project <Project_Key>.
This caused <Number_of_Issues> other items to fail. Check the reasons for the missing dependencies on your server site.
環境
このメッセージは Jira Cloud Migration Assistant (JCMA) に適用されます。
- サーバーからクラウド
原因
これは、あるプロジェクトが、移行されていない別のプロジェクトのエンティティを使用しているために、依存関係が欠落しているために起こります。修正バージョン (Fix Versions) はプロジェクト固有です。
ソリューション
この問題に対処するには、適切なプロジェクトにプロジェクトバージョン<Version_Name> を追加または作成し、以前のプロジェクト バージョン (別のプロジェクトに属するもの) の関連付けを削除する必要があります。その後、一括操作で新しく作成したプロジェクト バージョンと再関連付けを行います。
これは、システム フィールドの修正バージョンまたはバージョン ピッカー タイプのカスタムフィールドで発生する可能性があります。
修正バージョン システム フィールド
以下のすべてのステップにしたがってください。
この JQL (Jira Query Language) を実行して、プロジェクト バージョン <Version_Name> を持つ、影響を受けている課題を見つけます。
project = <Project_Key> and (fixversion = '<Version_Name>' OR affectedVersion = '<Version_Name>')
プレースホルダーの <Project_Key> は、影響を受けているプロジェクトのプロジェクトキーに、<Version_Name> は影響を受けている課題に現在関連付けられているプロジェクト バージョンに置き換えます。
- 他のプロジェクトから修正バージョンを削除して、属するものに一括で更新することを推奨します。
その後、問題が継続する場合や、上記の JQL が返す結果が 0 件の場合には、Jira Serverデータベースでこのクエリを実行して、影響を受けている課題を見つけます。
select p.id project_id_issue, pv.project project_id_version, (p.pkey || '-' || i.issuenum) as key, i.summary, pv.id version_id, pv.vname version_name from jiraissue i inner join project p on i.project = p.id inner join nodeassociation na on na.source_node_id = i.id inner join projectversion pv on pv.id = na.sink_node_id where association_type in ('IssueFixVersion','IssueVersion') and p.pkey in ('PROJECT_KEY') and p.id != pv.project;
プレースホルダーの PROJECT_KEY は、影響を受けているプロジェクトのプロジェクトキーに置き換えます。
- 結果が返ってきた場合には、ステップ #2 に戻ってプロセスを繰り返します。
バージョン ピッカー カスタム フィールド
Jira Server のデータベースでこのクエリを実行し、ログで参照されているプロジェクトのキーから、この問題の影響を受けている課題を特定します。
WITH customfieldinfo AS
(SELECT p.id AS project_id_source
, p.pkey AS project_key_source
, (p.pkey || '-' || j.issuenum) AS issuekey
, cf.cfname AS custom_field_name
, cfv.numbervalue::INTEGER AS current_version_id
, pv.vname AS current_version_name
, cfv.id AS cfv_entry
FROM jiraissue j
JOIN project p ON p.id = j.project
JOIN customfieldvalue cfv ON cfv.issue = j.id
JOIN customfield cf ON cf.id = cfv.customfield
JOIN projectversion pv ON pv.id = cfv.numbervalue::INTEGER
WHERE cf.customfieldtypekey IN ('com.atlassian.jira.plugin.system.customfieldtypes:version',
'com.atlassian.jira.plugin.system.customfieldtypes:multiversion')) ,
issueinfo AS
(SELECT j.id AS issueid
, (p.pkey || '-' || j.issuenum) AS issuekey
FROM jiraissue j
JOIN project p ON p.id = j.project),
versioninfo AS
(SELECT id AS versionid
, vname AS versionname
, project AS projectsourceid
FROM projectversion),
projectinfo AS
(SELECT id AS pid_dep
, pkey AS project_key_dependency
FROM project),
minidb AS
(SELECT ii.cfv_entry
, ii.project_id_source
, ii.issuekey
, ii.custom_field_name
, ii.current_version_id
, ii.current_version_name
, pi.pid_dep AS project_id_depedency
, pi.project_key_dependency
FROM customfieldinfo ii
JOIN issueinfo iff ON iff.issuekey = ii.issuekey
JOIN versioninfo vi ON vi.versionid = ii.current_version_id
JOIN projectinfo pi ON pi.pid_dep = vi.projectsourceid
WHERE ii.project_id_source != pi.pid_dep)
SELECT mdb.*
, pv.project AS target_project_key
, pv.vname AS target_project_version_name
, pv.id AS target_project_version_id
, 'update customfieldvalue set numbervalue = ' || pv.id || ' where id = ' || mdb.cfv_entry || ';' AS update_query
FROM minidb mdb
JOIN projectversion pv ON pv.project = mdb.project_id_source
WHERE mdb.current_version_name = pv.vname;
注意
プレースホルダーの PROJECT_KEY は、影響を受けているプロジェクトのプロジェクトキーに置き換えます。
注意
このクエリは Postgres で動作します。ご使用のデータベースに合わせて調整が必要があります。
ソリューション
- そのデータを移行する必要がない場合は、移行しようとしているプロジェクトに関連するすべての画面から、バージョン ピッカー タイプのカスタム フィールドを削除してください。この場合、JCMA はこれらの参照のエクスポートをスキップします。
- データの移行が必要な場合は、異なるタイプのカスタム フィールドを新規に作成し、この新しいフィールドにバージョン ピッカーから同じ値をコピーすることをお勧めします。その後、影響を受けるプロジェクトの画面からバージョン ピッカー カスタム フィールドを削除することも忘れないようにしてください。