Graham Sanderson Interiors

A Luxury Interior Design Retailer

Graham Sanderson Interiors had a bespoke ExpressionEngine ordering system no other platform could replicate. Their agency was gone, the hosting was failing, and payments had already broken. We migrated to EE7, rebuilt the store, met a hard deadline, and are still their technical partner today.

ExpressionEngine Retail / Interior Design EE Upgrade + Ongoing Retainer

The Situation

Graham Sanderson Interiors sells made-to-measure curtains, blinds, cushions, fabrics, and wallpapers. The site is not a standard e-commerce catalogue. It is a bespoke ordering system built around the specific logic of made-to-measure products, with complex pricing calculators determining quantities and costs for every item. Years of development, and significant financial investment, had gone into making it work exactly as the business needed it to.

The site had been built on ExpressionEngine 2 and had never been upgraded. When the original agency decided they could no longer support ExpressionEngine development, they offered the client a rebuild in Shopify. The client declined. Shopify could not replicate the complexity of what had been built. The pricing calculators, the product logic, the ordering workflows, the back-end management tools were not generic features that could be swapped out for a platform template. They were the result of years of deliberate, expensive development, built to a specification the client had authored themselves. Replacing them was not an option. The client went looking for an independent ExpressionEngine specialist and found Expression 37.

When we ran a diagnostic scan of the existing hosting environment, what we found was serious. The server had been set up by the previous agency as a custom configuration and had never been actively maintained. Running outdated software across the entire stack and failing on multiple security checks, the infrastructure had been deteriorating for years without anyone looking after it. It was, as we described it at the time, a hut on a set of stilts in the middle of the ocean, waiting to collapse.

While the audit was underway, a second problem arrived. Opayo, who provided the payment gateway, attempted to migrate the client from their legacy gateway API to a newer version. The migration failed. The site, stuck on ExpressionEngine 2 and running on outdated server infrastructure, could not support the new API. For a day or two, the site was unable to take payments. Opayo intervened, restored the old gateway to get transactions running again, but gave the client a hard condition: the site would need to be ready for the new Opayo API by March 2024, or they would close the old one down. The client came to us in December 2023 with two serious problems, a fast-approaching deadline, and a site that had already lost the ability to take payments once.

What We Did

Before any upgrade work began, we produced a full audit of the site. Every add-on, every custom plugin, and every area of bespoke development was documented, giving the client a clear picture of what the migration would involve and what needed careful handling before any work started.

The migration from ExpressionEngine 2 to ExpressionEngine 7 was a major undertaking. The site ran on more than 70 third-party add-ons and over 10 bespoke custom plugins. Each one was assessed, updated, or rebuilt. The biggest challenge was the e-commerce store. The Expresso Store module had been heavily customised over the years to handle the made-to-measure ordering logic, and that customisation had to be brought forward intact. The pricing calculators, the product filtering, the cart and checkout behaviour all required substantial rework to function correctly on the new platform.

The site was moved to a new, properly configured server environment. The security issues identified in the scan were resolved as part of the migration, replacing years of unmanaged custom infrastructure with a stable, modern hosting setup. Full-page caching was implemented using LiteSpeed, with cache warming scripts to keep performance consistent across the product catalogue.

Testing ran over a number of weeks. Lisa Sanderson (Company Director) was involved throughout, working through the ordering workflows with us to confirm everything behaved correctly before the site went live. The upgraded site launched on ExpressionEngine 7 and connected to the new Opayo gateway API, meeting the March 2024 deadline.

Across the migration, the work delivered:

  • Full migration from ExpressionEngine 2 to ExpressionEngine 7
  • 70+ third-party add-ons assessed, updated or replaced
  • 10+ bespoke custom plugins rebuilt for EE7 compatibility
  • Expresso Store module rewritten to preserve complex made-to-measure pricing and ordering logic
  • Site moved to a new, secure, actively managed server environment, replacing unmanaged custom infrastructure
  • Full-page caching implemented via LiteSpeed, with cache warming for consistent performance across the catalogue
  • Payment gateway connected to new Opayo API, ahead of the March 2024 deadline

The Outcome

Graham Sanderson Interiors came to us with a site that had never been upgraded, a server that had been quietly failing for years, and a payment gateway that had already broken. They left with a fully upgraded ExpressionEngine 7 platform, every custom intact, a secure modern hosting environment, and a live connection to the new payment gateway, with the deadline met.

The years of investment in the ordering system was not lost. The made-to-measure pricing logic, the product management workflows, the customer ordering journey: all of it came forward. What the business had spent years building was preserved and put onto infrastructure that can actually support it.

If you operate a business-critical website that has not been touched in years, and whose original developers are no longer available to you, that situation is worth sitting with. The infrastructure ages quietly. The software falls behind. The dependencies drift. Nothing breaks until something does, and by then the exposure has been building for a long time. For Graham Sanderson Interiors, two separate problems converged at once. The fact that neither resulted in permanent damage or a missed deadline was not an accident.

We have continued working with Graham Sanderson Interiors on a monthly retainer since the launch. That relationship has included further development, performance work, and more recently a full payment gateway migration from Opayo to Stripe.

What the business has as a result:

  • ExpressionEngine 2 to EE7 migration completed, all bespoke development preserved
  • Custom e-commerce store fully operational, made-to-measure ordering logic intact
  • Secure modern server environment, replacing years of unmanaged custom infrastructure
  • Payment gateway connected to new Opayo API, March 2024 deadline met
  • Full-page caching delivering significantly improved load times across the product catalogue
  • Ongoing monthly retainer providing continuity of specialist support

We delivered. Here is the evidence.

Visit the live site →
When our previous agency told us they were moving away from ExpressionEngine, we were in a difficult position. We had spent years developing a system that did exactly what our business needed, and we were not willing to lose that for a generic rebuild on another platform. Karl understood the platform, understood what we had built, and understood what was at stake. The upgrade was a significant undertaking, and the pressure of the payment gateway deadline was real. He delivered on time, with everything intact. We have been working with him ever since.

Lisa Sanderson, Director ~ Graham Sanderson Interiors Ltd.
A Luxury Interior Design Retailer

Recognise this situation?

If you are running an ExpressionEngine site that has been with the same developer for years and you are no longer sure where you stand, or if your payment integration has not kept pace with modern standards, both of these services are relevant. We work with sites in exactly this position on a regular basis.

ExpressionEngine Maintenance, Upgrade & Support Stripe Integration & Support

Can we help?

Most clients come to us when their site has started to feel like a risk rather than an asset. Whether the agency relationship has ended, an upgrade has been delayed, or the site has simply grown beyond what it can handle, a conversation costs nothing.

Get in touch with Karl

Related Blog Posts

How to Know If Your ExpressionEngine Site Is in Good Shape When Should You Upgrade Your ExpressionEngine Site? The Hidden Cost of Delaying an ExpressionEngine Upgrade Third-Party Integrations: Why They Break and What to Do About It What a Monthly Retainer for ExpressionEngine or Craft CMS Should Actually Include What Ongoing ExpressionEngine Support Actually Looks Like in Practice

Trusted by established businesses and growing brands across the UK

Expression 37 works with a small number of clients at any one time. These are some of them.

Respecting Client Confidentiality

Much of our work involves long-term support and maintenance arrangements for business-critical sites. A significant portion of that work is covered by non-disclosure agreements to protect client confidentiality, so we are unable to show every project publicly.

If you would like to discuss your ExpressionEngine or Craft CMS requirements, get in touch directly, Karl will respond personally.

About Karl

Karl Bowers ~ ExpressionEngine & Craft CMS Specialist

Karl is the founder of Expression 37 Ltd and has been working exclusively with ExpressionEngine and Craft CMS since 2007. In eighteen years he has supported more than 80 clients across the UK, from long-term retainer arrangements to emergency rescues when something has gone wrong at the worst possible moment. Every piece of work is handled personally by Karl, with no account managers or junior developers between you and the person doing it.

Find out how we work
» Get in touch