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

Platform Notice: Cloud and Data Center - This article applies equally to both cloud and data center platforms.

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.

*Except Fisheye and Crucible

Summary

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).

Solution

Overview

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.

1 <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

    1 2 3 4 5 6 7 8 9 10 11 12 13 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

    1 2 3 4 5 6 7 8 9 10 11 12 13 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

    1 2 3 4 5 6 7 8 9 10 11 12 13 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

    1 2 3 4 5 6 7 8 9 10 11 12 13 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 projectroletable to find a valid and existing project role, then use that ID in the following query:

    Update to correct the broken reference

    1 UPDATE userpickerfilterrole SET projectroleid = <project-role-ID> where id = <affected-picker-filter-ID>;

    Replace the <affected-project-role-ID> placeholder with the value from the userpickerfilterid column of the query that identifies the affected references.

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

Updated on April 17, 2025

Still need help?

The Atlassian Community is here for you.