Features
Data Quality Revamp
- Dynamic Sampling by default: The Profiler now defaults to Dynamic Sampling instead of scanning 100% of rows, significantly reducing query cost and execution time on large tables.
- Cardinality distribution removed from defaults: Cardinality metrics are no longer collected on every run. If your workflows depend on distinct-value counts (classification, tagging, custom rules), explicitly add cardinality distribution to the relevant profiler configuration.
- Existing profiler configs are preserved — only pipelines using the default agent config are affected.
Governance — Custom Intake Forms & OWL Import
- Custom Intake Forms: Define custom forms for governance intake workflows — asset certification, ownership assignment, data classification, or any structured intake process. Forms are configurable per entity type and feed into the existing task and workflow system.
- OWL Import: Import OWL (Web Ontology Language) files to load existing ontologies and classification taxonomies directly into OpenMetadata, reusing industry-standard or enterprise-specific taxonomy assets.
Context Center
Knowledge Center has been replaced by Context Center — the single destination for reference content in your catalog. Existing pages are automatically migrated as Articles on upgrade. New content types include Documents (freeform rich-text attached to assets or teams) and a Dashboard view for discovering and managing content across your organisation.
Activity Feed, Tasks, Workflows, and Announcements
Activity Feed, Tasks, Workflows, and Announcements are fully compatible with 2.0 data models. Migrated assets, in-flight tasks, and announcements carry over automatically — no manual action required.
Ingestion — Connectors
- Databricks Pipeline: Authentication updated from a bare
tokenfield to a structuredauthTypeobject supporting Personal Access Token, DatabricksOAuth, and Azure AD. Stored connection configs are migrated automatically. - Python 3.12: Ingestion images now run on Python 3.12 (
python:3.12-slim-trixie; Airflow upgraded toapache/airflow:3.3.0-python3.12). This change first shipped in 1.13.4 — skip if already on 1.13.4. - Additional connector stability improvements and bug fixes across the connector library.
MCP (Model Context Protocol)
OpenMetadata's MCP server exposes catalog metadata to AI assistants and agents through the Model Context Protocol — any MCP-compatible client (Claude, Cursor, IDE plugins) can query your catalog without custom integrations.
- Enabled by default: Starts ready on upgrade; no manual activation needed.
nextCursorpagination: MCP read tools now return anextCursorvalue alongside results. Passcursoron subsequent calls for stable cursor-based paging. Existingfrom/sizeoffset parameters continue to work.
Inbox
Inbox notifications have been updated to reduce noise across 2.0 workflows — task notifications are grouped and filtered consistently, announcements are correctly scoped to relevant entities, and activity items from the 2.0 migration are correctly attributed.
Landing Page
The landing page has been redesigned with an updated navigation structure and cleaner entry points into asset discovery, lineage, governance, and data quality — reducing the clicks required to reach the most-used workflows.
Breaking Changes
MCP — Cursor Paging Available (Offset Still Supported)
MCP read tools now return a nextCursor value in every response. Clients that pass cursor on the next call will use stable cursor-based paging, which avoids skipped results under concurrent writes.
The existing from and size offset parameters continue to work — the cursor only takes effect when explicitly passed. No migration is required for existing MCP clients.
Semantic Search — Embedding Configuration Moved
Embedding settings have moved out of naturalLanguageSearch into a new top-level llmConfiguration.embeddings block. Semantic search stops working silently on upgrade unless the new block is configured and enabled.
Before (1.13):
naturalLanguageSearch:
enabled: ${NATURAL_LANGUAGE_SEARCH_ENABLED:-true}
semanticSearchEnabled: ${SEMANTIC_SEARCH_ENABLED:-true}
embeddingProvider: ${EMBEDDING_PROVIDER:-bedrock}
maxConcurrentRequests: ${MAX_CONCURRENT_EMBEDDING_REQUESTS:-10}
bedrock:
awsConfig:
region: ${AWS_DEFAULT_REGION:-""}
accessKeyId: ${AWS_ACCESS_KEY_ID:-""}
secretAccessKey: ${AWS_SECRET_ACCESS_KEY:-""}
embeddingModelId: ${AWS_BEDROCK_EMBED_MODEL_ID:-"amazon.titan-embed-text-v2:0"}
embeddingDimension: ${AWS_BEDROCK_EMBEDDING_DIMENSION:-512}After (2.0):
naturalLanguageSearch:
enabled: ${NATURAL_LANGUAGE_SEARCH_ENABLED:-true}
semanticSearchEnabled: ${SEMANTIC_SEARCH_ENABLED:-true}
providerClass: ${NATURAL_LANGUAGE_SEARCH_PROVIDER_CLASS:-org.openmetadata.service.search.nlq.NoOpNLQService}
llmConfiguration:
enabled: ${LLM_ENABLED:-false}
provider: ${LLM_PROVIDER:-bedrock} # noop | openai | azureOpenAI | bedrock | google | anthropic
embeddings:
provider: ${EMBEDDING_PROVIDER:-bedrock}
maxConcurrentRequests: ${MAX_CONCURRENT_EMBEDDING_REQUESTS:-10}
bedrock:
awsConfig:
region: ${AWS_DEFAULT_REGION:-""}
accessKeyId: ${AWS_ACCESS_KEY_ID:-""}
secretAccessKey: ${AWS_SECRET_ACCESS_KEY:-""}
embeddingModelId: ${AWS_BEDROCK_EMBED_MODEL_ID:-"amazon.titan-embed-text-v2:0"}
embeddingDimension: ${AWS_BEDROCK_EMBEDDING_DIMENSION:-512}Action required:
- Remove
embeddingProvider,maxConcurrentRequests, and the provider sub-blocks fromnaturalLanguageSearch. - Add the
llmConfigurationblock above with your provider settings underllmConfiguration.embeddings. - Set
LLM_ENABLED=trueandLLM_PROVIDER=<your-provider>— embeddings remain off until both are set.
Environment variables EMBEDDING_PROVIDER, MAX_CONCURRENT_EMBEDDING_REQUESTS, AWS_BEDROCK_EMBED_MODEL_ID, and AWS_BEDROCK_EMBEDDING_DIMENSION are unchanged.
Profiler — Default Sampling Change
The Profiler now defaults to Dynamic Sampling instead of scanning 100% of rows. Cardinality distribution metrics are no longer collected by default.
Action required: If any workflows depend on cardinality/distinct-value data — custom rules, classification agents, or analytics built on column-level distinct counts — explicitly add cardinality distribution to the affected profiler configuration.
Connectors — Databricks Pipeline Auth
The databricksPipelineConnection schema drops the top-level token string in favour of a structured authType object (Personal Access Token, DatabricksOAuth, or Azure AD).
Before (1.13):
connection:
config:
type: DatabricksPipeline
hostPort: adb-xxxx.azuredatabricks.net:443
token: dapi...After (2.0):
connection:
config:
type: DatabricksPipeline
hostPort: adb-xxxx.azuredatabricks.net:443
authType:
token: dapi...Action required: Stored configs are migrated automatically. External YAML files (CI pipelines, custom configurations) must be updated manually.
Ingestion Images — Python 3.12
Ingestion images have moved from Python 3.10 to Python 3.12 (python:3.12-slim-trixie; Airflow upgraded to apache/airflow:3.3.0-python3.12).
Action required:
- Rebuild any custom ingestion Docker images against Python 3.12.
- Remove or replace
cp310binary wheels — they will fail to import on 3.12 images. - If running a custom Airflow environment, upgrade to the 3.12-based Airflow image.
Note: This change first shipped in 1.13.4. If you are upgrading from 1.13.4, no action is needed.
Chrome Plugin — Trusted Redirect URIs
The Chrome plugin now requires trusted redirect URIs to be explicitly declared. Previously the plugin accepted redirects to any origin.
Action required: additionalTrustedRedirectUris requires the full redirect URI — including scheme, host, port, and path. For the Chrome plugin, add the extension's callback URI:
additionalTrustedRedirectUris: ["https://<your-extension-id>.chromiumapp.org/auth0"]Replace <your-extension-id> with the actual Chrome extension ID. Setting only the origin will not satisfy the redirect check and the login flow will fail with a redirect mismatch error.
Context Center — Knowledge Center Removed
Knowledge Center no longer exists as a standalone section. All existing pages are automatically migrated to Articles inside Context Center on upgrade — no manual content migration is needed.
Any hard-coded links or bookmarks to Knowledge Center URLs (e.g. /knowledge-center/...) will break after upgrade, as the URL structure has changed.
Action required: Update any internal documentation, wikis, or automation that references Knowledge Center URLs to point to the equivalent Article in Context Center.
Great Expectations 0.x — Support Removed
Support for Great Expectations 0.x has been removed in 2.0.
Action required: Migrate to Great Expectations ~=1.3 before upgrading. See the Great Expectations migration guide.
Airflow as Internal Orchestrator — Deprecated in 2.1
Airflow will be deprecated as the internal orchestration system in 2.1, in favour of the native Kubernetes Orchestrator introduced in 1.12. External Airflow installations are unaffected. Begin evaluating the Kubernetes Orchestrator now — documentation and migration guides will be published ahead of the 2.1 release.
Upgrade Actions Summary
| Area | Action Required |
|---|---|
| MCP clients | No migration required — pass cursor for stable paging; from/size offset still works
|
| Semantic search / embeddings | Move embedding config from naturalLanguageSearch to llmConfiguration.embeddings; set LLM_ENABLED=true and LLM_PROVIDER=<provider>
|
| Profiler config | Explicitly add cardinality distribution if downstream features depend on it |
| Databricks YAML | Update token: dapi... to authType: { token: dapi... } in external pipeline YAMLs
|
| Custom ingestion images | Rebuild against python:3.12-slim-trixie; remove cp310 wheels. Skip if upgrading from 1.13.4.
|
| Chrome plugin | Set additionalTrustedRedirectUris to the full Chrome callback URI (e.g. https://<extension-id>.chromiumapp.org/auth0)
|
| Knowledge Center links | Update bookmarks and internal links to Context Center → Articles |
| Great Expectations | Migrate from 0.x to ~=1.3 before upgrading
|
Changelog
Platform
- SCIM Provisioning configuration has moved to Settings → Team and Users → Provisioning. No configuration data is lost; only the navigation path changes.
Alerts
- Fixed alert filters (Entity FQN, Owner, Domain, Entity Id, Source) not applying correctly to conversations and replies. Previously, an alert scoped to a specific entity received conversation notifications from every entity in the catalog. If an alert goes quiet after upgrading, widen or remove filters that were previously being ignored.