The mapping lives in a spreadsheet
Conversion rules get written in prose, negotiated over email, and half-remembered. None of it is executable, so somebody re-types it into a script — and the script is now the only thing that knows what was agreed.
Enterprise data migration
FerryMap compiles your mapping into a locked, executable rule file — then runs it on a deterministic engine. Same input, same rules, same output. Byte for byte, every time.
No model ever touches your data.
Sources
Compiled rule file
Approved by a human · executed byte for byte
Targets
The problem
Moving rows is the easy part. Agreeing what each column means in the target system, encoding that agreement so a machine can enforce it, and proving afterwards that it was enforced — that is where cutovers slip.
Conversion rules get written in prose, negotiated over email, and half-remembered. None of it is executable, so somebody re-types it into a script — and the script is now the only thing that knows what was agreed.
It was written for cutover weekend, under time pressure, by whoever was free. Run it again six months later and nobody can promise you get the same rows back.
A value in the target looks wrong. There is no path from that value back to the rule that produced it, or the source row it came from. The investigation is archaeology.
FerryMap closes all three. The mapping becomes the program. The program is deterministic. Every value it writes carries its lineage.
How it works
FerryMap proposes; you approve; the engine executes. The order is not negotiable, and the approval cannot be skipped.
Hand FerryMap your conversion rules in plain English, with your source and target schemas. No mapping document? Point it at matched source and target rows plus a confirmed business key, and it derives the mapping from the data itself — measuring every candidate rule against your real records rather than guessing at them.
The mapping is compiled into a rule file, and every rule is checked in plain code against your real schemas: does the source field exist, does the target field exist, is the function permitted, do the code-map keys appear in the data, do the types and lengths fit. Rules that cannot be verified are rejected rather than softened. What survives arrives in a diff-style review carrying its confidence and the exact mapping sentence it came from.
A deterministic engine executes the approved rule file. It validates against your target schema before anything lands, quarantines rows it cannot transform with a reason code, and writes a reconciliation report for the run. Run it today, run it at cutover, run it a year from now — the same inputs and the same rules produce the same output.
Who it's for
You have to put your name under the sentence “the data is correct.” FerryMap gives you the evidence to sign it — and the report that survives the question six months later.
Master and transactional data has to move between ecosystems with different names, types, codes and formats for the same facts. The mapping is the deliverable; FerryMap makes it executable.
You run the same migration shape across many clients. FerryMap turns that shape into something repeatable rather than heroic, and keeps the rules from each engagement.
Why you can trust the output
Every claim below is a mechanism in the product, not a promise about how carefully we work.
AI reads your mapping document and proposes rules. A deterministic engine transforms the rows. The separation is structural, not a policy someone has to remember.
Field names, permitted functions, code-map keys and type and length feasibility are all checked in plain code against your introspected schemas. A rule that cannot be verified never reaches the engine.
Rules below the confidence threshold, or carrying an unresolved finding, block execution until they are explicitly approved. Rules derived from data can never auto-approve at any confidence.
Determinism is a tested contract rather than a claim: the same inputs and the same rules are proven to produce identical output, across two independent execution engines.
Every target value traces back to the source row, the rule that produced it, and the version of the rule file that rule belonged to. Every action traces back to a person.
Rows that cannot be transformed or validated go to quarantine with a reason code. Silent drops and silent coercions are treated as defects, not as tidiness.
Connects to
Source and target are independent choices. A database can feed a file, a file can feed an API, and the rules do not change because the transport did.
PostgreSQL · Oracle · SQL Server
CSV · Excel · Delimited · Parquet
API key · Bearer · Basic auth
Validated before it lands. Whatever the target, output is checked against the target schema — types, lengths, nullability — before anything is written. Only clean, conforming data moves forward.
Security & deployment
An enterprise migration touches the most sensitive data an organisation has. FerryMap is built so that data never needs to leave.
FerryMap ships as containers and runs where your data already lives. There is no requirement to send rows to us, and no external service in the transformation path.
Connection secrets for source and target systems are stored encrypted, and are never rendered back into any screen, log, response or report.
Who created the job, who approved which version of which rule, who started the load, and when. The audit trail is written as the work happens, not reconstructed afterwards.
Administration — users, connections, settings — is separated from day-to-day operation, so running a migration does not require the rights to reconfigure one.
FAQ
Get started
Bring a real mapping and a real target schema. We’ll walk it through FerryMap end to end — compile, review, run — and you keep the rule file and the reconciliation report from the session.
Opens your mail client with a short template. Goes straight to the team — no newsletter, no sequence.
Helpful to include
Built by
YAE Services