Skip to main content

Data Quality & Observability

Test cases, incidents and the reporting surface all change shape in 2.0.

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 that hangs off it.
POST /v1/feed still accepts test-case-failure-resolution task types, so existing integrations keep working. New work should target /v1/tasks.
The migration also corrects the recognizer feedback task type and re-points mention alerts at the task resource so incident-task comment mentions and assignee alerts keep firing.

incidentStatus is inlined on TestCase

Additive. Removes a lookup per test case.
Drop the per-test-case incident-status round trip in list views. The field is populated on the test case itself.

Incident auto-close on test pass

Additive and opt-in per test case.
When enabled and a subsequent result succeeds, OpenMetadata finds the open TestCaseResolution task for the test case, rehydrates it so workflow transitions are available, and resolves it as Completed with reason AutoResolved, acting as the governance bot.
The default is false, so behaviour is unchanged unless you opt in. In 1.13 an incident stayed open indefinitely after the underlying failure was fixed. 2.0 makes auto-close available but does not enable it retroactively.

Multi-status test case filtering

GET /v1/dataQuality/testCases binds testCaseStatus as a repeated parameter:
Values are validated against the status enum and an unknown value returns 400 listing the allowed values. Previously an invalid status was tolerated. In the UI, the Test Cases, Test Suites, Test Definitions, Incidents and Data Quality Dashboard pages all move to the shared filter-chip pattern, with multi-select on Platform, Status and Tags, searchable Table, Tags, Service and Data Product filters, and a date control for Last Run.

Batch data quality reporting

Additive. Replaces N sequential report calls.
Each request carries a client-supplied key used to correlate it with its result in the response.

Data Insights no longer computes data quality

Breaking. Affects DataInsightsApplication 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 deserialise on startup. The migration strips it from installed_apps, apps_marketplace and every application version row. What replaces it: test case results and resolution statuses are read straight from their live search indexes, which search indexing now owns. This also drops the previous 30-day cap on incident data in Data Insights — incident history is no longer truncated.
Do not replay a 1.13 Data Insights application configuration into 2.0. Strip moduleConfiguration.dataQuality before pushing stored configuration through the API or your infrastructure-as-code.
Related Data Insights fixes in 2.0:
  • A chart metric with no function or formula returns 400, not 500.
  • Chart formulas are validated by the Data Insights formula evaluator, not the policy validator.
  • entityStatus is snapshotted so charts can filter by lifecycle status.
  • classificationTags and glossaryTags are projected into the snapshot.
  • Nested subfields are no longer advertised as chart fields.
  • Enricher step failures are isolated, with per-step entity statistics.

Custom SQL test definitions — documentation correction

Not a behaviour change — a corrected description.
The sqlExpression description was rewritten in 2.0:
Supports substitution variables: {table} and {column} for runtime entity references, and {{paramName}} for user-defined parameters.
The renderer is identical in both releases — single-brace placeholders never worked. If you followed the 1.13 documentation and wrote {table}, your test was already producing invalid SQL.
Audit custom SQL test definitions for single-brace placeholders and convert them to {{ table_name }} and {{ column_name }}.

Profiler & sampling

Cardinality distribution is no longer part of the Profiler agent defaults. If you rely on distinct value distributions — in dashboards, in downstream analytics, or to feed an AI agent — add the metric back explicitly on the profiler agent.
The profiler workflow samples dynamically by default rather than reading 100% of rows. sampleConfigType defaults to DYNAMIC, which sizes the sample from the table’s row count. Set a static sample explicitly if you need full-table profiling. The sampling configuration schemas are unchanged between 1.13 and 2.0.
2.0 adds:
  • Progress tracking for the profiler and auto-classification workflows.
  • The sample configuration is used for data quality sample data ingestion.
  • tableCustomSQLQuery honours computePassedFailedRowCount.
  • The sampler interface collapses to a single typed configuration object — relevant if you maintain a custom sampler.
columnProfile.cardinalityDistribution moves from an inline object to a named schema definition. The wire shape is unchanged; regenerate specification-derived models.
Additive. Test suites and test cases are vectorised for hybrid search, search_metadata can search them, and orphan test cases no longer break search indexing.

Observability UI

Behavioural. Affects forks and plugin authors.
  • ObservabilityRouterClassBase replaces the shared router utilities for data quality and observability navigation paths, making them overridable by downstream distributions.
  • Test case and bundle-suite forms migrate from AntD Form to react-hook-form with reusable field docs. EditTestCaseModal, EditTestCaseModalV1, TestCaseForm, TestCaseFormV1 and BundleSuiteForm are removed.
  • Incident test-case status and severity components move to the shared core components.
  • Data quality dashboard hooks and presentational components are extracted and shared.
Forks that imported EditTestCaseModal, TestCaseForm or BundleSuiteForm directly must move to the new hook-and-component split. See UI, Personas & Customization.