<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Runshift</title>
    <description>The latest articles on DEV Community by Runshift (@getrunshift).</description>
    <link>https://dev.to/getrunshift</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048043%2F7caa5db7-754a-44da-826b-fd8a91b3bd18.png</url>
      <title>DEV Community: Runshift</title>
      <link>https://dev.to/getrunshift</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/getrunshift"/>
    <language>en</language>
    <item>
      <title>TestRail to Zephyr Scale Migration: CSV vs REST API</title>
      <dc:creator>Runshift</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:49:14 +0000</pubDate>
      <link>https://dev.to/getrunshift/testrail-to-zephyr-scale-migration-csv-vs-rest-api-4b7</link>
      <guid>https://dev.to/getrunshift/testrail-to-zephyr-scale-migration-csv-vs-rest-api-4b7</guid>
      <description>&lt;p&gt;If you're planning a TestRail to Zephyr Scale migration in 2026, there are three things worth knowing before you start that most documentation doesn't make clear upfront: the product has been renamed in a way that's easy to get wrong, the "simple" import method only migrates a fraction of your data, and the timing might matter more than you think.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atlassian is sunsetting Data Center — and that changes the calculus
&lt;/h2&gt;

&lt;p&gt;Atlassian stopped selling new Data Center licenses on 30 March 2026, with full end-of-life set for 2029. If your organization has any Jira migration on the roadmap this year, there's a good chance it's Cloud-bound — and if TestRail is still your test management tool, this is a natural point to move that at the same time rather than as a separate project six months later. Migrating test data into a Zephyr Scale instance that's about to move from Data Center to Cloud anyway often means doing the work twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The naming trap: "Zephyr Scale" doesn't exist anymore (sort of)
&lt;/h2&gt;

&lt;p&gt;Here's where a lot of migration research goes sideways early. SmartBear renamed its Zephyr product line, and the naming is genuinely confusing if you're not deep in it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What used to be called &lt;strong&gt;Zephyr Scale&lt;/strong&gt; is now marketed as &lt;strong&gt;"Zephyr — Test Management and Automation for Jira"&lt;/strong&gt; — the flagship, full-featured product.&lt;/li&gt;
&lt;li&gt;What used to be called &lt;strong&gt;Zephyr Squad&lt;/strong&gt; is now &lt;strong&gt;"Zephyr Essential — Test Management for Jira"&lt;/strong&gt; — a lighter-weight tool with a different data model entirely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most people still search "Zephyr Scale" out of habit, so that's the term used here — but the products themselves are genuinely different, not just renamed.&lt;/p&gt;

&lt;p&gt;It gets more confusing. SmartBear's own support documentation confirms that &lt;strong&gt;licenses for legacy Zephyr Squad Cloud were automatically rebranded as "Zephyr Essential" in the Atlassian Marketplace and Jira's app management screen — for billing purposes only.&lt;/strong&gt; That means an organization can see "Zephyr Essential" listed on their instance without having actually upgraded to the new Essential experience at all. If you're planning a migration into the flagship Zephyr product, checking the label alone isn't enough to confirm what you're actually working with.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSV import only gets you part of the way there
&lt;/h2&gt;

&lt;p&gt;This is the gap that catches most teams by surprise. Zephyr Scale's CSV import — the method most guides default to, because it's the simplest — only migrates test cases and their fields. It does not bring across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test cycles or test plans&lt;/li&gt;
&lt;li&gt;Execution history&lt;/li&gt;
&lt;li&gt;Attachments&lt;/li&gt;
&lt;li&gt;Issue links to Jira&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your migration is genuinely just "I need my test case library moved over," CSV import is fast and sufficient. But most real migrations — anything with meaningful execution history, traceability requirements, or attachment volume — need more than that, and CSV simply can't reach it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The REST API is where the real migration happens
&lt;/h2&gt;

&lt;p&gt;Zephyr Scale's REST API is a fully supported part of the product (same standing as CSV import — not an unsupported workaround), and it's the only path that reaches test cycles, executions, attachments, and issue links. The tradeoff is real: it means writing or adapting a script rather than clicking through an import wizard.&lt;/p&gt;

&lt;p&gt;One distinction worth being precise about: the API itself is supported by SmartBear. Any script you or a tool writes against it is your own code — normal and expected, just worth knowing going in, since it means debugging is on you, not a support ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  The error you're most likely to hit
&lt;/h2&gt;

&lt;p&gt;If you're scripting a migration via the API, the most common failure isn't a bug in your code — it's a mismatch in how the two platforms identify users. Jira Cloud identifies users by an internal &lt;code&gt;accountId&lt;/code&gt;, not by username or email (a platform-wide change made in 2019 for GDPR reasons). TestRail identifies users by username or email. Any API field that references a person — an owner, an assignee, an executor — will throw a &lt;code&gt;400: user not found&lt;/code&gt; error if your script passes a TestRail username straight through, or if that person doesn't have a Jira account in the target instance yet.&lt;/p&gt;

&lt;p&gt;The fix is straightforward once you know to look for it: provision every TestRail user as a Jira user first, and build a mapping table using Jira's user search endpoint before you migrate anything — not as a fix mid-script.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud vs. Data Center changes your actual endpoints
&lt;/h2&gt;

&lt;p&gt;Worth stating plainly: if you're setting up a new migration today, you're very likely on Jira Cloud, given the sunset timeline above. But Zephyr Scale Cloud and Zephyr Scale Data Center run genuinely different APIs — different versions, different base URLs, different authentication. Instructions written for one won't directly apply to the other, and feature parity between the two isn't guaranteed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to go from here
&lt;/h2&gt;

&lt;p&gt;This covers the shape of the problem — the naming, the CSV ceiling, the API reality, and the version split. Actually executing a migration means field-by-field mapping, a real API workflow (folder creation, test case creation, cycle and execution linking, attachment handling), and knowing which errors are coming before they happen.&lt;/p&gt;

&lt;p&gt;That's the gap the &lt;a href="https://runshift7.gumroad.com/l/zuolgs" rel="noopener noreferrer"&gt;TestRail → Zephyr Scale Migration Guide&lt;/a&gt; fills — a complete, Cloud-first playbook covering both the CSV and REST API paths, full field mapping, Cloud/Data Center-specific guidance, and the troubleshooting most teams only learn by hitting it themselves.&lt;/p&gt;

</description>
      <category>testrail</category>
      <category>jira</category>
      <category>qa</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
