“We’ll lose records and not notice.”
Every run reports how many records went in, what was left out and why, and fails outright when a record points at something that did not come across.
Product
Moving years of records out of an old system is the part of every modernization people lose sleep over. Sapilon turns it into a written plan you approve line by line, rehearses it on a real server as often as you like, and only lets it near your Live data once a rehearsal has come back clean.
A new app can be clicked through and judged in an afternoon. Data can’t. A migration that goes wrong usually looks fine on the day: the screens load, the counts look about right, and three weeks later finance notices that a quarter’s invoices point at customers who never came across. The fear is reasonable. What it calls for is a process that finds those problems while nobody depends on the answer yet.
“We’ll lose records and not notice.”
Every run reports how many records went in, what was left out and why, and fails outright when a record points at something that did not come across.
“Nobody knows what half these columns mean.”
Every assumption is written down in plain language on a card, for you to accept or disagree with. Nothing is inferred silently.
“We get one shot at cutover.”
You get as many shots as you want. Each rehearsal replaces the last, and Live only accepts a mapping that has already rehearsed cleanly.
“Our customer data can’t just float around.”
Sources are read in place, uploads are encrypted and deleted after the migration or 30 days, and nothing of the old data is kept between runs.
Most migrations that go wrong treat moving data as one job. It is three, with different risks, and Sapilon keeps a clear seam between them.
Get the rows out of the old system, whatever it runs on. An engine problem, handled by the platform.
Your old tblCustomer is not the new customers table. One old record may become a customer and an address; CustType = 3 may mean “internal”. This is the real work: the agent proposes, you confirm, an expert can check.
where the risk lives
Back up the target first, load in the right order, then check what landed. Nothing reaches your Live data unverified.
The Data migration page in your project is a row of steps. The first five describe the job. Only the last one touches data.
Your own team, or a verified expert who reads SQL and knows what old data tends to hide. The request already describes your source, and the expert quotes before starting.
An export, a database dump, or a read-only connection. Sapilon reads the structure where it lives and copies nothing.
Every table, its columns, how many rows it has and a sample of what the values look like.
Untick the tables you don’t need and narrow the rest with a condition, such as only orders since 2018. A misspelled column is caught when you save, not halfway through a run.
Your project’s agent reads the old tables and the new schema and proposes one card per new table: where its rows come from, what identifies a record, which assumptions it made. You accept or disagree line by line. Leaving a table behind is a decision too, written down with its reason.
Read the old data fresh, load it through the mapping into your Rehearsal Server, and check what landed. As often as you like.
customers
3 of 4 acceptedProposed by your project's agent · from old.tblCustomer
Accept or disagree, line by line. A table is confirmed once every line is accepted.
On SQL Server, MySQL, Oracle or MongoDB? Export the tables you need as CSV or Excel. It is usually the faster route anyway: a file uploaded on a Friday evening skips the firewall ticket and the week-long security review a live connection needs.
Rehearsal run 7 · Rehearsal Server
CleanSame mapping version as the Live cutover will use.
Every run ends with a report written for the person who has to sign off, not for the person who wrote the SQL. It leads with the checks people trust.
A few real records side by side. Find a customer you know and look at them.
Money and quantity columns, old total against new. “Orders 2019–2025: €4,182,336.20 in both” settles more arguments than any spreadsheet.
An order whose customer did not come across fails the run outright.
Each distinct status or type value and what it turned into. A value that became nothing is the most common real problem, and here it is impossible to miss.
Leaving records behind is fine. Leaving them behind for a reason nobody can explain is not.
The rule the product enforces is short: your Live Server only runs a migration that has already rehearsed cleanly with exactly the same mapping. Change one line after your last rehearsal and you rehearse again. The cutover itself happens inside the Go Live step, together with the freeze of the old system, the sign-off, and the plan for old accounts, because those decisions belong together.
Every record keeps its old identifier, so a second run updates rather than duplicates. A mapping fix is a correction, not a clean-up job.
“Which old record did this come from?” still has an answer long after the old system is switched off.
The mapping lives in your project’s Git repository, so every change to it is a version you can look back at.
When the old system is retired, closing out deletes the uploads, the stored connection and the working area. Your data then lives in one place: the new system.
Yes. Point Sapilon at an export, a database dump or a read-only connection. Your project’s agent proposes how each old table maps onto the new schema, you confirm every decision, and the migration is rehearsed on your Rehearsal Server with a reconciliation report before it is allowed to run on Live.
Sapilon reads CSV, Excel and JSON exports (which covers Salesforce, HubSpot, Airtable, Bubble, Notion, spreadsheets and most business systems), Postgres dumps, and read-only Postgres connections. For SQL Server, MySQL, Oracle or MongoDB, export the tables you need as CSV or Excel.
Every run produces a report: sample records before and after, record counts with reasons for anything left out, old and new totals for money and quantity columns, every code value and what it became, and a hard failure for any record that points at something missing.
Nothing that matters. Runs go to the Rehearsal Server first and each one replaces the last. Records keep their old identifiers, so running again after a fix updates rather than duplicates. Live only accepts a mapping that has already rehearsed cleanly.
Not for the common cases: the steps are written for the person who knows what the data means. If nobody on your team reads SQL, you can ask a verified Sapilon expert to look after the migration; they quote first and work on the same steps with you.
Modernize the app and move its records in the same project, rehearsed on the same servers.
Publicly available on 15 November 202650 days to go
Start nowA verified data expert can look after the whole migration: check the mapping, read every rehearsal report, and sign off before Live. They quote before they start.