Migration
Move from another Discord bot to SYNTHET safely. The dashboard scans your server, proposes candidates to migrate, plans the work, executes inside a maintenance window, and gives you a full audit trail and rollback path.
Before you start
Migration is a destructive operation. Walk through every prerequisite before clicking New migration.
- You have the migration.view capability on this server
- A pre-execution snapshot exists in the Backups module
- The Migration module is enabled in Modules
- Source bots are still in the server so SYNTHET can read their messages
- You have agreed an outage / maintenance window with your community
What you'll see
The Migration dashboard has a runs list at the top, a New migration button, and four tabs that appear once you select a run.
Creating a new run
Click New migration in the page header to open the create form.
Mode
- Snapshot only
- Capture current state without observing source bot behaviour. Fastest, but loses anything that changes after the snapshot.
- Snapshot + observe
- Capture the snapshot, then watch the server for a configurable observation window so transient state (e.g. running giveaways) is captured. Recommended for most migrations.
Required fields
Which text channels to scan. Use Select all to pick every text channel up to the per-run cap.
Hours to observe (Snapshot + observe only). Bounded between the configured min and max — typically 1–48 hours.
Example: 24
Optional override of the per-run channel cap.
Optional override — limits how deep the scan reads in any single channel.
Optional global cap across the run.
Limits override
Runs list
Above the tabs, a table lists every run on this server.
- Each row shows the truncated Run ID, Mode, Status, channel count, who initiated it and the creation time.
- Click any run to load it — the four tabs appear below and the run becomes the focus of the page.
- Status chips use colour: blue for in-progress, amber for awaiting review, green for completed, red for failed.
Status banners
- Executing — info banner with live progress.
- Failed — red banner with a button to jump to Audit and find the failing event.
- Rolled back via backup — neutral banner showing the timestamp of the rollback.
- Observing — a card with a progress bar, the configured window length, and a Stop early button.
Candidates tab
The scan output. Every candidate is something the bot believes belongs to a source bot's data model.
Stat tiles
- Total — every candidate the scan produced.
- Confidence — average confidence score across all candidates (0–100).
- Confirmed — candidates you have approved for migration.
- Needs review — low-confidence candidates that require a human decision.
Type distribution chart
Filters
Filter to a single candidate type — economy, level, sticky, suggestion, etc.
Filter to PROPOSED, NEEDS_REVIEW, CONFIRMED or REJECTED.
Per-candidate card
- Type chip, confidence percentage and current status.
- Source channel, source author and the matched signature (e.g. a regex hit on a known bot's prefix).
- Free-text Notes field where you can record why you confirmed or rejected.
- Action buttons: Confirm, Reject and Mark as needs review.
Plan tab
Once you have triaged candidates, generate a plan. Each plan item is a concrete action SYNTHET will take during execution.
Generate plan
Plan stats
- Actions — total plan items.
- Messages created — how many new messages execution will post.
- REST calls estimated — total Discord API calls the run will use.
Cost distribution
Approval
- Approval requires typing the exact phrase shown in the Confirm phrase hint into the input.
- The Approve button only enables once the phrase matches — preventing accidental approvals.
- After approval a green banner appears confirming the plan is ready to execute.
Plan items table
Execution tab
The danger zone. Every action here moves the server from its old state to its new state.
Execution stats
- Total executed, Succeeded, Failed, Messages created, Messages deleted.
- The Execution timeline chart shows results over time so a stalled execution is obvious.
Execute add-only
- Only available when the plan is approved and a pre-execution backup snapshot exists.
- If the backup is missing, a red banner appears explaining what to fix in Backups.
- Type the execute phrase into the input — the button stays disabled until the phrase matches.
- Click Execute add-only to begin. The run status becomes Executing and the banner appears at the top.
Results table
Audit tab
The complete event log for one run.
Audit stats
- Events — total audit rows for this run.
- Distinct actors — how many people / processes touched the run.
- Distinct actions — number of unique action codes (e.g. plan.approve, execute.start).
Events table
Common tasks
Step-by-step recipes for the work most operators do most often.
Run a snapshot-only dry run
Use this first to see what the scan would find, without observing.
Open DashboardSettingsMigration.
- Click New migration, set Mode to Snapshot only.
- Pick three or four representative channels to scan.
- Click Create run. The run appears in the table with status Scanning then Ready for review.
- Open the Candidates tab to triage. No data is changed yet.
Plan and approve
Once candidates are triaged, generate the plan and approve it.
- Open the Plan tab and click Generate plan.
- Review the action count, message count, REST estimate and the cost distribution chart.
- Type the approval phrase shown beside the input, then click Approve.
- The green banner confirms the plan is ready. The Execution tab now activates.
Execute during your maintenance window
Final step. Make sure your community is informed before clicking the button.
- Confirm a pre-execution backup exists in Backups. The Execution tab will tell you if it does not.
- Type the execute phrase into the input and click Execute add-only.
- Watch the timeline chart and the executions table for failures.
- If something goes wrong, open the Audit tab to identify the failing action, fix it, then re-run only the affected items.
- If the run cannot be salvaged, restore from the pre-execution backup snapshot.