# Stalwart-migrate 1.0.0: prepare fails with Registry deserialization error

**URL:** https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046
**Category:** Issues
**Created:** [October 26, 2026, 11:53pm UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046 "2026-10-26T23:53:03Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![nik](https://support.stalw.art/letter_avatar_proxy/v4/letter/n/6de8d8/32.png) [@nik](https://support.stalw.art/u/nik)
#### Post date: [October 26, 2026, 11:53pm UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/1 "2026-10-26T23:53:03Z")

</div>

### Issue Description

I try to migrate a single Stalwart instance from 0.16.27 to 1.0.0 using stalwart-migrate. The prepare command fails while reading the source store, with an Account registry deserialization error.

According to the migration documentation, prepare reads and converts the 0.16 settings and should produce a migration report after the conversion questions have been answered. In my case, it exits with an error before completing.

Environment:

```
OS: Debian Trixie
Architecture: x86_64
Source version: Stalwart 0.16.27
Target version: Stalwart 1.0.0
Database: local RocksDB
Single Stalwart node

```

### Expected Behavior

stalwart-migrate prepare should open the Stalwart 0.16 source store, read and convert its settings, and complete the preparation step so that I can review the migration report and continue with the documented migration procedure.

### Actual Behavior

The command exits with an error while deserializing an Account registry entry:

Registry deserialization error (registry.deserialization-error)

prepare does not complete. After the failed run, /var/lib/stalwart-migrate contains only a logs directory; no migration report was produced.

### Reproduction Steps

1. Stop the existing Stalwart service:

2. Use the following source configuration at /etc/stalwartv016/config.json:

3. Confirm that the source store directory exists:

4. Run:

5. The command exits with the registry deserialization error shown below.

### Relevant Log Output

2026-10-26T22:31:10.062280Z ERROR stalwart\_migrate: command failed error=account error: Registry deserialization error (registry.deserialization-error): causedBy = vendor/v016/crates/store/src/registry/mod.rs:96, value = [REDACTED BASE64 STRING], causedBy = vendor/v016/crates/store/src/dispatch/store.rs:99

### Stalwart Version

v0.16.x

### Installation Method

Binary (Linux)

### Database Backend

RocksDB

### Blob Storage

RocksDB

### Search Engine

Internal

### Directory Backend

Internal

### I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.

on

### I have searched this support forum (open and closed topics) and confirm this is not a duplicate.

on

### I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.

on

---

<div class="post-metadata">

### Author: ![helpbot](https://support.stalw.art/user_avatar/support.stalw.art/helpbot/32/13_2.png) [@helpbot](https://support.stalw.art/u/helpbot)
#### Post date: [October 26, 2026, 11:53pm UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/2 "2026-10-26T23:53:24Z")

</div>

Let me check the migration docs for requirements and troubleshooting.

The docs don’t cover this specific error, so I can’t give you a confirmed cause. These are the documented points that might apply:

- **Source version:** `stalwart-migrate` requires the source to run exactly Stalwart 0.16.27. It doesn’t upgrade earlier 0.16 releases. Please confirm the binary that last wrote this store reports 0.16.27, for example with `stalwart --version`. If the store was last opened by an earlier 0.16 build, or the 0.16.27 binary was never started on it, upgrade to 0.16.27 and start it once. Then stop it cleanly and retry.
- **Live source:** The tool opens the 0.16 store read-only and the runs before the final one read a live server. A stopped service is fine for `prepare`.
- **Paths:** The tool must reach the store under the same path the 0.16 server used. Your source config points at `/var/lib/stalwart-v016/`, so check that this is the directory the 0.16 service actually used. Check that the tool can read it too. The directory is `drwxr-x--- stalwart:stalwart`, so run the tool as `stalwart` or with `sudo`.

The error comes from decoding an Account object in the 0.16 registry, so the cause is probably the content of that record and not the configuration. A human will need to look at it. Please include the output of `stalwart --version` for the 0.16 binary and say whether the store has ever been written by a different 0.16 release. Also check whether the same error appears when 0.16.27 itself reads that account.

References:

- [Migration overview and requirements](https://stalw.art/docs/migration/upgrade-0-16)
- [Preparing the migration](https://stalw.art/docs/migration/upgrade-0-16/prepare)
- [Troubleshooting](https://stalw.art/docs/migration/upgrade-0-16/troubleshooting)

_This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong._

---

<div class="post-metadata">

### Author: ![Yan](https://support.stalw.art/letter_avatar_proxy/v4/letter/y/3e96dc/32.png) [@Yan](https://support.stalw.art/u/Yan)
#### Post date: [October 27, 2026, 12:25am UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/3 "2026-10-27T00:25:58Z")

</div>

I have this same exact problem !

---

<div class="post-metadata">

### Author: ![stalwart](https://support.stalw.art/user_avatar/support.stalw.art/stalwart/32/12_2.png) [@stalwart](https://support.stalw.art/u/stalwart)
#### Post date: [October 27, 2026, 7:08am UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/4 "2026-10-27T07:08:59Z")

</div>

This has been fixed. Please try again with `stalwart-migrate` 1.0.1 which is being compiled now.

---

<div class="post-metadata">

### Author: ![vsenko](https://support.stalw.art/letter_avatar_proxy/v4/letter/v/4da419/32.png) [@vsenko](https://support.stalw.art/u/vsenko)
#### Post date: [October 27, 2026, 10:41am UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/5 "2026-10-27T10:41:23Z")

</div>

Had a similar problem, after using stalwart-migrate 1.0.1 migration finished, but now stalwart does not start at all, the only output is `stalwart[xxx]: Registry read error`.

When in recovery mode the error is more verbose:

> ERROR Registry read error (registry.read-error) objectType = (null), id = (null), causedBy = Registry deserialization error (registry.deserialization-error) { causedBy = “crates/store/src/registry/get.rs:96”, id = 337251486421486081, details = “MtaOutboundThrottle”, value = base64:REDACTED, causedBy = “crates/store/src/dispatch/store.rs:152”, causedBy = “crates/store/src/registry/get.rs:104” }

---

<div class="post-metadata">

### Author: ![nik](https://support.stalw.art/letter_avatar_proxy/v4/letter/n/6de8d8/32.png) [@nik](https://support.stalw.art/u/nik)
#### Post date: [October 27, 2026, 2:42pm UTC](https://support.stalw.art/t/stalwart-migrate-1-0-0-prepare-fails-with-registry-deserialization-error/2046/6 "2026-10-27T14:42:47Z")

</div>

Thank you, with version 1.0.1 the migration worked for me.
