Scope Creep Examples — Web development

Migrating years of legacy database records, never scoped originally

The new application launched with a fresh database as scoped. The client asks for years of historical records from the old system to be migrated in.

The SOW scoped a new application with a fresh database schema, built for new data going forward — no migration from the client's old system was mentioned anywhere in scoping or the estimate. After launch, the client asks for several years of historical customer and order records from the legacy system to be imported, so nothing is "lost." Migrating legacy data properly means mapping old fields to the new schema, cleaning inconsistent historical data, and validating the results — real engineering work with real risk if done carelessly.

Clause typically implicated

Clause typically implicated

Out-of-scope clauseThe SOW scoped a new database for new data — importing years of legacy records is a distinct, unscoped body of work with its own real risks.

Suggested change-order wording

Suggested change-order wording (illustrative, not legal advice)

Legacy data migration wasn't part of the original SOW, which scoped a fresh database going forward. It's absolutely doable, but needs proper scoping — mapping old fields to the new schema, cleaning inconsistent records, and validating the results before going live with migrated data. I'd like to do a short discovery pass on the legacy data first, then send an estimate based on what we find.

How this usually resolves

Insisting on a discovery pass before quoting is worth holding firm on for data migration specifically — legacy data is often messier than clients realize, and an estimate given without actually looking at it first risks being badly wrong in either direction.

Catch scope creep the moment it lands in your inbox

14-day free trial · No credit card required