V8 Central — Product & Technical Spec
  1. Docs
  2. Delivery
  3. Existing V7 user migration

#Existing V7 user migration

#What is decided V8 requirement

  • V7 users log in with the same email and password, and keep 2FA, IP whitelist and Google/GitHub login.
  • Profile, email preferences, delete protection, 2FA, Google Authenticator, IP whitelist, login history, notification channels and API tokens carry over. V7 API tokens keep working after the move, so scripts using them must not break (backend doc 3.13 + "existing users", 2026-10-03). Notification channels include the V7 Discord and Webhook types, which V8 now supports (3.15).
  • Only account-level data moves (users, billing, account-related data such as teams and security settings). V7's server/app tables are not recreated.

#Mapping table

AreaV7 sourceV8 targetStatus / risk
Accountusers (email, bcrypt password, status, 2FA flags, google2fa secret, timezone, preferences)V8 usersPasswords: both are Laravel bcrypt, so they can be copied Assumption. Statuses (not_active, locked, banned) need mapping. Deleted users (deleted_users) excluded? Open question
Social loginsuser_providers (google/github)V8 linked accountsV8 requirement keep
2FA / backup codes / IP whitelisttwo_fa_backup_codes, whitelist_ipsV8 equivalents (encrypted)V8 requirement keep
Organizationsorganizations (+ main, logo, SSH key pair)V8 organizationsSSH key pair not needed (OSS) Assumption
Members / invitationsorganization_members, member_roleV8 membersPending invitations: carry over or drop? Open question
Roles / permissionsorganization_roles, permission_role (boolean, ~92 V7 permission names)V8 roles with none/view/managePermission names differ (V7 server.firewall vs OSS firewall/app_*). A mapping table is needed. Granted → manage Assumption D-7
Shared-server membersorganization_members.server_id?Depends on D-8
Serversservers (agent-based, ~40 columns incl. root/DB passwords)V8 server linkNot migratable as data. A V7 server becomes manageable by V8 only after OSS is installed on it and its Central key is linked. The OSS team is making OSS behave like V7 on V7 servers (commit 5b4e01e9: "Many v7 servers will move to v8"), and OSS Server Sync adopts existing sites, databases and workers. But installing OSS on a live V7 server is not documented or tested Open question D-19
Applications / databases / backupsV7 tablesStay on the server (OSS adopts through Sync)Not moved to Central (R5)
Plannew_subscription_plans (tier, cycle, price, limits, expires_in_days), old subscription_plans/subscriptions (server-based), lifetimeV8 subscriptionNeeds the V8 plan catalog first, plus rules for legacy server-based and lifetime plans Open question D-4
UsageCounted from servers/appsRecomputed in V8Can't be computed until servers are linked
Wallet / creditsusers.credits, free_credits, server_creditsV8 walletMoney must move exactly. Needs reconciliation + a sign-off report Open question
Billing historytransactions, wallet_histories, charges, invoicesV8 billing (read-only history)Keep invoices for legal/tax reasons Assumption
Payment methodsStripe customer/cards, auto-rechargeV8Stripe customer ids can be reused if the same Stripe account is used Assumption
Auditactivities (English sentences)V8 auditImport as "legacy" entries or leave in V7 (read-only) Open question
Notification channelsnotification_channelsV8 channelsV8 requirement keep. All V7 types are supported in V8 after 2026-10-03 (Email, Telegram, Pushover, Slack, Discord, Webhook), so no channel is dropped at migration
API tokensV7 personal API token (6-month personal access token)V8 personal API tokenV8 requirement Migrated and kept working (2026-10-03). The Account → API screen therefore shows an existing token instead of offering to create one (3.13)
Blueprintswordpress_blueprintsV8 blueprintsSimple copy. Owner model D-14
Affiliate / referral / support / whitelabel / self-hostedmany tables—Out of V8 scope so far Open question

#Migration failures to plan for

FailureHandling
Duplicate email already registered in V8Merge rules or block Open question
V7 user without a verified emailMigrate as unverified and require verification
Organization owner deleted / bannedSkip or reassign Open question
Expired or negative-balance accountsMigrate with state, show "pay balance"
Permission names with no V8 equivalentDrop, with a report
Server can't get OSS (unsupported OS, conflicts)Stays on V7 until fixed: V7 and V8 run in parallel? Open question
Partial migration runIdempotent, resumable batches with a per-user status

#Compatibility problems found

  1. Subscription ownership: V7 is per user, while the request is per organization (D-3).
  2. Permission model: boolean vs none/view/manage, and different names (D-7).
  3. Servers: the V7 agent vs OSS. There's no data path, only "install OSS and link".
  4. Plan constants are hard-coded in V7. V8 needs them as data before mapping.
  5. Lifetime deals and legacy server-based plans have no V8 equivalent defined.
  6. English-only activity text can't be translated after import.

#Required before migration can be designed

  • Plan catalog + subscription model decided (D-3, D-4).
  • Permission mapping table (D-7).
  • An OSS-on-V7-server install path, tested on a copy of a real V7 server (D-19).
  • A cut-over plan: big bang vs per-user opt-in, and whether V7 stays read-only.
ServerAvatar V8 Central · prepared by central-app-2 (Pair 2 frontend) for Bhavik Jethwa · nothing in this spec is implemented yet · Built 2026-10-03 12:35 UTC