OpenMetadata migration

Moving catalog metadata into OpenMetadata, or taking a 1.x install to 2.0, is a planned cutover with data mapping and breaking-change work done first. This page shows what the work includes, what drives cost and when a partner helps.

On this page

What an OpenMetadata migration involves

An OpenMetadata migration is one of two different jobs, and each carries different risks. The first moves catalog metadata (assets, owners, glossary terms, domains and lineage references) from another catalog or from spreadsheets into OpenMetadata. The second upgrades an existing 1.x installation to 2.0 and clears its breaking changes before cutover. Common triggers for the first path are retiring a legacy catalog or consolidating spreadsheet inventories that no longer match how data is owned. The second is usually triggered by moving onto a supported major version.

For the catalog move, the first task is to confirm what the source actually holds and in what form. Ask whether owners are recorded as people or as team names, whether glossary terms link to assets or only sit in a list, and whether lineage exists as stored relationships or only as diagrams. Each of these needs a mapping decision before any data is loaded, and spreadsheet inventories often hide gaps where an asset has no owner or two domains claim the same table.

The 2.0 upgrade is different because it changes the platform itself. OpenMetadata 2.0.0 was released on August 24, 2026. Breaking changes that need work before cutover include moving embedding credentials into an llmConfiguration block, a new Databricks authentication format, rebuilding custom ingestion images for Python 3.12, and migrating Great Expectations to 1.3 before the upgrade. Confirm which of these apply to your connectors and custom images, because they can block the upgrade if left until the production window.

In-house delivery is workable when your team already owns the source exports, can write mapping scripts against the REST APIs or Python SDK, and has time to test in a non-production copy. A partner is worth weighing when the migration has a fixed deadline, several source catalogs or large spreadsheet estates, or custom ingestion that must be rebuilt. DeployOpen works to a fixed scope agreed in writing before work starts, so ask any provider for the written scope, the named deliverables and the exit criteria, and compare the quote against that scope.

What the work includes

Migrations into OpenMetadata follow the same sequence whether the source is another catalog or spreadsheets. Clients receive a mapping specification, import scripts or SDK jobs, reconciliation reports, and a rollback plan with a runbook.

Source inventory and mapping

Every source catalog, spreadsheet and glossary export is listed with its owners, object counts and fields. Each field is mapped to an OpenMetadata entity, custom property or glossary term, and unmapped fields are logged with a recorded decision. The mapping specification becomes the document that the import is built and checked against.

Entity, glossary and ownership import

Services, databases, tables, glossary terms and domains are loaded through the REST APIs or the Python SDK in dependency order, so parent entities exist before their children. Owners and teams are resolved against users and groups already present in the instance. Missing owners are reported for a decision before each load runs.

Validation and reconciliation

Object counts and identifiers from each source are compared with what OpenMetadata holds after every load. Reconciliation reports list missing entities, duplicate fully qualified names, orphaned glossary links and ownership mismatches. Each exception gets a named owner and is closed or formally accepted before cutover.

Cutover and rollback runbook

The runbook sets the freeze window for source catalogs, the final incremental load, the sign-off points and who makes the go or no-go call. The rollback plan states how the previous catalog stays readable and how loads are reversed or replayed if reconciliation fails after switchover.

2.0 breaking-change review

For 1.x installs, each OpenMetadata 2.0 breaking change is traced to the configuration it affects. Embedding credentials move into an llmConfiguration block, Databricks connections need the new auth format, and affected pipelines are updated and tested on a non-production instance first. The output is a change list tied to each pipeline.

Ingestion image rebuilds and checks

Custom ingestion images are rebuilt for Python 3.12, which 2.0 ingestion images use alongside Apache Airflow 3.3.0. Custom connector code and plugins are tested against that runtime. Great Expectations is migrated to 1.3 before the upgrade so that data quality checks run correctly during the cutover window.

What drives cost and duration

The table lists the factors that move migration effort for an OpenMetadata move, why each one matters and how to keep it under control before cutover.

DriverWhy it moves effortHow to keep it down
Volume of assets and columnsEvery table, column, dashboard and pipeline must be mapped, validated and re-ingested, so effort grows with the catalog size and the number of fields carried over.Agree which asset types and schemas are in scope for the first cutover, and archive stale objects before export.
Number of source systems and export qualityEach source needs its own export format, mapping and validation, and inconsistent or incomplete exports create rework that is hard to spot until lineage and ownership look wrong.Clean and deduplicate sources before export, standardize naming, and check a sample of each export against the source catalog.
Ownership and glossary data reconciled by handOwners, teams, glossary terms and their relationships often live in spreadsheets or in people's heads, and matching them to OpenMetadata domains and roles needs human review.Name one accountable owner per domain, freeze the glossary before migration, and record decisions in a reconciliation log.
Custom ingestion images and connectors from 1.xCustom ingestion images built on 1.x must be rebuilt for Python 3.12 and the 2.0 ingestion stack, and each custom connector needs regression testing against its source.Inventory every custom image and connector first, retire unused ones, and rebuild only what the first cutover needs.
Deployment target and its prerequisitesKubernetes and bare metal installs each require their own setup, and bare metal depends on Java 21, a supported database version and Elasticsearch 9.x or OpenSearch 3.x being in place.Confirm the target platform and its prerequisite versions with the vendor documentation before planning, and size the server, database and search services against the published minimums.
Number of environments kept in stepDevelopment, test and production instances each need the same schema changes, connector configuration and evidence, so every extra environment multiplies testing and drift checks.Limit the number of environments that receive the migration, promote changes through one pipeline, and compare configuration across environments before each step.
Compliance evidence needed for cutoverAssessors may ask for records of who approved the cutover, what changed, how data was validated and how access was restored, which adds documentation and sign-off steps.Agree the evidence list with your compliance lead before work starts, and capture screenshots, logs and approvals as each step is completed.

Project phases and outputs

The sequence moves catalog metadata into OpenMetadata or upgrades a 1.x install to 2.0, with each change tested before it reaches production.

  1. Discover sources and inventory metadata

    Your team and the DeployOpen engineers list every source catalog, spreadsheet, connector and owner, then record which assets, glossary terms and ownership records must move. Output: a signed-off source inventory with volumes, owners and the OpenMetadata version the work is based on.

  2. Design target model and field mapping

    Define domains, glossary structure, ownership roles and the mapping from each source field to an OpenMetadata entity, including how spreadsheet columns become classifications or custom properties. Check: data owners approve the mapping document, and every unmapped field is either assigned a destination or formally dropped.

  3. Load and reconcile in non-production

    Load the inventory into a non-production OpenMetadata environment using scripted or API-driven imports, then compare entity counts, ownership assignments and glossary links against the source. Output: a reconciliation report listing each mismatch, its cause and its disposition, approved by data owners before the production load.

  4. Remediate breaking changes and rehearse upgrade

    For installs moving to 2.0, address the documented breaking changes before cutover: move embedding credentials into the llmConfiguration block, adopt the new Databricks auth format, rebuild custom ingestion images for Python 3.12 and migrate Great Expectations to 1.3. Rehearse the full upgrade on a copy of production data. Output: a tested runbook and a rehearsal log with remaining fixes closed.

  5. Cut over and run hypercare

    Freeze source edits, run the final incremental load, switch users and ingestion schedules to the production instance, then monitor connectors, search indexing and sign-in through an agreed hypercare period. Output: a cutover record with the final reconciliation, a documented rollback point and a closeout report listing open issues and their owners.

What teams keep and what they outsource

This table splits the OpenMetadata migration into work most teams keep in-house and work often outsourced, with the skills each part needs, so you can see where your own people are required.

Work partWho usually owns itSkills neededNotes for the decision
Metadata ownership decisionsIn-houseData governance, domain knowledgeDeciding which team owns each asset must come from your organization, since no partner can make those calls for you.
Business definitions and glossary sign-offIn-houseData stewardship, business domain expertiseStewards approve term wording and links to assets; a partner can draft the structure but not the approvals.
Final acceptance and cutover approvalIn-houseData platform leadership, stewardshipAcceptance criteria should be written before the migration starts so sign-off is a check, not a debate.
Mapping design from the source catalogOften outsourcedMetadata modeling, familiarity with the source catalog and OpenMetadata entitiesCovers how source objects, tags and owners map to OpenMetadata entities. Ask the partner to show the mapping document before import code is written.
Scripted import through the APIsOften outsourcedPython SDK or REST API work, JSON handling, error and retry designScripts should be repeatable and idempotent so a failed run can be rerun without duplicates. Confirm the SDK version against your target release.
Upgrade rehearsal from 1.x to 2.0Often outsourcedKubernetes or bare metal operations, database administration, release notes reviewRehearse on a copy of production data. Breaking changes such as the llmConfiguration move and the Databricks auth format must be handled before cutover.
Custom ingestion image rebuildsOften outsourcedDocker, Python 3.12 packaging, Apache Airflow 3.3.0 compatibilityCustom connector images must be rebuilt for Python 3.12. Confirm every connector dependency installs on the new base before scheduling the upgrade.
Reconciliation toolingOften outsourcedPython or Java SDK work, SQL, data quality checksCompares counts, owners, glossary links and lineage edges between the source and OpenMetadata. Agree the pass criteria in writing first.

What usually goes wrong

Most OpenMetadata migrations stall at a small number of predictable points. Each card names the failure and the check that prevents it before cutover.

Breaking changes found after cutover

Teams often start the upgrade and treat 2.0 as a normal patch, then discover breaking changes in production. Review the OpenMetadata 2.0 release notes against your installed version before cutover, covering embedding credentials moving into an llmConfiguration block, the new Databricks auth format and Great Expectations 1.3 migration. Record each change as a pass or fix item.

Duplicate owners and glossary terms

Importing from a spreadsheet or a previous catalog often creates two owner records for one team and two glossary terms for one concept. Before loading, reconcile team names, user identities and term definitions against a single approved list. Then run a duplicate report after the first import and assign one steward per term.

Lost lineage and orphaned references

Spreadsheet-based lineage usually names tables that were renamed or deleted, so the imported links point nowhere. Map every source reference to a fully qualified asset name in the target service, and load lineage only after the referenced assets exist. Flag any reference that does not resolve so an owner can decide whether to fix or retire it.

Ingestion failures after the Python 3.12 move

Ingestion images in 2.0 run Python 3.12 with Apache Airflow 3.3.0, so custom connector images built for older runtimes can fail at startup or during extraction. Rebuild every custom ingestion image, then run each connector against a non-production source and compare record counts with the previous run. Confirm the Airflow version your scheduler uses before scheduling the first run.

Authentication cutover conflicts

OpenMetadata does not run multiple authentication mechanisms at once, so enabling SSO while basic authentication accounts still exist can lock users out or leave an unmanaged login path open. Agree on a single identity mechanism, map existing accounts to the identity provider, and set a dated switch-off for basic logins. Test an administrator recovery path before the switch.

Unrehearsed rollback

A rollback plan that has never been run usually fails when the database has already accepted new metadata. Take a verified database backup and search index snapshot before the upgrade, restore both into a separate environment, and time the restore against your change window. Decide in advance which edits made after cutover are kept and which are discarded.

How the work differs by starting point

When the source is another data catalog, the work is mainly mapping. Your team and the implementation partner decide which entities, owners, glossary terms, classifications and lineage links move, and which are rebuilt by connectors after cutover.

  • Scope: mapping the old model to OpenMetadata domains, glossary terms, tags and ownership, then loading records through exports, the REST APIs or the Python SDK.
  • Extra risk: duplicate assets when imported records and connector-created entities describe the same table under different names.
  • Confirm: which source catalog version and export formats are available, who owns each domain, and whether historical lineage must be kept or can be regenerated from query logs and pipelines.

What the client needs to provide

Migration starts with access and decisions, not installation. Provide exports of the source catalog or spreadsheets in a form we can read, read-only credentials for the systems those catalogs describe, and admin rights on the target OpenMetadata environment and at least one non-production environment for rehearsals. Each data domain also needs a named owner who can answer questions about its assets, owners and definitions during mapping and acceptance.

Several decisions must be made before the mapping is built. Decide the owner model (who owns a table, a dashboard or a glossary term, and whether ownership is individual or team-based), who has final authority over glossary terms when two sources disagree, the cutover window in which the old catalog becomes read-only, and the acceptance criteria that will mark the migration complete. Written criteria, such as which domains and asset types must reconcile and who signs off, prevent the project from drifting after cutover.

Confirm the infrastructure against OpenMetadata's bare metal prerequisites before scoping: Java 21 on the application hosts, MySQL 8.0.42 or later or PostgreSQL 15 or later for the database, and Elasticsearch 9.x or OpenSearch 3.x for search. Check the exact versions your organization can support, because the database and search choices affect upgrade paths. Compare planned capacity with the documented minimums of 2 vCPUs, 4 GB RAM and 20 GB storage for the server, and at least 2 vCPUs, 2 GB RAM and 30 GB storage for each of the database and search services. Treat these as floors, and size higher for the number of assets being loaded.

If you are upgrading an existing 1.x install to 2.0, also confirm the custom ingestion images you run, the Python version they use, the Great Expectations version in use and any embedding credentials, since these are breaking-change areas. Name the person who can approve a maintenance window and rollback plan. Ask the implementation partner to confirm which of these items apply to your environment before the written scope is agreed.

Frequently asked questions

What makes an OpenMetadata catalog move cost more or less?

Scope drives cost more than any single factor. Discovery and mapping cost more when the source catalog has many entity types, custom fields or inconsistent ownership. Data cleanup costs more when the source is spreadsheets. Ingestion rework grows with the number of pipelines, and upgrade work rises for 1.x installs with custom ingestion images, Great Expectations tests or Databricks connections. Recurring costs, such as infrastructure and support, sit outside the migration itself. Ask for a quote that separates discovery, build, testing, cutover and documentation, and that states which items are one-time.

How long does a migration take before cutover?

The schedule depends on the source, the target and how many test cycles the cutover needs. No duration has been fixed for this topic, so ask for a timeline in the written scope rather than relying on a general estimate. The main schedule drivers are the volume of metadata to move, the number of connectors to rebuild, the number of validation rounds with data owners and the length of the cutover window. Upgrades add a dependency: OpenMetadata 2.0.0 was released on August 24, 2026, with maintenance releases following about every one to two weeks, so confirm which version the plan targets and when it will be frozen.

What does our team need to provide before a migration starts?

Expect to supply access, inventories and an environment. Before work starts, the team should prepare:

  • Source export: access to the existing catalog or spreadsheets, plus any API or database access needed for extraction.
  • Connector inventory: each source system, its owner and the credentials to be rotated or reissued.
  • Target platform: bare metal needs Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. Kubernetes and Docker are also documented options. The minimum server is 2 vCPUs, 4 GB RAM and 20 GB storage, with the database and search services each needing at least 2 vCPUs, 2 GB RAM and 30 GB storage.
  • Decision makers: named data owners who can approve mappings and sign off on validation.
Can an internal team complete the migration without a partner?

Yes, if the team has the skills and time for the work. OpenMetadata is released under the Apache License 2.0, so self-hosting does not require a commercial agreement. The team needs capacity in four areas: database and search operations, Python or Java ingestion work, metadata mapping and cross-team testing. The 2.0 breaking changes, including the llmConfiguration block, the new Databricks auth format, Python 3.12 ingestion images and the Great Expectations 1.3 migration, must be handled before cutover. Confirm with Collate which commercial features your plan depends on, since they are separate from the open-source release.

What happens to existing lineage and ownership during the move?

Lineage and ownership move in different ways, so confirm each one in scope. Ownership, glossary terms and domains need to be mapped to users and teams in OpenMetadata, which depends on how identity is set up, including any SSO plan. Lineage can be carried only where the source data maps cleanly. Table and column lineage that is missing after the move can be rebuilt from pipeline connectors, query logs and OpenLineage events. The scope should list which objects are carried over, which are rebuilt and how gaps are reported to data owners.

How does a partner migration differ from following the release notes?

Release notes describe what changed in the software. A migration plan applies those changes to your environment. A partner typically inventories your custom ingestion images, connectors, custom properties and API scripts against the breaking changes listed for 2.0. It then tests the upgrade on a non-production copy, sets a backup and rollback path, runs the cutover and documents the result. DeployOpen plans, implements, backs up, upgrades and documents self-hosted platforms inside the client's own infrastructure, and most engagements are fixed-scope with deliverables and timelines agreed in writing before work starts.

How DeployOpen works on this

DeployOpen plans and runs OpenMetadata migrations inside your own infrastructure, moving catalog metadata from another catalog or spreadsheets and handling 1.x to 2.0 breaking changes before cutover. Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.

How we scope

  • We inventory the source catalog or spreadsheets, including entity types, owners, glossary terms and classifications to be carried over
  • We record the current OpenMetadata version and list 2.0 breaking changes that touch your custom ingestion images and credentials
  • We agree in writing which connectors, domains and ownership records are in the migration and which are retired or deferred

How we build

  • We map source fields to OpenMetadata entities, then load a sample set into a non-production instance for review by data owners
  • We rebuild custom ingestion images for Python 3.12 and move embedding credentials into the llmConfiguration block before upgrading
  • We run reconciliation checks comparing entity counts, owners and lineage edges between the source and the migrated catalog

How we hand over

  • We deliver the mapping specification, migration scripts, reconciliation reports and a cutover runbook with rollback steps
  • We document the upgrade path from 1.x to 2.0 for your team, including the Great Expectations 1.3 migration and Databricks auth format change
  • We walk your platform and data stewardship teams through operations, then transfer ownership of the scripts and configuration

How we support

  • Post-cutover support is available as a retainer covering patch releases, which arrive roughly every one to two weeks after 2.0.0
  • Retainers can include connector regression testing and ingestion image rebuilds when new OpenMetadata releases ship
  • Support scope, response expectations and fees are agreed in writing before the retainer starts, and no prices are published

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.