> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open-metadata.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 2.0 Release | OpenMetadata

> Explore all OpenMetadata releases with detailed changelogs, new features, bug fixes, and upgrade guides. Stay updated with the latest versions and improvements.

# 2.0 Release Notes

<Tip>
  The OpenMetadata community is on a monthly release cadence. At every 4-5 weeks
  we will be releasing a new version.
</Tip>

<CardGroup>
  <Card icon="party-horn" title="Upgrade OpenMetadata" href="/v2.1.x-SNAPSHOT/deployment/upgrade">
    Learn how to upgrade your OpenMetadata instance to 2.0.0!
  </Card>
</CardGroup>

<Update label="2.0.0 Release" description="24th August 2026">
  You can find the GitHub release [here](https://github.com/open-metadata/OpenMetadata/releases/tag/2.0.0-release).

  ## 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 `token` field to a structured `authType` object 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 to `apache/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.
  * **`nextCursor` pagination**: MCP read tools can return a `nextCursor` value alongside results. Pass it as `cursor` on the next call to continue; cursor behavior varies by tool. Existing `from`/`size` offset 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 can return a `nextCursor` value when another page is available. Pass it as `cursor` on the next call to continue. Cursor semantics vary by tool, so do not rely on it for concurrent-write consistency.

  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 and provider credentials have moved out of `elasticsearch.naturalLanguageSearch`. In 2.0, keep `semanticSearchEnabled` there, select the embedding provider and model under `llmConfiguration.embeddings`, and configure that provider's credentials in the matching `llmConfiguration` provider block.

  **Before (1.13):**

  ```yaml theme={null}
  elasticsearch:
    naturalLanguageSearch:
      semanticSearchEnabled: ${SEMANTIC_SEARCH_ENABLED:-false}
      embeddingProvider: ${EMBEDDING_PROVIDER:-bedrock}
      maxConcurrentRequests: ${MAX_CONCURRENT_EMBEDDING_REQUESTS:-10}
      bedrock:
        awsConfig:
          enabled: ${BEDROCK_AWS_IAM_AUTH_ENABLED:-false}
          region: ${AWS_BEDROCK_REGION:-""}
          accessKeyId: ${AWS_BEDROCK_ACCESS_KEY:-""}
          secretAccessKey: ${AWS_BEDROCK_SECRET_KEY:-""}
          sessionToken: ${AWS_BEDROCK_SESSION_TOKEN:-""}
        embeddingModelId: ${AWS_BEDROCK_EMBED_MODEL_ID:-""}
        embeddingDimension: ${AWS_BEDROCK_EMBEDDING_DIMENSION:-""}
  ```

  **After (2.0):**

  ```yaml theme={null}
  elasticsearch:
    naturalLanguageSearch:
      semanticSearchEnabled: ${SEMANTIC_SEARCH_ENABLED:-false}

  llmConfiguration:
    bedrock:
      awsConfig:
        enabled: ${BEDROCK_AWS_IAM_AUTH_ENABLED:-true}
        region: ${AWS_DEFAULT_REGION:-""}
        accessKeyId: ${AWS_ACCESS_KEY_ID:-""}
        secretAccessKey: ${AWS_SECRET_ACCESS_KEY:-""}
        sessionToken: ${AWS_SESSION_TOKEN:-""}
    embeddings:
      provider: ${EMBEDDING_PROVIDER:-bedrock}
      maxConcurrentRequests: ${MAX_CONCURRENT_EMBEDDING_REQUESTS:-10}
      bedrock:
        embeddingModelId: ${AWS_BEDROCK_EMBED_MODEL_ID:-"amazon.titan-embed-text-v2:0"}
        embeddingDimension: ${AWS_BEDROCK_EMBEDDING_DIMENSION:-512}
  ```

  **Action required:**

  1. Remove `embeddingProvider`, `maxConcurrentRequests`, and the provider sub-blocks from `elasticsearch.naturalLanguageSearch`.
  2. Move provider credentials to the matching `llmConfiguration` block, and keep the embedding provider and model settings under `llmConfiguration.embeddings`.
  3. Set `SEMANTIC_SEARCH_ENABLED=true` to enable semantic search. `LLM_ENABLED` and `LLM_PROVIDER` configure the platform completion client; they do not enable vector embeddings.

  | Provider              | 1.13 location                             | 2.0 location                         |
  | --------------------- | ----------------------------------------- | ------------------------------------ |
  | Bedrock               | `naturalLanguageSearch.bedrock.awsConfig` | `llmConfiguration.bedrock.awsConfig` |
  | OpenAI / Azure OpenAI | `naturalLanguageSearch.openai`            | `llmConfiguration.openai`            |
  | Google                | `naturalLanguageSearch.google`            | `llmConfiguration.google`            |
  | DJL                   | `naturalLanguageSearch.djl`               | `llmConfiguration.embeddings.djl`    |

  **Credential environment variables renamed:**

  | Old (1.13)                  | New (2.0)                |
  | --------------------------- | ------------------------ |
  | `AWS_BEDROCK_REGION`        | `AWS_DEFAULT_REGION`     |
  | `AWS_BEDROCK_ACCESS_KEY`    | `AWS_ACCESS_KEY_ID`      |
  | `AWS_BEDROCK_SECRET_KEY`    | `AWS_SECRET_ACCESS_KEY`  |
  | `AWS_BEDROCK_SESSION_TOKEN` | `AWS_SESSION_TOKEN`      |
  | `OPENAI_API_KEY`            | `LLM_OPENAI_API_KEY`     |
  | `OPENAI_API_ENDPOINT`       | `LLM_OPENAI_ENDPOINT`    |
  | `OPENAI_DEPLOYMENT_NAME`    | `LLM_OPENAI_DEPLOYMENT`  |
  | `OPENAI_API_VERSION`        | `LLM_OPENAI_API_VERSION` |
  | `GOOGLE_API_KEY`            | `LLM_GOOGLE_API_KEY`     |
  | `GOOGLE_API_ENDPOINT`       | *(removed)*              |

  Environment variables `EMBEDDING_PROVIDER`, `MAX_CONCURRENT_EMBEDDING_REQUESTS`, `DJL_EMBEDDING_MODEL`, and every `*_EMBEDDING_MODEL_ID` / `*_EMBEDDING_DIMENSION` variable 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):**

  ```yaml theme={null}
  connection:
    config:
      type: DatabricksPipeline
      hostPort: adb-xxxx.azuredatabricks.net:443
      token: dapi...
  ```

  **After (2.0):**

  ```yaml theme={null}
  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 `cp310` binary 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:

  ```yaml theme={null}
  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](https://docs.greatexpectations.io/docs/guides/miscellaneous/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` when a tool returns `nextCursor`; `from`/`size` offset still works                                                  |
  | Semantic search / embeddings | Move provider credentials and embedding config from `naturalLanguageSearch` to the matching `llmConfiguration` blocks; set `SEMANTIC_SEARCH_ENABLED=true` |
  | 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                                                                                                              |

  **[View the full changelog](https://github.com/open-metadata/OpenMetadata/compare/1.13.4-release...2.0.0-release)**

  ***

  ## 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.
</Update>
