# Migrate from Testmo

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

Move test cases from Testmo to Qualflare with a CSV export: how folders become suites, which columns Qualflare reads, and what stays in Testmo.

You can move test cases from Testmo to Qualflare by exporting a CSV file from Testmo and importing it in **Import**; folders, cases, steps, states and priorities move, while runs, results, attachments, tags and custom fields stay in Testmo.

## What migrates from Testmo

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

| Testmo                                                      | In Qualflare                                                                |
| ----------------------------------------------------------- | --------------------------------------------------------------------------- |
| Folders                                                     | Suites, named by the folder path: `Auth / Login` becomes `Auth > Login`     |
| Cases                                                       | Cases, with their state when it maps                                        |
| The step and expected result columns                        | One **Action** step and its **Expected Result** step                        |
| List items (`<li>`) in Description and Expected             | One **Action** step per item, with the expected result of the same position |
| Description                                                 | Description, unless its list items became the steps                         |
| Runs, results, attachments, tags, custom fields, milestones | Not imported                                                                |

## Before you begin

Requires the Editor role or higher in the project.

* The Testmo cases count toward your workspace's test case limit, 200 test cases on Starter, and each folder 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 folders 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 Testmo

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

Each row is one case. Qualflare reads these column headers (case doesn't matter): `Case` (or `Title` or `Name`), `Folder`, `Description`, `Priority`, `Type`, `Automation`, `State`, `Steps (Step)` (or `Step`) and `Steps (Expected)` (or `Expected Result`), and `Expected` for the list-item steps in [What migrates](https://docs.qualflare.com/docs/migrate/testmo#what-migrates).

## Import the Testmo 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 Testmo

In **Import Test Cases**, click **Testmo**. The card shows the file type it takes, `.csv`.

*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 Testmo 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 Testmo column:

| Qualflare field             | From Testmo                                            | Value                                                                                                                               |
| --------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Name**                    | `Case`, `Title` or `Name`                              | The first one with a value                                                                                                          |
| **Suite**                   | `Folder`                                               | The path, as `Parent > Child`; no folder → `Uncategorized`                                                                          |
| **Description**             | `Description`                                          | Text over 1,024 characters is shortened; not kept when its list items became steps                                                  |
| **State**                   | `State`                                                | As on [Migrate from Qase](https://docs.qualflare.com/docs/migrate/qase#field-mapping)                                               |
| **Priority**, **Test Type** | `Priority`, `Type`                                     | As on [Migrate from TestRail](https://docs.qualflare.com/docs/migrate/testrail#field-mapping)                                       |
| **Automation**              | `Automation`                                           | **Automated** for `automated`, `yes` or `true`, else **Manual**                                                                     |
| **Steps**                   | `Steps (Step)` and `Steps (Expected)`, or `<li>` items | See [What migrates](https://docs.qualflare.com/docs/migrate/testmo#what-migrates); text over 256 characters is shortened |

## Verify counts

When the Testmo 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 rows in the file that have a case name. If the count is lower than in Testmo, check for rows with no `Case`, `Title` or `Name`: 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 Testmo 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 Testmo and Qualflare in parallel

You can keep Testmo 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 Testmo after the first import don't carry over. Do a last import when you switch, then edit the cases in Qualflare.

## Limitations

* From the step columns, Qualflare reads one step per case. A row with no case name is skipped, so a step on a row of its own doesn't import. Several steps import only as list items in `Description`.
* 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.
* Two cases with the same name in one folder: 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 testmo csv export: no test suites found in import file.` | No `Case`, `Title` or `Name` column with a value | Check the headers in [Export from Testmo](https://docs.qualflare.com/docs/migrate/testmo#export-from-testmo) |
| `Invalid file type. Accepted: .csv`                                                                                         | Another file type                                | Export as CSV                                                                                                           |
| `Invalid file type. Expected CSV file.`                                                                                     | The browser reports the file as another type     | Save it again as CSV, then upload it                                                                                    |

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 Qase](https://docs.qualflare.com/docs/migrate/qase)
* **Reference:** [Test cases: fields, states and steps](https://docs.qualflare.com/docs/test-management/test-cases) · [Test suites and Browse](https://docs.qualflare.com/docs/test-management/test-suites)
* **CLI/API:** [Upload results with qf collect](https://docs.qualflare.com/docs/cli/collect)
