# Migrating large XA studies

**URL:** https://discourse.orthanc-server.org/t/migrating-large-xa-studies/6470
**Category:** General
**Created:** [August 5, 2026, 2:18pm UTC](https://discourse.orthanc-server.org/t/migrating-large-xa-studies/6470 "2026-08-05T14:18:18Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![byweber](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/byweber/32/2580_2.png) [@byweber](https://discourse.orthanc-server.org/u/byweber)
#### Post date: [August 5, 2026, 2:18pm UTC](https://discourse.orthanc-server.org/t/migrating-large-xa-studies/6470/1 "2026-08-05T14:18:18Z")

</div>

Hi everyone,

I need to migrate specific Hemodynamics (XA) studies from a source Orthanc instance (HMSJ) to a destination Orthanc instance (HEMO).

**Context & Scope:**

- **Volume:** ~450 studies
- **Study size:** Very large (~3 GB per study, average total ~1.35 TB)
- **Migration direction:** Destination (HEMO) pulling studies from Source (HMSJ) using a Python script.

**Environment Details:**

- **Source Server (HMSJ):**
  - OS: Windows Server 2016
  - Database: PostgreSQL

- **Destination Server (HEMO):**
  - OS: Ubuntu 24.04
  - Database: SQLite

**Current Approach & Questions:**  
I am currently working on a Python script using the Orthanc REST API to handle the transfer. Given the large study sizes, I would appreciate advice on the best practices to avoid timeouts and high memory usage:

1. **Transfer Mechanism:** Is it better to use the `/peers/.../store` (Orthanc Peer mechanism) via REST API, C-MOVE via DICOM, or stream the DICOM files directly study-by-study/series-by-series?
2. **Performance & Stability:** Are there specific REST API parameters or chunking strategies recommended when pulling/pushing multi-gigabyte XA studies?
3. **Database considerations:** Since the destination uses SQLite, should I expect I/O bottlenecks during concurrent or rapid ingestion of 3 GB studies?

Any code snippets, architectural recommendations, or best practices for handling high-volume DICOM transfers between Orthanc servers would be greatly appreciated.

Thanks in advance!

---

<div class="post-metadata">

### Author: ![alainmazy](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/alainmazy/32/1576_2.png) [@alainmazy](https://discourse.orthanc-server.org/u/alainmazy)
#### Post date: [August 13, 2026, 7:46am UTC](https://discourse.orthanc-server.org/t/migrating-large-xa-studies/6470/2 "2026-08-13T07:46:39Z")

</div>

Hi @byweber

I would simply use the [OrthancCloner](https://pypi.org/project/orthanc-tools/) with 20 workers threads.

For the performance bottleneck: check [this benchmark](https://orthanc.uclouvain.be/book/faq/db-benchmark.html) (tl;dr; if you have more than 50k instances, don’t use SQLite and stick to PostgreSQL)

Hope this helps,

Alain.
