When Rob Wood, Senior Web Developer at Synax Web Solutions, reached out to Next-Cart for a new migration project, he delivered a friendly message and a clear brief, as he had in many previous times. Our long-term relationships are built on a history of successful past projects.
But neither Rob nor the Next-Cart team expected this migration to unfold into a year-long journey with unexpected discoveries. From a deeply customized Drupal Commerce store to a modern WooCommerce installation, it requires iterative refinements before the final execution.
The story of Keediet is about moving the large volume of data accumulated over many years of operations. It relates to a multi-phase migration that transformed and reorganized data in WooCommerce under Next-Cart’s VIP Custom Plan.
It’s a typical story of scale, complexity, collaboration, and precision, only possible when the migration is not just a “task,” but a partnership.
The client, the story, and the challenge
Keediet.co.uk is a long-running online website for diet management and nutritional products. Over the years of operations, the store accumulated:
-
Thousands of customer accounts
-
Historical customer loyalty points balances
-
More than a decade of order data
-
Custom order statuses that were used heavily by the business
-
A Drupal Commerce backend packed with legacy revisions of older frameworks
Rob was then the developer responsible for rebuilding and relaunching the store on WordPress/WooCommerce. He had already used Next-Cart’s services to migrate multiple client projects successfully. But Keediet was different. They were complex and required continuous order workflows, customer identities, loyalty systems, and operational logic throughout the migration.
Rob’s initial message was as simple as enough: he needed all of Drupal’s custom order statuses to appear inside the Next-Cart configuration panel so he could map them to the YITH Custom Order Status plugin in WooCommerce.
Within hours, Next-Cart technician Jason Dinh updated the migration tool to detect all custom statuses, quickly clearing the first hurdle.
But as the migration unfolded, new complexities emerged with each deeper than the last.
When 10,000 orders become 700,000 database rows
After the first migration test, Rob noticed something odd. WooCommerce displayed nearly 20,000 imported orders, while Drupal’s frontend showed around 10,400. Those different numbers were unusual enough on their own, but this was only the beginning.
Rob flagged the issue. Jason began investigating.
Right after opening the full database backup with the commerce_order table from Rob, Jason realized the reasons:
-
More than 700,000 rows in the orders table
-
Only ~10,400 were actual unique orders
-
The remaining ~690,000 rows were historical revisions automatically stored by Drupal Commerce over many years
These extra rows behaved like duplicates, resulting in doubled order count, empty or incomplete orders, inconsistent order details, and drastically increased processing load.
In this situation, when the dataset was too noisy, a standard migration tool was not sufficient.
So, Next-Cart’s technicians, Jason and Hurry, rewrote custom logic:
-
Identify only the most recent revision for each order
-
Exclude all legacy revision rows from the migration
-
Rebuild the order dataset to reflect Keediet’s true operational history
After that, Rob reran the migration, and the results matched the client’s expected count: around 10,400 valid orders. And these orders were mapped cleanly and ready for WooCommerce.
Preserve order numbers and protect a familiar system
One of the early concerns of Rob for the migration process was order numbering. Order IDs were established in the Drupal store as internal references used by the Keediet team. Meanwhile, WooCommerce did not allow users to directly overwrite order numbers. By default, WooCommerce uses its own internal post ID as the order reference.
Rob and his clients needed the order numbers they knew, not new numbers.
Next-Cart guided him to install the WooCommerce Sequential Order Numbers plugin. The team then configured the migration to map the original Drupal order ID to WooCommerce’s _order_number metadata field so it would display as the official order number.
As a result, the Keediet team still maintained their order references. Then, staff could easily cross-check historical orders and maintain internal workflows.
Loyalty points challenge: Make a custom solution for a custom system
Keediet’s Drupal site used a non-standard, custom-built loyalty points system: it stored the current point total and maintained a complex multi-entry points log. However, WooCommerce lacked a native equivalent structure for this.
The client needed the current points balance for each user and could reconnect those points to WooCommerce customer accounts.
After a thorough analysis, Jason confirmed the possibility of migrating the point totals. But migrating the logs was too heavy and inconsistent, while it was unnecessary for business use.
Rob agreed with that and decided to purchase the customization service so that Next-Cart can build a custom migration add-on:
-
Extracted each customer’s current loyalty point balance from Drupal.
-
Linked it correctly to the WooCommerce customer record.
-
Ensured the values were preserved during update migrations.
-
Allowed both one-time and incremental updates as needed.
After a perfect test for a single customer, Jason asked for Rob’s approval to migrate all current customers. At the end, the entire loyalty system in the Keediet customer retention model was preserved, appearing clean, accurate, and compatible with WooCommerce.
When a migration became multiple updates
Most migrations happen all at once with a single data transfer while a site is frozen. Keediet’s project couldn’t.
The client continued operating the Drupal store during a long migration. That means new orders created, customer details changed, loyalty points updated, and new mailboxes with transactions.
Therefore, Rob needed incremental updates.
Next-Cart activated and repeatedly refined the “Continue Previous Migration” mode. This extended feature allowed the team to import only new changes, leaving all prior imports intact.
Jason supervised every update cycle and ran multiple updates across the same week as the project neared its launch window.
Over roughly 12 months, dozens of incremental migrations were executed with careful oversight. In the end, this data flow became one of the project's most significant technical achievements.
The final sprint, preparing for go-live
By early 2023, the development steps for the WooCommerce store were complete: designs were finalized, and products were configured. The business was ready for the final migration before going live.
But the launch time was changed. The clients first considered January 3rd, then moved toward early February. It meant new orders, new loyalty changes, and new update requirements.
Throughout this period, Next-Cart provided hands-on support. Jason ran a complete update for customers, orders, and loyalty on January 2nd, followed by another update on January 3rd. Further syncing occurred in the first days of February.
Each migration run required surgical precision to avoid overwriting clean data.
Then, on February 6, 2023, Rob placed the Drupal site into maintenance mode to accommodate the entire project.
Within minutes, Jason executed the final import for all new customers, all final orders, loyalty point totals for each user, updated addresses, statuses, and any mid-cycle modifications.
The final data set was complete and ready for launch.
Rob checked the results and confirmed: everything matched perfectly.
Keediet.co.uk was officially ready to relaunch on WooCommerce.
Data integrity, edge cases, and expert oversight
Even in the final days, unexpected questions surfaced. Rob noticed specific WooCommerce orders lacked physical addresses.
Next-Cart dug into the Drupal backend and verified the truth: some historical orders simply did not include addresses at all. It was actually a missing record in the real source store, not a migration error.
Throughout the entire project, Jason and Harry also verified every unusual case Rob reported: reviewed the original Drupal data and explained the logic behind it to ensure nothing was migrated incorrectly or lost.
The final result: A clean, cohesive WooCommerce store
When the migration was completed, all data from Keediet’s store, after their years of customer trust and business operations, was preserved with accuracy and care in the WooCommerce environment.
-
Over 10,400 unique orders
-
All customers with account details
-
Full set of custom order statuses
-
Complete loyalty point balances
-
All incremental changes during development
Moreover, the migration process made a significant improvement that the client did not expect:
-
Consistency and readability of order history
-
Eliminated 700,000 redundant revision rows
-
Clean, optimized WooCommerce dataset
-
Maintained familiar order numbers
-
Clearer long-term maintainability
The project closed with ultimate satisfaction. The client wrote:
“Excellent service, I would thoroughly recommend.”
“Excellent service. I cannot fault it.”
In its next chapter, Keediet ran the business in a modern, easy-to-manage WooCommerce store. It came with accurate customer data and a reliable loyalty system, and was free from heavy legacy revisions and Drupal complexity.
Final Words: A migration project that reinforces a partnership
Looking back, this migration succeeded thanks to a combination of different factors: an evolving technical challenge, long-term collaboration, continuous live syncing, and expert custom engineering.
The trust built between Rob and the Next-Cart team, especially Jason and Harry, allowed the project to adapt to necessary changes and maintain momentum throughout the ongoing months.
The migration of Keediet.co.uk stands as one of Next-Cart’s most comprehensive and technically nuanced case studies. It demonstrates how the team understands, migrates, refines, and organizes data in a new ecosystem.
This is a case for businesses and agencies facing similar complex migrations across Drupal, Magento, OpenCart, PrestaShop, Shopify, or any other custom-built platforms. A migration is only as successful as the team behind it.
And with Next-Cart, that team goes beyond automated tools, customizing every step of the process for unique points of each business.
