Migration Guide
Migration reference for moving from Legacy SIR, Modern SIR, EssentialsX, or CMI into SIR+.
Supported migration sources in SIR+
SIR+ expands the migration matrix exposed by /sir migrate:
/sir migrate SIR/sir migrate Essentials/sir migrate CMI
The important detail is that SIR+ can detect both Legacy SIR and Modern SIR when you choose SIR.
Modern SIR -> SIR+
What gets copied directly
When the source folder is detected as a Modern SIR folder, SIR+ copies the existing structured data instead of trying to re-interpret it as Legacy.
The migration routine copies:
users/ignore.ymlusers/mute.ymlusers/chat-view.ymlusers/chat-color.ymlconfig.ymlbossbars.ymlwebhooks.ymlcommands/lang.ymlcommands/main/lang.yml
It also copies module directories for:
announcementsjoin-quitadvancementsmotdchannelstagsmoderationemojiscooldownsmentionsdiscordvanish
And it carries forward:
modules/states.ymlcommands/states.yml
Why this path is the safest upgrade
This is the cleanest migration path because the source and target already share the same modern split layout. In practice, you are adding:
- addon runtime
- addon state
- provider override controls
- SIR+ aliases and extra admin coverage
The original SIR folder is backed up into back-ups/.
Legacy SIR -> SIR+
If the SIR source folder is detected as Legacy instead of Modern, SIR+ falls back to the Legacy translation path.
That path behaves much like the base SIR legacy migration:
- old command data goes into
users/ bossbars.ymlandwebhooks.ymlare carried forwardchat/is split into modern chat-related moduleshook/is split intodiscord,login, andvanish- module and command state are rebuilt into the modern files
- the old source is backed up under
back-ups/
The difference is that your final target is now the addon-capable branch, so once the core data is stable you can begin layering custom addons on top.
EssentialsX -> SIR+
SIR+ also supports the same Essentials-style migration family as base SIR.
From the implementation, this routine can bring over:
- shared config pieces
- chat-related behavior
- spawn or onboarding-related data
- Discord-related integration data
- command states
- user data such as ignore, mute, and nick information from userdata files
It also snapshots the original Essentials folder into back-ups/.
This is a good path if you want to land directly on SIR+ without doing an intermediate move through base SIR.
CMI -> SIR+
This is the migration path that only SIR+ adds.
The migrateCmi() routine is designed to pull SIR-relevant data out of a CMI installation and place it into the SIR+ structure.
Based on the implementation, it can migrate:
- module state from
Settings/Modules.yml - chat settings
- config and messaging behavior
- user ignore and mute data
- join and quit related behavior
- spawn-related data
- MOTD-related data
The original CMI folder is backed up into back-ups/ before you continue.
Because CMI servers are often heavily customized, this is a path where manual review is especially important after the import.
Migration planning by source
| Source | Best reason to choose this path | Main manual review items |
|---|---|---|
| Legacy SIR | You are still on 1.7.0 or below | split chat and hook behavior, permission renames |
| Modern SIR | You already run 2.0.0 and want addons | provider overrides, addon rollout plan |
| EssentialsX | You want to jump straight from Essentials-style data to SIR+ | nickname formatting, placeholders, spawn behavior |
| CMI | You want to replace chat or interaction features from a CMI stack | chat toggles, module states, MOTD, spawn assumptions |
Post-migration checklist
No matter which source you pick, validate these before go-live:
modules/states.ymlcommands/states.ymladdons/states.ymlusers/ignore.ymlusers/mute.ymlusers/chat-view.ymlusers/chat-color.yml- module folders such as
channels,discord,moderation, andmotd - provider override behavior if you changed command conflicts
Only after the base import looks healthy should you start adding custom addons.
Last updated on