Skip to content

Documentation

Importing & migrating

Bring ticket history and knowledge-base articles over from Zendesk, Freshdesk, Jira Service Management, or any tool that exports CSV — with original timestamps, authors, and internal notes preserved, a sample-first dry run, and idempotent re-runs.

Where:
Admin → Import & migration
Permission:
MANAGE_USERS · EDIT_REQUESTS (tickets) · EDIT_KNOWLEDGE_BASE (KB)
Updated:
July 2026

Overview

  • One hub, two entities: Admin → Import & migration has a Tickets tab and a Knowledge base tab. Each offers two paths — upload a CSV any tool can export, or connect a source tool and pull records straight from its API.
  • Ticket history comes over with fidelity: original created/resolved dates, the real requester and assignee (resolved by email), tags, and the full conversation — with internal notes kept internal. Imported tickets deliberately do not fire automations, notifications, or SLA timers, so nobody is paged about years-old requests and live reporting stays clean.
  • Imports are idempotent. Every imported record is stamped with its source system and original id, so re-running the same file (or a connector pull) updates records in place instead of duplicating them.
  • The CSV path is a guided wizard: upload, map your columns to our fields (auto-detected, with live sample values), map status/priority values, preview the outcome row-by-row, try a sample of ten real tickets to check fidelity, then run the full import in the background. Large files stream through a resumable worker.

Step by step

  1. 01

    Choose what to import

    Admin → Import & migration. Pick the Tickets or Knowledge base tab. Then choose 'Upload a CSV' for a file any tool can export, or 'Connect a tool' to pull directly from a source's API.

  2. 02

    Map fields and values (CSV)

    The wizard auto-maps your columns to our fields and shows sample values so a mis-mapped column is caught before import. For tickets, it also maps the source's status and priority words to ours. Required fields must be mapped before you can continue.

  3. 03

    Preview, then try a sample

    The preview shows, per row, whether it will create, update, skip, or error — with the reason. For tickets you can then import a sample of ten real tickets, open them to confirm the subject, requester, timestamps, and conversation came across right, and either keep going or discard the sample and adjust your mapping. Discarding a sample removes those tickets (and any placeholder requesters) so you never end up with duplicates.

  4. 04

    Connect a source tool

    On 'Connect a tool', enter the source's credentials (an admin API token), test the connection, and start. The pull runs in the background — it paginates through every record, honoring the source's rate limits, and shows live progress. Article bodies from a source (HTML, or Confluence storage format) are converted to Markdown.

  5. 05

    Sync new & updated (delta)

    After a completed Zendesk import, the recent-imports list shows a 'Sync new & updated' action. Re-enter your token to pull only the tickets created or changed since the last run — a zero-downtime cutover. Matching tickets update in place; new ones are added.

Connectors

Direct API connectors, by source and entity. Any source not listed — or JSM tickets' knowledge base — can still be imported by exporting to CSV.

SourceTicketsKnowledge baseDelta sync
ZendeskYes (incremental export)Yes (Guide articles)Yes
FreshdeskYesYes (Solutions)No
Jira Service ManagementYes (JQL search)No
ConfluenceYes (space pages → Markdown)No
Any CSV exportYesYesn/a

Good to know

  • Requesters and authors that aren't in your org yet are created as placeholder users (matched by email) so 'who asked' is never lost. Where a source hides email — Jira often does — a stable placeholder is derived from the account id instead.
  • Publishing an imported KB article needs the Approve knowledge base permission; without it, articles land as Draft so a bulk import can't self-publish past review.
  • Custom statuses that don't match a known value surface as 'unmapped' in the preview rather than being silently miscategorized — remap them and re-run.
  • Every import writes audit events (started, completed) and, for discards and delta syncs, a rolled-back / re-synced record.