Case study
Modernizing a twenty-year booking system without stopping bookings
A vacation rental company on the Florida coast runs its business on a booking system that has worked for about twenty years. We keep it running, extend it, and have mapped a way to modernize it one piece at a time.
Quick facts
- Industry
- Vacation rentals
- Product type
- Booking website and admin system
- Platform
- Web
- Timeline
- Ongoing maintenance and modernization
- Status
- Ongoing
At a glance
What changed
Bookings never stopped
The system kept taking bookings while it was maintained and extended.
Relocation logic kept safe
The rules for moving guests between units were understood, tested and preserved.
Behavior captured in tests
Characterization tests record what the system does today, before anything changes.
A gradual path forward
A step-by-step migration plan replaces the old system in pieces, not all at once.
The client
The client and the situation
The client is a vacation rental company on the Florida coast. Its guests book beach homes and condos online, often months ahead. The business depends on its booking system every day of the year, and most of all in peak season.
That system has been in use for about twenty years. It is built on ColdFusion with a SQL Server database, and it holds two decades of business rules: availability, pricing, guest emails and the logic for moving guests between units when needed. It works. The problem is that fewer developers know the technology each year, and every change carries risk.
The challenge
The challenge
Rewriting a working booking system from scratch is tempting and dangerous. A full rewrite takes a long time, freezes improvements to the old system while it happens, and usually misses rules that nobody wrote down. If the new system goes live with a mistake in availability or relocation, guests lose bookings and the company loses trust.
So the challenge had two parts. First, keep the existing system healthy and keep extending it, because the business cannot wait. Second, find a way to move to a modern stack that never puts bookings at risk.
Before
How the work was done before
The booking system handles search and availability, online booking, guest emails, the unit relocation workflow and tools for owners and admin staff. Changes were made directly in the old code, carefully and slowly, because there were no automated tests to show what a change might break.
Knowledge of the system lived in the code and with the people who had worked on it. The relocation logic in particular, which decides how to move a guest to another unit when their booked unit becomes unavailable, was important and hard to follow.
Objectives
What the project had to achieve
-
Keep the booking system running and stable, especially in peak season.
-
Extend the system where the business needs new features now.
-
Understand and document the existing rules, especially unit relocation.
-
Capture current behavior in tests before changing anything important.
-
Design a gradual migration path to a modern stack that never stops bookings.
The solution
What we built
We took over maintenance and extension of the existing system and treated understanding it as real work, not a side task. Before changing important areas, we wrote characterization tests, sometimes called golden-master tests. They record what the system does today for a wide range of inputs, so any change in behavior shows up immediately.
For the future, we evaluated a gradual migration using the strangler pattern. New parts are built on a modern stack and placed in front of the old system one route at a time. Each new part takes over only when it matches the old behavior in the tests. A one-way database sync keeps the new system's data up to date from the old one during the transition, so both can run side by side. This is the heart of our legacy modernization service.
-
Search and availability
Guests search by dates and see which homes are available.
-
Online booking
Guests book online through the existing flow.
-
Guest emails
Confirmations and other emails sent at each stage of a booking.
-
Unit relocation workflow
Rules for moving guests to another unit when needed, preserved and tested.
-
Owner and admin tools
Screens for staff and owners to manage units and bookings.
-
Characterization tests
Golden-master tests that capture current behavior before changes.
-
Migration plan
A strangler-pattern plan with a one-way database sync for a safe transition.
UX and UI
The UX and UI approach
For guests, the first rule of modernization is that nothing should break. Search, unit pages and the booking flow must keep working exactly as returning guests expect. Improvements to the guest experience, such as faster pages and a cleaner booking flow on phones, are planned as part of the new front end, one page type at a time.
For staff, the priority is predictability. In the plan, admin screens change only when a better version has been tested with real bookings, and staff are told what changes before it happens.
Architecture
How the pieces fit together
Today, all traffic goes to the existing ColdFusion application and its SQL Server database. In the planned transition, a routing layer sits in front. At first it sends everything to the old system. As each new module is built and passes the characterization tests, the routing layer sends that part of the traffic to the new module instead.
A one-way sync copies data from the old database to the new one, so new modules always see current bookings without writing back to the old system too early. The old system stays in charge of bookings until the final stage. At any point, a route can be switched back to the old system if something looks wrong. That is what makes the plan safe.
AI-accelerated
Where AI sped up the build
Honest about what AI did, and what people did.
-
Understanding a large legacy codebase: AI helped read and summarize old ColdFusion code quickly, tracing how a booking moves through the system.
-
Characterization tests: AI generated many test cases from the existing behavior, which engineers checked and kept where they mattered.
-
Migration planning: AI drafted options for the migration path and their risks. Engineers chose the approach and wrote the final plan.
Integrations
Integrations
-
SQL Server
The existing database that holds bookings, units and guests.
-
Email notifications
Guest and staff emails sent at each stage of a booking.
-
One-way database sync
Planned sync from the old database to the new one during the transition.
Screens
Concept screens
Simple mockups of the described interface. Real screenshots will replace them.
Concept screen
Results
The results
The booking system has kept taking bookings while we maintained and extended it. The relocation rules, which were among the hardest parts to follow, are understood, and behavior in important areas can be checked against characterization tests. Changes that once felt risky can be checked against recorded behavior before they go live.
The company also has a clear, gradual plan to move to a modern stack. It does not require a big-bang rewrite, a freeze on improvements or a risky switchover weekend. We do not publish numbers for this project. If the client shares measured results, they will appear here.
What the team can do now
-
Keep taking bookings while the system is improved.
-
Change the system with tests that show what a change would break.
-
Explain how the relocation rules work, from the code and the tests.
-
Plan modernization in stages, with the option to switch back at every step.
Before and after
Before and after
A working system nobody wanted to touch
-
A twenty-year-old system runs the whole business.
-
Changes are risky, because nothing shows what they might break.
-
Key rules, such as relocation, live only in the code.
-
Fewer developers know the technology each year.
A system with a safe way forward
-
The system is maintained, extended and still taking bookings.
-
Characterization tests capture current behavior.
-
Key rules, such as relocation, are understood and traced.
-
A strangler-pattern plan replaces the system one piece at a time.
Technology
Technology stack
- ColdFusion
- SQL Server
- Email notifications
What comes next
What we would do next
The first stage of the migration would move the guest-facing pages, starting with search and unit pages, to a modern front end fed by the one-way sync. Those pages change least often in their rules and benefit most from speed on phones. The booking flow and the relocation workflow would move later, once the new modules have run alongside the old ones and matched them in the tests.
After that, we would look at AI guest support and data migration of the full booking history, so the old database can finally be retired. Every stage keeps the same rule: bookings never stop.
Solutions in this project
Problems this project solved
Scheduling automation
Let customers book, change and confirm appointments themselves, by web, chat or phone, with reminders that cut no-shows.
Email triage
Sort a shared inbox by topic and urgency, pull out the key details and draft replies for a person to send.
AI automation and integrations
Connect the tools you already use so data moves once, correctly, and AI reads the parts that arrive as text or documents.
Keep exploring
Related case studies, services and industries
Related services
View all related services- Legacy modernization Replace an aging system step by step, with the business running normally while the new parts take over.
- Data migration Move data from an old system to a new one, cleaned, checked and without losing a record.
- Business websites Fast, clear websites that explain what you do, rank in search and turn visitors into inquiries.
- Database design Data models that stay fast and correct as your business grows, with backups and access rules in place.
- AI-Powered Web Development Business websites, customer portals, dashboards and web applications that load fast, rank well and are easy to change.
- Automation and Integrations CRM, payment and API integrations, MCP connections and workflows that stop people copying data by hand.
Solutions
View all solutions- Scheduling automation Let customers book, change and confirm appointments themselves, by web, chat or phone, with reminders that cut no-shows.
- Email triage Sort a shared inbox by topic and urgency, pull out the key details and draft replies for a person to send.
- AI automation and integrations Connect the tools you already use so data moves once, correctly, and AI reads the parts that arrive as text or documents.
- Price monitoring Collect competitor prices automatically, match them to your products and alert you when something changes.
- Automated reporting Reports that build themselves from your systems on schedule, with a plain-language summary of what changed.
- Forecasting dashboards Forecast demand from your sales history and seasonality, and flag items to reorder before they run out.
Industries
View all industries- Hospitality and travel Booking sites, guest messaging, review analysis and multilingual content for hotels, tour operators and travel businesses.
- Vacation rentals Booking websites, owner and guest portals, turnover scheduling and guest messaging for rental operators.
- Real estate Listing sites, lead handling, CRM automation and document workflows for agencies, brokers and developers.
- Logistics and transportation Driver apps, order and shipment tracking, document processing and integrations for logistics and delivery companies.
- Property management Tenant portals, maintenance tracking, owner statements and inbox automation for property managers.
- Home services Booking, dispatch, quotes, invoicing and reviews for plumbers, electricians, cleaners and other home service businesses.
Case studies
View all case studies- Vacation rental operations system One calendar per property, cleaning tasks created from bookings, and owner statements built from the same records.
- Fashion deal aggregator Sale items from more than thirty brands are collected every night and classified consistently by a three-stage pipeline.
- Facility management platform Every request, inspection and cost for every building now lives in one place, with a clear owner and status.
- Payroll system for an IT services company Payroll is calculated from recorded inputs, reviewed once and sent as payslips in a single batch, with every change logged.
- Goal and effort tracking app A product design built around handwritten daily proof, locked plans and honest self-scoring. The build is in progress.
- Tax filing service platform Clients upload documents and see where their case stands, and staff work from one queue with deadlines and reminders.
Guides and articles
View all guides and articles- How to migrate a legacy application Replace an old system step by step without stopping the business, with tests, data checks and a way back.
- PostgreSQL vs MySQL The two most popular open-source databases compared for business applications.
- How to connect AI to your database safely Let staff ask questions of your data in plain English without risking production systems or sensitive records.
- How to set up automated reporting Replace manual weekly and monthly reports with dashboards and summaries that update themselves.
AI models
View all ai models- Claude Haiku 4.5 Anthropic's fastest and lowest-cost Claude model, with near-frontier intelligence for high-volume and real-time work.
- Gemini 3.5 Flash-Lite Google's lowest-cost current Gemini model for high-throughput work such as sub-agent tasks and document parsing.
- GPT-6 Luna OpenAI's most efficient model for focused, high-volume tasks, with vision, tool calling and structured outputs at the lowest price level in the family.
- text-embedding-3-large OpenAI's most capable embedding model for search and retrieval, with 3,072-dimension vectors and support for English and other languages.
- text-embedding-3-small OpenAI's efficient, lowest-cost embedding model, with 1,536-dimension vectors for search, retrieval and similarity at scale.
- DeepSeek V4.1 Flash DeepSeek's default, best-value model: open weights under MIT, image input, tool calling, JSON output, optional thinking and a 1 million token window.
MCP servers
View all mcp servers- Airtable Airtable's official hosted MCP server lets AI list workspaces, create bases and read records, with wider read and write access to tables and automations.
- AWS S3 Amazon S3 is handled through the managed AWS MCP Server, which lets AI run scripted AWS actions, create presigned links and search AWS docs.
- Azure Microsoft's Azure MCP server lets AI work with many Azure services, from storage and Key Vault to SQL, monitoring and AKS, with a read-only mode.
- BigQuery Google's remote BigQuery MCP server lets AI list datasets and tables and run SQL, with a read-only query tool and IAM controls.
- Chroma Chroma's official MCP server lets AI create collections, add, query, update and delete documents in a Chroma vector database, local or cloud.
- Docker A community MCP server that lets AI list, run, stop and remove Docker containers and manage images, networks and volumes.
Glossary terms
View all glossary terms- Database A database is an organized store of data that software can search, update and keep consistent, such as customers, orders or bookings.
- API integration An API integration connects two or more systems through their APIs so data and actions flow between them automatically.
- API An API, or application programming interface, is a defined way for one piece of software to request data or actions from another.
- No-code No-code tools let people build apps, websites and automations with visual editors instead of writing code.
- REST API A REST API is a common style of web API where systems use standard web requests, such as GET and POST, to read and change resources at specific URLs.
- Vector database A vector database stores embeddings, lists of numbers that represent meaning, and quickly finds the ones most similar to a query.