# Migrate from Qase

Source: https://docs.qualflare.com/docs/migrate/qase · Last updated: 2026-10-29

Move test cases from Qase to Qualflare with a CSV, JSON or XML export: how nested suites, steps, statuses and priorities map, and what stays in Qase.

You can move test cases from Qase to Qualflare by exporting a CSV, JSON or XML file from Qase and importing it in **Import**; suites, cases, steps, statuses and priorities move, while runs, results, attachments, tags and custom fields stay in Qase.

## What migrates from Qase

This is what Qualflare makes of each part of a Qase export:

| Qase                                                                         | In Qualflare                                                                                                              |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Suites and nested suites                                                     | Suites. JSON and XML keep the path, such as `Web > Login`; from a CSV, the suite is the `suite` column's value as written |
| Cases                                                                        | Cases, with their status as the state when it maps                                                                        |
| Steps, expected results and step data                                        | **Action** steps, each followed by its **Expected Result** and **Data Input** steps when it has them                      |
| Gherkin steps                                                                | One **Action** step each, such as `Given a registered user`                                                               |
| Preconditions                                                                | A **Precondition** step first                                                                                             |
| Suite descriptions (JSON, XML)                                               | Suite descriptions                                                                                                        |
| Severity, tags, custom fields, attachments, runs, results, plans, milestones | Not imported                                                                                                              |

## Before you begin

Requires the Editor role or higher in the project.

* The Qase cases count toward your workspace's test case limit, 200 test cases on Starter, and each suite toward the suite limit, 10 test suites. See [What happens at a limit](https://docs.qualflare.com/docs/administration/plans#what-happens-at-a-limit).
* Import never changes the cases a project already has: a case whose name already exists in its suite is skipped.
* One file holds up to 1,000 cases, 200 suites and 5,000 steps, and 20 MB. Export a large project a few suites at a time. See [Limits](https://docs.qualflare.com/docs/test-management/import-export#limits).
* Keep the export file: Qualflare deletes its stored copy when the import finishes.

## Export from Qase

Qualflare reads a Qase CSV, JSON or XML export. Menu paths differ between tools and versions, so follow the source tool's own export guide.

Choose JSON or XML when your suites nest: Qualflare builds each suite's `Parent > Child` path from their suite tree. From a CSV, it names each suite by the `suite` column's value as written, so rows with the same value go to one suite.

**JSON:** a suite tree, `{"suites": [{"title", "cases", "suites"}]}`, or a list of cases that each name their `suite`. Cases outside the tree, and cases in a list with no `suite`, go to `Uncategorized`.

**XML:** a `<nodes>` file with `<suites>` and `<cases>`; suites nest through `<node>`.

**CSV:** one row per case, with these column headers (case doesn't matter): `title`, `suite`, `description`, `preconditions`, `priority`, `type`, `automation`, `status`, `steps_actions`, `steps_result` and `steps_data`. The three step columns hold numbered lines, `1. …`, and Qualflare pairs them by number.

## Import the Qase file

### Step 1: Open Import in Browse

In the project you're moving to, click **Browse**, open **Browse actions** (⋮, next to **Create Suite**) and choose **Import**. In a project with no suites, you can also click **Import** in the empty state.

### Step 2: Choose Qase

In **Import Test Cases**, click **Qase**. The card shows the file types it takes, `.csv, .json, .xml`.

*Figure: Pick the tool your file came from. Each card lists the file types it accepts.*

### Step 3: Upload the file and click Import

In **Upload Qase File**, drop the file on **Drop your file here, or click to browse**, or click it to pick the file, then click **Import**. Qualflare shows `Import queued — we'll notify you and the project when it's done.` and imports the file in the background.

## Field mapping

This is how Qualflare reads each Qase field:

| Qualflare field  | From Qase                                                                   | Value                                                                                                                                                                                        |
| ---------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**         | `title`                                                                     | As written, up to 512 characters                                                                                                                                                             |
| **Description**  | `description`                                                               | Text over 1,024 characters is shortened                                                                                                                                                      |
| **Suite**        | The suite tree (JSON, XML) or `suite` (CSV)                                 | The path, as `Parent > Child` (JSON, XML); a case outside any suite goes to `Uncategorized`                                                                                                  |
| **State**        | `status`                                                                    | **Active** for `actual` or `active`; **Review** for `review` or `under review`; **Draft** for `draft` or `new`; **Outdated** for `deprecated`, `obsolete` or `outdated`; **Draft** otherwise |
| **Priority**     | `priority`                                                                  | As on [Migrate from TestRail](https://docs.qualflare.com/docs/migrate/testrail#field-mapping); in JSON, the numbers 0 to 3 are **Low**, **Medium**, **High** and **Critical**                |
| **Test Type**    | `type`                                                                      | As on Migrate from TestRail                                                                                                                                                                  |
| **Automation**   | `automation`                                                                | **Automated** for `automated`, `yes` or `true`; **Manual** for anything else, `to-be-automated` included                                                                                     |
| **Steps**        | `steps` (`action`, `expected_result`, `data`) or the three CSV step columns | An **Action** step, then its **Expected Result** and **Data Input** steps when it has them; text over 256 characters is shortened                                                            |
| **Precondition** | `preconditions`                                                             | A **Precondition** step first                                                                                                                                                                |

## Verify counts

When the Qase import finishes, project members get the notification `Import finished: <file name>`, reading `<n> cases created in <m> new suites, <k> skipped.`

The cases created plus the cases skipped equal the cases in the file that have a title. If the count is lower than in Qase, check for cases with no title: Qualflare skips them.

Open **Browse** to see the suites.

*Figure: When an import finishes, project members get a notification with the cases created and skipped.*

## Move automation

Qualflare imports Qase test cases, not their results. To bring automated results, upload the files your test runner writes with `qf <identifier> collect`, from your machine or from CI ([CI/CD integration](https://docs.qualflare.com/docs/cli/ci-cd)); each upload becomes a launch, and qf reads [these formats](https://docs.qualflare.com/docs/cli/formats).

A result joins an existing case only when its suite and case names match. Otherwise the upload creates an Active, automated case next to the imported ones, and its suite if no suite has that name. See [Manual and uploaded cases side by side](https://docs.qualflare.com/docs/runs/automated-results#manual-and-automated).

> **Caution: An upload can replace a case's steps**
>
> When a report includes steps for a test, Qualflare replaces the steps of the case it matches with the reported ones, including steps you wrote by hand or generated with Quo. A test reported without steps leaves the case's steps as they are.

For some frameworks a native reporter adds steps and retries: see [Reporters](https://docs.qualflare.com/docs/reporters).

## Run Qase and Qualflare in parallel

You can keep Qase running while your team starts in Qualflare, but a later import of a newer export adds only cases with new names, so edits you make in Qase after the first import don't carry over. Do a last import when you switch, then edit the cases in Qualflare.

## Limitations

* A case can have up to 100 steps. The dialog refuses a file over 20 MB; a file over any other limit fails, and the notification names the limit.
* A suite or case name over 512 characters fails the import.
* From a CSV, rows with the same `suite` value go to one suite.
* Severity isn't imported; Qualflare takes `priority`.
* Two cases with the same title in one suite: the first is imported and the rest are skipped.

## Troubleshoot

| Message                                                                                                                                                       | Cause                                                                                                      | Fix                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `Import failed: <file name>` with `The file could not be read as a qase json export: failed to parse Qase JSON: could not find test cases in JSON structure.` | Qualflare found no test case in the JSON: none under `suites`, and no `cases`, `entities` or `result` list | Export the project again as JSON                                                                                    |
| `Import failed: <file name>` with `The file could not be read as a qase xml export: failed to parse Qase XML: …`                                              | Not a Qase XML export                                                                                      | Export again as XML from Qase                                                                                       |
| `Import failed: <file name>` with `The file could not be read as a qase csv export: no test suites found in import file.`                                     | No row has a `title`                                                                                       | Check the headers in [Export from Qase](https://docs.qualflare.com/docs/migrate/qase#export-from-qase) |
| `Invalid file type. Accepted: .csv, .json, .xml`                                                                                                              | Another file type                                                                                          | Export as CSV, JSON or XML                                                                                          |

Other messages: [Troubleshoot](https://docs.qualflare.com/docs/test-management/import-export#troubleshoot).

## Related

* **Guides:** [Migrate to Qualflare](https://docs.qualflare.com/docs/migrate) · [Import and export test cases](https://docs.qualflare.com/docs/test-management/import-export) · [Migrate from Testmo](https://docs.qualflare.com/docs/migrate/testmo)
* **Reference:** [Test cases: fields, states and steps](https://docs.qualflare.com/docs/test-management/test-cases) · [Shared Steps](https://docs.qualflare.com/docs/test-management/shared-steps)
* **CLI/API:** [Upload results with qf collect](https://docs.qualflare.com/docs/cli/collect)
