PiTyUs.Hire me

Frameworks

Moving a server or script from ESX to QBCore/Qbox

Plan an ESX to QBCore or Qbox migration: mapping xPlayer functions to QBCore Player functions and Qbox exports, money accounts, jobs and grades, items and inventories, database differences (users vs players, identifier vs citizenid), converting player data, bridging scripts instead of rewriting, and testing.

Updated 12 min readBy PiTyUs · FiveM developer

Overview

Framework migrations are among the riskiest projects on a live server: every script touches the framework, and every player’s money and items live in its tables. Most of the work is mapping — functions, data and events — and the most important decision is which scripts to convert, which to bridge and which to replace.

API mapping

ESXQBCoreQbox
ESX.GetPlayerFromId(src)QBCore.Functions.GetPlayer(src)exports.qbx_core:GetPlayer(src)
xPlayer.identifierPlayer.PlayerData.citizenidplayer.PlayerData.citizenid
xPlayer.addMoney(n)Player.Functions.AddMoney('cash', n)exports.qbx_core:AddMoney(src, 'cash', n)
xPlayer.addAccountMoney('bank', n)Player.Functions.AddMoney('bank', n)exports.qbx_core:AddMoney(src, 'bank', n)
xPlayer.job.name / .gradePlayerData.job.name / .job.grade.levelSame as QBCore
xPlayer.setJob(job, grade)Player.Functions.SetJob(job, grade)exports.qbx_core:SetJob(src, job, grade)
esx:playerLoadedQBCore:Client:OnPlayerLoadedQBX.PlayerData / same events

Full APIs: ESX tutorial, QBCore tutorial, Qbox tutorial.

Data differences

DataESXQBCore / Qbox
Character tableusers keyed by identifierplayers keyed by citizenid (plus license)
Moneyaccounts JSON (money, bank, black_money)money JSON (cash, bank, crypto)
Jobjob, job_grade columnsjob JSON with grade table
Vehiclesowned_vehiclesplayer_vehicles
ItemsInventory/ESX tablesInventory-specific (qb-inventory or ox_inventory)

Write a conversion script that reads each ESX row, generates a citizenid, maps money accounts and jobs, and inserts into the new tables — then verify totals (sum of all money before and after). Schema tips: database design.

Convert, bridge or replace

Script typeUsual choice
Your own scriptsConvert, or add a framework bridge — see bridges
Popular multi-framework resourcesSwitch the config to the new framework
Old ESX-only resourcesReplace with maintained equivalents
Escrowed ESX-only scriptsAsk the seller for a QB/Qbox version

01A migration plan

  1. Inventory every resource and its framework dependency.
  2. Set up the new framework on a test server with a copy of the database.
  3. Convert data; compare money, items and vehicle counts.
  4. Test every job, shop, garage and admin tool.
  5. Announce a maintenance window; take a backup; switch; keep the old server ready for rollback.

Backups: server backups.

Frequently asked questions

Can I convert ESX scripts to QBCore?

Yes — map the xPlayer calls to QBCore Player functions (or Qbox exports), update events and inventory calls, and test.

Should I migrate to QBCore or Qbox?

For a new move, Qbox gives the QBCore data model with a modern ox-based stack; QBCore has the larger legacy script catalogue.

Can I keep player data when switching frameworks?

Yes, with a conversion script that maps users to players, money accounts and jobs. Test it on a copy first.

What is the biggest migration risk?

Economy data: money, items and vehicles. Verify totals before and after conversion.

Need this built, not just explained?

Ten years of FiveM work, from Lua to NUI

Custom resources, React NUI, ESX / QBCore / Qbox integration, OneSync performance audits and security reviews — plus the websites and SEO around your server brand.

Related guides