Migration
Source Database Connection
▼
API Root URLs
▼
Shared Services Database Connection
▼
Clinical Portal Database Connection
▼
Integration Engine Database Connection
▼
Biometrics Engine Database Connection
▼
Survey Engine Database Connection
▼
Reporting Engine Database Connection
▼
One-time bootstrap: ensure the AMC Health master org + migration user exist so APIs can be called and downstream migrations have FK targets. Run only once on a newly built environment after 'Refresh Environment Configuration' and the databases have been built. Clicking this button more than once will not break anything.
Migration Options
▲
🔒 Every “Delete …” step below is disabled.
The delete logic is unreliable and untested. To start from empty, use the
per-database Rebuild Database buttons above and then run only the
Migrate steps — do not reach for a delete step.
Re-enabling one is a code change, and it must be preceded by a logic review of
that step’s delete confirming all three:
- it clears only the tables loaded by the Migrate steps that follow it;
- it resets the identity columns of every table it clears;
- it does not cascade into tables that do not need to be cleared.
Customers, Organizations, Programs, Config, Persons, SystemUsers (no passwords)
Lineage backfill + password hashing for all users missing legacy_password_enc
If set, bcrypt this password for ALL null rows (fast). If blank, decrypt each user's legacy password individually (slow).
Decrypt + bcrypt one user by legacy PersonId or username
Bulk-upsert seed system users via PUT /identity/system-users with permanentPassword (M2M *-service accounts retired — SS-21 SigV4)
Bulk-upsert 2 survey-engine system users (roleCode 200/201) via PUT /identity/system-users with permanentPassword
Bulk-upsert 5 cel-* system users (cel-operator/manager/admin/finance/clinical) via PUT /identity/system-users, read_write at org_node 1. roleCode resolved from the seeded roles catalog by display_name. Re-runnable: creates only missing users, and restores an org.assignments row wiped by step 7.
Phones, Emails, Addresses, Roles, Settings, NotificationGroups, Patients through Schedule
ReferralProfile, UploadedFiles (deferred), Conversations (deferred), Messages (deferred)
StaffNotifications, EmailNotifications, NotificationSchedules, MobileQueue
⚠ Before running any step below this line (any engine other than shared-services):
re-enable reference-sync and confirm each engine's local
reference.* tables are
populated — run /enable-ref-sync, which re-enables the rules
and invokes each consumer's reconcile. Re-enabling alone leaves consumers stale.
Cases.Cases -> clinical.cases, builds caseMap
Cases.AdditionalEMailNotifications -> notification.additional_email_notifications (shared_services). Runs here, not with 11-12, because it needs the caseMap step 16 builds. Cleared by checkbox 11.
Cases.MobileNotificationQueue -> notification.mobile_notification_queue (shared_services). Runs here, not with 11-12, because it needs the caseMap step 16 builds. Cleared by checkbox 11.
StatusHistory, ExternalIDs, CareManagers, CPT
LogSentFaxes, Notes, NoteContacts, NoteContactMethods, NoteReasons, NoteInterventions, NoteResolutions, GroupNotes, NotesToGroupNotes
thresholds, target ranges, weight variances, compliance regiments
regiment groups, issue settings, alert thresholds, target ranges, weight/inhaler
Cases.ReadingsSchedules -> config.readings_schedules (~37M rows; per-date expected-reading schedule)
readings (Sessions + EAV -> JSON); runs independently of alerts
If set, seed the readings loop at this SessionId (aligned down to the 250,000 stride) instead of MIN(SessionId). Blank = start from the beginning.
alerts (SessionAlerts); runs independently of readings
Reference.Announcements -> clinical.announcements (direct 1:1 copy, all rows)
Console Log (1 entries)
[3:34:56 PM] Switching VPC peering route to shared-services (pcx-00fd61dde5d307ba0)...