We had great focus to make this solution as generic as possible to

  1. optimize productivity

  2. provide good control on the process

The first statement is likely trivial, while the second requires a bit more consideration. It's quite challenging to test complex data migration processes. We can count records, but if we want to compare data, that's a demanding task. The easiest way to ensure quality is to build a robust, generic framework, which has only a few "moving parts", code which is database schema specific.

When the data aggregation is done, we either use an application platform or archiving system to create a thin app via an app wizard, or we build it on top of the (XML) database using XQuery.

If we feed an archiving system with aggregated, hierarchical records, it can provide the complete end-user application via simple configuration: the end user GUI (search forms), the result rendering, and even the record filtering query (for example XQuery) can be auto-generated.