Skip to content

Migration plan (draft) ​

From: Next + Convex on bookdirect.ng / com-bookdirect.com / /extranet
To: Marketplace · MelonQ · Middleware · Core · subdomain Booking Engine

Principles ​

  1. Middleware wins when both layers expose a path
  2. One writer per SSOT (inventory, bookings, email triggers)
  3. Guest refs, manage links, and PSP webhooks stay valid
  4. Shadow email / ARI / rate-match before switch
  5. Amenities stay local slugs — migrate labels → slugs once

Do not ​

  • Map rooms into rates-packages — live folder is /api/v1/bookdirect/rooms
  • Reset booking refs below live max
  • Fetch Google Places on import day — copy stored google* snapshots
  • Paste email TSX into DevDocs

Phases ​

PhaseExit
A FoundationsStaging property bookable via API
B Guest sliceUAT book + pay; email shadow OK
C MelonQ sliceStaff accept a staging booking on MelonQ
D Direct + ARIGoogle test booking on {HotelName}.com-bookdirect.com
E Rate match + financeMatched rate visible in one scan; finance CC
F CutoverSeed counter; DNS; webhooks → Middleware; /extranet 301
G DecommissionConvex traffic off; delete multi-link engine code

Live remount (/api/v1/bookdirect/*) is a separate promote from MelonQ hosts.

Booking ID at F3 ​

Seed bookingReference = 9999 → next 010000 only if legacy max < 10000. Else max + 1. See booking ID.

Data ​

DatasetStrategy
Properties + CDN URLsExport → Core
Rooms / rate plansRooms folder + rates-packages
InventoryOnly after ARI SSOT exists; else keep computed availability
Open bookingsPreserve reference / meta_key exactly
UsersSplit guest vs partner clients
Email hubPort by triggerId → live template keys
Amenity arraysMap "Free WiFi" → free_wifi

Promote rows into v1 activation as each folder is signed off.

API-first. Middleware Backend wins over Core Backend when both exist.