Forge Custom Field (type: object) not supported in "Import Work Items from CSV"

XMLWordPrintable

    • Minor
    • Integration testing
    • XL

      Issue Summary:

      When a Jira project has a Forge custom field of type object installed, importing issues via "Import Work Items from CSV" fails with the error "The value must be a JSON object." The CSV importer passes the mapped column value as a plain string to the backend, but ForgeObjectCFType requires a JSON object. The Forge custom field parser expression defined in the app manifest is not invoked during the CSV import flow, meaning no coercion or parsing of the raw string value occurs. This worked correctly for equivalent Connect SINGLE_SELECT fields prior to migration, as the Connect framework handled string coercion internally.

      Steps to Reproduce

      1. Install a Forge app that declares a custom field with type: object in its manifest (e.g. an Account or Team field migrated from Connect using migratedFromConnect: true and connectFieldProperty.connectFieldType: SINGLE_SELECT).
      2. Create an issue in a Jira project with that custom field populated (e.g. Account = "COKE").
      3. Export the issue to CSV. The exported CSV will contain the custom field value as a plain string (e.g. COKE).
      4. On the /issues page, click the triple-dot menu (…) and select "Import Work Items from CSV".
      5. Upload the exported CSV file and click Next.
      6. Select a destination project and click Next.
      7. On the "Map fields" page, map the CSV column for the custom field to the corresponding Forge custom field. Click Next.
      8. On the "Map values" page, click "Begin Import" (or "Validate").

      Expected Results

      The import completes successfully. The plain string value from the CSV (e.g. "COKE") is either resolved by the field's parser expression or accepted as a lookup key, and the Forge object custom field is populated correctly on the created issue — consistent with the behaviour that existed for the equivalent Connect SINGLE_SELECT field.

      Actual Results

      The import fails. The following error is shown in the import log and in the UI:

      The value must be a JSON object.

      The import log reads:

      2026-07-09 10:08:13,342 INFO - Importer started!
      2026-07-09 10:08:13,347 INFO - Engine is running in Import mode
      2026-07-09 10:08:13,560 INFO - All issues will be imported to project: Company Managed (CM)
      2026-07-09 10:08:13,627 INFO - Creating issue: [externalId='autoid--3582553784576086822', summary='DEMO story']
      2026-07-09 10:08:13,655 INFO - Issue does not have issue type selected, the affected issues will be created with default issue type [Story]
      2026-07-09 10:08:13,922 ERROR - Issue can't be created due to the error/s [ The value must be a JSON object. ] 

      Additionally, if the Forge object custom field is marked as required and the user skips mapping it during import, the following error is thrown instead:

       

      Issue can't be created due to the error/s [ <Field Name> is required. ]

      Workaround

      Instead of using the native "Import Work Items from CSV" feature, use the Jira REST API directly to bulk-create issues with the correct field value format:

      1. Retrieve source issue data including the custom field value using: GET /rest/api/3/search?jql=project=SOURCE&fields=summary,issuetype,customfield_XXXXX The response includes the full object with the numeric id.
      2. Bulk-create issues in the target project using: POST /rest/api/3/issue/bulk (up to 50 issues per request), passing the custom field as {}{"customfield_XXXXX": {"id": 42{}}}.

      Note: this workaround requires building a custom import flow and is not suitable for all customers, particularly those importing from third-party CSV sources or performing large-scale migrations.

              Assignee:
              Unassigned
              Reporter:
              Damian Kleszcz
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: