Skip to content

Edge cases

The edge cases that break migrations

Bespoke systems and old data produce problems nobody plans for. These are the ones we meet most, and the ones we enjoy. If yours isn't here, we would like to hear about it.

foundrate=650 unit=hour
fixedrate=81.25 unit=hour

Meaning

Rates that changed meaning

What is going on
The same column holds daily rates in one system and hourly rates in another.
What we do
Units are checked against totals before anything loads. In one migration this stopped project costs reading eight times too high.
foundnote="renews 14/2/27, call Sue"
fixedrenewal_date=2027-02-14

Meaning

The renewal date lives in the notes field

What is going on
Users worked around a missing field by typing into a free-text one, for years.
What we do
Rules pull dates, phone numbers and emails out into real columns, and every value can be traced back to the note it came from.
found£1,200.00
fixed£1,200.00

Formats

£ turns up as £

What is going on
UTF-8 text read as Windows-1252 somewhere along the way and saved again, so every £ gains a stray character.
What we do
We detect the encoding column by column, repair the damaged values, and count every repair on the sign-off sheet.
foundhours=26.5 cap=24
fixedsplit or held back, listed

Access and rules

Records the new system refuses

What is going on
Archived items it treats as read-only, entries over its limits, values outside its picklists.
What we do
Every record is tested against the target's rules in SQL first. Then we decide with you what to fix, split or hold back.
found03/04/05
fixed2005-04-03 (source A is UK)

Formats

Three date formats in one column

What is going on
Free-typed dates, where 03/04/05 could be three different days.
What we do
We work out the format per source and per period. Anything still ambiguous goes on a list for a person to decide, never a guess.
found0.1 + 0.2 = 0.30000000000000004
fixed0.10 + 0.20 = 0.30

Formats

Money stored as floating point

What is going on
Pennies drift when currency sits in a float column, and the totals stop agreeing.
What we do
Values are rebuilt as exact decimals and reconciled to the penny against the source's own totals.
foundACME Ltd | Acme Limited | A.C.M.E.
fixed1 customer, merge listed for review

Structure

Two systems, one customer, no shared key

What is going on
The same company spelt four different ways across two CRMs.
What we do
Matching on normalised names, addresses, email domains and phone numbers, with every merge listed for review before it happens.
found0x255044462D312E34...
fixedinvoice-1042.pdf sha256 ok

Formats

Attachments stored inside the database

What is going on
Files held as binary columns with no file name or type recorded.
What we do
We identify each file type from its contents, rebuild sensible names, and check every file's size and hash after the move.
foundstatus today: Closed
fixedstatus on 2024-03-31: Open

Structure

History that only exists as an audit log

What is going on
The system stores today's values; the history you need is buried in a change log.
What we do
We replay the log to rebuild the state at any date, then reconcile the replay against today's values.
foundCC-12 rolls up to CC-12
fixedloop listed, fixed before load

Structure

Hierarchies with orphans and loops

What is going on
Tasks with no parent, cost centres that roll up into themselves.
What we do
Every tree is walked and checked before load. Breaks are fixed or listed, never dropped quietly.
founddeleted=1, still on invoices
fixedrule agreed, then held back

Meaning

Deleted, but only on some screens

What is going on
A deleted flag that some parts of the system respect and others ignore.
What we do
We find which records each part of the system really treats as live, and agree the rule with you before anything is held back.
foundno API, no DB, no export
fixedread from screens, logged

Access and rules

A system with no export at all

What is going on
No API, no database access, no report worth the name.
What we do
Then we read the screens, or the calls the screens make to their own back end. Slowly, logged, and with the data owner's permission.

Got a strange one?

Describe the system and the problem. The odder it is, the more we want to look at it.

Describe your systems
Home
Advanced extractionOut of systems with no API or export
Data migrationOld systems into new, reconciled
IntegrationSystems kept in step after go-live
Data warehousingWarehouses the business can report from
Spreadsheets into systemsCritical workbooks rebuilt as proper systems
Partner capacitySpecialist capacity for your team
Edge casesProblems that break migrations
How a migration runsProfile to reconcile
Write-upsThree write-ups
TemplatesFree downloads
Describe your systemsSend an enquiry
Privacy notice
£ turns up as £Formats
Three date formats in one columnFormats
Money stored as floating pointFormats
Mapping specification templateExcel
Reconciliation checklistPDF
Cutover runbook outlinePDF
Copy email address[email protected]
Write an email[email protected]
Switch theme
Dan Smith on LinkedIn