Zero-Touch Migration - onex-creation automatically migrates player data from other clothing scripts when players join. No manual commands or scripts required!
Migration in onex-creation is completely seamless and automatic:
No manual migration commands needed. No batch scripts to run. No server downtime. Everything happens seamlessly in the background when players join your server.
onex-creation can automatically migrate from these clothing scripts:
| Source Script | Format | Auto-Detect |
|---|---|---|
| esx_skin | esx_skin | ā Yes |
| skinchanger | esx_skin | ā Yes |
| qb-clothing | qb-clothing | ā Yes |
| fivem-appearance | fivem-appearance | ā Yes |
| illenium-appearance | illenium-appearance | ā Yes |
| Old onex-creation | onex-legacy | ā Yes |
Need to migrate from a different clothing script? onex-creation's migration system is designed to be easily extensible.
The format detection system uses pattern matching to identify data structures. Adding support for a new clothing script is straightforward:
Example: Adding Custom Format-- Format detection checks for unique keys in the data structure -- Each clothing script has distinctive patterns: -- esx_skin uses: sex, face, skin, hair_1, tshirt_1, torso_1, etc. -- qb-clothing uses: model, pants.item, arms.item, t-shirt.item, etc. -- fivem-appearance uses: model, components[].component_id, props[].prop_id, etc.
If you're using a clothing script not listed above, contact support. New format converters can be added quickly based on your script's data structure.
To enable automatic migration, ensure your configuration points to your existing player skin data:
config.luaConfig.Framework = 'esx' Config.SkinTable = 'users' -- Table containing skin data Config.SkinColumn = 'skin' -- Column with JSON skin data Config.IdentifierColumn = 'identifier'
config.luaConfig.Framework = 'qbcore' Config.SkinTable = 'players' -- Table containing skin data Config.SkinColumn = 'skin' -- Column with JSON skin data Config.IdentifierColumn = 'citizenid'
That's it! Once configured, migration happens automatically.
The automatic migration converts all player appearance data:
| Data Type | Migrated |
|---|---|
| Character model | ā |
| Face shape & features | ā |
| Skin tone | ā |
| Hair style & color | ā |
| Clothing components | ā |
| Props (hats, glasses, etc.) | ā |
| Tattoos | ā |
| Overlays (makeup, blemishes) | ā |
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PLAYER JOINS SERVER ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā CHECK FOR EXISTING ONEX DATA ā
ā Does player have Schema v2 appearance? ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā
ā ā
YES ā NO ā
ā¼ ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā LOAD EXISTING DATA ā ā FETCH LEGACY SKIN DATA ā
ā Apply Schema v2 ā ā From configured table ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā AUTO-DETECT FORMAT ā
ā esx_skin? qb-clothing? etc. ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā CONVERT TO SCHEMA V2 ā
ā Automatic transformation ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā SAVE & APPLY ā
ā Store new format & load ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Feature | Benefit |
|---|---|
| Zero Downtime | No server restart or maintenance window needed |
| No Player Action | Players don't need to do anything |
| Gradual Migration | Data converts as players join naturally |
| Rollback Safe | Original data remains untouched |
| Error Handling | Failed conversions don't break player spawning |
While migration is automatic, you can verify it's working:
Server Console-- Check migration stats /onex_migration_stats
This shows:
Server Script-- Force re-migration for specific player exports['onex-creation']:ForceRemigrate(identifier)
Last updated 27 days ago