Data migration

Bring your history with you.

Moving to Portanus shouldn't mean leaving your records behind. Migration is a defined, fixed-fee service with three tiers — you pick how much you do yourself and how much we execute. No open-ended consulting; the price you're quoted is the price you pay.

Three ways to migrate

Pick how hands-on you want us to be

Self-serve

Smaller datasets, or teams comfortable with spreadsheets.

Free
  • Documentation + built-in CSV importers
  • You export, map, and import at your own pace
  • Any number of source files
  • No scheduling, no operator time
You run everything.
Full legacy

A real legacy system or CRM — we execute the move.

$4,000 one-time
  • We run the full extract-transform-load
  • One source system, mapped & reconciled
  • Two validation rounds
  • One scheduled cutover window
Salesforce & similar CRMs supported.
Why this is different

Every migration runs on the same rails

Whichever tier you choose, your data moves through the same auditable pipeline — built so a migration is never a leap of faith and never a point of no return.

Fingerprinted intake

Every file you send is SHA-256 fingerprinted the moment it arrives. Your record shows exactly which bytes we received — no ambiguity about what was migrated.

A dry run before anything writes

We simulate the entire import first and hand you a per-record report — what would be created, updated, skipped, or flagged — for your sign-off. Nothing touches your workspace until you approve it.

Full undo

Every record we create is batch-stamped, so the whole import rolls back with one action. If anything looks wrong after go-live, we reverse it — cleanly.

AI-assisted, human-gated

AI proposes column mappings and clusters errors to speed the work — but a person reviews every suggestion, and a deterministic pipeline does the actual writing. AI never touches your data directly, and every call is logged and cost-attributed.

Tenant-isolated & retained honestly

Your migration runs entirely inside your own workspace — never pooled with another organization's data. The source files we hold are purged on a published schedule after the engagement closes; only the verifiable record persists.

Reconciled against your counts

After the load, we reconcile what landed against your source record counts and show you the math — so "we moved everything" is something you can verify, not something you have to take on trust.

The deliverable

A migration record you can hand your board

Every engagement produces a branded migration dossier — a document that assembles itself from an immutable ledger as the work progresses and exports to PDF at close. It's the tangible artifact you keep: a cryptographically verifiable record of your migration that no incumbent hands a nonprofit.

  • Every file received, fingerprinted and dated
  • Every mapping and transform applied
  • Records created per hub, reconciled to your counts
  • Everything excluded — and exactly why
  • A digest that proves the report is reproducible
Full-legacy scope

Clear boundaries, so the fixed fee stays fixed

A fixed price only works when "done" is defined. Here's exactly what a full-legacy migration includes — and what's handled separately.

In scope

  • Field mapping from one source system
  • The full extract, transform & load
  • Reconciliation against your source record counts
  • Two validation rounds on agreed sample records
  • One scheduled cutover window
  • The verifiable migration dossier at close

Handled separately

  • Data cleanup beyond mapping — deduping, back-filling missing fields, reconciling conflicting records
  • A second source system (each is its own scope)
  • Ongoing two-way sync after cutover

Need any of these? We quote them at $200/hour or re-scope up front — never absorbed silently into the fixed fee. You also provide the exports and a responsive point of contact for mapping questions.

Migrating as part of a custom build?

If your migration is bundled with custom-module work, the $250 discovery covers migration scoping too — one spec, one credit, the same 90-day window. You don't pay to scope the same project twice.

Common questions

What happens if the work runs over the included hours?
Guided migrations include 10 operator-hours; anything beyond is billed at $200/hour. We quote the overage before doing the work — the meter never runs silently.
My data is messy. Can you clean it up?
Yes, but it's scoped separately. The fixed full-legacy fee covers mapping and loading your data as-is. Deduping, back-filling, and reconciling conflicting records are quoted at $200/hour or folded into a re-scope, so the base price stays predictable.
We have two systems to migrate from.
Each source system is its own scope. We'll quote them together, but a full-legacy migration is priced per source so the mapping and validation for each is properly accounted for.
Can we just do it ourselves?
Absolutely — the self-serve tier is free. You get the documentation and the built-in CSV importers and move at your own pace. Step up to Guided when you'd like us alongside you, or Full legacy when you'd rather we run it.
What if the migration goes wrong after we're live?
Nothing is written until you sign off on a dry-run report, and everything we do create is batch-stamped so it can be rolled back with one action. A migration is reversible, not a point of no return — that's a deliberate part of how the pipeline is built.
What do we actually get at the end?
Your migrated records, in your workspace — plus a branded migration dossier: a verifiable PDF record of every file we received, every mapping applied, every record created, and everything excluded and why, reconciled against your source counts. It's the kind of documentation you can hand a board or an auditor.

Let's scope your migration

Tell us what you're moving from and we'll recommend the right tier and give you a fixed quote — no obligation.

Talk to us