<!DOCTYPE html>
<html>
<body style="font-family: Arial, sans-serif; font-size: 14px; max-width: 900px; margin: 40px auto; padding: 0 20px;">
<h1>Data Migration Service</h1>
<p><strong>Author:</strong> Michael Dombaugh<br>
<strong>Version:</strong> 1.0<br>
<strong>Last Updated:</strong> 2026-03-11<br>
<strong>Status:</strong> Initial Requirements for Review</p>
<hr>
<h2>Requirements</h2>
<p><strong>1. PROCESSING:</strong> Support batch data movement between any two databases across two supported platforms (SQL Server / Oracle).</p>
<p><strong>2. INPUTS:</strong></p>
<ul>
<li>COUNTRY (configurable WHERE clause filter for this use case)</li>
<li>VERSION (configurable WHERE clause filter for this use case)</li>
<li>SOURCE DB</li>
<li>TABLES: discrete list or ALL</li>
<li>TARGET DB</li>
<li>TARGET SCHEMA</li>
</ul>
<p><strong>3. TRIGGER:</strong> Initiated by CDR upon successful product build.<br>
<em>(Approval process TBD - Dashboard Control Required)</em></p>
<p><strong>4. PROCESS STEPS:</strong></p>
<ul>
<li>Define a sequential set of steps to be executed during migration</li>
<li>Steps are configurable and manageable via the dashboard</li>
<li>Support insertion of stored procedure calls at any step position on either the source or target side</li>
<li>Steps can be added, removed, and reordered at runtime</li>
</ul>
<p><strong>5. LOCKING AVOIDANCE:</strong> POC to evaluate partition swapping or import table swap mechanism to avoid table locking during batch insert.</p>
<p><strong>6. NETWORK CONNECTIVITY:</strong> Cerner network or VPN required to access MIT databases.</p>
<p><strong>7. RECOVERY:</strong> Track which tables were successfully moved; on failure, resume with only the remaining incomplete tables. Support restart of a migration that processes only the failed tables in a batch.</p>
<p><strong>8. VALIDATION:</strong> Upon completion of data movement, perform record count comparison between source and target for each table moved, by COUNTRY and VERSION. Report any discrepancies.</p>
<p><strong>9. DASHBOARD:</strong> Provide visibility and control over sequential process steps, trigger management, migration status, and the ability to define new migration processes.</p>
<p><strong>10. CURRENT USE CASE:</strong></p>
<ol type="a">
<li>Move a defined set of countries from MIT Global_Distribute to OCI GLOBAL_DISTRIBUTE.</li>
<li>Call an archive stored procedure to remove the oldest data version after migration is complete (or implement via partition swap - TBD based on POC).</li>
<li>Mark the migration as complete in a tracking table in OCI GLOBAL_DISTRIBUTE.</li>
</ol>
<p><strong>11. ALTERNATE USE CASE:</strong></p>
<ol type="a">
<li>Temporary update from Gen1 Global_Research to Gen1 GLOBAL_PHARMACY, while implementing real-time replication for this.</li>
</ol>
</body>
</html>