# Migrate from Allure TestOps

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

Move test cases from Allure TestOps to Qualflare with a CSV export, and keep your Allure adapters: upload allure-results with qf. What maps and what stays.

You can move test cases from Allure TestOps to Qualflare by exporting a CSV file from Allure TestOps and importing it in **Import**; cases, nested scenario steps and statuses move, while past launches, results and attachments stay in Allure TestOps.

Automated tests that write Allure results keep their adapters: qf uploads the `allure-results` directory they write ([Keep your Allure results](https://docs.qualflare.com/docs/migrate/allure-testops#allure-results)).

## What migrates from Allure TestOps

This is what Qualflare makes of each part of an Allure TestOps export:

| Allure TestOps                                              | In Qualflare                                                            |
| ----------------------------------------------------------- | ----------------------------------------------------------------------- |
| Test cases                                                  | Test cases, with their status as the state when it maps                 |
| Scenario steps, nested by indentation                       | **Action** steps, nested up to 5 levels                                 |
| Expected result lines and the expected result column        | **Expected Result** steps                                               |
| Preconditions                                               | One **Precondition** step per line                                      |
| Suite labels, or epic, feature and story                    | One suite named by the path, such as `Billing > Checkout > Saved cards` |
| Severity, layer                                             | **Priority**, **Test Type**                                             |
| Past launches, results, attachments and other custom fields | Not imported                                                            |

## Before you begin

Requires the Editor role or higher in the project.

* The Allure TestOps cases count toward your workspace's test case limit, 200 test cases on Starter, and each suite path 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 in parts. 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 Allure TestOps

Qualflare reads an Allure TestOps CSV export with one row per test case. Menu paths differ between tools and versions, so follow the source tool's own export guide.

Allure TestOps means the test management product. Allure Report, the open-source reporter, has no test case export to import.

Qualflare finds each column by its header, ignoring case, and accepts several names for each. If your file uses another name, rename that header before you import.

| Qualflare field | Headers Qualflare accepts                                                                                                                                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name            | `Name`, `Title`, `Test case name`, `Case name`, `Test case`, `Summary`                                                                                                                                                                                            |
| Description     | `Description`, `Test case description`, `Body`, `Details`                                                                                                                                                                                                         |
| Preconditions   | `Preconditions`, `Precondition`, `Pre-conditions`, `Pre conditions`, `Setup`                                                                                                                                                                                      |
| Steps           | `Scenario steps`, `Scenario`, `Steps`, `Test steps`, `Test scenario`                                                                                                                                                                                              |
| Expected result | `Expected result`, `Expected results`, `Expected`                                                                                                                                                                                                                 |
| State           | `Status`, `State`, `Workflow status`, `Workflow state`, `Case status`                                                                                                                                                                                             |
| Priority        | `Severity`, `Priority`, `Custom field: Severity`                                                                                                                                                                                                                  |
| Test type       | `Layer`, `Test layer`, `Custom field: Layer`, `Test type`, `Type`                                                                                                                                                                                                 |
| Automation      | `Automation`, `Automated`, `Automation status`, `Is automated`                                                                                                                                                                                                    |
| Suite           | `Parent suite`, `Suite` (or `Suite name`, `Test suite`) and `Sub suite`; else `Epic` (or `Epics`, `Product`), `Feature` (or `Features`, `Tested feature`, `Component`) and `Story` (or `Stories`, `Tested story`). Each of the six also as `Custom field: <name>` |

## Import the Allure TestOps 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 Allure TestOps

In **Import Test Cases**, click **Allure TestOps**. 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 Allure TestOps 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.

## How Qualflare reads the scenario

Qualflare turns the Allure TestOps scenario cell into steps line by line:

* Each line is one step. A line indented deeper than the one above is its sub-step, down to 5 levels. Text over 256 characters in a step is shortened.
* Numbers such as `1.`, `2)` or `1.1.` at the start of a line are removed. A line that holds only a number, and blank lines, are dropped.
* A line `Expected result: <text>` under a step becomes that step's expected result.
* A line `Expected result` on its own makes the lines under it Expected Result steps.
* The `Expected result` column becomes the case's last Expected Result step.

```text
1. Open the login page
   Expected result: the login form is shown
2. Sign in
   2.1. Enter the email and password
   2.2. Click Sign in
3. Open Settings
```

This gives **Open the login page** with its expected result, **Sign in** with two sub-steps, and **Open Settings**.

Qualflare reads the other Allure TestOps columns this way:

| Qualflare field | From Allure TestOps                                       | Value                                                                                                                                                                                                              |
| --------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Suite**       | Parent suite, suite, sub suite; else epic, feature, story | The first value of each, as a `Parent > Child` path; no label → `Uncategorized`                                                                                                                                    |
| **State**       | Status                                                    | As on [Migrate from Qase](https://docs.qualflare.com/docs/migrate/qase#field-mapping)                                                                                                                              |
| **Priority**    | Severity                                                  | **Critical** for `blocker` or `critical`, **Medium** for `normal`, **Low** for `minor` or `trivial`; see [Migrate from TestRail](https://docs.qualflare.com/docs/migrate/testrail#field-mapping) for other values  |
| **Test Type**   | Layer                                                     | The type the layer names, without a trailing "Tests", "Test", "Testing" or "Layer": `API Tests` → **API**, `Unit Testing` → **Unit**; a `Manual` or `Automated` layer, or one Qualflare doesn't know → **Feature** |
| **Automation**  | Automation                                                | **Automated** for `automated`, `yes` or `true`, else **Manual**; the layer never sets it                                                                                                                           |
| **Description** | Description                                               | Text over 1,024 characters is shortened                                                                                                                                                                            |

## Keep your Allure results

Requires qf 0.4.0 or later.

If your automated tests use Allure adapters, keep them. qf groups each test's retries into one result, marks a test that failed and then passed as flaky, and reads steps, parameters, labels, links and attachments. Uploaded results go to one suite, named after the results' top-level suite label when only one appears, or `Allure results` otherwise, so they join the cases you imported only where the suite and case names match.

> **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.

qf uploads the results directory your adapters write, with no `--format`:

```bash
qf myapp collect allure-results/
```

What qf reads from each result file is in [Upload Allure results](https://docs.qualflare.com/docs/cli/allure).

## Verify counts

When the Allure TestOps 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 name. If the count is lower than in Allure TestOps, check for rows with no 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

For tests that write Allure results, see [Keep your Allure results](https://docs.qualflare.com/docs/migrate/allure-testops#allure-results). For other result formats, 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).

If a result that joins an imported case includes steps, they replace the case's imported steps ([Steps on matched cases](https://docs.qualflare.com/docs/runs/automated-results#reported-steps)).

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

## Run Allure TestOps and Qualflare in parallel

You can keep Allure TestOps 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 Allure TestOps 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.
* A row with no name is skipped.
* A label with several values, such as `Epic A, Epic B`, gives only its first value to the suite name.
* Steps nested deeper than 5 levels stay at level 5.
* An `Expected result` line with nothing under it is dropped.

## Troubleshoot

| Message                                                                                                                     | Cause                                                    | Fix                                                                                                                                                   |
| --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Import failed: <file name>` with `The file could not be read as a allure csv export: no test suites found in import file.` | No column matched a Name header, or every name was empty | Rename the name column to `Name` ([Export from Allure TestOps](https://docs.qualflare.com/docs/migrate/allure-testops#export-from-allure-testops)) |
| `Invalid file type. Accepted: .csv` or `Invalid file type. Expected CSV file.`                                              | Another file type, or the browser reports another type   | Export, or save again, as CSV                                                                                                                         |

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)
* **Reference:** [Allure results](https://docs.qualflare.com/docs/cli/formats#allure) · [Test cases: fields, states and steps](https://docs.qualflare.com/docs/test-management/test-cases)
* **CLI/API:** [Upload Allure results](https://docs.qualflare.com/docs/cli/allure)
