JCMA 移行エラー: "project-export Couldn't migrate Request Type with id <request type ID> linked to Issue Type with id <issue type ID>"
プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。
要約
Jira Cloud Migration Assistant アプリケーションは、JSM (Service Management/旧 Service Desk) プロジェクトの移行をサポートしています。 JCMA プランの実行中に、JSM 固有の関連エラーが発生することがあります。
このエラーは、Jira Server/DC インスタンスから Atlassian Jira Cloud サイトに JSM プロジェクトとともに データを移行する際に管理者が直面する可能性があるエラーの 1 つです。
環境
- JCMA 1.6.6 以降
- Jira Server/Data Center 7.6.0 以降
- Jira Service Management Server/DC 3.9.0 以降
エラー
このエラーメッセージは、課題タイプに関連付けられた JSM プロジェクト リクエスト タイプが削除されたか、または、そのプロジェクトにリンクされた課題タイプ スキームと関連付けられていない場合に表示されます。
このエラーが発生する可能性があるのは、課題タイプがあるリクエスト タイプに関連付けられ、後にその課題タイプが課題タイプ スキームからリンク解除された場合です。この変更がリクエスト タイプのセクションには反映されず、以前の参照が維持されます。
<date> <time> ERROR <project key> project-export Couldn't migrate Request Type with id <request type ID> linked to Issue Type with id <issue type ID>. Add the Issue Type with id <issue type ID> to the Issue type Scheme of the project with id <project ID> to resolve.
ソリューション
検出
無効な課題タイプを探す
まず、エラーメッセージから、どの課題タイプが参照されているかを特定する必要があります。
この SQL が特定に役立ちます。指定したプロジェクトのリクエスト タイプに関連するすべての課題タイプを取得します。
また、どの課題タイプが無効なのか、または、そのプロジェクトの課題タイプ スキームと関連付けられていないかもリストアップします。
クエリの結果から、 "Issue Type invalid or not associated with the Issue Type Scheme" というエントリーを探してください。
<project key> の両部分を、影響を受けたプロジェクトのプロジェクト キー (JCMA のエラーメッセージから) に置き換えてください。
12 および 27 行目を編集して、 <project key> を含めてください。
WITH request_type_issue_type_project AS (
SELECT vpf."ID" AS request_type_id
, vpf."NAME" AS request_type_name
, p.pkey AS project_key
, vp."NAME" AS project_name
, vpf."ISSUE_TYPE_ID" AS issue_type_id
, it.pname AS issue_type_name
FROM "AO_54307E_VIEWPORT" vp
JOIN "AO_54307E_VIEWPORTFORM" vpf ON (vpf."VIEWPORT_ID" = vp."ID")
JOIN project p ON (p.pname = vp."NAME")
LEFT JOIN issuetype it ON (it.id = vpf."ISSUE_TYPE_ID"::text)
WHERE p.pkey = '<project key>'
), issue_type_project AS (
SELECT p.id AS project_id
, p.pname AS project_name
, p.pkey AS project_key
, it.id AS issue_type_id
, it.pname AS issue_type_name
FROM project p
LEFT JOIN configurationcontext cc ON (p.id = cc.project)
LEFT JOIN fieldconfigscheme fcs ON (cc.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfigschemeissuetype fcsit ON (fcsit.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfiguration fc ON (fcsit.fieldconfiguration = fc.id)
LEFT JOIN optionconfiguration oc ON (oc.fieldconfig = fc.id)
LEFT JOIN issuetype it ON (oc.optionid = it.id::text)
WHERE cc.customfield = 'issuetype'
AND p.pkey = '<project key>'
AND oc.fieldid = 'issuetype'
)
SELECT rt.request_type_id AS "Request Type ID"
, rt.request_type_name AS "Request Type Name"
, rt.project_key AS "Project Key"
, rt.project_name AS "Project Name"
, rt.issue_type_name AS "Issue Type Name"
, COALESCE(it.issue_type_name, 'Issue Type invalid or not associated with the Issue Type Scheme') AS "Affected Issue Type"
FROM request_type_issue_type_project rt
LEFT JOIN issue_type_project it ON (rt.issue_type_id::text = it.issue_type_id);
Edit the lines 17 and 31 to include the <project key>
SELECT rt.request_type_id AS "Request Type ID"
, rt.request_type_name AS "Request Type Name"
, rt.project_key AS "Project Key"
, rt.project_name AS "Project Name"
, rt.issue_type_name AS "Issue Type Name"
, COALESCE(it.issue_type_name, 'Issue Type invalid or not associated with Issue Type Scheme') AS "Affected Issue Type"
FROM ( SELECT vpf.ID AS request_type_id
, vpf.NAME AS request_type_name
, p.pkey AS project_key
, vp.NAME AS project_name
, vpf.ISSUE_TYPE_ID AS issue_type_id
, it.pname AS issue_type_name
FROM AO_54307E_VIEWPORT vp
JOIN AO_54307E_VIEWPORTFORM vpf ON (vpf.VIEWPORT_ID = vp.ID)
JOIN project p ON (p.pname = vp.NAME)
LEFT JOIN issuetype it ON (it.id = CAST(vpf.ISSUE_TYPE_ID AS UNSIGNED))
WHERE p.pkey = '<project key>' ) rt
LEFT JOIN ( SELECT p.id AS project_id
, p.pname AS project_name
, p.pkey AS project_key
, it.id AS issue_type_id
, it.pname AS issue_type_name
FROM project p
LEFT JOIN configurationcontext cc ON (p.id = cc.project)
LEFT JOIN fieldconfigscheme fcs ON (cc.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfigschemeissuetype fcsit ON (fcsit.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfiguration fc ON (fcsit.fieldconfiguration = fc.id)
LEFT JOIN optionconfiguration oc ON (oc.fieldconfig = fc.id)
LEFT JOIN issuetype it ON (CAST(oc.optionid AS UNSIGNED) = it.id)
WHERE cc.customfield = 'issuetype'
AND p.pkey = '<project key>'
AND oc.fieldid = 'issuetype') it ON (rt.issue_type_id = it.issue_type_id)
12 および 27 行目を編集して、 <project key> を含めてください。
WITH request_type_issue_type_project AS (
SELECT vpf.ID AS request_type_id
, vpf.NAME AS request_type_name
, p.pkey AS project_key
, vp.NAME AS project_name
, vpf.ISSUE_TYPE_ID AS issue_type_id
, it.pname AS issue_type_name
FROM AO_54307E_VIEWPORT vp
JOIN AO_54307E_VIEWPORTFORM vpf ON (vpf.VIEWPORT_ID = vp.ID)
JOIN project p ON (p.pname = vp.NAME)
LEFT JOIN issuetype it ON (it.id = CAST(vpf.ISSUE_TYPE_ID AS NUMBER))
WHERE p.pkey = '<project key>'
), issue_type_project AS (
SELECT p.id AS project_id
, p.pname AS project_name
, p.pkey AS project_key
, it.id AS issue_type_id
, it.pname AS issue_type_name
FROM project p
LEFT JOIN configurationcontext cc ON (p.id = cc.project)
LEFT JOIN fieldconfigscheme fcs ON (cc.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfigschemeissuetype fcsit ON (fcsit.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfiguration fc ON (fcsit.fieldconfiguration = fc.id)
LEFT JOIN optionconfiguration oc ON (oc.fieldconfig = fc.id)
LEFT JOIN issuetype it ON (CAST(oc.optionid AS NUMBER) = it.id)
WHERE cc.customfield = 'issuetype'
AND p.pkey = '<project key>'
AND oc.fieldid = 'issuetype'
)
SELECT rt.request_type_id AS "Request Type ID"
, rt.request_type_name AS "Request Type Name"
, rt.project_key AS "Project Key"
, rt.project_name AS "Project Name"
, rt.issue_type_name AS "Issue Type Name"
, COALESCE(it.issue_type_name, 'Issue Type invalid or not associated with Issue Type Scheme') AS "Affected Issue Type"
FROM request_type_issue_type_project rt
LEFT JOIN issue_type_project it ON (rt.issue_type_id = it.issue_type_id);
12 および 27 行目を編集して、 <project key> を含めてください。
WITH request_type_issue_type_project AS (
SELECT vpf.ID AS request_type_id
, vpf.NAME AS request_type_name
, p.pkey AS project_key
, vp.NAME AS project_name
, vpf.ISSUE_TYPE_ID AS issue_type_id
, it.pname AS issue_type_name
FROM AO_54307E_VIEWPORT vp
JOIN AO_54307E_VIEWPORTFORM vpf ON (vpf.VIEWPORT_ID = vp.ID)
JOIN project p ON (p.pname = vp.NAME)
LEFT JOIN issuetype it ON (it.id = CAST(vpf.ISSUE_TYPE_ID AS NVARCHAR(max)))
WHERE p.pkey = '<project key>'
), issue_type_project AS (
SELECT p.id AS project_id
, p.pname AS project_name
, p.pkey AS project_key
, it.id AS issue_type_id
, it.pname AS issue_type_name
FROM project p
LEFT JOIN configurationcontext cc ON (p.id = cc.project)
LEFT JOIN fieldconfigscheme fcs ON (cc.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfigschemeissuetype fcsit ON (fcsit.fieldconfigscheme = fcs.id)
LEFT JOIN fieldconfiguration fc ON (fcsit.fieldconfiguration = fc.id)
LEFT JOIN optionconfiguration oc ON (oc.fieldconfig = fc.id)
LEFT JOIN issuetype it ON (CAST(oc.optionid AS NVARCHAR(MAX)) = it.id)
WHERE cc.customfield = 'issuetype'
AND p.pkey = '<project key>'
AND oc.fieldid = 'issuetype'
)
SELECT rt.request_type_id AS "Request Type ID"
, rt.request_type_name AS "Request Type Name"
, rt.project_key AS "Project Key"
, rt.project_name AS "Project Name"
, rt.issue_type_name AS "Issue Type Name"
, COALESCE(it.issue_type_name, 'Issue Type invalid or not associated with the Issue Type Scheme') AS "Affected Issue Type"
FROM request_type_issue_type_project rt
LEFT JOIN issue_type_project it ON (rt.issue_type_id = it.issue_type_id);
影響を受けている環境の例:
リクエスト タイプ 「DelMe」に関連付けられている課題タイプ「DeleteMe」が該当します。削除されたか、課題タイプ スクリーンから関連付けが解除された可能性があります。
影響を受けているリクエスト タイプを、[フィールドの編集] ボタンをクリックして編集を試すことも可能です。以下の画面が表示されます。
ソリューション
修正するには、以下のいずれかを実施してください。
- プロジェクトの課題タイプ スキームに課題タイプを再度関連付ける、または、
- 影響を受けているリクエスト タイプを削除して、有効な課題タイプの関連付けで再作成する
新しい JCMA プラン
影響を受けたリクエスト タイプを修正したら、JCMA で新しい移行プランを作成して問題ないはずです。