Latest Release Notes
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
httpclient5connection-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
fieldsquery 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
issparameter #30673: Fixes MCP CORS headers, removes the unused resources capability, and populates the OAuthissparameter. - Null
protected_resource_metadatain the discovery response #30642: Omits the field entirely when unset instead of returningnull.
⚙️ Platform
/metadata/types/customPropertiesreturning 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
+Nbadge not expandable #31009: The+Nbadge 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
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 with400 Invalid column name.
🛡️ Data Governance & Quality
- Data contracts stuck at
Runningafter a Data Quality pipeline completes #30531: ThetestSuite→dataContractreverse relationship is now persisted on contract create/update, so contract status resolves when the pipeline finishes instead of sitting atRunningindefinitely. 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 affectedworkflowDefinitionsrows 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.getByNamenow honoursincludeRelations, matching every other detail page. - Intake form
formFieldssupport #30614: Added aformFieldsarray with a per-fieldrequiredflag to theIntakeFormschema, along with a migration that backfills it from the legacyrequiredFields. 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
log4jfrom 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
pyarrowpast the IPC use-after-free CVEs. - mlflow-skinny Snyk findings #30046: Bumped
mlflow-skinnyto 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
privateConfigurationsecrets are no longer exposed in API responses.
🤖 MCP (Model Context Protocol)
- New
get_user_contexttool #30384: Added aget_user_contextMCP 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, andopenWorldhints to help LLM clients make safer tool-selection decisions. - Unified read-tool pagination with
nextCursor#29800: All MCP read tools now share a unified opaquenextCursorpagination contract, replacing ad-hoc page parameters for consistent multi-page traversal. - Structured content and soft-error signaling #29799: MCP tools now emit
structuredContentalongside text and flag non-fatal issues viaisErrorfor 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_detailscolumns #29707 #29713:get_entity_detailsnow paginates column lists for wide entities to stay within LLM context limits. - Authorize
get_entity_detailsagainst resolved entity #30011 #30043: Fixedget_entity_detailsto 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
testSuiteon tables during selective reindex #29688: Selective reindex now includestestSuiteassociations 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.
mlModelServicesearch index routing fix #30574: Fixedsearch index=mlModelServiceincorrectly 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.
customPropertiesTypednested mapping #30501: Added missing nestedcustomPropertiesTypedfield mapping to 5 entity indexes to enable custom property aggregations in search.- Restore dropped table reindex fields #30177: Restored
schemaDefinitionand 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
EventRouterandRegexRouterSMTs. - 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
bucketNameduring container discovery #30271: Azure Data Lake Storage ingestion now respects the configuredbucketNamefilter during container discovery. - Redshift Spectrum: map Hive types #29910: Redshift Spectrum now maps Hive-compatible types (
string,double,char,tinyint) instead of reportingUNKNOWN. - 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
BigIntegeridentity 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
AccessShareLockpromptly, 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-configto ingestion-base images #30264: Addedpkg-configto ingestion-base Docker images somysqlclientcompiles correctly from source. - Oracle: preserve CTAS
sqlQueryon lineage patch #29646: Oracle connector now preserves thesqlQueryon CTAS lineage patches and correctly parses stored procedure names. - dbt: populate
TestCaseResult.resultwith test message #29650:TestCaseResult.resultis 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
entityStatuscase-insensitively #29510: Glossary CSV bulk import now acceptsentityStatusvalues 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
DataInsightFormulaEvaluatorinstead 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
SUPERSEDEDinstead ofFAILURE. - Data Contract: fix NOT_IN JsonLogic multivalue fields #29003: Data Contract
NOT_INoperator now emits correct JsonLogic multivalue field expressions. - Fix
Table.schemaDefinitionsilently dropped on PUT #29441:Table.schemaDefinitionis no longer silently dropped when a full PUT update is performed. - Preserve
autoClassificationConfigon classification PUT #29735: A classificationPUTnow preserves the existingautoClassificationConfiginstead 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
fitViewnot centering the lineage DAG #30163: ThefitViewcall 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/eventsto prevent Java heap OOM #29958: The events endpoint now supports cursor-based pagination with an optionalendTsbound 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 memoryerror 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
Triggerin ingestionPipeline descriptor #29530: The ingestion pipelineTriggerfield is now exposed in the pipeline descriptor, andEditAllpermission 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
ValidationExceptionon 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
ownerNamefield #29899: Restored theownerNamefield 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
zcomponent is missing #29787: Pipeline version patching now defaults thezcomponent to 0 when it is absent, preventingNullPointerExceptionon 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.
PaginationCardWithControlscomponent #30379: Backported thePaginationCardWithControlscomponent to 1.13 for consistent paginated card layouts.- Fix
is_not_setsemantics for Owner/Domain/DataProduct filters #30439: Corrected theis_not_setfilter 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-bomto 4.1.135.Final. - Jackson-databind CVE-2026-54512/513/514 #29389: Bumped
jackson-databindfrom 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
wsto 8.21.0. - handlebars CVE-2026-55760 #29221: Bumped
handlebarsto 4.5.2 to patch a path-traversal vulnerability. - sudo CVE-2026-35535 #29343: Upgraded
sudoin the ingestion Docker image. - UI dependency vulnerability fixes #29223 #29241: Bumped
undici6.25.0 → 6.27.0,form-data,dompurify,markdown-it, andjs-yaml. - form-data bumped #29349: Updated the
form-datapackage to address reported vulnerabilities.
🤖 MCP (Model Context Protocol)
- MCP Registry publishing #27982: Added
server.jsonfor 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_metadataresponse 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_lineageMCP tool payload with a slim transform to reduce response size. - Compact create tool responses #28633:
create_metric,create_test_case, andcreate_glossary_termtools now return compact entity representations. - Slim root_cause_analysis payload #28632: Slimmed the
root_cause_analysistool payload to fit within LLM context limits. - Return similarityScore in search_metadata #28512:
search_metadataresults now include_scoreassimilarityScorefor relevance ranking. - Fix entityType filtering in search_metadata #28698: Resolved index routing by
entityTypeto prevent cross-type result leaks and hardened parameter validation. - Search test cases and test suites via search_metadata #28743:
search_metadatanow 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_detailsnow trims wide-table payloads (column descriptions, schema/model SQL) to stay within size budgets. - MCP OAuth login fix #29228: Fixed
/mcp/callbackhandling of the active-session shortcut and implicit-flowid_tokenreturned 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-indexesflag to the reindex CLI for backward compatibility. - Staged-index rescue uses index_total #29108: Uses
index_totalinstead ofdocs.countfor 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=-1from 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
allindex todataAssetfor 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
catalogIdtoget_tablesfor Athena S3 Tables enumeration. - Athena: ingest Iceberg table properties #27715: Ingests Iceberg table properties from the
$propertiesmetatable. - 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.jsonfiles are now ingested with real table columns instead of placeholder schema. - Upgrade collate-sqllineage #27413: Upgraded
collate-sqllineageto ≥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_TIMElookup to useSYS.TABLESwith uppercase catalog matching. - Unity Catalog: incremental extraction flag #28906: Added the missing
supportsIncrementalMetadataExtractionflag. - 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 withCustomSecretStr, 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.fullyQualifiedNameon 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
domainscolumn is added to the CSV format. - Show approve/reject buttons after Expand All #29295: The Expand-All tree fetch now requests the
reviewersfield 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
entityStatusso Data Insights charts can filter by lifecycle status. - Project tags to DI snapshot #29382: Projects
classificationTagsandglossaryTagsto 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 CONFLICTabort 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
nodeDepthon fetched nodes using the basenodeDepth. - Drop nodeDepth partitioning for ELK #29224: Dropped
nodeDepthpartitioning 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.offsetgaps 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.scheduleIntervalis 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
betweenoperator 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
showPaginationto 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.