Returns System Migration: Bridging the In-Flight Gap (Simply Explained)
A plain-language guide to returns system migration. No jargon, no tech speak, just what it means for your business.
By Mike Hodgen
The Day My Warehouse Couldn't Scan a Box
A worker on my warehouse floor picks up a returned package. She scans it. The screen looks for a matching record so she can check it in.
Nothing comes up.
The box is real. It's in her hand. There's a packing slip inside, a customer who shipped it back, and a refund that customer is already expecting. But the computer says the return doesn't exist.
So the box stalls. It gets set aside on a shelf labeled "figure out later," which is where good intentions go to die in a warehouse.
This is what "switching systems" actually looks like on the ground. Not a clean slide in a presentation. A person holding a real object the software refuses to admit is there.
We had just moved returns onto a new system. On paper, the move was clean. Every return created from the switch date forward landed in the right place and worked perfectly. The problem was everything created before that date.
I had 506 open returns already in motion. Fifty of them were real customers who had genuinely shipped boxes back and were waiting on us. The new system had no record of any of them.
Why Switching Systems Strands Your In-Flight Work
Here's the thing nobody tells you when you buy new software: it only knows about the stuff it created itself.
The new returns system knew about every return it handled. It had zero awareness of returns that started anywhere else. To the new system, those older returns weren't "old data." They just weren't real.
That's not a glitch. It's how software works. A tool only knows the records it owns. Anything outside that is a ghost. Real in the world, invisible to the new tool.
In my case, a return could have been born in three different places. The store's built-in return tool. The old returns app we used before the switch. Or a manual refund a customer service rep set up by hand for a one-off.
Three birthplaces. One new system that only understood one of them.
This is true of any system switch, not just returns. Swap "returns" for customer records, subscriptions, or inventory counts and the story is identical. The cracks don't show up in testing. They show up three weeks later when a real person hits one.
The mistake almost everyone makes is treating this like a one-time move. Copy everything over once, cross your fingers, hope nothing leaked. But a one-time copy can't catch a return that gets shipped back the day after the switch from an order placed the week before.
The real fix isn't "copy the data once and pray." It's a bridge that can find any in-flight item, from any source, the moment someone needs it.
The Self-Healing Scan
Here's what I built. When the worker scans a box and the new system comes up empty, it doesn't throw an error and stop. It goes looking.
The system checks its own records, finds nothing, then turns around and asks the store's return tool: do you have an open return for this order and this item?
If the answer is yes, it pulls that return in on the spot. Right there, mid-scan, it creates the record the warehouse needs. The box scans in. The worker moves to the next package.
She never knows anything unusual happened. No popup, no warning, no manual lookup. The dead end fixes itself.
The idea behind this matters more than the code. A scan should never fail just because the data lives somewhere else. A warehouse worker's job is to receive boxes, not to babysit two databases. If the system makes her the casualty of a migration, you built the wrong system.
So I made the warehouse the one that closes the gap, not the one that gets hurt by it.
This handles the unpredictable case beautifully. A return that shows up tomorrow for an order from before the switch. No advance copy could have predicted that exact box. The self-healing scan doesn't need to. It solves the problem at the exact moment a human needs it solved, which is the only moment that counts.
Then I Cleaned Up the Mess
The self-healing scan handles boxes as they physically arrive. But I didn't want to wait weeks for 506 boxes to trickle in before the new system knew they existed.
So I did two more things.
First, a one-time sweep. I pulled all 506 open returns out of the old systems and created matching records in the new one. No waiting for a scan to trigger it. After that, the open-returns list in the new system finally matched reality.
Second, a cleanup routine that runs on its own. A lot of "open" returns are ones customers started and then never actually shipped back. They sit open forever. Without something to clear them, the list grows endlessly and nobody can tell a real pending return from abandoned noise.
So I set it up to automatically close any return older than 90 days with no package on the way. The list stays honest. Anyone looking at it can trust that everything still open actually needs attention.
This is the quiet mess most teams never clean up. The switch finishes, everyone celebrates, and six months later the open-returns report is mostly dead entries nobody can read.
Real Action, Not Just a Green Checkmark
Bridging the data is necessary but not enough. Once a return shows up in the system, the real-world stuff has to actually happen.
When a returned item gets put back into stock, my system does the real thing. It reprints a tag for that item and stages it back onto the warehouse cart so it physically re-enters the products people can buy.
That's the difference between "marked as restocked" and actually back on the shelf. Our products are handmade in San Diego, so every item stuck in returns limbo is real money sitting on a shelf doing nothing.
The money side had its own gap too. A customer whose return started in a different system still needed to get credited correctly. So store credit goes out no matter where the return started. The customer gets their money. They never know or care which system the return passed through.
There's one more piece that's boring but critical. Three different parts of my setup could touch the same return. So I locked every path so the same action can never happen twice. No double refunds. No phantom inventory. No customer credited twice.
A clean import that double-refunds a customer is worse than no import at all. At least with no import, you know you have a gap and someone's watching for it. A double refund happens silently, looks successful, and you find it in an accounting review three months later.
What This Means When You Switch Systems
When you switch systems, your in-flight work doesn't vanish. But it goes invisible unless you plan for it.
That's the trap. The switch looks finished. New records flow in perfectly. The dashboard is green. And meanwhile every return, invoice, ticket, or order that was already in motion sits in a blind spot, waiting for a person to physically run into it.
Most vendors hand you a clean switch date and a script that runs once. The in-flight work is your problem. It leaks through the cracks one box, one invoice, one angry customer email at a time. The cost shows up as wasted labor and lost trust long after anyone connects it to the switch.
I build the bridge that catches it. If you're staring down a system switch and worried about what happens to everything already in motion, that's exactly the kind of gap I close.
Want to explore what AI could do for your business?
Book a free 30-minute strategy call. No pitch deck, no sales team, just a real conversation about your operations and where AI fits.
Get AI insights for business leaders
Practical AI strategy from someone who built the systems — not just studied them. No spam, no fluff.
Ready to automate your growth?
Book a free 30-minute strategy call with Hodgen.AI.
Book a Strategy Call