---
description: "DataHub Cloud v0.3.17 release notes from April 2026 with Slack optional scopes, documentation patch APIs, and Redshift assertion fixes."
---

# v0.3.17

### v0.3.17.5

Patch release on top of **v0.3.17.4-acryl**.

#### Release availability date

27-Apr-2026

#### Recommended versions

- **CLI/SDK**: 1.5.0.13
- **Remote Executor**: v0.3.17.5-acryl
- **Helm**: 1.6.108

#### Bug Fixes

- **Executor Dependency Bump:** `acryl-datahub` dependency bumped to `1.5.0.13` to address transient assertion "source connection" errors during concurrent evaluation.

### v0.3.17.4

Patch release on top of **v0.3.17.3-acryl**.

#### Release availability date

22-Apr-2026

#### Recommended versions

- **CLI/SDK**: 1.5.0.13
- **Remote Executor**: v0.3.17.4-acryl
- **Helm**: 1.6.107

#### SDK / Patch APIs

- **Python & Java patch clients:** New `add_documentation` / `remove_documentation` patch helpers (documentation patch template is now available on most asset types).

#### Slack integration

- **Dynamic optional scopes:** `channel history`, `group history`, and `im history` scopes are now registered as **optional** unless the "store conversations from Slack" feature flag is enabled, aligning with Slack's new [optional scopes model](https://docs.slack.dev/changelog/2026/03/16/optional-scopes/) so installs no longer require these scopes by default.

#### Bug Fixes

- **Remote executor (Redshift assertions):** Fixed `SOURCE_CONNECTION_ERROR: 'Connection' object has no attribute 'closed'` for Redshift assertions that were querying the warehouse.

### v0.3.17.3

Patch release on top of **v0.3.17.2-acryl**.

#### Release availability date

17-Apr-2026

#### Recommended versions

- **CLI/SDK**: 1.5.0.8
- **Remote Executor**: v0.3.17.3-acryl
- **Helm**: 1.6.88

#### Security

- **Security and dependency hygiene:** Raised Python dependency floors and refreshed lockfiles for the remote executor and integrations service, including **LiteLLM** (≥1.83.0) for CVE-2026-35030, **pyarrow** for CVE-2026-25087, plus **tornado**, **pillow**, and related alignment with bundled images. Bumped **Jetty** and refreshed Gradle lockfiles.
- **Authentication:** Removed use of the deprecated `corpUserInfo.active` flag for session eligibility and cleaned up related login behavior for inactive users (CUS-8505).
- **Ingestion:** Upgraded **sqlglot** to v30.0.3 with v30 API compatibility fixes.
- **Integrations service:** Bumped **mlflow** to 3.11.1 with more robust ML tracing teardown, plus dependency updates (**fastmcp**, **observe-models**, and related integration service bumps).

### v0.3.17.2

Patch release on top of **v0.3.17.1-acryl**.

#### Release availability date

8-Apr-2026

#### Recommended versions

- **CLI/SDK**: 1.5.0.8
- **Remote Executor**: v0.3.17.2-acryl
- **Helm**: 1.6.64

#### Bug Fixes

- **Remote executor**: Bundled **acryl-executor** is **0.3.5.1** (was 0.3.5). Capability checks for ingestion features no longer use a fixed subprocess timeout, so slow cold starts are less likely to fail those checks.

### v0.3.17.1

Patch release on top of **v0.3.17-acryl**.

#### Release availability date

7-Apr-2026

#### Recommended versions

- **CLI/SDK**: 1.5.0.3
- **Remote Executor**: v0.3.17.1-acryl
- **Helm**: 1.6.64

#### Product

- **Assertions & data health UI**: Filter assertions by **tags** and differentiate Custom assertions by **customType** in the Quality tab; monitor **error messages** are truncated to a safe maximum length before storage so oversized failures cannot break writes.
- **Data health UI**: Filter incidents by assignee.
- **Governance inbox (action requests)**: **Scroll-based pagination** for very large inboxes so listing is not capped by Elasticsearch deep-offset limits.
- **Sessions & access**: Browser session issuance now respects the same “active user” rules as the rest of the platform (for example **suspended**, **soft-deleted**, **not provisioned**, or **inactive** users do not receive a new session token).
- **Microsoft Teams**: When enabled via feature flag, the Teams integration page can offer a **downloadable Teams app package** (.zip) with a link to the [managed DataHub Teams setup guide](https://docs.datahub.com/docs/managed-datahub/teams/saas-teams-setup).

#### Platform

- **Remote executor & images**: **Wolfi**-based service images, updated **bundled Python venv** policy for the executor, and executor **CLI 1.5.0.3** (see recommended versions above).
- **Telemetry & REST**: Minor usage/telemetry and REST logging adjustments aligned with session and auth changes.
- **Search (V2.5)**: Faster, more relevant search via pipeline and ranking updates—including supplementary query handling, tag-aware rescoring, and stronger demotion of obvious non-production and “backup”-style assets—plus synonym tuning.
- **Lineage graph**: More reliable parallel graph fetches (configurable wait when draining slice work; safer handling when some slice futures finish partially).

#### Ingestion

- **BigQuery (ingestion & Observe-related paths)**: Google clients are built with **explicit service-account credentials** so concurrent jobs in one process no longer race on the shared `GOOGLE_APPLICATION_CREDENTIALS` environment variable.

#### Security

- Additional **dependency and CVE-driven** updates across Java and Python stacks (for example stricter Python floors, Amazon Ion / `ion-java`, and Authlib for SAC).
- OIDC: Stop exposing the client secret via GraphQL (use hasClientSecret only) and fix SSO save errors by omitting read-only fields from the update mutation.

#### Bug fixes & polish

- **UI**: Square favicon, documentation/summary widgets (**file uploads**, editor **toolbar focus**), and catalog titles for sample content without a misleading `sample_data` prefix where applicable.
- **GMS / GraphQL**: Safer handling of assertion aspects when envelope payloads are missing (avoids null failures in assertion flows).
- **Databricks Freshness Assertions** that used `Audit Log` as the change source are now fixed.
- **Smart Assertions**: Volume and column metric assertions correctly apply floors and ceilings to their predictions based on what makes sense for that metric.

#### Breaking changes

- **None beyond** those already listed under **v0.3.17**. Customers moving from **v0.3.17-acryl** to **v0.3.17.1-acryl** should still satisfy all v0.3.17 requirements (token signing keys, Python 3.10+, theme V2, and so on).
- GraphQL OidcSettings.clientSecret field replaced with hasClientSecret: Boolean to prevent exposure of OIDC secret; mutation field is now optional to preserve existing secrets.

---

## Release Availability Date

24-Mar-2026

**Recommended Versions**

- **CLI/SDK**: 1.4.0.9
- **Remote Executor**: v0.3.17-acryl
- **Helm**: 1.6.64

## Known Issues

- Async APIs - DataHub's asynchronous APIs perform only basic schema validation when receiving MCP requests, similar to direct production to MCP Kafka topics. While requests must conform to the MCP schema to be accepted, actual processing happens later in the pipeline. Any processing failures that occur after the initial acceptance are captured in the Failed MCP topic, but these failures are not immediately surfaced to the API caller since they happen asynchronously.

## Release Changelog

---

### v0.3.17

- This contains detailed release notes. Read the highlights in this [v0.3.17 blog post](https://datahub.com/blog/datahub-cloud-v0-3-17/)
- All changes in [https://github.com/datahub-project/datahub/releases/tag/v0.14.1](https://github.com/datahub-project/datahub/releases/tag/v0.14.1)
  - Note Breaking Changes: [https://datahubproject.io/docs/how/updating-datahub/](https://datahubproject.io/docs/how/updating-datahub/)

**Breaking Changes:**

- **Deprecation** We're sunsetting 'Bulk Create' on the data health dashboard, in favor of the new 'Monitoring rules' automation. This can be toggled on via `observability.assertion_monitoring_rules` helm flag. This requires `online_smart_assertions` to be enabled, and the user to have the `MANAGE_TESTS` privilege.
- Hardcoded token signing keys have been removed for improved security. Deployments must now configure explicit signing key secrets.
- Python 3.9 support has been dropped; Python 3.10+ is now required.
- **Security Fix** The default signing key and salt values present in application.yaml used in [Metadata Service Authentication](https://docs.datahub.com/docs/authentication/introducing-metadata-service-authentication#configuring-metadata-service-authentication) have been removed. The application now requires these values to be provided via env variables DATAHUB_TOKEN_SERVICE_SIGNING_KEY and DATAHUB_TOKEN_SERVICE_SALT to the GMS deployment, consumers and other related services and jobs. IMPACT:

  - Existing browser sessions from before the upgrade, maybe invalidated and a relogin is needed.
  - PAT (Personal Access Token) Changes:
    - If you’re using default token signing key and salt (not overridden): Existing PATs will stop working after upgrade due to updated signing keys. You’ll need to regenerate them. See backward compatibility notes for details.
    - No impact if: You’ve already overridden the default token signing key and salt with custom values or using DataHub Cloud

  ACTION:

  - Please update your DataHub helm charts to the recommended version or above before deploying the new release.
  - If you are not using the DataHub helm charts to deploy, then ensure that the above variables are set in your GMS deployment and related jobs.

    If the values are not set correctly you may see an error like below in your service logs.

    ```
    authentication.tokenService.signingKey must be set and not be empty
    ```

    or

    ```
    authentication.tokenService.salt must be set and not be empty
    ```

    :::note For backward compatibility you can set the value of these variables to the previous default values defined [here](https://github.com/datahub-project/datahub/blob/4efc55ccb469c5480c5bb45c17b933c590f18788/metadata-service/configuration/src/main/resources/application.yaml#L26). This is not recommended though, and it is advised to regenerate new tokens with updated keys as soon as possible. :::

**Deprecations & Sunsets**

The V1 UI theme is now officially sunset. All new features and patches going forward will be on the V2 UI (`THEME_V2_ENABLED=true`). If you are a customer of DataHub Cloud, or started using DataHub after February 2025 (or kept your clone/fork's environment variables in-sync with upstream since then), then this is already your default experience and you do not need to change anything. To ensure you are experiencing the latest features of DataHub, please ensure the following GMS environment variables are set

```
THEME_V2_ENABLED=true
THEME_V2_DEFAULT=true
THEME_V2_TOGGLEABLE=false
```

or via helm chart in your `values.yaml`

```
datahub-gms:
  theme_v2:
    enabled: true
    default: true
```

Going forward, the V1 theme and associated code will be actively removed. This will help improve UI performance and simplify the codebase for contributors.

**Product**

- [NEW] Support for adding a data asset to multiple data products
- [NEW] **Monitoring Rules**: Setup freshness, volume, and schema anomaly monitoring rules across datasets in a few clicks. When new datasets appear in the predicate, they will automatically be monitored too.
- [NEW] **Time-Series Bucketed Assertions**: Group your data into a time series to perform data quality checks at a day or week granularity.
- [NEW] **Backfill Assertion History** - Backfill historical data into your smart assertions, to generate accurate predictions faster, and understand daily, weekly, or monthly seasonality.
- [NEW] **Ask DataHub Plugins**: Private beta support for external MCP plugins to enable Ask DataHub to interact with Snowflake, GitHub, Databricks, BigQuery, and more. Includes support for OAuth discovery, Dynamic Client Registration, and redesigned plugin configuration flow. Read more [here](https://docs.datahub.com/docs/features/feature-guides/ask-datahub-plugins/overview).
- [NEW] **Ask DataHub Sidebar Chat History**: Support for multiple simultaneous chat tabs with conversation history dropdown, favorites, entity linking, and ingestion source linking
- [NEW] **Ask DataHub Chat Modes**: Support for different AI chat modes
  - **Fast**: Optimizes for fast responses & less thinking
  - **Auto**: Decides whether to do deep research or answer quickly based on the question.
  - **Research**: Does research and planning before answering the question.
- [NEW] **Ask DataHub View Selector**: Add view selector to chat input for scoped questions and answers.
- [NEW] **Context Documents**: Automatic semantic indexing of DataHub Context Documents on an hourly banner.
- [NEW] **Service Accounts**: Introducing support for creating named service accounts and generating access tokens. Read more [here](https://docs.datahub.com/docs/features/feature-guides/service-accounts).
- [NEW] **Maintenance Window Banner**: API and UI for displaying maintenance window notifications (e.g. upgrades, etc)
- **Important**: Requirement for Slack per-user OAuth binding for notifications ("Connect to Slack"). This means users will require to bind their Slack account to their DataHub account to interact with Ask DataHub, use slash commands, or resolve incidents from Slack. Learn more in the App Setup Guide.
- We are temporarily removing support for creating new smart assertions for field metrics that are not measuring row counts. The supported metrics for smart assertions are now: null_count, unique_count, empty_count, zero_count, negative_count. Any existing smart assertions running against other metrics will remain operational. If you are currently using a percentage-based metric, we recommend switching to its count-based equivalent:
  - `null_percentage` → `null_count`
  - `unique_percentage` → `unique_count`
  - `empty_percentage` → `empty_count`
  - `zero_percentage` → `zero_count`
  - `negative_percentage` → `negative_count`
- Assertions now better communicate errors they run into during their operations, and recommend actions you must take to repair them.
- Redesigned Create View modal with Alchemy components
- Support multiple tabs and maintain chat history for embedded Ask DataHub chats on asset profile pages and in ingestion UI
- Redesigned Manage User UI
- Redesigned ingestion page shown by default with new navigation buttons, connection details, run details, and structured reports
- Support for keypair authentication in Snowflake ingestion form
- Add ability to target assets for policies based on Glossary Terms and Groups
- Include child domains in policies targeting assets underneath a domain
- UX polishes to ingestion page including filters, sorting, run details, and caret icons
- Add env-variable support for Slack Socket Mode to enable Slack app usage within Airgapped environments (required CS configuration)

**Platform**

- MCE/MAE consumer startup speed improvements
- Retention moved to system-update with optimized delete and query operations
- TLS restricted to 1.2+ in frontend
- Spring Boot 3.5.6, Spring 6.2.13, Jetty 12.0.32 upgrade
- Java bytecode standardized to Java 17
- Agent context kit: dataset assertions, data product entities, owners, related docs, SQL search filters, save_document tool

**Ingestion**

- [NEW] Connectors for the Microsoft Fabric ecosystem, including **Fabric OneLake, and Azure Data Factory.**
- [NEW] Snowplow Connector
- [NEW] Apache Doris Connector
- [NEW] Google Dataplex connector
- Support for convert_urns_to_lowercase in dbt ingestion
- Support for convert_column_urns_to_lowercase in BigQuery ingestion
- Snowflake: metadata pattern pushdown, table type filtering for performance, semantic view ingestion (usage stats, dbt support), external DMF assertion ingestion, retry logic for stability, retention time property
- BigQuery: sharding optimizations, pushdown allow/deny usernames for server-side filtering
- Oracle: stored procedure lineage with improved PL/SQL parsing, XMLTYPE and geospatial column recognition
- MSSQL: extension for query lineage parsing, auto-enable use_odbc for mssql-odbc
- PostgreSQL: lineage support from query history
- Hive: Kerberos QOP configuration for Thrift connections
- ClickHouse: column-level lineage support
- Kafka Connect: MongoDB column-level lineage
- Sigma: workbook filtering, default_db and default_schema config, retry logic for 429/503
- Teradata: ownership extraction from table and view creators
- DynamoDB: AWS resource tag ingestion, configurable maxitems
- Fivetran: configurable ingestion limits
- Qlik Sense: enforced scoped ingestion to eliminate full environment scans
- dbt: support for ingesting exposures, source freshness assertions, Query entities from meta.queries field
- Airflow: multi-statement SQL parsing for lineage extraction, Airflow 3 distributed deployment support
- PowerBI: DirectLake lineage extraction for Microsoft Fabric, Government Users support, DataPlatformInstance aspect for recursive deletion
- Databricks: OAuth and unified auth support, separate connection per profiling thread
- Iceberg: sizeInBytes profiler support
- LookML: fixed project_dependencies union deserialization and config validation
- Custom SQLAlchemy-based profiler to eventually replace Great Expectations profiler
- SDK: Column value assertion SQL parameter support, automatic lineage parsing from view definitions
- CLI: add --env option to ingest deploy command, extra-pip & extra-env options in config file, init command made agent-friendly for automation
- Dataplex: streamlined ingestion, added platform logo
- Ingestion: TransparentSecretStr for safe credential serialization, trace ID logging to REST emitter, set_attribution transformer with GenericJsonPatch support

**Bug Fixes**

- Fixed JSON parse error in HoverCard causing Summary Panel crashes
- Fixed "View is applied" indicator showing when no view is active
- Fixed ingestion source save button not working when no fields were changed
- Fixed column field paths normalization in column-level lineage existence check
- Fixed aspect ratio for lineage platform icons
- Fixed discrepancy with count in entities per platform chart
- Fixed UI bug not showing users in queries tables
- Fixed policy view-only modal missing glossary section
- Fixed scrolling on create/edit policy modal
- Fixed displaying defaults for OIDC config settings
- Fixed schema field level lineage search on nested columns
- Fixed asset download queries not applying filters and downloading all assets
- Fixed ingestion source listing consolidation and inefficiencies in executor
- Fixed document editor toolbar disappearing when clicked
- Fixed search bar to retain query and suggestions after selecting an entity
- Fixed Preset/Superset dashboard lineage and database alias transformation
- Fixed PowerBI ODBC upstream lineage mapping and SQL parsing issues
- Fixed PowerBI user profile overwrites with create_corp_user flag
- Fixed Snowflake quoting issues in ingestion
- Fixed Snowflake 2026_01 BCR property format change in DDL lineage
- Fixed Looker URL generation with extra forward slash
- Fixed Tableau custom SQL query display names to use datasource name
- Fixed Tableau field extraction when column metadata is missing for table-level lineage
- Fixed Oracle profiling crashes and silent table exclusions
- Fixed Oracle database name retrieval when using service_name with ALL mode
- Fixed Redshift boundary-aware segment stitching for query reconstruction
- Fixed Teradata view HELP commands by setting DATABASE context
- Fixed ClickHouse lineage to include dictGet() table references
- Fixed ClickHouse direct SRC→TO lineage for materialized views with TO clause
- Fixed MSSQL stored procedure lineage extraction
- Fixed MSSQL SQL parser to split statements when previous expression ends with parentheses
- Fixed SQL parser migration from sqlglot[rs] to sqlglot[c] with runtime patches
- Fixed Dagster job URL derivation from location_name
- Fixed Dagster preservation of DataJob lineage on failed/canceled runs
- Fixed Airflow Airflow 2/3 Asset support
- Fixed Airflow cluster environment for dataset URNs in lineage
- Fixed Airflow DataFlow emission from task handler in Airflow 3 distributed deployments
- Fixed Fivetran Databricks auth issue and missing databricks-sdk dependency
- Fixed dbt handling of null error_after criteria in source freshness assertions
- Fixed Kafka Connect to use canonical 'mssql' platform for Debezium SQL Server SchemaResolver
- Fixed S3 connector to disable Avro schema name validation
- Fixed Looker SDK not clearing LOOKERSDK_CLIENT_SECRET env var after init
- Fixed Metabase compatibility with 0.57+ via legacy-mbql parameter
- Fixed Snowplow connector missing cachetools dependency
- Fixed ingestion preventing platform instance duplication in browse paths
- Fixed ingestion preventing partial entity sync in DataHub source using URN pattern filtering
- Fixed ingestion preventing changing of source type for existing ingestion sources
- Fixed ingestion handling of oversized viewProperties
- Fixed ingestion restoring state for query and filter after source updating
- Fixed duplicate document creation on page refresh
- Fixed OpenAPI scroll endpoint not mutating default search flags
- Fixed structured properties allowing updates for properties with badge enabled
- Fixed lineage index backfill filter efficiency
- Fixed lineage module to show custom annotation nodes
- Fixed lineage graph rendering issues (breaks lineage module)
- Fixed assertions preventing deleted assertions from being executed
- Fixed stale monitor errors being cleared
- Fixed observe field metric evaluation zero rows handling
- Fixed MAE interaction with ES8 data streams
- Fixed system-update data stream API for Elasticsearch data stream creation
- Fixed search suggestion parsers registration in ES8 XContent registry
- Fixed search sanitizing base64 images from search index to prevent indexing failures
- Fixed sign-up flow where user invite tokens by email were invalidated when new token created
- Fixed tokens from being verified on /public calls
- Fixed Ask DataHub not using default view
- Fixed chat URN links in user messages opening to blank page
- Fixed chat filtering empty New Chat entries from conversation list
- Stability and error message improvements for AI docs generation
- Various security CVE fixes across multiple dependencies (Jackson, commons-compress, lz4-java, snappy-java, Velocity, cryptography, jinja2, Spring Boot, Jetty, and more)
