Case Study Hospitality & Wellness BeRelax Spa

Global Spa Automation: How We Migrated BeRelax to Odoo 19 and Automated Multi-Country Bookings

Migrating a revenue-critical multi-company spa network from v16 to v19 while deploying a fully automated Stripe authorize-and-capture booking engine.

Truodo Team
July 20, 2026 10 min read
Odoo 19 MigrationCustom Booking EngineResource PlanningPOS Hardware Integration
1 mo
Migration timeline
30
Custom modules built
0
Spreadsheets left
4 days
Stripe pre-auth window
Global Spa Automation: How We Migrated BeRelax to Odoo 19 and Automated Multi-Country Bookings

Phase 1: Untangling a messy Odoo 16 legacy database

BeRelax operates premium wellness spas inside major international airports across the United States, Canada, UAE, Qatar, Oman, and Hong Kong. Each international airport location operates as its own legal entity, but all rely on a singular, unified ERP backbone to manage customer checkout, therapist commissions, and financial consolidation.

When they approached Truodo, their legacy Odoo 16 database was struggling. Over years of rapid scaling, multiple uncoordinated development teams had layered on custom modifications without structural planning. Code was unformatted, distributed haphazardly across disorganized directories, and lacked clear documentation.

Worse, the system was bogged down by dozens of third-party apps that were installed but entirely unused, leaving the database heavy and unstable. They needed to move to Odoo 19 to leverage its modern OWL 2 frontend framework and updated ORM, but a standard database upgrade was impossible due to the sheer amount of technical debt.

Auditing, cleaning, and upgrading to Odoo SH

Our migration strategy began with a comprehensive code audit directly within their Odoo.sh staging repository. Instead of blindly trying to port their chaotic codebase forward, we systematically identified every single unutilized module and uninstalled it directly from their live production database.

A massive portion of this upgrade lifecycle involved auditing their core transactional engines. We specifically isolated their live modules, including Odoo Employees Attendance, Kiosk Attendance, and the complex Point of Sale (POS) framework, then unlinked obsolete workflows and custom overrides that were clogging up version 16 before initiating the upgrade scripts.

Once the database was clean of junk workflows, we completely re-engineered their essential custom modules and a wide suite of business-critical custom reports from the ground up, rewriting them to comply beautifully with Odoo 19's strict standards and advanced API layers. We utilized this transition to fix outstanding bugs that had plagued their operations team for months.

We pushed the clean Odoo 19 codebase to a dedicated staging branch for a thorough User Acceptance Testing (UAT) cycle. Over five days of intensive operational tracking, the BeRelax team simulated their standard workflows, validated the interface, and confirmed total historical data integrity. Once performance targets were successfully hit, we executed a seamless production cutover with zero operational downtime.

Phase 2: Transitioning from global Excel sheets to automated bookings

With a stable Odoo 19 core established, BeRelax faced an even larger operational ceiling: their booking and scheduling mechanisms. Managers across different timezones were using complex Excel sheets to organize weekly therapist rosters, vacation times, and booth availability.

Because these spreadsheets were disconnected from their live customer channels, online booking availability was impossible. Customers couldn't seamlessly book an airport spa slot online, and walk-in travelers had to wait in long manual queues on the concourse floor.

The core functional problem was structural logic: an appointment couldn't just check a simple calendar slot. It had to cross-reference real-time resource planning data, ensuring a specific therapist was rostered on shift, qualified for that particular treatment type, and that a spa treatment room was physically vacant at that precise hour across multiple timezones.

"Truodo turned our fragmented, multi-app operational chaos into a highly synchronized, global engine. Our airport locations finally move at the speed of our customers."

Operations Director Global Retail & Wellness Operations, BeRelax

Building the Odoo 19 solution architecture

We designed and deployed an enterprise-grade multi-store management platform comprising 30 highly specialized modules natively unified in Odoo 19:

  • Odoo Resource Planning Migration: We fully eliminated the legacy Excel sheets, migrating all international locations into an automated Odoo Planning architecture with timezone-aware multi-therapist rostering, color-coded shifts, and automated vacation-overlap warnings.
  • Dynamic Slot-Aware Booking Funnel: A custom, multi-step website booking funnel that calculates real-time appointment availability based directly on active employee shifts and service category rules.
  • Self-Service Walk-In QR Codes: Integrated on-site QR codes at airport entrances, allowing walk-in travelers to scan, select services, check real-time availability, and populate orders instantly onto physical checkout screens.
  • Migrated & Upgraded Point of Sale (POS): A tailored POS interface optimized for high-volume airport terminals, handling multi-currency routing, complex therapist commission tracking, tips, and direct barcode/booking ticket scanning.
  • Clover POS Integration: Direct hardware-level connection linking Odoo POS with physical in-store Clover payment terminals for seamless customer card processing and automatic journal reconciliation.
  • Employees & Kiosk Attendance Engine: Fully migrated and optimized attendance architectures, allowing terminal-based Kiosk tap-ins for airport staff while maintaining immaculate timesheet syncs.
  • Re-engineered Custom Reports: Rebuilt operational, financial, and POS sales analytics reports tailored to Odoo 19's data structure to provide exact executive clarity.
  • REST/JSON API Layers: Engineered high-performance custom-query and Pathfinder APIs to securely expose Odoo backend data to their external mobile and Next.js applications.

Automating the 4-day Stripe authorization challenge

Integrating digital payments presented a unique transaction challenge. For international traveler bookings, BeRelax required an advanced 'authorize-and-capture' flow with flexible partial-capture support, enabling them to secure funds at booking but adjust the final captured total if the customer updated services at the physical spa.

However, payment gateways like Stripe enforce a strict 4-to-7 day expiration window on card authorizations. Because customers often book airport spa sessions weeks or months ahead of their international travel dates, standard immediate authorization would expire long before the passenger arrived at the terminal.

To solve this architectural issue, we developed a background engine that automates the transactional timeline. When a user books far in advance, Odoo securely holds the tokenized reservation details without pinging the bank. The system automatically fetches the 'capture before' parameters, triggers the formal authorization request exactly 4 days before the appointment date, and executes an automated payment capture 3 hours prior to the booking time, completely eliminating manual tracking errors.

The operational impact

The end-to-end deployment was highly successful, transforming BeRelax from a fragmented collection of point solutions into a centralized global enterprise. By migrating from Odoo 16 to Odoo 19 in just under a month, they instantly eliminated years of technical debt and secured a modern, responsive user experience across their global locations.

By abandoning manual Excel spreadsheets for native Odoo Resource Planning, store managers saved hours of administrative work each week. Booking availability is now perfectly accurate, resulting in higher online booking conversion rates and minimized booking conflicts.

The combination of the automated Stripe pre-authorization flow, walk-in QR codes, and integrated Clover POS hardware reduced in-store airport customer wait times significantly. Furthermore, Odoo's robust multi-company financial engine automatically routes every digital booking, retail purchase, and therapist commission to the correct regional company ledger, providing executive leadership with absolute, live multi-store transparency.

What to do next

Many multi-branch and multi-country retail operators hesitate to migrate to newer versions of Odoo because they fear their custom integrations and payment pipelines will completely break down. The BeRelax project proves that with structured code cleanups, parallel staging environments, and proper architectural scoping, complex global operations can be upgraded cleanly without interrupting active operations.

If your company is struggling with a messy, outdated Odoo setup or trying to manage distributed real-world locations with fragile manual workarounds, we can help you map your ideal path forward. Contact our engineering team today to schedule a focused, zero-obligation two-hour scoping call.

Work with Truodo

Want results like this for your business?

Book a free 30-minute scoping call. We will map what you need and give you a clear implementation plan.

Get free consultation →