How-to

Migration from TestRail

Migration from TestRail ​

Migration from TestRail imports a TestRail project into ComplexQA through the TestRail API. The background import creates a new ComplexQA project and can include runs and results.

Role: team administrator. Other roles see an access denied message.

Before you start ​

  1. Sign in on your team subdomain.
  2. Confirm that your role in the team is Administrator.
  3. In TestRail, open Admin > Site Settings > API.
  4. Enable the API and save the settings.
  5. Open My Settings > API Keys.
  6. Create an API key and select Save Settings.

The import always creates a new ComplexQA project named after the TestRail project. You do not need to prepare an empty destination project. If the TestRail project has no announcement, the ComplexQA project description stays empty.

What is imported ​

TestRail elementWhere it lands in ComplexQAWhere to look
ProjectNew projectProject list
Suite and sectionSuite treeProject test case list
CaseTest case in that treeTest case card: title, references in the description, preconditions, expected result, importance
EstimateExecution time in minutesTest case card. 5m is stored as 5. 2m 30s rounds to 3
Case type and case custom fieldsTeam custom properties on the test caseTest case card
StepStep text and the step expected resultTest case card
RunTest runTest run list, when runs and results were enabled at start
Result, comment, Defects, Version, ElapsedTest run result inside the runThat run's card. There is no separate result list

The result comment is stored in the result notes. Defects and Version are text custom properties on the result. Elapsed is an integer in seconds on the same result.

A custom property is created once for the team and appears in every project of that team for the same element type. The value sits on the test case card or on the result inside the run.

Not imported: milestones, user fields, assigned people, BDD scenarios, TestRail AI Automation, attachments, shared steps, and plans. TestRail preconditions and steps stay native test case fields, not custom properties.

Start the migration ​

  1. Open /migrations/en on your team subdomain.
  2. Select New TestRail import.
  3. Enter the TestRail Base URL as the host, without /index.php or /dashboard.
  4. Enter the email address used for your TestRail account.
  5. Enter the TestRail API key value or your account password.
  6. Select Connect.
  7. Select a TestRail project.
  8. Optional: enable Import runs and results.
  9. Select Start import.

ComplexQA creates the job and a new project. If an active job already imports the same TestRail project, ComplexQA opens that job instead of creating a duplicate.

The job stays PENDING until the background worker takes the queue. The team page does not start the worker. If the status does not move, start processing in the platform admin: Server management, Utilities, command migrations:process. One run handles part of the queue. Repeat until the status is COMPLETED. If the server schedule is running, the parts continue on their own.

Monitor the job ​

The import page shows:

  • A short map of where each kind of data goes.
  • Status: PENDING, RUNNING, PAUSED, COMPLETED, FAILED, or CANCELLED, and the current phase.
  • A progress table: done, skipped, and failed. The Where column opens the test case list, the test run list, or the property table below. Results, comments, Defects, Version, and Elapsed have no link: open them inside the run.
  • A table of custom properties from this import. Its link opens the property card. Read the values on the test case or inside the run.
  • Recent failures for individual elements.

Use Pause and Resume to control processing. Use Cancel to stop the job and clear its stored API credentials. Use Refresh to load the latest counters.

Return to the job from the migrations list.

When the status is COMPLETED, open Projects and review the new project. Open results from the test run card.

Limits ​

  • TestRail steps remain text-oriented. Structured fields such as step_element and step_element_action stay empty.
  • Attachments, shared steps, plans, and the objects listed as not imported above are not imported.
  • One job imports one TestRail project into one new ComplexQA project.
  • A resumed job skips elements already recorded for that destination project. Cases already imported are not updated on a later run.
  • A large project is processed in parts, not in one run.
  • The custom property catalog belongs to the team. New slots from the import also appear in the other projects of that team, including empty slots.

Resolve HTTP 401 ​

An HTTP 401 response means TestRail rejected the credentials.

  1. Confirm that the API is enabled under Admin > Site Settings > API.
  2. Confirm that you selected Save Settings after creating the API key.
  3. Enter the account email and the API key value, not the key name.
  4. Try the account password in the same field to confirm that the login works.
  5. Confirm that Base URL contains only the TestRail host.

Do not share an API key in chat or support requests. Revoke and recreate an exposed key.

Version 1.2.0 · Last updated 2026-10-05

Did this page help?