Skip to content

Migrate From Pivotal Tracker, Jira and Other Trackers

Moving to East Agile Tracker from Pivotal Tracker, Jira, Linear, Asana, Trello, Shortcut, GitLab, Plane or GitHub? Import your export with a dry-run preview first — what each source brings, and what stays behind.

East Agile Tracker imports from eleven sources. Ten read the export file the other tool already produces; GitHub connects to the repository directly. Every source goes through the same screen and the same preview, so the steps below apply to all of them. The sections after that list what each source brings across.

  1. Export your work from the other tool — the section for your source below names the menu.
  2. Open Project Settings → Import / Export on the project you want the stories in. Create an empty project first if you need one.
  3. Choose the source and pick the export file.
  4. Run the dry-run preview. It parses the whole file and reports what a real import would do — how many stories and labels, how many rows are skipped, and anyone it could not match to a member — and writes nothing.
  5. Import.

The Import / Export tab with Jira chosen as the source and an export file selected, ready to preview or import

A preview report: 8 stories and 3 labels would be imported, no rows skipped, and one person who could not be matched

Re-importing the same file is safe. A row that was already imported is matched by its source id and skipped, so a second run tops the project up instead of duplicating it.

An upload is capped at 10 MiB, and a single import at 5,000 stories. A larger migration splits into batches, and because re-importing is idempotent the batches can overlap without creating duplicates.

  • Stories, states and labels. Each row or card becomes a story, its status lands on the nearest state of the unstarted → started → finished → delivered → accepted loop, and its labels come with it. A cancelled or won’t-fix status arrives rejected and archived, so abandoned work stays out of the board and out of velocity.
  • Owners. A cell holding an email that matches a member attaches that member. Any other value — a display name, a username — attaches a display-only external person, so who owned what survives even for people who have no account here.
  • Dates. Creation and completion dates are imported, so historical iterations and the charts that read them are populated rather than empty.
  • Iterations, for every source whose export carries sprints or cycles.

Requesters, comments, epics and tasks depend on the source; its section below says which.

  • Attachments. No importer carries files. The stories arrive without them.
  • People as accounts. An owner, requester or commenter who is not already a member attaches as a display-only external person. Nothing is dropped and nothing is misattributed, but no account is created and no invitation is sent — invite them normally and their history is already attached.
  • Last-modified dates. There is no updated timestamp on the way in.
  • Workflow nuance. Custom statuses collapse onto the nearest state in the loop above. The dry-run preview is where to check a sample before importing a large project.

Source: Pivotal Tracker (CSV export). Pivotal Tracker shut down on 30 April 2025, so there is no live service to export from any more; a CSV export kept from before the shutdown is what this importer reads. The board, the story states and the acceptance loop follow the same model, so an imported project reads the way it did.

Pivotal TrackerBecomes
Title, DescriptionThe story’s title and description. The URL column is kept as the story’s provenance, and a View original issue link is added to a description that has text in it.
TypeThe story type — feature, bug, chore and release all have a direct equivalent.
Current StateThe story’s state.
EstimateThe story’s point estimate.
LabelsLabels, one per value.
Owned ByStory owners. Pivotal repeats this column per owner and every one is read.
Requested ByThe story’s requester.
Comment (one column per comment)Story comments, with the original author and the original timestamp.
Task / Task StatusTasks on the story, with completed tasks arriving completed.
Blocker / Blocker StatusBlockers, with resolved ones arriving resolved.
Type=epic rowsReal epics, rebuilt and joined to the stories that reference them, with the epic’s description.
Iteration, Iteration StartThe iteration grid. Stories from an iteration that had not begun stay in the Backlog, ranked by sprint.
Created at, Accepted atThe story’s creation and completion dates.
DeadlineA release story’s planned date.

A Pivotal export has no work-start column, so cycle-time figures stay empty for imported stories. An epic row that no story references creates nothing, because epics are rebuilt through their member stories.

Source: Jira (CSV export). In Jira, search for the issues you want, then use Export → Export Excel CSV (all fields). Take the all-fields export — the current-fields export omits the sprint, story-point and comment columns.

JiraBecomes
SummaryThe story’s title. A row with an empty summary is not imported.
DescriptionThe story’s description, converted from Jira wiki markup to markdown. Headings, bold, code blocks, lists and links convert; anything else is kept as literal text.
Issue TypeThe story type — Bug becomes a bug, Story and Feature become features, and Task becomes a chore.
StatusThe story’s state.
PriorityThe story’s priority, from Highest down to Lowest.
Story-points custom fieldThe story’s estimate. The first column whose header mentions story points is used, so Custom field (Story Points) and Custom field (Story point estimate) both work.
LabelsLabels, one per value.
Fix Version/sA Release: <version> label per value.
SprintThe iteration grid. Jira repeats the column once per sprint an issue passed through, and the last one is where it ended up; a named sprint also survives as a Sprint: <name> label.
AssigneeThe story’s owner, as a display-only external person — a Jira CSV carries no email address to match a member against.
ReporterThe story’s requester, by the same rule.
Comment (one column per comment)Story comments, each with its original author and timestamp.
Sub-task issuesTasks on the parent story, with done sub-tasks arriving complete. A sub-task whose parent is missing from the file becomes a story of its own.
Epic issuesA label named after the epic, applied to every child issue in it.
Issue keyAppended to the description as plain text (Original issue: PROJ-12).
Created, ResolvedThe story’s creation and completion dates.

A Jira epic arrives as a label on its children rather than as an epic record: the grouping survives and is searchable, the epic’s own description does not. Jira exports sprint names but not their dates, so iterations are ordered by sprint name.

Source: Linear (CSV export) — in Linear, Workspace settings → Import/Export → Export CSV.

  • Assignee becomes the owner and Creator the requester.
  • Project becomes the story’s epic.
  • Sub-issues become tasks on their parent story.
  • Cycles build the iteration grid; a cycle that has not started keeps its stories in the Backlog, ranked by cycle.
  • The Started column is read, so cycle time works for imported stories.
  • Linear’s CSV has no type column: a story labelled Bug arrives as a bug, otherwise as a feature.
  • Linear’s CSV export has no comments, and archived issues are skipped.

Source: Asana (CSV export) — in Asana, Project menu → Export/Print → CSV.

  • Assignee becomes the owner, matched to a member through Assignee Email when there is one.
  • Tags become labels.
  • Subtasks become tasks on their parent story.
  • A task with a Completed At date arrives accepted.
  • Asana’s CSV has no creator column and no comments, so the importing member is the requester.

Source: Trello (JSON export) — in Trello, Menu → Print and export → Export as JSON.

  • Each card becomes a story, and the list it sits in sets its state (To Do, Doing, Done and similar names).
  • Members on a card become owners.
  • Comments come across with their authors and timestamps.
  • Checklist items become tasks.
  • Labels keep their names and colours; a label with a colour and no name arrives as Trello-<colour>.
  • An archived card arrives archived.
  • A card labelled Bug arrives as a bug. Trello has no epics and no estimates, so neither is created.

Source: Shortcut (CSV export) — in Shortcut, Settings → Import/Export → Export to CSV.

  • owners become owners and requester the requester.
  • epic becomes the story’s epic.
  • tasks become tasks on the story; the CSV records no done flag, so they arrive open.
  • Iterations build the iteration grid.
  • The started_at column is read, so cycle time works for imported stories.
  • An archived story arrives archived. Shortcut’s CSV has no comments.

Source: GitLab (CSV export) — in GitLab, open the issues list and use Export as CSV; GitLab emails the file to you.

  • An open issue arrives unstarted, a closed one accepted.
  • Weight becomes the estimate.
  • The assignee becomes the owner and the author the requester.
  • The issue’s URL is kept as its provenance.
  • Turn on Include milestones to make each milestone an epic; with it off, the milestone column is ignored.
  • GitLab’s issue CSV has no comments.

Source: Plane (CSV export) or Plane (JSON export) — in Plane, Workspace settings → Exports.

  • Every assignee becomes an owner.
  • Comments come across with their authors and timestamps.
  • Plane’s state groups set the state; a cancelled issue arrives rejected and archived.
  • A cycle builds the iteration grid and also survives as a Cycle: <name> label; a module becomes a Module: <name> label.
  • Plane exports have no creator column, so the importing member is the requester. Plane exports no work-start date, so there is no cycle time.

Source: GitHub (Issues via API). Enter the owner and repository instead of uploading a file. Issues become stories with their assignees, author, labels, comments and checklist items; pull requests, milestones (as epics) and releases are opt-in. Tokens, rate limits and the rest are on Populate a project from a GitHub repo.

Source: East Agile Tracker (native export) — on the other project, Settings → Import / Export → Download export. This is the lossless path: followers, reviewers, epics, tasks, blockers, links and the Icebox all come back, and owners re-attach to members by email.

The stories are ordinary stories — the state machine, iterations and velocity all apply. The same screen exports the project again later, to the East Agile Tracker format for a lossless copy or to any of the other tools’ shapes; see Operating Instructions → Exporting a project.

Create a project and import your export — the importer is on every project’s settings screen.