Converting data from a legacy application is a lot like making coffee.
The existing data (grounds/beans) work well enough in their current state (if you
like pulling beans out of the bag or eating spoonfuls of grounds, but then we already
know we want a new app, don’t we?). To work properly, however, in our new application
the data must undergo change. So first the grinding, either from beans or from a courser
grade of grounds (cleansing garbage data from the system prior to trying to converting it),
then the pouring into the filter and running hot water through it (conversion to new
schema, applying different integrity rules, interpolating new fields from existing ones,
etc.) until the finished coffee finally resides in the pot (the new application database). In
theory, if all went well, what’s in the pot is what was desired; the user can drink it and be
well satisfied with the temperature, the flavor, the aroma, the viscosity…but theory and
fact often part company. So who do we want to drink the first cup, our user
group/customer or our testing group? That was my answer, too.