Phew … what a ride. 😉 Back in 2006 we started with our first order form, written from scratch in PHP, for rear-wiper-hole covers that were still made from aluminium and painted by hand. Shortly afterwards we switched to CubeCart as the shop system. We added a lot of custom code and connected payment systems, Deutsche Post’s Internetmarke and more. That setup ran more or less unchanged until last year, 2020 – but it came with some serious drawbacks. For example, it couldn’t properly support modern payment methods, clean multilingual content, customer login areas … and much more.

We resisted changing the system for a long time, because NEVER CHANGE A RUNNING SYSTEM but once two-factor authentication, Apple Pay and other technical necessities had slowed the old system down or made parts of it unusable, rebuilding everything from the ground up was long overdue.

Renewing a 15-year-old system meant the following for us:

  1. We migrated more than 30,000 customer records from the past 15 years – which is anything but trivial in the age of GDPR. We contacted every customer and asked for confirmation before activating the account; anyone who didn’t want that would be removed. Writing to that many people, many of whom probably hadn’t heard from us in years, naturally triggered quite a few questions by email – handling those was a challenge in itself. 😉
  2. The old database structure for all products, vouchers and order data was completely different. Even so, we tried to carry over as much information as possible. For the important tables, we wrote migration functions that clean the relevant data, port it into the new structure and then make it possible to import it into the new system.

So what exactly is better now?

  1. Product filtering. Building this feature was a mammoth task. We manually reviewed and catalogued 3,600 records (vehicle models) and compared them with our previous experience, data and measurements. The result is 1,000–1,500 manually assigned product relationships, depending on how you count them. Does the vehicle have a rear wiper? Do we know the hole diameter? Which other vehicles use the same wiper? What colour is the glass? And so on. We’re extremely proud of this feature because it lets us add new products quickly and easily and react much faster to changes and information from our customers. If you can’t find your vehicle, please contact us and we’ll correct the record.
  2. No more grouped products for glass rear wiper delete inserts: every glass insert is now assigned explicitly to a vehicle –> which has increased our product range fivefold. That means brands such as Hyundai, Dacia, Cupra and others now have their own entries in the shop, allowing us to reach around five times as many potential customers as before.
  3. Stock status and availability – so everyone can see before buying what’s in stock and how long shipping will take, while we can see where bottlenecks are and when it’s time to machine more inserts. Our goal is to get the goods to customers within 2–7 days. With worldwide shipping, that’s ambitious and we don’t achieve it in every case yet – we’re not Amazon – but it’s a major step in the right direction, and we’ll keep optimising the processes.
  4. The new ticket system and the clear goal: no enquiry should ever be left unanswered or unprocessed. In the past, we unfortunately struggled to keep communication running reliably. When everything works, answering emails is easy. But if a machine fails, production goes wrong, the website plays up and hundreds of emails arrive, things can unravel very quickly. We never want that to happen again. In extreme situations it may still take a little longer to answer, but every enquiry has to receive a response. That’s exactly our goal: nobody is ignored – everyone, WORLDWIDE, gets their goods, replacement insert, refund or whatever is needed. The last thing we want is to lose customers, postpone problems or create unnecessary conflict simply because we’re difficult to reach.
  5. Modern mobile-first design – which finally lets us deliver different templates for different devices and in different languages. That’s a big step, and we’re looking forward to making much more use of it. Visually, we’re following our “less is more” principle and reducing not only the product range but the design itself to the essentials – GLASS REAR WIPER DELETE INSERTS. That’s now the first thing you’ll see on the homepage, and we hope you like it as much as we do. 😀

Were there problems?

  1. Definitely. Unfortunately, importing the old data wasn’t 100% smooth. A decimal-separator error, for example, caused incorrect invoice amounts to appear for old orders in the new system. We only need that information for statistical purposes – basically to know what customers ordered in the past – so it isn’t a major issue. But for around 100 customer records we unfortunately forgot to disable the completed-order notification. After the import, those 100 customers with faulty records received emails containing completely incorrect information, which understandably caused a lot of confusion.
  2. You can’t simply press a button and import thousands of records. They need to be cleaned first, and with more than 10,000 rows that takes time. In total, we spent roughly three months cleaning the data and then more than a week importing everything in small batches. Nights running until 5 a.m. were pretty exhausting towards the end and pushed what was reasonable for the family – sorry about that.
  3. New systems don’t run perfectly from day one. We shut down the old systems on 17 February 2021 and launched the new ones on 18 February 2021. At the same time, we moved to a new, faster server in another data centre with appropriate failover protection. Functionally, there were several stumbling blocks afterwards – some settings were wrong at first and notifications were completely incorrect. During the first week after relaunch, almost everything still needed adjusting even though we’d spent months preparing on the test server. In the end, our biggest problems were with the shipping software and the Deutsche Post plugin – specifically integrating the correct postage in the right place in the invoice PDF. Thanks to Johannes, who finally solved that with custom code last week.

Our conclusion

I’m very proud of our team and want to thank Marie, Markus, Tom and Johannes for supporting me through this huge undertaking. That’s also why the new website now introduces all the people who make gecleant possible. The result of the relaunch is nowhere near perfect yet, and it’ll still take us a while before we can say it’s finished, but so far, so good … I’d say.

Also available in: German French Italian Japanese Spanish Norwegian Turkish Danish