Skip to main content

Latest Release Notes

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

Upgrade OpenMetadata

Learn how to upgrade your OpenMetadata instance to 1.13.4!
21st August 2026
You can find the GitHub release here.

Changelog

OpenMetadata 1.13.4 is a maintenance release focused on connector reliability, search and lineage correctness, governance and MCP fixes, and a broad security cleanup across ingestion and platform dependencies.

🔌 Connectors & Ingestion

  • Hive: test connection failed when no metastore was selected #30380: The metastore step is optional again, restoring the pre-1.13 behaviour for Hive services that don’t front a metastore.
  • Oracle: view definitions truncated by bulk LONG fetch #30319: Falls back to a per-view fetch when the bulk LONG read truncates, recovering full view DDL for downstream lineage.
  • BigQuery: dataset and table object caches collide across schemas #30973: Caches are keyed per schema, preventing cross-schema object collisions on large projects.
  • Fivetran: lineage lost when service names are unset; Table → Topic edges missing #31265: Falls back cleanly when service names are missing and adds Table → Topic lineage support.
  • KafkaConnect: Debezium lineage broken on single-database services #31280: Debezium source lineage now resolves against single-database KafkaConnect services.
  • BurstIQ: invalid system wallet failing silently #29727: Test connection surfaces an invalid system wallet with an actionable error.
  • Table-owner extraction using the inspector instead of the dialect #31479: The owner extractor now dispatches on the SQL dialect, matching how the rest of the connector routes queries.
  • Lineage parser: rows without a table name reaching the DB #31523: Parsed table references with no table name are skipped rather than persisted as broken rows.

🔍 Search & Discovery

  • Inherited domain lost on descendants when an asset is moved #30678: Moving an asset now propagates the inherited domain to all descendants in search.
  • Search connection pool starvation #31658: Bounds httpclient5 connection-request timeouts so the search client stops starving under load.

🛡️ Data Governance & Quality

  • Read authorization depending on the requested fields projection #29835: Read authorization is now independent of the fields query parameter, closing a projection-based bypass.
  • Orphan test case 404s the whole test case listing #31379: A single stale test case no longer breaks paginated test-case listings.
  • Any-language recognizer normalization #28883: Recognizers behave consistently regardless of source language.

🤖 MCP Server

  • CORS headers, unused capability, and OAuth iss parameter #30673: Fixes MCP CORS headers, removes the unused resources capability, and populates the OAuth iss parameter.
  • Null protected_resource_metadata in the discovery response #30642: Omits the field entirely when unset instead of returning null.

⚙️ Platform

  • /metadata/types/customProperties returning non-custom properties #31171: The endpoint returns only custom properties, matching its name.
  • Container re-parenting via PATCH #24294: Containers can be re-parented through PATCH like other hierarchical assets.
  • Data Product reference indexing #30387: Search stays consistent after linked-entity updates on Data Products.

🎛️ UI

  • Related terms +N badge not expandable #31009: The +N badge on glossary related terms is clickable to reveal the full list.
  • Query Tab: UI backend integration #30688: UI-side backend calls for the Query Tab align with the current API surface.
  • Queries tab: badge count skeleton while loading #31688: The Queries tab shows a skeleton in the badge while the count fetches, instead of flashing 0.

🔒 Security

  • netty → 4.1.137.Final for CVE-2026-59903 #31792.
  • c3p0 0.12.0 → 0.14.1 for CVE-2026-55223 #31458.
  • httpcore5 pinned to 5.4.3 for CVE-2026-54399 #31513.
31st July 2026
You can find the GitHub release here.

Changelog

OpenMetadata 1.13.3 is a maintenance release delivering data contract and governance workflow fixes, alert delivery fixes, a Snowflake foreign-key reflection fix, and UI fixes.

🔌 Connectors & Ingestion

  • Snowflake: foreign-key collisions across tables sharing a constraint name #30473: Foreign-key reflection is now keyed on (fk_name, table_name), so cloned tables that reuse a constraint name no longer merge into a single constraint referencing another table’s columns and getting rejected with 400 Invalid column name.

🛡️ Data Governance & Quality

  • Data contracts stuck at Running after a Data Quality pipeline completes #30531: The testSuitedataContract reverse relationship is now persisted on contract create/update, so contract status resolves when the pipeline finishes instead of sitting at Running indefinitely. Regression from 1.13.0.
  • Sanitize poisoned governance trigger filters 5963637b: Event-based workflow trigger filters stored as an empty or placeholder value ("", {}) are now ignored instead of rejecting every event, and a 1.13.3 migration repairs affected workflowDefinitions rows in place.
  • Hide soft-deleted owners on the Test Suite detail page #30520: Editing owners on a logical Test Suite no longer fails with array item index is out of range; TestSuiteResource.getByName now honours includeRelations, matching every other detail page.
  • Intake form formFields support #30614: Added a formFields array with a per-field required flag to the IntakeForm schema, along with a migration that backfills it from the legacy requiredFields. Backend only in this release.

⚙️ Platform

  • Skip notification recipients without contact information #30518: A team or user with no email address or webhook no longer discards every other recipient of the same alert; recipients are now resolved individually, matching the webhook path.

🎛️ UI

  • Tag and Glossary dropdowns not selectable in the Column Bulk Operations edit drawer #30634: The tag and glossary dropdowns now render inside the edit drawer, so options can be selected instead of having clicks swallowed by the drawer’s focus containment.
30th July 2026
You can find the GitHub release here.

Changelog

OpenMetadata 1.13.2 is a maintenance release delivering MCP tool enhancements, search and reindexing reliability fixes, security patches, connector improvements, data governance and quality updates, lineage fixes, and UI enhancements.

🔒 Security

  • Jackson, Logback, Postgres & Calcite dependency pins #30396: Aligned Jackson, Logback, Postgres, and Calcite dependency pins with main to clear Inspector high findings.
  • Log4j CVE-2026-49844 #30311: Bumped log4j from 2.25.4 to 2.25.5 to patch CVE-2026-49844.
  • Trivy ingestion image CVEs #30516: Resolved Trivy-flagged CVEs by upgrading Airflow to 3.2.2, updating Spark Hive jars, and patching perl/nss packages.
  • Trim vulnerable apt packages from ingestion Docker images #30024 #30454: Removed CVE-flagged apt packages from ingestion Docker base images and hardened apt-get security.
  • PyArrow IPC use-after-free CVEs #30146: Bumped pyarrow past the IPC use-after-free CVEs.
  • mlflow-skinny Snyk findings #30046: Bumped mlflow-skinny to clear critical/high Snyk findings.
  • Ingestion dependency CVE bumps #30034: Bumped 6 CVE-flagged ingestion dependencies to patched versions.
  • No reviewer authz shortcut on CREATE #30026: Fixed a security gap where reviewer authorization shortcut was incorrectly granted on entity CREATE operations.
  • Stop exposing app bot JWT and private secrets #29793: App bot JWT tokens and privateConfiguration secrets are no longer exposed in API responses.

🤖 MCP (Model Context Protocol)

  • New get_user_context tool #30384: Added a get_user_context MCP tool that returns the calling user’s profile, roles, and team memberships for context-aware AI interactions.
  • Tool metadata annotations #30105: MCP tools are now annotated with title, readOnly, destructive, and openWorld hints to help LLM clients make safer tool-selection decisions.
  • Unified read-tool pagination with nextCursor #29800: All MCP read tools now share a unified opaque nextCursor pagination contract, replacing ad-hoc page parameters for consistent multi-page traversal.
  • Structured content and soft-error signaling #29799: MCP tools now emit structuredContent alongside text and flag non-fatal issues via isError for better LLM error handling.
  • Read-tool size cap via item paging #29732: Read tools now page items rather than truncate content when a response approaches the size cap, ensuring no data is silently dropped.
  • Paginate get_entity_details columns #29707 #29713: get_entity_details now paginates column lists for wide entities to stay within LLM context limits.
  • Authorize get_entity_details against resolved entity #30011 #30043: Fixed get_entity_details to perform authorization checks against the fully resolved entity, preventing unauthorized access via FQN aliases.

🔍 Search & Reindexing

  • Migrate stale owner aggregation field #29691: A 1.13.2 migration corrects stale owner aggregation field references in stored search settings to prevent broken search filters after upgrade.
  • Column bulk operations search at scale #29695: Fixed column bulk operations search returning no results on large datasets.
  • Index testSuite on tables during selective reindex #29688: Selective reindex now includes testSuite associations on table documents.
  • Durable realtime column indexing #29653: Realtime column index updates now await the bulk write to complete before acknowledging, preventing silent index lag.
  • Index all body chunks for semantic retrieval #29850: All body text chunks are now indexed for semantic retrieval, fixing incomplete hybrid search results.
  • ES/OS document rejection hardening #28671: Engine-native mapping hardening prevents Elasticsearch/OpenSearch from rejecting index documents due to type mismatches.
  • Index domain parent for sub-domain counts #29118: Domain parent is now indexed so the Sub Domains tab correctly counts child domains after a full reindex.
  • mlModelService search index routing fix #30574: Fixed search index=mlModelService incorrectly returning ML Model assets from other indexes.
  • Promote every staged index in distributed reindex #30519: All staged indexes are now promoted atomically in a distributed reindex, preventing partial promotion failures.
  • customPropertiesTyped nested mapping #30501: Added missing nested customPropertiesTyped field mapping to 5 entity indexes to enable custom property aggregations in search.
  • Restore dropped table reindex fields #30177: Restored schemaDefinition and ER diagram fields that were inadvertently dropped from the table search index in 1.13.
  • Populate service for stored procedures on reindex #30127: The service field is now correctly populated for stored procedures during reindex.
  • Preserve search preview ranking order #30083: Search preview results now preserve the intended best-match ranking order across all hit pages.
  • Unwedge reindex orchestrator on crash #28699: The reindex orchestrator now recovers from a crash by unwedging itself and cleaning up stale Quartz jobs.
  • Stop falsely abandoning healthy reindex jobs #29547: Fixed the orchestrator incorrectly abandoning reindex jobs that hold a live lock, causing premature failure.
  • Remove DB-backed search index mapping settings #30218: Removed the legacy database-backed search index mapping settings page and its UI entry, simplifying search configuration.
  • Search cluster fitness diagnostic #28447: Added a REST endpoint and ops CLI command for diagnosing search cluster fitness (shard health, index sizes, replication lag).
  • Resilient embeddings and reindex auto-tune #29833: Search embedding generation, reindex auto-tuning, and audit log export now recover gracefully on any pod size rather than failing the entire run.
  • Bind BoundedListFilter params in TestSuite reads #30219: Fixed unbound query parameters in TestSuite keyset pagination that could cause full-table scans.
  • Self-heal custom-property registry on cache miss #30044: Custom-property type registry now self-heals on a cache miss across replicas instead of returning stale type mappings.

🔌 Connectors & Ingestion

  • Kafka Connect: EventRouter/RegexRouter lineage #29980: Kafka Connect now generates lineage for topics routed via EventRouter and RegexRouter SMTs.
  • dbt Cloud: column-level lineage from compiled SQL #29731: dbt Cloud connector now extracts column-level lineage directly from compiled SQL in addition to the manifest.
  • Databricks partner User-Agent #30222: Set the Databricks partner User-Agent header for telemetry attribution in Databricks ingestion.
  • OpenLineage: Glue symlink & multi-catalog dataset lineage #30272: Resolved OpenLineage lineage for Glue symlink tables and multi-catalog datasets that previously failed FQN resolution.
  • ADLS: respect bucketName during container discovery #30271: Azure Data Lake Storage ingestion now respects the configured bucketName filter during container discovery.
  • Redshift Spectrum: map Hive types #29910: Redshift Spectrum now maps Hive-compatible types (string, double, char, tinyint) instead of reporting UNKNOWN.
  • Delta Lake: parse struct field names with colons #30080: Fixed Delta Lake schema parser to correctly handle struct field names containing colons.
  • MSSQL: BigInteger identity reflection on SQLAlchemy 2.0 #29639: Fixed MSSQL BigInteger identity column reflection under SQLAlchemy 2.0.
  • MSSQL: Query Store for lineage & usage #29719: MSSQL query and stored-procedure lineage and usage now use the Query Store for improved reliability, with hardened fault-tolerance and warnings on query-log truncation.
  • BigQuery: GCP service account impersonation #29683: Fixed GCP service account impersonation across BigQuery ADC and SQLAlchemy paths.
  • Ingestion engines: AUTOCOMMIT to release AccessShareLock #29658: Ingestion engines now use AUTOCOMMIT mode to release AccessShareLock promptly, preventing lock buildup on busy PostgreSQL instances.
  • Data quality: use sample config for sample data ingestion #29907: Data quality sample data ingestion now uses the correct sample configuration instead of the full profiler config.
  • Add pkg-config to ingestion-base images #30264: Added pkg-config to ingestion-base Docker images so mysqlclient compiles correctly from source.
  • Oracle: preserve CTAS sqlQuery on lineage patch #29646: Oracle connector now preserves the sqlQuery on CTAS lineage patches and correctly parses stored procedure names.
  • dbt: populate TestCaseResult.result with test message #29650: TestCaseResult.result is now populated with the dbt test failure message for better observability.
  • Lineage: dedup queries and treat conflicts as warnings #28757: Duplicate lineage queries are deduplicated and already-present query conflicts are now logged as warnings instead of errors.

📖 Glossary

  • Parse glossary CSV entityStatus case-insensitively #29510: Glossary CSV bulk import now accepts entityStatus values in any case (e.g., DRAFT, Draft, draft).
  • Paginate glossary term relation settings #30372: The glossary term relation settings page is now paginated to prevent timeouts on glossaries with many related terms.

🛡️ Data Governance & Quality

  • Validate DI chart formulas via formula evaluator #30073: Data Insights chart formula validation now uses DataInsightFormulaEvaluator instead of the policy validator to correctly flag invalid formulas.
  • Return 400 for chart metrics with no function or formula #29890: Data Insights chart preview returns HTTP 400 (not 500) when a chart metric is missing both a function and a formula.
  • Custom property filter and aggregation in Data Insights #29643: Data Insights charts now support filtering and grouping by custom properties.
  • Mark superseded approval runs as SUPERSEDED #29868: When a new approval workflow supersedes a running one, the previous run is now marked as SUPERSEDED instead of FAILURE.
  • Data Contract: fix NOT_IN JsonLogic multivalue fields #29003: Data Contract NOT_IN operator now emits correct JsonLogic multivalue field expressions.
  • Fix Table.schemaDefinition silently dropped on PUT #29441: Table.schemaDefinition is no longer silently dropped when a full PUT update is performed.
  • Preserve autoClassificationConfig on classification PUT #29735: A classification PUT now preserves the existing autoClassificationConfig instead of resetting it.
  • Data Contract alert filter search #30007: Fixed broken search on the Data Contract alert filter panel.
  • Auto-classification: break sibling-tag score ties #29989: Auto-classification now breaks ties between sibling tags using a deterministic secondary sort to prevent unstable classification results.

🧬 Lineage

  • Fix fitView not centering the lineage DAG #30163: The fitView call on lineage page load now correctly centers the DAG in the viewport.
  • Render query-lineage SQL on the edge drawer #29651: The lineage edge drawer now renders the underlying SQL query for query-level lineage edges.

⚙️ Platform

  • Content-based ETag to prevent stale votes/followers #30497: ETags are now computed from entity content rather than version, preventing browsers from serving stale votes and follower counts via 304 responses.
  • Harden entity pagination, multi-owner authz, and cursor charset #29750: Hardened keyset pagination, enforced authorization checks for multi-owner assignments, and fixed cursor encoding for non-ASCII entity names.
  • Paginate GET /v1/events to prevent Java heap OOM #29958: The events endpoint now supports cursor-based pagination with an optional endTs bound to prevent out-of-memory errors on large event backlogs.
  • Avoid Out-of-sort-memory on entity list pagination #29898: Entity list queries no longer trigger MySQL’s Out of sort memory error on large tables by switching to indexed keyset pagination.
  • Prevent circular team hierarchy #30063: Team create and update operations now validate for circular parent-child references and reject them with a 400 error.
  • Reclaim orphaned ingestion pipelines #30030: A migration backport reclaims ingestion pipelines that became orphaned due to partial deletes.
  • Enable impersonation for custom bots with RBAC #29029: Custom bots can now use service account impersonation with RBAC-scoped control for fine-grained delegation.
  • Preserve inherited domains in CSV bulk edit #30013: Bulk CSV edit now preserves inherited domain assignments instead of clearing them when a domain column is absent.
  • Compare email domains case-insensitively #30285: Principal domain enforcement now compares email domains case-insensitively, fixing login failures for users with mixed-case email domains.
  • Validate legacy feed task payloads #29582: Legacy feed task payloads are now validated before processing to prevent ingestion pipeline failures on malformed historical records.
  • Expose Trigger in ingestionPipeline descriptor #29530: The ingestion pipeline Trigger field is now exposed in the pipeline descriptor, and EditAll permission is required to kill a running pipeline.
  • Bypass domain enforcement for OM-internally-issued tokens #29433: Service and bot tokens issued by OpenMetadata itself now bypass principal domain enforcement to prevent breakage during startup and migrations.
  • Cap Titan Bedrock embedding input #30021: Input to Titan Bedrock embedding models is now capped to avoid ValidationException on oversized payloads.
  • Retry Bedrock 429 throttling with backoff #29938: Bedrock API calls now retry on HTTP 429 (Too Many Requests) with exponential backoff.
  • Fix missing ownerName field #29899: Restored the ownerName field that was missing from entity responses after a prior refactor.
  • RDF: exclude unsupported entity types #29381: Entity types not supported by the RDF knowledge graph are now excluded at index time to prevent serialization errors.
  • Record failed webhook events on non-2xx delivery #29808: Event subscription delivery failures are now recorded when the webhook returns any non-2xx status code, not just network errors.
  • Default pipeline patch version when z component is missing #29787: Pipeline version patching now defaults the z component to 0 when it is absent, preventing NullPointerException on version-less pipelines.
  • Fix stale description source badge #29843: Clearing a nested field’s description no longer leaves a stale source badge in the UI.
  • Bound memory in bulk recursive hard delete #29322: Bulk recursive hard delete now bounds memory usage and skips work already covered by ancestor deletes to prevent OOM on large hierarchies.
  • Backport orphaned column-doc cleanup #29549: Orphaned column documentation entries from deleted columns are now cleaned up during migration.

🎛️ UI

  • Multi-owner avatar stack with hover popover #29612: Entity header now stacks multiple owner avatars with a hover popover showing all owners, replacing a truncated list.
  • Migrate service icons from PNG to WebP #29105: All service connector icons have been migrated from PNG to WebP for faster page loads and better visual quality.
  • PaginationCardWithControls component #30379: Backported the PaginationCardWithControls component to 1.13 for consistent paginated card layouts.
  • Fix is_not_set semantics for Owner/Domain/DataProduct filters #30439: Corrected the is_not_set filter semantics for Owner, Domain, and Data Product fields in the Explore page filters.
  • Table version page shows historical columns #29411: The table version history page now correctly shows the column state at that version instead of the current live API columns.
  • Handle test suite tab loading race #29561: Fixed a race condition that could leave the test suite tab in a perpetual loading state.
  • Hide data product lifecycle stage badge #29290: The lifecycle stage badge is now hidden on data product pages where it is not applicable.
  • Lazy loading for enum select in advanced search #29736: Enum select fields in the advanced search query builder now load options lazily to prevent UI freezes on large enumerations.
  • Column tag filtering in advanced search #28871: Advanced search now supports filtering by column-level tags.
  • Permissions for run/deploy buttons #29527: Run and deploy buttons on ingestion pipelines now correctly reflect the user’s permissions and are disabled when the user lacks the required role.
  • Column grid alphabetical sort #29751: Column bulk-edit grid now sorts columns alphabetically by default for easier navigation.
  • Fix Certification icon rendering #29830: Resolved a rendering issue that caused the Certification icon to display incorrectly in entity headers.
  • Total asset count for filtered Explore results #28873: The Explore page now shows the correct total asset count when advanced search filters are active.
27th June 2026
You can find the GitHub release here.

Changelog

OpenMetadata 1.13.1 is a maintenance release delivering MCP tool improvements, search and reindexing fixes, security patches, connector updates, glossary and governance enhancements, and UI fixes.

🔒 Security

  • Netty CVE-2026-44249 #28880: Bumped netty-bom to 4.1.135.Final.
  • Jackson-databind CVE-2026-54512/513/514 #29389: Bumped jackson-databind from 2.18.7 to 2.18.8.
  • Spring, Micrometer & OpenTelemetry CVE patches #29111: Spring 6.2.18 → 6.2.19, Micrometer upgraded, and OpenTelemetry pinned to patch reported CVEs.
  • ws CVE-2026-48779 #29122: Bumped ws to 8.21.0.
  • handlebars CVE-2026-55760 #29221: Bumped handlebars to 4.5.2 to patch a path-traversal vulnerability.
  • sudo CVE-2026-35535 #29343: Upgraded sudo in the ingestion Docker image.
  • UI dependency vulnerability fixes #29223 #29241: Bumped undici 6.25.0 → 6.27.0, form-data, dompurify, markdown-it, and js-yaml.
  • form-data bumped #29349: Updated the form-data package to address reported vulnerabilities.

🤖 MCP (Model Context Protocol)

  • MCP Registry publishing #27982: Added server.json for publishing openmetadata-mcp to the official MCP Registry, enabling discovery across aggregators like PulseMCP.
  • MCP tool usage analytics #28352: MCP tool calls now track usage metrics including per-tool latency percentiles, ok/fail counts, and client classification (VS Code, Claude CLI, etc.) with reservoir sampling.
  • Cap search_metadata response size #28383: Capped search_metadata response size to prevent LLM context overflow and guides LLM clients to use smaller page sizes.
  • Map MCP error responses to correct HTTP status codes #28622: MCP tool error responses now return the correct HTTP status codes instead of generic errors.
  • Slim get_entity_lineage payload #28618: Optimized get_entity_lineage MCP tool payload with a slim transform to reduce response size.
  • Compact create tool responses #28633: create_metric, create_test_case, and create_glossary_term tools now return compact entity representations.
  • Slim root_cause_analysis payload #28632: Slimmed the root_cause_analysis tool payload to fit within LLM context limits.
  • Return similarityScore in search_metadata #28512: search_metadata results now include _score as similarityScore for relevance ranking.
  • Fix entityType filtering in search_metadata #28698: Resolved index routing by entityType to prevent cross-type result leaks and hardened parameter validation.
  • Search test cases and test suites via search_metadata #28743: search_metadata now supports searching test cases and test suites.
  • Shared trim util and global response size-budget #28764: Introduced shared response-trim utilities and a global size-budget net across all MCP tools.
  • Trim wide-table payload in get_entity_details #28776: get_entity_details now trims wide-table payloads (column descriptions, schema/model SQL) to stay within size budgets.
  • MCP OAuth login fix #29228: Fixed /mcp/callback handling of the active-session shortcut and implicit-flow id_token returned in the URL fragment by SSO.
  • Fix OAuth state double-encoding #28952: OAuth state is now echoed without double-encoding in the redirect URI.

🔍 Search & Reindexing

  • Vectorize testSuite/testCase for hybrid search #28669: Test suites and test cases are now vectorized, enabling hybrid (keyword + semantic) search over data quality entities.
  • Make users and admins searchable by email #28800: Users and admins are now searchable by their email address.
  • Recreate all indexes on major/minor version upgrade #28885: All search indexes are now recreated on major or minor version upgrades to pick up mapping changes.
  • Reindex-drift and index health checks #28856: Added reindex-drift detection and index health checks in /system/validate.
  • Fix reindex OOM on wide tables #28888: Switched to a covering cursor query and added entity name indexes to prevent out-of-sort-memory errors during reindex.
  • Re-add —recreate-indexes flag #29087: Restored the --recreate-indexes flag to the reindex CLI for backward compatibility.
  • Staged-index rescue uses index_total #29108: Uses index_total instead of docs.count for staged-index rescue so a failed reindex doesn’t delete a populated index.
  • Never apply refresh_interval=-1 as live serving value #29153: Prevents refresh_interval=-1 from being applied as a live serving value on index promote.
  • Cap oversized dataModel column tree at index time #29212: Containers/tables with pathologically large dataModel schemas now have nested column children stripped at index time to prevent OOM.
  • Regenerate embeddings on dimension change #29437: Embeddings are regenerated when vector dimensions change instead of reusing stale vectors.
  • Backfill name indexes for distributed reindex pagination #29361: Name indexes are backfilled to support distributed reindex pagination.
  • Bound column-index fan-out #29377: Bounded table column-index fan-out to prevent reindex OOM on wide tables.
  • Surface exact/prefix matches first in QuickFilter #29231: QuickFilter aggregations now surface exact and prefix matches first.
  • Extend best-match ordering to sourceFields/topHits #29296: Extended the best-match ordering logic to sourceFields and topHits requests.
  • My Data defaults to dataAsset index #29209: Changed the My Data page from the all index to dataAsset for more relevant results.
  • Stop time-series field propagation #29499: Stopped time-series field propagation to prevent stale data in downstream indexes.

🔌 Connectors & Ingestion

  • PowerBI datamarts support #28896: Added support for Power BI datamarts.
  • Fivetran improvements #27270: Various improvements to the Fivetran connector.
  • Athena: pass catalogId for S3 Tables enumeration #28929: Passes catalogId to get_tables for Athena S3 Tables enumeration.
  • Athena: ingest Iceberg table properties #27715: Ingests Iceberg table properties from the $properties metatable.
  • Athena: remove Trino stats #29446: Removed Trino-specific stats from the Athena table profiler.
  • MySQL: refresh RDS IAM auth token per connection #28730: IAM auth tokens are now refreshed per connection instead of reusing stale tokens.
  • MySQL: default stored-procedure language to SQL #28898: Unknown stored-procedure languages now default to SQL instead of None.
  • MySQL: parameterize routines query #29077: Parameterized the MySQL routines query to avoid SQL string interpolation.
  • Metabase: StarRocks SQL dialect for lineage #29033: StarRocks connections now route to the StarRocks SQL dialect so StarRocks-specific syntax parses correctly for lineage.
  • Metabase: strip optional clause blocks #29390: Strips [[...]] optional clause blocks before lineage parsing.
  • Datalake: parse array type nested structures in JSON #27798: Fixed parsing of array type nested structure fields inside JSON files.
  • Iceberg/Delta: ingest metadata.json with real table columns #28422: Iceberg/Delta metadata.json files are now ingested with real table columns instead of placeholder schema.
  • Upgrade collate-sqllineage #27413: Upgraded collate-sqllineage to ≥2.1.1 with regression tests.
  • OpenLineage: reset Kinesis poll inactivity timer #29276: Resets the Kinesis poll inactivity timer per shard to prevent premature stream abandonment.
  • OpenLineage: de-aggregate KPL records #29037: De-aggregates KPL (Kinesis Producer Library) records in the Kinesis source.
  • SAP HANA: profiler fix #27483: Fixed CREATE_TIME lookup to use SYS.TABLES with uppercase catalog matching.
  • Unity Catalog: incremental extraction flag #28906: Added the missing supportsIncrementalMetadataExtraction flag.
  • dbt Cloud: stale FQN and null timestamp #29525: Fixed dbt Cloud pipeline status using stale FQN and null timestamp.
  • Secret serialization fixes #28625 #29198 #29216: Preserved secret: prefix during Python SDK serialization, handled empty connection passwords with CustomSecretStr, and hardened serialization for null secrets.
  • Fix lineage script_exception in ADD_UPDATE_LINEAGE: Fixed script exceptions during lineage add/update operations.

📖 Glossary

  • Cascade glossary rename to child terms in search index #29159: Renaming a glossary now updates the denormalized glossary.name / glossary.fullyQualifiedName on every child term’s search-index doc.
  • Keep approvals valid after move #29214: Approvals remain valid after a glossary term is moved.
  • Skip move consolidation #29266: Fixes glossary term move operations by skipping unnecessary consolidation.
  • Preserve domains through CSV import/export #29509: Glossary term domains are now preserved during CSV bulk import/export, and a domains column is added to the CSV format.
  • Show approve/reject buttons after Expand All #29295: The Expand-All tree fetch now requests the reviewers field so nested In-Review terms retain their approve/reject buttons.

🛡️ Data Governance & Quality

  • ODPS Support for Data Products #29154: Added ODPS support for data products with custom intake forms.
  • Data product support in Observability #28713: Added data product support in the Observability UI and backend.
  • Preserve data products across domain deletes #29137: When a data product’s domain is changed and the original domain is hard-deleted, the stale relationship is now removed so data products are preserved.
  • Delete orphaned test cases + guard test-definition deletion #29081: Orphaned test cases can now be hard-deleted, and test-definition deletion is guarded against missing relationships.
  • Redeploy workflow BPMN on upgrade #29465: Workflow BPMN definitions are redeployed on upgrade so moved or renamed approvals resolve correctly.
  • Allow bare function references in SpEL conditions #28946: Governance policy SpEL conditions now allow bare references to approved functions.
  • Snapshot entityStatus for Data Insights #29313: Snapshots entityStatus so Data Insights charts can filter by lifecycle status.
  • Project tags to DI snapshot #29382: Projects classificationTags and glossaryTags to the Data Insights snapshot.
  • Add documentation panel to test definition form #29430: Added a documentation panel to the test definition creation form.

🔔 Alerts & Notifications

  • Match Entity FQN filter against descendants #28833: Entity FQN filters now match against both the entity and its descendants.
  • Dedup successful change events #28827: Deduplicates successful change events to prevent Postgres ON CONFLICT abort errors.
  • Observability triggers skip thread events #29112: Observability status triggers no longer fire on thread events.
  • Owner/user name filters match dotted usernames #29523: Owner and user name filters now correctly match usernames containing a dot.

🔐 Authentication

  • OIDC/SAML self-signup persists mapped email claim #29227: Self-signup now persists the mapped email claim from OIDC/SAML.

🧬 Lineage

  • Render traced edges and nodes #29195: Lineage now visually renders traced edges and nodes.
  • Restore edges in lineage PNG export #29250: Edges are restored after canvas re-render in the lineage PNG export.
  • Fix PNG lineage export download #29362: Fixed PNG lineage export download and late loading spinner.
  • Correct nodeDepth for fetched nodes #27477: Updates nodeDepth on fetched nodes using the base nodeDepth.
  • Drop nodeDepth partitioning for ELK #29224: Dropped nodeDepth partitioning so ELK derives lineage layers from edges.

⚙️ Platform

  • Re-arm audit log consumer trigger on startup #28821: The audit log consumer trigger is now re-armed on startup instead of being skipped when the Quartz job already exists, preventing silent audit event loss after restarts.
  • Validate Flowable pool connections for DB failover #28835: Enabled MyBatis pool-ping validation (SELECT 1) on the Flowable runtime engine so connections idle past 30 seconds are validated and replaced before reuse, surviving Aurora/RDS failovers and maintenance restarts.
  • Defer row fetch in audit logs list query #28851: Avoids a full-row scan when listing audit logs.
  • AuditLogConsumer offset gap resilience #29252: The audit log consumer no longer skips events when change_event.offset gaps appear under concurrent writes.
  • Concatenate multi-line SSE data fields #28945: Multi-line SSE data: fields are now concatenated instead of overwritten.
  • Force UTF-8 decoding in SSE #29532: Forces UTF-8 decoding in SSE streams to prevent JSON truncation on multibyte characters.
  • Persist nested column changes on PATCH #28837: Nested column changes are now persisted on optimistic-locking PATCH operations.
  • Sync IngestionPipeline schedule on app changes #28702: When an app’s schedule changes, the backing IngestionPipeline.scheduleInterval is now synced so K8s/Argo/Hybrid runners pick up the new schedule.
  • Support double-quotes in FQN #28697: Fully qualified names now support double-quoted segments, with guard and repair logic for corrupt FQNs.
  • Surface external secret read failures #28767: External secret read failures are now surfaced instead of being misrouted to create.
  • Fix SocketAddressFilter NPE #29263: Fixed NPE on WebSocket handshake without a query string.
  • Fix RDF Fuseki bulk write timeouts #28564: Fixed bulk write timeouts in the RDF Fuseki integration.
  • RDF: index additional entity types #29327: Dashboard, DashboardDataModel, Table, and StoredProcedure are now properly indexed in the knowledge graph.
  • RDF glossary term filtering #29368: Added support for RDF glossary term filtering.
  • Slow Data Retention cleanup fix #29363: Fixed slow, memory-bound Data Retention entity relationship cleanup.
  • Backfill pipeline service edges #29529: Migration backfills pipeline service edges in 1.13.1.
  • Disabled new sidebar items by default for existing personas #29032: New sidebar items are disabled by default for existing personas to avoid unexpected navigation changes.
  • Remove content/column name split for classification #29203: Removed the content/column name split for classification processing.

🎛️ UI

  • Prevent ontology graph crash on large glossaries #29270: Prevented the ontology relations graph from crashing on large glossaries.
  • Block-editor link modal in drawers #29374: Kept the link modal usable inside focus-trapping drawers.
  • Preserve Persona navigation ordering #29353: Saved Persona navigation ordering is now preserved on reload.
  • Scope “between” operator to numeric custom properties #29335: The between operator now correctly sends the upper bound for numeric custom properties only.
  • Tag column filter on nested tables #29075: Tag column filter on nested schema/column tables now shows only matching fields.
  • Hide disabled Tiers from dropdown #29466: Disabled Tiers are now hidden from the Tier selection dropdown.
  • Data product filter in Data Quality #29456: Included data product filter in Data Quality parameters.
  • Data Quality pagination #29512: Forwarded showPagination to the DataQualityTab component.
  • FQN double-quote support in UI #28697: Added double-quoted name support in the UI FQN utility.
  • Untitled-UI dropdowns for Add Assets drawer #29168: Replaced quick-filters in the Add Assets drawer with Untitled-UI dropdowns.