Data Quality
Test cases, incidents, and the reporting surface all change shape in 2.0, and one documentation correction means test definitions that followed the 1.13 docs may already have been broken.Incidents move onto the Task entity
Breaking. Affects incident automation and feed-based incident integrations.
The test case resolution status time series is unchanged — it still drives incident state. What
changed is the task attached to it.
POST /v1/feed still accepts test-case-failure-resolution
task types, so existing integrations keep working, but new work should target /v1/tasks.
Two additive fields reduce round trips: incidentStatus is now inlined on TestCase (no extra lookup
per test case to render current incident status), and a new autoCloseIncident boolean (default
false, opt-in per test case) automatically resolves an open incident as AutoResolved when a
subsequent test result succeeds. The default is unchanged behaviour unless you opt in — 2.0 makes
auto-close available but doesn’t enable it retroactively.
Data Insights no longer computes data quality
Breaking. AffectsDataInsightsApplication configuration and Data Insights dashboards built on
the data quality module.
moduleConfiguration is additionalProperties: false, so any persisted configuration still
carrying the dataQuality key makes DataInsightsApplication fail to deserialize on startup. The
migration strips it from installed_apps, apps_marketplace and every application version row —
but if you manage application configuration as infrastructure-as-code, strip
moduleConfiguration.dataQuality yourself before replaying a 1.13 configuration into 2.0.
What replaces it: test case results and resolution statuses are read straight from their live search
indexes, which also drops the previous 30-day cap on incident data in Data Insights — incident
history is no longer truncated.
A documentation correction may surface already-broken tests
Not a behaviour change — a corrected description, but worth checking your test definitions. ThesqlExpression field’s description was wrong in 1.13: it said single-brace placeholders like
{table} and {column} were supported. The renderer is actually Jinja2 and has always required
double braces ({{ table_name }}, {{ column_name }}, {{ paramName }}). The renderer is identical
in both releases — single-brace placeholders never worked.
Multi-status test case filtering, and a stricter status parameter
Behavioural.GET /v1/dataQuality/testCases now binds testCaseStatus as a repeated
parameter (?testCaseStatus=Failed&testCaseStatus=Aborted), validated against the status enum — an
unknown value returns 400 listing the allowed values, where 1.13 tolerated an invalid status
silently. A single-value call is unchanged. In the UI, Test Cases, Test Suites, Test Definitions,
Incidents and the Data Quality Dashboard all move to a shared multi-select filter-chip pattern.
Reporting and search also gain additive capabilities in 2.0. A batch endpoint replaces N sequential
report calls:
key used to correlate it with its result in the response.
Separately, test suites and test cases are now vectorised for hybrid search, search_metadata can
search them, and orphan test cases no longer break search indexing.
Profiler sampling defaults to dynamic, and cardinality distribution is opt-in
Behavioural, with an accuracy implication for AI users. The profiler workflow now samples dynamically by default (sampleConfigType: DYNAMIC, sized from the
table’s row count) rather than reading 100% of rows. The sampling configuration schemas are
unchanged between 1.13 and 2.0 — set a static sample explicitly if you need full-table profiling.
columnProfile.cardinalityDistribution also moves from an inline object to a named schema
definition — the wire shape is unchanged, but regenerate specification-derived models if you consume
the raw schema.
Observability UI internals change for forks
Behavioural. Affects forks and plugin authors, not end users.ObservabilityRouterClassBase replaces the shared router utilities for data quality and observability
navigation, making them overridable by downstream distributions. Test case and bundle-suite forms
migrate from AntD Form to react-hook-form; EditTestCaseModal, EditTestCaseModalV1,
TestCaseForm, TestCaseFormV1 and BundleSuiteForm are removed. See
UI & Customization for the broader component
migration these fit into.