Project Management migration guide

The Definitive Guide to Migrating to Jira

Jira is Atlassian's issue-tracking and project-management platform whose import model rewards teams that pre-create Issue Types, Workflow Schemes, Custom Field contexts and Project Roles before the first CSV is uploaded.

23 min read 9 sections Updated May 27, 2026
Jira
Projects
Tasks
Subtasks
Comments
Attachments
Dependencies

Inside this guide

What you'll learn, section by section

  1. 01

    Why teams migrate to Jira

    The four shapes a Jira migration takes, and what makes the platform easier — or harder — than the category average.

  2. 02

    The Jira data model you need to map into

    Projects, Issue Types, schemes and Custom Field contexts — the destination schema decoded, with the upsert keys you'll wire on every load.

  3. 03

    Pre-migration prep — the work before you touch Jira

    What must be true on the source, the destination and across the team before the first row hits the importer or JCMA.

  4. 04

    Import mechanisms: JCMA, CSV importer, and Marketplace tools

    Multiple paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at scale.

  5. 05

    Mapping your data into Jira

    The longest section — because for PM migrations, project hierarchy, Issue Links, time tracking, threaded comments and custom workflows are where almost every migration that fails actually breaks.

  6. 06

    The pitfalls that derail Jira migrations

    Specific failure modes — ranked by impact, each tied to the exact Jira mechanism that breaks.

  7. 07

    Validation and cutover

    What to verify after the import job, in what order — and how to fail safely when something is wrong.

  8. 08

    Migration partners and tools

    Atlassian Solution Partners, Marketplace migration apps, ETL vendors — what each is good for and how to choose.

  9. 09

    Frequently asked questions

    The questions every Jira migration team works through before they sign the scope.

Section 01

Why teams migrate to Jira

The four shapes a Jira migration takes, and what makes the platform easier — or harder — than the category average.

Jira is a software product developed by Atlassian for bug tracking, issue tracking and agile project management 1. Atlassian is headquartered in Sydney and San Francisco, with Jira available in three product lines on a single underlying engine: Jira Software (engineering and agile), Jira Service Management (ITSM and service desk) and Jira Work Management (business teams).

The typical Jira customer is a software-led organisation — anywhere from a 20-person startup to a 20,000-engineer enterprise — that wants configurable workflows, JQL-based reporting and a deep Marketplace ecosystem rather than the simpler, more opinionated trackers further down the category. Compared with monday.com or Asana, Jira positions on workflow depth and developer-tool integrations; compared with Azure DevOps it positions on platform neutrality and the strength of its app ecosystem.

The shapes of migration that actually land on Jira tend to fall into four patterns. First, PM consolidation: a company replacing Trello, Asana or ClickUp with Jira to standardise engineering and cross-functional work on one tracker. Second, DC-to-Cloud moves, where existing Jira Data Center customers migrate to Atlassian Cloud ahead of Data Center end-of-life on 28 March 2029 37.

Third, legacy issue-tracker replacements — Redmine, Trac, Bugzilla, MantisBT, or homegrown databases — where the source schema is loose and the project is really a re-architecture. Fourth, M&A integration, where an acquired business runs on a different tracker and the parent standardises on Jira. An Asana-to-Jira move usually has clean Project-to-Project parity but maps poorly across custom workflows; a Server-to-Cloud move retains schema but reshapes user identifiers and audit history.

What makes migrating *to* Jira easier than the category average is the official tooling — the Jira Cloud Migration Assistant (JCMA) for Data Center sources and a native CSV importer for everything else 232. JCMA also generates a Post-Migration Reconciliation (PTR) Excel report that counts projects, issues, comments, attachments and boards source-vs-destination 122.

What makes it harder than the average is the scheme model — Workflow Schemes, Field Configuration Schemes, Screen Schemes, Issue Type Schemes, Permission Schemes and Notification Schemes all map per-project per-issue-type 25. Imports silently land issues against the wrong scheme set if the destination project's schemes are not pre-configured. Add the system-property override block — created, updated and creator cannot be overwritten on Cloud during standard CSV import — and the migration rewards careful pre-creation.

Workflows do not import via CSV — they are built in Settings → Issues → Workflows and applied through a Workflow Scheme before the first issue lands. Custom fields do not exist until created with the right type and context. Teams that scope for that work up front finish on time; teams that assume parity do not.

Workflows do not import. Custom fields do not exist until they are created. Teams that assume parity discover this on day two.

Section 02

The Jira data model you need to map into

Projects, Issue Types, schemes and Custom Field contexts — the destination schema decoded, with the upsert keys you'll wire on every load.

Jira platform Contacts Companies Deals Tickets Tasks Notes
Standard objects orbit the platform; every association can be many-to-many with optional labels.

Jira's data model is hierarchical: a Site contains Projects, each Project has Issue Types, each Issue Type is governed by a Workflow Scheme that defines its Statuses and Transitions. Issues belong to a Project, carry an Issue Key (PROJ-123), and are linked to other issues via Issue Links. Above the issue level, Epics group Stories/Tasks/Bugs, and Sub-tasks live one level below their parent.

Before you map a single field on the source side, you need to know which Project, which Issue Type, and which Workflow Scheme each row will land against. The table below summarises the objects you will touch in a Jira Software / Service Management / Work Management migration.

Object Stores Required on import Tier
Projects Top-level container — Software, Service Management, Work Management, Product Discovery Name, Key (uppercase 2–10 chars), Lead, Project Type All editions
Issues Work items — Story, Task, Bug, Epic, Sub-task and custom types Project, Issue Type, Summary, Reporter All editions
Sub-tasks Child issues belonging to a parent Parent issue, Project, Issue Type, Summary All editions; requires Sub-task enabled on Issue Type Scheme
Epics Story/Task aggregator — Jira Software hierarchy level 1 Project, Epic Name, Summary Jira Software; Premium adds higher levels (Initiative)
Components Project-scoped categorisation of issues Name, Project All editions
Versions / Fix Versions Release containers — affected and fix-version dimensions Name, Project; optional Start/Release dates All editions
Sprints Time-boxed work containers on Scrum boards Name, Board, Start date, End date Jira Software
Boards Scrum and Kanban work views backed by a Filter Type (Scrum/Kanban), filter JQL Jira Software
Workflows + Statuses State machines that govern Issue Type transitions Name, Statuses, Transitions; applied via Workflow Scheme All editions
Custom Fields User-defined fields scoped via Field Contexts Name, Type, Context (Project + Issue Type set) All editions; context model controls scope [48]
Assets / CMDB objects Configuration items linked to issues via the Assets custom field Object Schema, Object Type, Attributes Jira Service Management Premium/Enterprise; 10M-object ceiling [24]

Issues use the Issue Key (e.g. PROJ-123) as their canonical identifier, but Jira also exposes a numeric Issue ID internally. For CSV updates of existing issues, the External System Import tool requires you to include the Issue Key in a column mapped to Issue Key so the importer upserts rather than creates 121.

For first-time imports the upsert key you control is the legacy source ID — stamp it on each issue as a custom External ID or Legacy ID single-line text field. Build it on day one, populate from the source export, and use it for every subsequent delta.

Custom field types in Jira are based on a small set of primitive data types — string, number, user, group, datetime, option, option-with-children — each with documented JQL behaviour 43. The catalogue below summarises the field-type estate you will model.

Field type Limits Notes
Short text (single line) 255 chars XML export bug truncates near 255-char strings with special chars 87
Paragraph (multi-line text) 32,767 chars Atlassian Document Format (ADF) on Cloud; Wiki Markup on DC
Number IEEE 754 double-precision 64-bit float Single-select options are not summed; rebuild as Number field 44
Date picker yyyy-MM-dd via import Format must match the Date format option chosen at import 83
Date Time picker ISO-8601 Imports default to dd/MMM/yy h:mm a; configurable
Select List (single choice) Up to thousands of options per context Option must exist in the field context for the project 84
Checkboxes / multi-select Multi-value via repeated column header Component, Fix Version, Labels accept multiple cols of same header 38
User picker Cloud uses Atlassian Account IDs; DC uses usernames Cross-environment migrations break user references 113
Assets / CMDB object Up to 10M objects per schema Raised from 3M on 1 Nov 2025; requires JSM Premium 24

Relationships in Jira are expressed three ways. First, issue hierarchy: Sub-task → parent issue → Epic → higher-level (Premium) — these are *first-class* parent/child relationships scoped to a Project. Second, Issue Links — configurable link types like blocks, is blocked by, relates to, duplicates, clones, used for cross-project dependencies and for non-hierarchical relationships 54.

Third, Components, Fix Versions and Labels act as project-scoped tag dimensions, queryable via JQL. There is no native master-detail cascade-delete between Epics and Stories: deleting an Epic does not delete its Stories, which is a behaviour you may need to reproduce with an Automation rule if your source platform relied on it.

Custom Field contexts are the single most-misunderstood part of the Jira schema. A custom field with one name can have *multiple* contexts, each scoped to a different (Project, Issue Type) combination, each with its own option list and default value 48. A row imported into the wrong project context will appear to drop its value even though the field name matches.

Section 03

Pre-migration prep — the work before you touch Jira

What must be true on the source, the destination and across the team before the first row hits the importer or JCMA.

The single best predictor of a clean Jira migration is how much work you do on the source side before the first import button is pressed. Atlassian's own JCMA documentation pre-flights your data for over a dozen error classes and still warns that scheduled background jobs, large attachment estates and inactive users derail otherwise-healthy migrations 7779.

The single best predictor of a clean Jira migration is how much work you do before you press *Begin migration* in JCMA.

Treat the source export as raw material that needs to be shaped to Jira's expected formats — dates rewritten to the chosen ISO format, users resolved to Atlassian Account IDs (Cloud) or usernames (Data Center), Issue Type and Status values mapped to the destination's existing names, and option-list values pre-created on the right Field Context.

Source-side prep

  • Audit and clean the source database before export. Atlassian's *Clean up your instance before migration* guide recommends deleting unused projects, schemes, custom fields and workflows so you migrate less rather than more 7980.
  • Convert dates to the format you intend to declare on the importer's Date time format options step — Jira rejects rows with fields.validation.date.format when the file format does not match the declared format 83.
  • Convert option lists so every value in single-select and multi-select columns exists as an option on the destination field's context — Jira returns *custom field require options that do exist* on any mismatch 84.
  • Stamp a stable external ID on every record in the source export — the source platform's primary key — so re-runs and reconciliation are deterministic.
  • Decide what is in scope for historical comments, attachments and change history. CSV import preserves comments via the 01/01/2012 10:10;Admin; This comment works pattern and attachments via HTTP/HTTPS URLs in an Attachment column 38.
  • Save the file as UTF-8 with BOM if you have non-ASCII characters — Jira warns when the file contains non-ASCII and the wrong encoding silently mojibakes German umlauts, French accents, CJK characters 8291.

Destination-side prep

  • Create a sandbox on Jira Cloud Premium/Enterprise (or a development DC instance) and run the full migration end-to-end before touching production. Atlassian explicitly recommends a sandbox dry-run before any JCMA cutover124.
  • Provision users first through Okta, Microsoft Entra ID or another identity provider, *then* run the import — owner/reporter/assignee assignment fails silently if the referenced user does not exist or has no Jira product access 113.
  • Pre-create every Custom Field with its Context on the right Project + Issue Type pair. Once a field is created, its type cannot be changed — you create a new field with the right type and migrate values across.
  • Build Workflows, Workflow Schemes, Issue Type Schemes, Field Configuration Schemes, Screen Schemes, Permission Schemes and Notification Schemes before importing any issues — issues land against the wrong scheme set if the destination project is not pre-configured.
  • Define Components and Fix Versions per Project before importing issues that reference them; the CSV importer accepts multiple column headers with the same name to import multi-value Component and Fix Version assignments 38.

People prep

Cutover only works if humans cooperate. Lock down a source-system freeze window — typically 24 to 72 hours — and communicate it widely. Stop all non-crucial scheduled jobs on the source Jira (re-indexing, archive, Tempo accruals); Atlassian flags scheduled jobs as a leading cause of degraded migration performance 77. A small Jira-to-Jira move runs one to two business days; a Server-to-Cloud migration with 2,000+ users and ScriptRunner-heavy customisations runs four to twelve weeks even when JCMA completes overnight 14.

Section 04

Import mechanisms: JCMA, CSV importer, and Marketplace tools

Multiple paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at scale.

Jira exposes several load paths and the right one depends on the source platform, dataset size, and whether the migration is Jira-to-Jira or third-party-to-Jira. The Jira Cloud Migration Assistant (JCMA) is the official path for Data Center → Cloud. The CSV importer covers most one-shot loads from third-party trackers. Marketplace and ETL tools sit on top of all of these.

Jira Cloud Migration Assistant (JCMA)

JCMA is the Atlassian-built, free app installed on Jira Data Center that migrates Projects, Issues, Workflows, Schemes, Users, Boards and Filters to Jira Cloud 36. It runs as a wizard: pre-migration checks → choose projects → select users and apps → assess → run. Atlassian's published best practice is to move groups of projects in business-impact-ordered waves rather than one big-bang cutover 124.

JCMA generates a Post-migration Reconciliation (PTR) report as an Excel file that compares source-vs-destination entity counts for projects, issues, comments, attachments, boards, filters and configurations, so you can validate before users get access 122. JCMA requires JCMA 1.12.45 or later for the PTR report.

CSV importer (External System Import)

Jira ships a native CSV importer at Settings (gear) → System → External System Import → CSV in both Cloud and Data Center 3233. A newer Jira import experience moves data from Asana, Notion and other business-tool sources directly into Jira business and software spaces. The recommended number of work items per file is 1,500, with estimated time around an hour 32.

The importer accepts CSV (and XLS/XLSX in the new experience). Each file needs a heading row with at minimum a Summary column; multi-value fields like *Components*, *Fix Version* and *Labels* are imported by repeating the column header 38. Comments are loaded with the pattern MM/dd/yyyy HH:mm;username;comment-body; attachments via HTTP/HTTPS URLs in an Attachment column 38157.

Marketplace and third-party staging tools

Exalate, Getint, OpsHub and Configuration Manager sit between the source and Jira. They handle two scenarios: (a) third-party-to-Jira where the source is ClickUp, Asana, Azure DevOps or Trello, and the tool handles field mapping plus attachments and comments, and (b) Jira-to-Jira with selective JQL-based migration and bidirectional sync during a transition window.

Rule

Jira DC → Cloud: JCMA, always. Third-party → Jira under 1,500 issues per project: CSV importer. Over 1,500 issues or any custom workflow remapping: a Marketplace migration app (Exalate, Getint, OpsHub).

Section 05

Mapping your data into Jira

The longest section — because for PM migrations, project hierarchy, Issue Links, time tracking, threaded comments and custom workflows are where almost every migration that fails actually breaks.

SOURCE JIRA FirstName, LastName firstname, lastname AccountName company AnnualRevenue annualrevenue Owner.Email hubspot_owner_id CreatedDate createdate
Field-mapping flow — every source field resolves to a destination property or an explicit drop.

Mapping is where every Jira migration earns its scars. The schema decisions you make in your mapping spreadsheet determine whether boards work on day two, whether automations fire on day five, and whether your engineering team trusts the data on day thirty.

Work object by object, top to bottom of the import order: Projects + Schemes first (so issues have somewhere to land), then Users and Groups, then Components and Versions, then Epics, then Stories/Tasks/Bugs, then Sub-tasks, then Issue Links, then attachments and comments by CSV pattern.

Project hierarchy — Project → Epic → Story/Task/Bug → Sub-task

Jira's first-class hierarchy is Project → Epic → Story/Task/Bug → Sub-task, and Premium adds higher levels (Initiative, Theme) configurable in Settings → Issues → Issue type hierarchy. Sub-task and Epic are *system* Issue Types — their parent-child semantics are baked into the platform.

When importing, set the Parent column on a Sub-task row to the parent's external ID; set the Epic Link (legacy) or Parent column on a Story row to the Epic's external ID. The newer Jira import experience also lets you assign specific Issue Types — Epic, Task, Story, Bug, Subtask — during import, rather than defaulting everything to Task. Use this — defaulting to Task and changing types post-import breaks reporting until reconciled.

Common source → Jira Project / Issue mapping

Source Destination
  • project / workspace / space
    Project (with Key, Lead, Project Type)

    Pre-create on destination; Key is uppercase 2–10 chars

  • task / item / ticket
    Issue with Issue Type = Story/Task/Bug

    Map Issue Type per row, not via global default

  • subtask
    Sub-task with Parent populated

    Parent column resolves to Issue Key during import

  • epic / initiative / goal
    Epic (or higher hierarchy on Premium)

    Epic Name and Summary both required for Epic rows

  • category / tag / area
    Component or Label

    Component is project-scoped; Label is global free-text

  • release / milestone
    Fix Version

    Pre-create the Version on the destination Project

  • due date / target date
    Due date

    Format must match the importer's Date format option 83

  • assignee
    Assignee (Atlassian Account ID on Cloud)

    Cloud requires Account ID; DC uses username 113

  • reporter / created by
    Reporter

    Falls back to importer user if missing

Task dependencies — Issue Links, not hierarchy

Task dependencies in Jira are modelled through Issue Links with configurable Issue Link Types — defaults include blocks / is blocked by, relates to, duplicates, clones. Administrators can add custom link types via Settings → Issues → Issue linking 54.

Issue Links can be populated via the CSV importer by adding columns named after each link type. Cross-project dependencies are supported natively — Issue Links span projects without restriction. The pragmatic approach for a source platform with a single dependency field is to import every dependency as a blocks link, then refine link types post-cutover.

Custom workflow status — Statuses and Workflow Schemes

Workflows are state machines built from Statuses and Transitions, applied to Issue Types via a Workflow Scheme on each Project. Every destination Status must be pre-created in Settings → Issues → Statuses before the workflow is built 106.

When importing, the *Status* column value must exactly match the destination Status name, and that Status must be present on the workflow assigned to the Issue Type. Issues whose imported Status does not match the workflow's allowed states land on the workflow's *initial* status with the imported value dropped. Build the source-status → destination-Status mapping before the first dry run.

Time tracking — Original / Remaining / Logged

Jira has native time tracking with three fields: Original Estimate, Remaining Estimate and Logged Time (worklogs). Original and Remaining import via CSV columns in Jira's time-format (2w 1d 4h 30m). Worklogs import via repeated Log Work columns with the pattern time-spent;timestamp;author;comment.

For third-party trackers (Tempo, Harvest, Toggl), worklog migration is more involved. Atlassian's App Migration Platform coordinates with Tempo for Server-to-Cloud Tempo Timesheet migrations, but the support is partner-driven; projects without a Tempo migration path land worklogs as plain Jira worklogs, losing Tempo billing categories and account associations 102.

Comments and attachments — threading and timestamps

Comments import with original timestamps via the CSV pattern 01/01/2012 10:10;Admin;This is a comment body in a Comment column — repeat the column header for multiple comments 38. The author segment must match an Atlassian Account ID (Cloud) or username (DC); unresolved authors default to the importer user. Comments do not thread on Jira — they are flat and chronological on the Activity tab.

Attachments via CSV require HTTP/HTTPS URLs in an Attachment column, with optional timestamp and author: 01/01/2012 13:10;[email protected];image.png;file://image-name.png 38. Attachment size on Cloud defaults to 1 GB per file (up to 2 GB configurable); Data Center caps at 10 MB per file 153159. Plan storage caps: 2 GB per app on Free, 250 GB on Standard, unlimited on Premium 153.

For migrations with hundreds of GB of attachments, keep originals in S3 or Google Drive, store a deep link in a custom URL field on the issue, and only inline-attach the most recent or most-referenced subset. This avoids both the per-file cap and the cumulative storage tier consumption.

Recurring tasks — Automation rules, not a property

Jira has no native *recurring issue* property. Recurrence is implemented via Automation rules in Project settings → Automation with a scheduled trigger (e.g. *Every Monday at 9 AM, clone issue PROJ-123*) or via Marketplace apps like Schedule for Jira. Source platforms (Asana, ClickUp, monday.com) that store a recurrence_rule on each task lose the rule structure on import; re-create as one Automation rule per distinct schedule.

For a migration with hundreds of distinct recurring rules, consolidate into 5-to-15 canonical Automations (daily standup, weekly review, monthly close, quarterly planning) and let team leads opt their issues in post-migration rather than mapping legacy recurrences one-to-one.

Custom-field mapping strategy

Resist the urge to map every source custom field one-to-one. Migrate only fields used by an active workflow, board, JQL filter or dashboard in the last 12 months. Atlassian's guidance is explicit: limit the number of custom fields in your import, avoid duplicating names of existing standard fields, and use generic names that can be reused 48. Excess custom fields slow JQL and fragment context configurations.

For Select List fields whose source values do not match the destination, either (1) extend the destination field's context to include the missing options, (2) collapse adjacent values during transform, or (3) introduce a parallel custom field that holds the legacy value verbatim. Calculation / scripted fields do not import — they are rebuilt with ScriptRunner, Adaptavist Power Scripts or native Automation conditions post-load.

Audit trail, ownership and original timestamps

System fields created, updated, creator, reporter and the issue change history are partially preserved on import. The CSV importer accepts *Date Created* and *Reporter* columns; whether they round-trip correctly depends on the importer permission set 113114. On Cloud, *Modified Date* cannot be set during a CSV import even by admins — Jira stamps the import time with no override 114.

If you need to preserve the audit trail, create two custom datetime properties per issue type — *Legacy Created Date* and *Legacy Modified Date* — and populate them from the source export. Inactive source users are typically not recreated as Jira users (which would consume licences); instead, store name and email in a custom text field 95.

Account-level audit logging is captured in Settings → System → Audit Log; Data Center exports up to 100,000 events as CSV and rotates daily logs at 100 MB each 112. The Cloud audit log is admin-visible but limited to configuration-impact events — Jira's audit log is explicitly *not intended to record all activity*; it is a configuration-changes-only log 118.

Section 06

The pitfalls that derail Jira migrations

Specific failure modes — ranked by impact, each tied to the exact Jira mechanism that breaks.

High impact

Custom Field Context scoped to the wrong Project + Issue Type

A custom field with one name can have multiple Field Contexts, each scoped to a different (Project, Issue Type) combination, each with its own option list and default. Import a row whose target Project + Issue Type pair is *not in any context* and the field value silently drops on creation with no error visible at the row level. Pre-create the field's context to cover every destination Project + Issue Type combination before the first import, or carry source values in a legacy text field 48. 48

High impact

Workflow Status not present on the destination Workflow Scheme

Every Status referenced by an import must be pre-created in Settings → Issues → Statuses and then added to the workflow assigned to the Issue Type via a Workflow Scheme 106. Issues whose imported Status does not match an allowed state on the workflow land on the workflow's initial status with the imported value dropped — and reports filtered by Status return wrong counts on day two until reconciled. 106

High impact

Required field validation blocks the entire row

Jira's Field Configuration sets fields to *Required* at the (Project, Issue Type) level. A CSV row missing any required field — Original Estimate, End Date, Remaining Estimate, Due Date — is rejected with Issue can't be created due to the error/s [Original Estimate is required.; End Date is required.; ...] and the entire row is dropped 90. The fix is to either populate every required field on every row, or temporarily relax requirements on the destination Field Configuration for the duration of the load and re-enable post-cutover. 90

High impact

Date format mismatch on CSV import

The CSV importer's Date time format options step requires you to declare the format used in the file (e.g. dd/MM/yyyy HH:mm, yyyy-MM-dd). Submit a file with a different format and Jira returns fields.validation.date.format; fields.validation.date.format per row and rejects the issue 83. The mitigation: re-export the source data with a single consistent ISO-8601 date format and explicitly declare that format on the importer's options screen — do not rely on auto-detection across mixed locales. 83

High impact

Cloud Modified Date and createdate cannot be overridden

On Jira Cloud, Modified Date and several system audit fields cannot be set during CSV import even by an administrator — the field is system-managed and stamped to import day 114. Teams discover this on day two when boards filtered by *Updated* return all imported issues sorted to import day. The mitigation is to create *Legacy Created Date* and *Legacy Modified Date* custom datetime properties on every Issue Type, populate them from the source export, and rewrite historical-period JQL filters to use the legacy fields. 114

Medium impact

Encoding errors on non-ASCII CSV imports

Jira warns *The CSV file you uploaded contains non-ASCII characters. Make sure to set the right encoding* and silently mojibakes German umlauts, French accents, CJK characters and Eastern European diacritics if the file is not UTF-8 8291. Atlassian-recommended encoding is UTF-8 with BOM end-to-end — set Excel's *Save As → CSV UTF-8 (Comma delimited)* before upload, and verify a sample row in a hex editor if you have international data. Re-importing with corrected encoding does not retroactively fix already-imported rows. 91

Medium impact

Cloud user picker values are Atlassian Account IDs, not usernames

Cloud CSV imports require Atlassian Account IDs (5b10a2844c20165700ede21g) for user-typed fields, not the firstname.lastname username format that Data Center uses 113. Sources migrating from DC to Cloud, or third-party tools with username-based exports, need a resolution step that maps each source identifier to a destination Account ID. Skip this step and Reporter, Assignee and User Picker custom fields all import unassigned. 113

Medium impact

Data Center end-of-life forces an unscheduled Cloud migration

Atlassian Data Center reaches end of life on 28 March 2029, with end of sale on 30 March 2026 and final renewal/expand on 30 March 2028 1617. Teams that planned a 5-to-10-year Data Center horizon discover the runway is shorter than the platform lifecycle they planned for, and rushed cutovers under EOL pressure cause more failures than the migration itself. Plan the JCMA migration window 12 months before the renewal cliff, not 12 weeks before. 17

Low impact

Free-tier 2 GB storage cap silently truncates attachment imports

Jira Cloud Free plan caps file storage at 2 GB per app, vs 250 GB on Standard and unlimited on Premium 153. A migration that imports an attachment estate over 2 GB to a Free-tier site succeeds row-by-row until the cap is hit, then silently drops further attachment uploads with the issue body still importing. Either land on Standard or Premium for migrations with non-trivial attachment volume, or treat Free as a transient staging environment with paid-tier activation scheduled before attachment data lands. 153

Section 07

Validation and cutover

What to verify after the import job, in what order — and how to fail safely when something is wrong.

1 Read-only Source goes write-frozen 2 Final delta Export incremental changes 3 Import Load into Jira 4 Validate Reconcile + spot-check 5 Cut over Users on new system
Cutover sequencing — five gated phases between source read-only and full user access.

Validation is the bridge between the import finishing and users being allowed in. Atlassian's JCMA Post-Migration Reconciliation (PTR) report is the canonical starting point for Data Center → Cloud — an Excel file generated automatically that counts projects, issues, comments, attachments, boards, filters and configurations source-vs-destination 122. For third-party migrations the equivalent is a hand-built reconciliation spreadsheet, plus a manual spot-check protocol on real records.

Build a reconciliation queries spreadsheet that compares source and destination on each of these counts. Anything outside a 0.5 percent variance gets investigated before users get login access.

  • Total issues per project per Issue Type imported vs source — minus deliberately excluded rows (archived, deleted, out-of-scope).
  • Total issues per Status vs source — a non-trivial drift usually signals a status-mapping miss against the destination Workflow Scheme.
  • Total comments per project vs source, and a date-bucketed comparison to confirm comment timestamps round-tripped through the CSV MM/dd/yyyy HH:mm;author;body pattern.
  • Total attachments and total bytes per project — verify against tier storage cap (2 GB Free / 250 GB Standard / unlimited Premium) 153.
  • Issue Links per link type — count blocks, is blocked by, relates to, duplicates and compare against source-derived expected counts 54.
  • Worklogs per user and total time loggedSUM(timeSpentSeconds) GROUP BY author and compare to source-system totals.
  • Assignee and Reporter coverageGROUP BY assignee and confirm no issue landed unassigned that had a source assignee (the silent Account ID resolution failure).
  • Sprint and Version assignments — count issues per Sprint, per Fix Version, and verify against source-platform release/sprint structure.

On top of reconciliation, run a manual spot-check protocol: pick 30 random issues across projects and verify each field against the source UI. Pick five high-value Epics and trace the full hierarchy — child Stories, Sub-tasks, Issue Links, attachments, comments, worklogs. If a non-trivial discrepancy shows up in three or more of the 30, halt the migration, fix the root cause, and re-import the affected rows by Issue Key.

Jira has no native bulk-undo. The closest mechanism is Bulk Change at Issues → Search → Tools → Bulk Change, which lets admins select issues by JQL and delete them in batches — deleting all imported issues is the only practical rollback path once a bad import lands 122. Stamp every imported row with an *Import Batch ID* custom field so a single JQL query selects the entire batch for clean deletion.

The real rollback strategy remains: export everything to S3 before the import starts, snapshot the Jira database (DC) or rely on Cloud's daily backup, and if catastrophe strikes, bulk-delete by Import Batch ID and re-import. For JCMA DC-to-Cloud cutovers, keep DC live in read-only mode for 30 to 90 days post-Cloud-go-live as a fallback reference.

Cutover sequencing: (1) source goes read-only and teams are notified; (2) all non-crucial scheduled jobs are paused 77; (3) final delta export captures everything that changed during the test-import window; (4) delta is imported; (5) PTR report or hand-built reconciliation runs; (6) users get login access and a 48-hour hyper-care window with the migration lead on call; (7) source decommission is scheduled for 30 to 90 days out, never the same day.

Section 08

Migration partners and tools

Atlassian Solution Partners, Marketplace migration apps, ETL vendors — what each is good for and how to choose.

The Atlassian Partner Directory lists Platinum, Gold and Silver Solution Partners by certifications, customer count and product focus 141. For Jira migrations, partners with explicit Server-to-Cloud, ClickUp-to-Jira or Asana-to-Jira practices ship cleaner than generalist shops; partners with Atlassian *Cloud Specialization* are the standard pick for JCMA-driven Data Center cutovers.

Common picks include Adaptavist, Isos Technology, Appfire, Modus Create, Praecipio Consulting and Eficode — each offers fixed-scope migration packages alongside ongoing managed services. Atlassian also offers cloud migration trial extensions: paid annual cloud subscriptions for 1,000+ user organisations qualify for up to one year free of overlapping DC subscription 144.

Standard Marketplace picks include Exalate (bidirectional sync during cutover), Getint (Asana/ClickUp/Trello-to-Jira with attachments and comments) and OpsHub Migration Manager (enterprise Jira-to-Jira). For warehouse-resident sources, Fivetran, Airbyte, Stitch and Workato all ship Jira connectors used as the staging layer in ETL-fed migrations.

Managed-migration cost ranges vary widely. A clean Asana-to-Jira or Trello-to-Jira move of under 25,000 issues with standard Issue Types often lands in the $3,000–$10,000 range with a setup fee plus per-project pricing. A Jira Data Center to Cloud project with 2,000+ users, ScriptRunner customisations and 50+ Marketplace apps typically runs $40,000–$150,000+, with the upper end driven by user count, custom-field complexity and plugin migration paths rather than raw issue count 142.

For teams that want to outsource the migration end-to-end, FlitStack specialises in Jira migrations and handles the Workflow Scheme construction, Custom Field Context configuration, Account ID resolution, historical-data preservation and reconciliation work described in Sections 5 and 7. Pricing is fixed-fee, based on issue count and source platform, with separate line items for Issue Link migration, worklog preservation and attachment volume.

This is one of several legitimate paths — the right choice for any given team depends on whether they want an Atlassian Solution Partner, a Marketplace-app-led migration, an ETL-staged approach, or a specialist migration vendor. Explore FlitStack →

Section 09

Frequently asked questions

The questions every Jira migration team works through before they sign the scope.

References

Sources

  1. 1 Jira (software) — Wikipedia
  2. 2 Import data from a CSV file — Atlassian Support
  3. 3 Jira Service Management on-prem alternatives after Atlassian's 2029 deadline — r/atlassian
  4. 7 Atlassian pricing & product changes to Jira, Trello, on-prem explained — r/Superthread_
  5. 14 Looking for On-Prem Alternatives to Jira/Confluence in a Highly Regulated Financial Environment — r/jira
  6. 16 Atlassian raising Jira/Confluence Data Center prices again while EOL is set for 2029 — r/XWiki
  7. 17 Migrate from Atlassian to ONES.com: DC timeline — Feb 17 2026 pricing, Mar 30 2026 end of sale, Mar 28 2029 EOL — r/ones_dot_com
  8. 24 You can now store up to 10 Million Objects in Assets! — Atlassian Community
  9. 25 Link your object schema to a Jira project — Jira Service Management Data Center
  10. 32 Import data from a CSV file — Atlassian Support (limits & timing)
  11. 33 Importing data from CSV — Administering Jira applications Data Center
  12. 36 Step-by-Step Guide: Migrating Jira Data Center to Jira Cloud Using the Migration Assistant
  13. 38 Create work items using the CSV importer — Jira Cloud
  14. 43 Custom field types in Jira — Atlassian Community
  15. 44 Custom fields — select options not recognized as numbers — Atlassian Community
  16. 48 Map CSV data to Jira fields — Jira Cloud Support
  17. 54 How to create parent/child relationships between stories or tasks — Atlassian Community
  18. 77 Jira Cloud Migration Assistant pre-migration checklist — Atlassian Support
  19. 79 Clean up your instance before migration — Atlassian Support
  20. 80 Clean up your Server instance before migration — Atlassian Support
  21. 82 How do I resolve encoding errors during an import — Atlassian Community
  22. 83 Jira import date format error — Atlassian Community
  23. 84 Import validation error — custom field require options that do exist — Atlassian Community
  24. 87 XML Exports containing special characters (Ellipsis) — 255-char truncation — jira.atlassian.com
  25. 90 Unable to import required fields into JIRA — Atlassian Community
  26. 91 Which file encoding should I use for importing CSV with German characters — Atlassian Community
  27. 95 Mastering Jira Migration Guide: Part 1 — Atlassian Community
  28. 102 Support migration of Tempo Timesheets-Time Tracking & Reports — jira.atlassian.com
  29. 106 Pre-create Statuses for workflow build — Atlassian Community
  30. 112 Auditing in Jira — Administering Jira applications Data Center
  31. 113 Finding user names to bulk upload issues via CSV — Atlassian Community
  32. 114 Unable to set Modified Date while importing issues from CSV — Atlassian Community
  33. 118 Audit activities in Jira — Atlassian Support
  34. 121 CSV Bulk Update Existing issues — Atlassian Community
  35. 122 Understanding the Post-Migration Reconciliation (PTR) Report in JCMA — Atlassian
  36. 124 The Jira Data Center Migration Blueprint: 10 Best Practices — Atlassian Community
  37. 141 Atlassian Partner Directory
  38. 142 Cost to stand up JIRA Help Desk in the cloud $80k — r/sysadmin
  39. 144 Cloud transformation costs — Atlassian
  40. 153 Configure file attachments — Atlassian Support
  41. 157 How to migrate issues with attachments using the CSV import in Jira Server and Data Center — Atlassian
  42. 159 Attachment size limit in Jira Cloud — Atlassian Community

Need help running this migration?

FlitStack AI runs Jira migrations end-to-end.

Fixed-fee pricing, a hands-on migration engineer, full field mapping and validation. The work described in this guide — done for you.