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
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.
PostgreSQLSELECT 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;
MySQLSELECT 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;
OracleSELECT 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 ServerSELECT 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;
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 列にある値に置き換えます。
- Once the broken project role IDs are rectified, create a new migration to migrate the project again.