JCMA export error: "We couldn't export Custom Field Config Scheme"

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: 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 は除く

要約

The following documentation provides guidance on fixing the NullPointerException that occurs when exporting a custom field config scheme during migration using Jira Cloud Migration Assistant (JCMA).

概要

Jira Cloud Migration Assistant supports the migration of User Filtering within custom field contexts. However, if an invalid project role ID is associated with the user filtering, the JCMA will identify that the information is corrupted and not proceed with the export of the affected projects.

The following error message will appear when there is an orphaned or deleted project role ID linked to a User Filtering configuration associated with a custom field context.

<date> <time> ERROR <pkey> project-export We couldn't export Custom Field Config Scheme '<context-name>'. Reason: java.lang.NullPointerException: Parameter specified as non-null is null: method com.atlassian.jira.migration.export.framework.ExportService.exportOrThrow

Fix orphan records associated with custom field context

  1. Identify orphaned project role IDs that are being referenced in the error message. The following SQL query will help retrieve this information, bringing all project role IDs associated with the custom field contexts.

    PostgreSQL
    SELECT cf.id                                                      AS customfieldid
         , cf.cfname                                                  AS customfieldname
         , fcs.id                                                     AS customfieldcontextid
         , fcs.configname                                             AS customfieldcontextname
         , upf.id                                                     AS userpickerfilterid
         , upfr.projectroleid                                         AS userpickerfilterprojectroleid
         , COALESCE(CAST(pr.id AS char), 'Project role ID not found') AS projectroleid
         , COALESCE(pr.name, 'Project role name not found')           AS projectrolename
      FROM userpickerfilter upf 
      JOIN fieldconfigscheme          fcs ON                fcs.id = upf.customfieldconfig
      JOIN customfield                 cf ON                 cf.id = upf.customfield
      LEFT JOIN userpickerfilterrole upfr ON upfr.userpickerfilter = upf.id
      LEFT JOIN projectrole            pr ON                 pr.id = upfr.projectroleid;
    MySQL
    SELECT cf.id                                                      AS customfieldid
         , cf.cfname                                                  AS customfieldname
         , fcs.id                                                     AS customfieldcontextid
         , fcs.configname                                             AS customfieldcontextname
         , upf.id                                                     AS userpickerfilterid
         , upfr.projectroleid                                         AS userpickerfilterprojectroleid
         , COALESCE(CAST(pr.id AS CHAR), 'Project role ID not found') AS projectroleid
         , COALESCE(pr.name, 'Project role name not found')           AS projectrolename
      FROM userpickerfilter upf 
      JOIN fieldconfigscheme          fcs ON                fcs.id = upf.customfieldconfig
      JOIN customfield                 cf ON                 cf.id = upf.customfield
      LEFT JOIN userpickerfilterrole upfr ON upfr.userpickerfilter = upf.id
      LEFT JOIN projectrole            pr ON                 pr.id = upfr.projectroleid;
    Oracle
    SELECT cf.id                                                             AS customfieldid
         , cf.cfname                                                         AS customfieldname
         , fcs.id                                                            AS customfieldcontextid
         , fcs.configname                                                    AS customfieldcontextname
         , upf.id                                                            AS userpickerfilterid
         , upfr.projectroleid                                                AS userpickerfilterprojectroleid
         , COALESCE(CAST(pr.id AS VARCHAR(50)), 'Project role ID not found') AS projectroleid
         , COALESCE(pr.name, 'Project role name not found')                  AS projectrolename
      FROM USERPICKERFILTER upf 
      JOIN FIELDCONFIGSCHEME          fcs ON                fcs.id = upf.customfieldconfig
      JOIN CUSTOMFIELD                 cf ON                 cf.id = upf.customfield
      LEFT JOIN USERPICKERFILTERROLE upfr ON upfr.userpickerfilter = upf.id
      LEFT JOIN PROJECTROLE            pr ON                 pr.id = upfr.projectroleid;
    MSSQL Server
    SELECT cf.id                                                         AS customfieldid
         , cf.cfname                                                     AS customfieldname
         , fcs.id                                                        AS customfieldcontextid
         , fcs.configname                                                AS customfieldcontextname
         , upf.id                                                        AS userpickerfilterid
         , upfr.projectroleid                                            AS userpickerfilterprojectroleid
         , COALESCE(CAST(pr.id as varchar), 'Project role ID not found') AS projectroleid
         , COALESCE(pr.name, 'Project role name not found')              AS projectrolename
      FROM userpickerfilter upf 
      JOIN fieldconfigscheme          fcs ON                fcs.id = upf.customfieldconfig
      JOIN customfield                 cf ON                 cf.id = upf.customfield
      LEFT JOIN userpickerfilterrole upfr ON upfr.userpickerfilter = upf.id
      LEFT JOIN projectrole            pr ON                 pr.id = upfr.projectroleid;
  2. Update the broken reference to a valid one. One can check the projectrole table to find a valid and existing project role, then use that ID in the following query:

    更新して壊れた参照を修正
    UPDATE userpickerfilterrole SET projectroleid = <project-role-ID> where id = <affected-picker-filter-ID>;

    <affected-project-role-ID> プレースホルダーは、影響を受ける参照を特定するクエリの userpickerfilterid 列にある値に置き換えます。

  3. Once the broken project role IDs are rectified, create a new migration to migrate the project again.


最終更新日 2024 年 4 月 18 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.