Migration Checklist

A copy-paste checklist to move an existing community from Legacy to Enhanced without taking your server down. The golden rule: migrate in parallel, never in place. Keep production on Legacy until everything below passes on a separate test instance.

Do not migrate a live production server right now. Asset Escrow isn't implemented, the platform is early access with expected crashes, and many resources aren't ported. This checklist builds a parallel Enhanced test server you validate first.

Phase 0 — Decide & prepare

  • [ ] Confirm you actually need Enhanced now (ray tracing / higher tick rate) vs waiting for Asset Escrow.
  • [ ] Inventory your resources: which are escrow-protected/paid (stay on Legacy) vs open/unencrypted (convertible).
  • [ ] Note any C#/.NET resources (need .NET 10 rebuild) and any custom assets (need Alchemist).
  • [ ] Clone your database. Never point the test server at live data.

Phase 1 — Stand up a parallel Enhanced server

  • [ ] Download Cfx Server from server-download → Platform: FiveM for GTAV Enhanced. See Set up a Cfx Server.
  • [ ] Extract to a new folder on a different port from production.
  • [ ] Update any .bat / panel scripts to cfx-server.exe (not FXServer.exe).
  • [ ] Install the .NET 10 SDK if you run C# resources.
  • [ ] Complete the txAdmin first-run wizard against the cloned data.

Phase 2 — Fix the guaranteed breakers

  • [ ] Add lua54 'yes' to every resource's fxmanifest.lua.
  • [ ] Set gamebuild enforcement after +exec server.cfg in your startup command: +set sv_enforceGameBuild 1 (base game) or the latest build. Remove old pins (2802/3095/3258…).
  • [ ] Audit server.cfg convars — replace or remove the deprecated ones:
set sv_syncTickRate 60             # was sv_useAccurateSends
setr sv_entityLockdown "relaxed"   # was sv_protectServerEntities
set onesync on                     # big mode is the only mode

remove entirely: sv_netHttp2, onesync_automaticResend, onesync_enableBeyond, sv_enhancedHostSupport

  • [ ] Rebuild C#/.NET resources against .NET 10.

Phase 3 — Convert assets

  • [ ] Run Alchemist (use the CLI so escrowed assets are skipped, not fatal) on a copy of your resources folder.
  • [ ] Read the output report — note every escrowed asset that was skipped; those stay on Legacy.
  • [ ] Test converted vehicles/props/MLOs in-game; re-check anything converted with --relaxed.

Phase 4 — Data migration

  • [ ] Run the official key-value (KVP) DB migration script for KVS files on the clone.
  • [ ] Verify each resource reads/writes the cloned DB correctly.
  • [ ] Only after full validation, plan the real data cutover.

Phase 5 — Framework & resources

  • [ ] Confirm your framework (ESX / QBCore / QBox) has an Enhanced-compatible build.
  • [ ] Start resources one group at a time (deps → framework → standalone), reading the console for [ERROR]/[WARN] after each.
  • [ ] Replace or shelve resources that depend on removed features (Mono-only C#, Pure Mode toggles, removed convars, Mumble-only voice).
  • [ ] Keep escrow-protected paid resources on your Legacy server for now.

Phase 6 — Voice

  • [ ] If you use pma-voice or similar, confirm it still works (Mumble natives route through the new system temporarily).
  • [ ] Plan a migration to the new server-side Voice API (docs) before Mumble natives are removed.

Phase 7 — Validate before players

  • [ ] Optionally enable set sv_devMode true for dev tooling (caps the server at 8 slots — dev only).
  • [ ] Load-test with a handful of testers on the Enhanced instance.
  • [ ] Only when every resource passes: announce, schedule, and cut over — while keeping the Legacy server available as a fallback.

The one-screen summary

StepAction
1Clone DB, inventory resources (escrow vs open)
2Download Cfx Server, new folder + port, install .NET 10 SDK
3lua54 'yes' everywhere · fix sv_enforceGameBuild · clean convars
4Alchemist CLI convert open assets; escrowed stay on Legacy
5Migrate cloned DB with the KVP script
6Start resources in order; fix breakers; test voice
7Validate on the test instance → cut over, keep Legacy as fallback
Hitting errors along the way? Every common one is in Troubleshooting. For HZ-Scripts specifically, ask in our Discord.