Adoption Strategy | Medplum

On this page

When migrating existing provider/patient apps to Medplum, a phased approach allows for a smoother transition, minimizes risk, and provides opportunities for validation at each step. This section outlines the recommended phases for migration, along with their rationales and best practices.

It's important to note that these phases don't necessarily need to be completed in strict sequence for your entire dataset. Instead, consider applying this phased approach to each data element type described individually as described in our migration sequence guide. This approach allows for faster user feedback and more manageable chunks of work.

The recommended phases are:

  1. Write-only / Dual write
  2. Backfill data
  3. Read from Medplum
  4. Front-End write to Medplum
  5. Deprecate old store

Let's explore each phase in detail.

Write-only / Dual Write [​](/content/docs/migration/adoption-strategy#write-only "Direct link to Write-only / Dual Write"/index.html)

When write/update operations come into your existing services, have your existing services write to both Medplum and your existing store.

Rationale [​](/content/docs/migration/adoption-strategy#rationale "Direct link to Rationale"/index.html)

Best Practices [​](/content/docs/migration/adoption-strategy#best-practices "Direct link to Best Practices"/index.html)

Backfill Data [​](/content/docs/migration/adoption-strategy#backfill "Direct link to Backfill Data"/index.html)

Migrate older data from the existing data store to Medplum.

Rationale [​](/content/docs/migration/adoption-strategy#rationale-1 "Direct link to Rationale"/index.html)

Best Practices [​](/content/docs/migration/adoption-strategy#best-practices-1 "Direct link to Best Practices"/index.html)

Read from Medplum in the Client [​](/content/docs/migration/adoption-strategy#read-from-medplum "Direct link to Read from Medplum in the Client"/index.html)

Update your UX to read from Medplum's API rather than your existing API.

Rationale [​](/content/docs/migration/adoption-strategy#rationale-2 "Direct link to Rationale"/index.html)

Best Practices [​](/content/docs/migration/adoption-strategy#best-practices-2 "Direct link to Best Practices"/index.html)

Front-End Write to Medplum [​](/content/docs/migration/adoption-strategy#front-end-write "Direct link to Front-End Write to Medplum"/index.html)

Update your UX to write directly to Medplum rather than through your existing services.

Rationale [​](/content/docs/migration/adoption-strategy#rationale-3 "Direct link to Rationale"/index.html)

Best Practices [​](/content/docs/migration/adoption-strategy#best-practices-3 "Direct link to Best Practices"/index.html)

Deprecate Old System [​](/content/docs/migration/adoption-strategy#deprecate "Direct link to Deprecate Old System"/index.html)

Phase out the old data store once you're confident in the Medplum implementation.

Rationale [​](/content/docs/migration/adoption-strategy#rationale-4 "Direct link to Rationale"/index.html)

Best Practices [​](/content/docs/migration/adoption-strategy#best-practices-4 "Direct link to Best Practices"/index.html)

Conclusion [​](/content/docs/migration/adoption-strategy#conclusion "Direct link to Conclusion"/index.html)

It's crucial to understand that these phases don't need to be implemented in strict sequence for your entire system. Instead, consider applying this phased approach in parallel to each data element type individually.

By proceeding through these phases for each data element type, you can ensure a smoother transition, minimize risk, and get user feedback earlier in the process.

The key to a successful migration is flexibility, thorough planning, and constant communication with all stakeholders throughout the process.