thunderbird / thunderbird/thundermail-deploy

[Spike] Time Stalwart v0.15 to v0.16 export/import with migrate_v016.py

Open
#113 0 comments 0 reactions 1 assignee View on GitHub

@ryanjjung is already working on this.

Since Sep 3, 2026.

Dominant language
Shell
Stars
0
Forks
0
Avg merge
4h 31m
Merged PRs (30d)
26

Description

Overview

Before committing to the downtime-tolerant migration approach, run a timed end-to-end test of the data export/import path using the official migrate_v016.py script. The goal is to measure how long the export and import take against real production-scale data, so we can size the migration window realistically.

Steps

  1. Download the migration script:
    curl -o migrate_v016.py https://raw.githubusercontent.com/stalwartlabs/stalwart/refs/heads/main/resources/scripts/migrate_v016.py
    
  2. Export data from the existing prod system (time this step):
    python migrate_v016.py dump --url $OLD_STALWART_URL --username $OLD_STALWART_USER --password $OLD_STALWART_PASSWORD --settings settings.json --principals principals.json
    
  3. Convert the export into an importable format (time this step):
    python migrate_v016.py convert --settings settings.json --principals principals.json --config config.json --output export.json
    
  4. Import into a fresh v0.16 system (time this step):
    stalwart-cli apply --file /path/to/export.json
    

Notes

  • Credentials are supplied via environment variables (OLD_STALWART_URL, OLD_STALWART_USER, OLD_STALWART_PASSWORD) and must not be committed or pasted into this issue.
  • Record wall-clock time for each step, plus the sizes of settings.json, principals.json, and export.json.

Acceptance Criteria

  • All four steps run successfully end-to-end
  • Per-step durations recorded in a comment on this issue
  • Artifact sizes noted (settings.json, principals.json, export.json)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.