Project Snapshot
- Client: Baltimore County Golf (baltimoregolfing.com)
- Industry: Public Golf Course Operations, Baltimore, MD, USA
- Engagement: Two phases — UX/theme redesign, then Drupal core upgrade (8.9.0 → 11.3)
- Phase 1: Custom theme and UX revamp, delivered in 8 weeks
- Phase 2: Drupal 8 → 11 upgrade, delivered in 6 weeks
The Client
Baltimore County Golf operates five championship golf courses (Diamond Ridge, Greystone, Fox Hollow, Rocky Point, and The Woodlands) plus a nationally Top 50 ranked driving range at Fox Hollow. The organization serves thousands of golfers annually with tee time bookings, annual pass programs, golf instruction, outing services, and a full food and beverage operation through the Greystone Grille.
Phase 1: UX Revamp
The Problem
Baltimore County Golf was running a Drupal 8 site that worked, but the brand presentation no longer matched the operation. The team runs five championship courses and a nationally ranked driving range, but the website looked like a generic municipal page. The visual gap between the in-person experience and the digital one was costing them.
Specific issues we found in the audit:
- Outdated brand presentation. The existing theme felt traditional and dated. It did not communicate the quality of the courses or the breadth of services on offer.
- Confusing multi-course navigation. Five courses, a training center, a restaurant, and dozens of pages were stitched together in a way that buried key content. Visitors had to hunt for tee times.
- No clear conversion path. The path from "I want to play" to "I clicked Book a Tee Time" had too many steps. The CTAs were soft.
- Weak mobile experience. Most golfers check tee times on a phone. The mobile UX needed to be the primary design target, not the desktop fallback.
The Solution
WebEvra delivered a complete custom theme (baltimoregolfing) built from the ground up. No off-the-shelf base theme. The result transformed the site from a traditional municipal-style page into a modern, sports-brand-quality digital experience that reflects the actual quality of the courses.
Key frontend work:
- Custom Drupal theme — Built as a fully custom theme at
/themes/custom/baltimoregolfing/ with bespoke SVG assets (logo, navigation arrows, icons for golf bags, dining, user accounts, shopping). No base theme.
- Video hero — Full-bleed homepage video showcasing the courses with an overlay CTA for tee time booking. A major upgrade from the previous static banner.
- Multi-course architecture — Individual course pages for all five courses plus the Training Center and Greystone Grille, each with course-specific imagery, head pro, superintendent, and details.
- Responsive mega-menu — Complex navigation organizing 40+ pages across seven top-level sections (About, Locations, Annual Passes & Specials, Instruction, Outing Services, Turf Talk) with mobile-optimized dropdown behavior.
- Membership and passes section — Dedicated pages for eight different annual pass and membership types (Four-Star, Advantage Card, College, Greystone, Family Fun Pack, Junior Golfer, Youth On Course, Service Discount) with clear pricing and CTAs.
- Editorial content sections — "FORE!" news feed, Pro Tips instructional content, Turf Talk maintenance updates including aerification schedules, and an FAQ section.
- Figma to Drupal — Five unique Figma templates converted into pixel-faithful Drupal pages with reusable Paragraphs components.
Third-Party Integrations
- ForeUP (foreupsoftware.com) — Tee time booking engine. The "Book a Tee Time" CTA links directly to the ForeUP booking interface with course pre-selection so golfers land on the right course immediately.
- Online store (store.baltimoregolfing.com) — Separate e-commerce storefront for merchandise and gift cards, linked from the main site.
- Facebook Pixel — Conversion tracking and remarketing for tee time bookings and pass purchases.
Design Details
- Custom SVG icon system (golf bag, knife-and-fork for dining, shopping bag, multi-user silhouettes for outings)
- Brand-consistent color palette with a dark green, gold, and white sports aesthetic
- Five unique Figma templates converted into Drupal page templates with Paragraphs-based components
Phase 1 Results
The redesign delivered a digital presence that finally matched the in-person quality of the courses:
- From generic municipal site to premium sports brand. Visitors landing on the homepage now see a video showcase of the courses, not a wall of text.
- From buried tee times to one-tap booking. The "Book a Tee Time" CTA is the single most prominent action on every page, with deep links into ForeUP that pre-select the course.
- From confusing multi-course navigation to clean information architecture. Each of the five courses, the Training Center, and the Greystone Grille has a dedicated landing page with everything a visitor needs.
- From desktop-first to mobile-first. The site renders cleanly on phones, where most golfers actually check tee times.
- Editor-friendly — The Paragraphs-based architecture means the Baltimore County Golf team can update course details, pass pricing, and editorial content without touching a developer.
Phase 2: Drupal 8.9.0 → 11.3 Upgrade
The Problem
Drupal 8 reached end of life in November 2021. The site was running Drupal 8.9.0, which meant:
- No more security updates. The site was exposed to any vulnerability discovered after Drupal 8 EOL.
- Contrib module decay. Newer versions of contributed modules were dropping Drupal 8 support, leaving the site on aging, potentially vulnerable releases.
- PHP compatibility risk. Drupal 8.9 required PHP 7.x, which was itself approaching end of life. Two compounding risks at once.
- No access to modern Drupal features. Layout Builder improvements, CKEditor 5, Claro admin theme, SDC components, and the rest of the Drupal 10 and 11 toolkit were unavailable.
The upgrade path was not a simple composer update. Jumping from 8.9.0 to 11.3 meant navigating breaking changes across three major version boundaries.
The Approach
We executed the upgrade as a sequenced, three-step path with regression testing at every stop:
- Drupal 8.9.0 → 9.5.x. Addressed all deprecation warnings, updated contrib modules to D9-compatible versions, and resolved custom code using deprecated APIs.
- Drupal 9.5.x → 10.x. Migrated from CKEditor 4 to CKEditor 5, switched the admin theme from Seven to Claro, updated all contrib modules to D10-compatible releases, and resolved Symfony 6 compatibility issues.
- Drupal 10.x → 11.3. Final upgrade leveraging Drupal's streamlined 10-to-11 path. Updated PHP requirements and resolved the last remaining deprecated code.
Key technical challenges we worked through:
- Custom module deprecations. Several custom modules used APIs that were removed across the upgrade path. We rewrote them against modern equivalents.
- Custom theme adaptation. The
baltimoregolfing theme needed updates for Twig compatibility changes, library definitions, and a handful of deprecated theme hooks.
- CKEditor 4 to 5 migration. Existing rich text content had to be checked for formatting compatibility with the new editor.
- Contrib modules without D10/D11 releases. A few modules required patches or had to be replaced with maintained alternatives.
Quality Assurance
- Manual regression testing across all course pages, the Greystone Grille, training pages, and pass/membership pages
- End-to-end verification of ForeUP booking integration on every course-specific page
- Mobile testing on iOS and Android
- Visual diff against the production site before each phase rolled live
- Staging-first deploys, with a rehearsed cutover plan
Phase 2 Results
- From end-of-life to current stable. The site moved from unsupported Drupal 8.9.0 to Drupal 11.3, the current stable release.
- Security coverage restored. The Drupal security team's release stream now applies again. Future patches land within hours of publication.
- Performance improved. Drupal 10 and 11 are measurably faster than Drupal 8 in core rendering, and the new PHP version brought further speedups.
- Modern editor and admin UX. Editors now work in CKEditor 5 with the Claro admin theme. The day-to-day publishing experience is materially better.
- Long-term maintainability. The codebase is now on the same major version Drupal will support for years. No more "we have to upgrade everything" projects looming.
- Minimal downtime cutover. Production was switched over inside a four hour planned maintenance window.
Tech Stack
- CMS: Drupal 11.3 (upgraded from Drupal 8.9.0)
- Theme: Fully custom (
baltimoregolfing), no base theme
- Frontend: Custom SVG asset system, video hero, responsive mega-menu
- Booking: ForeUP integration (external)
- E-commerce: Separate storefront on store.baltimoregolfing.com
- Tracking: Facebook Pixel
- Content architecture: Paragraphs for flexible page builds
- Editor: CKEditor 5
- Admin theme: Claro
- Hosting: Pantheon
Client Testimonial
"This seemed to me like a tough project and WebEvra did a great job scoping it out and sticking to our budget. We did decide to give him an additional amount because we believed our change requests were extensive and beyond the scope of the initial estimate. We were happy to give him the additional amount. He was great to work with and we will be using him again for projects in the future."
— Chris Smith, Baltimore County Golf
Need a Drupal upgrade or a UX revamp?
Baltimore County Golf is a textbook example of two engagements that often go together: a full UX revamp on a custom Drupal theme, then a major version upgrade to keep the site supported and secure for years. We can do either independently or as a single sequenced project. Book a strategy session and we will scope it out. See also our pages on Drupal end of life migration and Drupal support and maintenance.