Migration is a complex, often multi-stage undertaking aimed at transferring the handling of selected business processes from one IT system to another. It is not limited to legacy systems — migration is also a justified approach in broader business projects such as mergers or acquisitions, where one of the long-term objectives is to unify the organization’s IT architecture.

Primary Migration Strategies

Full Migration

The full migration strategy assumes a one-time transfer of all processes handled by the source system to the target system. This approach is obvious in the case of small applications, but is also used when a large number of dependencies makes it difficult to isolate smaller, logically consistent functional areas.
The key advantage of full migration is the immediate declassification of the source system from a critical to an archival role — which may be crucial when its continued maintenance is problematic.
Its most significant drawbacks include high business risk (especially in the case of large systems) and a high one-time cost.

Gradual Migration

The gradual migration strategy involves the step-by-step transfer of isolated functionalities from the source system to one or more target systems over time. While its advantages and disadvantages are essentially the inverse of those associated with full migration, it is worth noting that gradual migration often happens organically — for example, through legacy system extensions where certain functionalities become informally replaced or duplicated.
This makes gradual migration a natural choice, with low risk and limited incremental cost being even more apparent and beneficial.

Data Conversion

One of the fundamental components of the migration process — particularly from a technical perspective — is the transfer of data from the source system to the target system. In order for this to be successful, the source data must be converted into a format and structure compatible with the target data model.

Conversion is an area in which our team has gained extensive experience — including the design of conversion engines for the migration of large-scale billing systems.

Conversion Rules

The foundation of a successful migration — and data conversion in particular — lies in the precise definition of conversion rules, based on thorough analysis. These rules must ensure that data can be transferred without loss of semantic meaning or logical consistency. This includes mapping individual tables (or sets of tables), data fields, and dictionary values, and when needed, implementing more advanced logic for data joining, splitting, extraction, or generation.

Quality Indicators

In most conversion projects, we deal with datasets collected over many years — sometimes decades. This long history, occasionally marked by system failures or manual interventions, can result in inconsistencies or deviations from current business rules, making automatic rule-based conversion impossible for some records. For this reason, quality indicators are defined — such as the percentage of exceptions (to be handled manually later) or aggregate control values (e.g., transaction sums). These metrics are evaluated after conversion, and their acceptability becomes the basis for the final go/no-go decision on migration success.


Conversion Engine

At the core of the conversion process is the conversion engine — a software component that processes source data in accordance with predefined rules, transforming it into a form ready for import into the target system. Designing such an engine requires satisfying multiple requirements simultaneously in order to ensure its effectiveness.

  • Exception Identification
    All parts of the processing algorithm must rigorously validate data quality and explicitly report non-convertible exceptions with clear explanations. These are reviewed after each test run of the engine and used to determine whether the exception will be handled manually or if additional conversion rules must be implemented.

  • Extensibility
    The conversion engine must allow for easy addition of new rules, which often emerge during test runs that serve as deep analyses of input data. This is typically achieved via dynamically attachable code modules or configuration-driven logic.

  • Performance
    Large-volume conversions — especially those involving complex logic — can strain available infrastructure. Therefore, the conversion engine must be optimized for performance using efficient processing techniques. Execution time is critical for scheduling the “conversion window,” and delays may be unacceptable from a business perspective.

  • Control and Transparency
    Since the engine will be run multiple times during development, it must support iterative testing of changes without requiring full execution for each validation. To address this, it includes real-time monitoring features — providing status updates, error summaries, exception details, quality metrics, and process progress. It also supports pause, resume, and restart operations.

“Conversion Day”

The culmination of weeks of preparation is the so-called “conversion day” — a term used loosely, as the process may span an extended period (typically a weekend). This final execution consists of multiple coordinated actions. While exact steps may vary by project, the most common stages include:

  1. Ensuring the immutability of data in the source system (e.g., shutting it down, locking access, or switching to read-only mode).

  2. Exporting data from the source system and verifying its completeness.

  3. Transferring or making the data available to the conversion engine.

  4. Executing and monitoring the conversion engine until completion.

  5. Final evaluation of quality indicators.

  6. Transferring data to the target system environment.

  7. Preparing the target system for import (locking access, performing a full data backup). This step should ideally begin in parallel with previous steps to reduce downtime.

  8. Importing data into the target system.

  9. Verifying the imported data using pre-prepared summary reports.

  10. Enabling access to the target system or performing a rollback — restoring from backup if verification fails.

The conversion schedule must be carefully planned to fit within the allowed time window. It should also account for the possibility of failure at any stage and include clear criteria for repeating a step or aborting the process entirely.