Import / Export
Bulk import tickets from CSV or JSON files, or export your project's tickets as CSV.
Access: Team Lead role or higher. Found in Settings → Import / Export.
Importing Tickets
Preparing Your File
Fesk accepts CSV and JSON files up to 5 MB and 10,000 rows.
CSV Format
A standard comma-separated file with a header row:
Title,Status,Priority,Assignee,External ID
Fix login bug,open,high,alice@company.com,JIRA-1234
Add dark mode,in_progress,medium,bob@company.com,JIRA-1235
Update docs,open,low,
Rules:
- First row must be column headers
- Title is the only required field, everything else is optional
- Quoted fields supported:
"Value with, commas"or multiline"Line 1\nLine 2" - Encoding: UTF-8 recommended. UTF-16 and ISO-8859-1 are auto-detected.
- Delimiter: Comma, semicolon, or tab, detected automatically from the first 5 rows
JSON Format
An array of objects where each object is one ticket:
[
{
"title": "Fix login bug",
"status": "open",
"priority": "high",
"assignee_email": "alice@company.com",
"external_id": "JIRA-1234"
},
{
"title": "Add dark mode",
"status": "in_progress",
"priority": "medium"
}
]
Rules:
- Must be a JSON array of objects (not a single object or nested structure)
- Field names become the column headers for mapping
Supported Fields
After upload, you map each source column to a Fesk ticket field:
| Target Field | Accepted Values | Default if Unmapped |
|---|---|---|
| Title (required) | Any text | - |
| Status | Workflow status slug or label (e.g. open, In Progress) | Project's default status |
| Priority | low, medium, high, critical | medium |
| Ticket Type | Ticket type name (e.g. Bug, Feature Request) | Project's default type |
| Assignee (email) | Active project member's email | Unassigned |
| Reporter (email) | Any email | Importing user |
| Created Date | ISO-8601, US (MM/DD/YYYY), or EU (DD/MM/YYYY) | Now |
| External ID | Any text (e.g. Jira key PROJ-123) | Empty |
| Source Type | manual, email, api, webhook | manual |
| Labels | Comma-separated text | Empty |
| Due Date | Any supported date format | Empty |
| Skip | - | Column ignored |
Status and Ticket Type must match values configured in your project (Settings → Workflow Statuses / Ticket Types). If a value doesn't match, you'll see an error with a suggestion: "Status 'In Review' not found, did you mean 'In Progress'?"
Assignee must be an active user who is a member of the project. Deactivated or non-member emails produce row errors.
Import Workflow
- Upload: Drag-and-drop or browse for your file. Fesk detects format, encoding, and delimiter automatically.
- Map Columns: Each source column is paired with a Fesk field via a dropdown. Auto-suggestions appear based on common header names (e.g. "Summary" → Title). Columns you don't need → set to "Skip."
- Preview & Import: Review the first 10 rows. Validation runs on all rows. Choose options:
- Skip invalid rows: rows with errors are skipped instead of blocking the import
- Skip duplicates: rows whose External ID already exists in the project are skipped (prevents duplicates on re-import)
- Execute, Files ≤500 rows import instantly. Larger files queue in the background, check Import History for status.
Mapping Presets
If you import regularly from the same source (e.g. a weekly Jira export), save your column mapping as a preset. Next time, select it from "Load preset" to skip manual mapping.
Rolling Back an Import
Made a mistake? Go to Import History and click Roll back on any completed import. This soft-deletes all tickets created by that import. Tickets modified after import are still rolled back but flagged in the confirmation.
Common Issues
| Problem | Solution | |---|---| | "Status 'In Review' not found" | That status doesn't exist in this project. Check Settings → Workflow Statuses for valid values. | | "No active project member with email" | The email isn't a member of this project, or the user is deactivated. | | Row count exceeds 10,000 | Split your file into smaller parts. | | File larger than 5 MB | Remove unnecessary columns or split the file. | | "An import is already in progress" | Only one import runs per project at a time. Wait for the current one to finish. |
Exporting Tickets
Download your project's tickets as a CSV file.
Columns
Select which fields to include in the export. Defaults: Ticket Number, Title, Status, Priority, Assignee, Created Date. Additional options: Description, External ID, Labels, Updated Date, Reporter.
Filters
Narrow the export to specific tickets. All filters are optional: leave them empty to export all non-deleted tickets in the project.
| Filter | What to Enter | Examples |
|---|---|---|
| Status | A workflow status slug or label from your project | open, closed, in_progress |
| Priority | One of: low, medium, high, critical | high |
| Created after | Only include tickets created on or after this date | Use the date picker |
Tips
- Soft-deleted tickets are excluded automatically
- The file is UTF-8 encoded and named
tickets-export-YYYY-MM-DD.csv - To re-import an export into another project, use the Import tab with the exported CSV
- Large exports (thousands of tickets) stream efficiently, no timeout risk