Introducing OpenMetadata 2.0, the open context layer for AI. See what's new 🚀

Product Updates

Product Update

Stay updated with the latest features, improvements, and changes in OpenMetadata

v2.0.4

Released on 6th October 2026

📋Changelog

OpenMetadata 2.0.4 is a maintenance release focused on connector reliability and data quality. It fixes reindexing alias lookups and Explore counts, adds upgrade migrations for table-alias search settings and Data Insights charts, and makes bot bulk imports safer.

🔌 Connectors & Ingestion

  • AWS Glue: table parameters weren't captured #34269: Glue table parameters are now ingested as custom properties.
  • SQL Server: table synonyms weren't ingested #33415: SQL Server synonyms are now ingested as table aliases and allowed through the entity patch.
  • Snowflake: aggregate subclasses could overflow again during a retry #34396: The overflow-retry fallback now excludes Sum, Mean, and StdDev metrics and their subclasses so the remaining column metrics can still be collected.
  • Datalake: MF4 file reads failed after a canmatrix update #34419: Pins canmatrix below 1.3 so asammdf imports again and MF4 reads work.
  • Ingestion could break under SQLAlchemy 2.1 #34259: Caps SQLAlchemy below 2.1 to keep ingestion working.

📊 Data Quality

  • A test case's status followed the last result written or deleted, not the newest one #34285: A late older result, or deleting the newest result, could overwrite the status and even auto-resolve a newer failure's incident. Status now always reflects the newest result.
  • The Test Definition "Supported Services" picker listed the Dbt and QueryLog pseudo-types #34624: These have no connection schema, so a test definition restricted to one silently vanished from the Add Test Case picker. Both are now filtered out.
  • Setting a 0% profile sample silently discarded the Profiler Settings config #34625: A 0% or 0-row sample saved nothing while still showing a success toast, and a stored 0 would force a full-table scan. A non-zero sample is now required.

🔀 Lineage

  • Upstream data quality failures were missed once an instance had more than 100 test cases #34286: The upstream-failure check kept only the 100 busiest test cases before filtering, dropping failing upstream tables. It now uses one exact, batched lookup on the test case index.

🔍 Search & Discovery

  • Reindexing could fail before processing any records with a 403 from alias discovery #33893: Alias lookups now use index-scoped requests, so search roles restricted to their own <clusterAlias>* prefix can discover the deployment's aliases.
  • Plain-text natural-language query (NLQ) and aggregate searches were slow and over-broad #34393: The NLQ keyword fallback and aggregate text now go through the search builder with a field list, instead of an unscoped query_string across every index field.
  • Explore tab counts didn't match the result rows #34398: Counts could include fuzzy-only matches absent from the rows. They now use the same authorized, configured matching as each tab, and each tab renders as soon as its own request finishes.
  • Data Marketplace list search was off-centre and keyword-only #34252: The Data Marketplace list search is now centred and supports natural-language search.

📈 Data Insights

  • Data Insights summary cards and asset charts counted test case results #33415: Summary cards no longer count test case results. A 2.0.4 upgrade migration updates stored data asset chart definitions with corrected filters and matching governance-type exclusions.

🛡️ Data Governance & Quality

  • Approving a tier change left an asset with two mutually exclusive tiers #34288: A tier approval now replaces the existing tier through the normal entity patch, increments the version, and records the tag change.

🎛️ UI

  • Personas had no default landing page #34312: Adds persona General Preferences with a configurable default landing page.
  • What's New showed a raw version, and opening an asset from an Assets tab card lost the breadcrumb #34685: What's New now shows a human-readable version and release date, and the full breadcrumb is kept when opening an asset from an Assets tab card.

📣 Alerts & Events

  • Testing an alert with only unconfigured destinations returned a 400 error #34626: Clicking Test Destinations when every external destination is unconfigured now skips the request instead of sending an empty destination list.

⚙️ Platform & Operations

  • Upgrades need table-alias search settings #33415: A 2.0.4 upgrade migration adds missing alias search and highlight fields to stored table search settings while preserving existing custom boosts and highlight fields.
  • Data Retention deleted charts that no dashboard used #34105: Data Retention no longer removes charts that aren't referenced by any dashboard.
  • Elasticsearch request compression wasn't configurable #34635: Adds a requestCompressionEnabled setting on the Elasticsearch configuration.
  • Bot bulk imports blanked fields the source didn't send #34671: With overrideMetadata=true, a bot bulk PUT no longer blanks a stored description or displayName it doesn't send, and tableConstraints are preserved when the bot sends none.