Release Notes - Datadios v1.12.0
Release Date: 2026-09-18 Release Type: Minor Released By: DataDios Team
⚠️ Breaking Changes
Password logins now require a second factor
Every account that signs in with an email and password is now asked for a 6-digit code after the password is accepted. The first time an existing user signs in after this upgrade, they are walked through enrolling an authenticator app before they can continue — there is no separate profile page to visit first.
Before you upgrade, confirm your deployment can send mail. By default enrolment begins by emailing a code to the address on the account, to prove the account is theirs before an authenticator is attached to it — so a deployment that cannot send mail cannot enrol anyone.
DataDios sends mail through the Microsoft Graph API only; there is no SMTP option. It needs AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET for an Entra ID app registration holding the Mail.Send application permission, and SENDER_EMAIL set to a licensed mailbox in that tenant to send as. If your deployment has no Entra tenant to send from, set MFA_ENROLL_EMAIL_VERIFICATION=false and enrolment goes straight to the QR code. Be aware that a deployment which cannot send mail also cannot deliver the Email me a code sign-in option, whatever that setting says, so recovery codes become your users' only fallback if they lose their authenticator.
By default an enrolled user can also choose Email me a code instead of their authenticator at any later sign-in, so the second factor is only as strong as the mailbox behind it. Set MFA_EMAIL_LOGIN_CODE_ENABLED=false to require the authenticator.
Accounts that sign in through Google or Azure are unaffected — your identity provider is already the second factor, and that path is unchanged.
Read Two-Step Authentication before you upgrade. It covers every setting and its default, recovery codes, how to reset a user who has lost their device, and a staged rollout that turns the feature on without forcing everyone into it the same day. How to Use below is only what a user sees at their next sign-in.
What's New
🚀 New Features
SQL Server Agent jobs in the Explorer
SQL Server data sources now discover their Agent jobs. The jobs appear in the Explorer under a SQLAgent node alongside the database's schemas, each carrying its schedule, its recent run history, and the command its steps execute — so a job that populates a table is visible next to the table it populates.
Available in the new UI only.
Browse the messages inside a queue
A PGMQ data source used to list only the queues themselves. You can now expand a queue in the Explorer and page through the individual messages it holds, with pending and archived messages shown as separate groups so you can tell at a glance what has been processed and what is still waiting.
Anomaly insights on workload metrics
Workload metrics now surface anomalies: a value that departs from its own recent pattern is called out with the dimension responsible, the expected range, and a plain description of what moved. Daily, weekly, and monthly granularities each use their own history window, and a metric without enough history yet is reported as still warming up rather than as normal.
Available in the new UI only.
On-prem images serve both interfaces
The on-prem image now ships both interfaces instead of being built for one or the other. The previous interface stays where it has always been, at the root URL, and the new interface is served alongside it under /legacy/ — so existing bookmarks keep working unchanged, and users can try the new interface at their own pace rather than on the day you upgrade.
One limitation while the new interface sits under a path rather than at the root: Google and Microsoft sign-in are hidden there, because the redirect URI those providers accept has to be registered against the exact path the app runs at. Users reach the new interface with an email and password. If you need single sign-on there, register the /legacy/ redirect URI with your identity provider and set VITE_REDIRECT_URI (Microsoft) or VITE_GOOGLE_REDIRECT_URI (Google) on the build. Nothing changes for a single-interface deployment.
Edit an email alert channel
Alerts → Channels previously offered only mute and delete, so changing a recipient list meant deleting the channel and recreating it — which also dropped it from every rule routed through it. Channels now have an edit action that keeps the channel, and its rules, intact.
Available in the new UI only.
Create folders in a Local Folder data source
The Create Item form on a Local Folder data source now offers a folder as well as a file, so you can lay out a directory structure without uploading a placeholder file into each level.
⚡ Enhancements
SmartDiff pickers put the data sources you use at the top
The source and target pickers now sort by category, name, or newest, order alphabetically within each provider group, mark the data sources that were shared with you, and rank by how recently you actually ran a comparison against each one.
Available in the new UI only.
Search inside a data source in the Explorer
The Explorer's search box used to disappear as soon as you clicked into a data source, leaving no way to find an object in a large one. It now stays, and searches within whatever you have drilled into.
Available in the new UI only.
Select many entities at once in the lineage catalog
The entity catalog table gained row checkboxes and a bulk toolbar, so adding a set of entities to a group, or editing their attributes, is one action instead of one per entity.
Available in the new UI only.
Smaller hybrid search indexes
Embedding vectors were being stored twice per record — once in the search structure and again as text. Removing the duplicate copy cuts the size of a hybrid search index by roughly four times, with no change to what search returns.
Alert channels can no longer share a label
Renaming a channel to a label another channel already uses is now rejected, the same way creating a duplicate always was. Two channels with the same label were ambiguous everywhere the label was shown.
Oracle Active Session metrics no longer chart identifiers
The Oracle Active Session workload metric set counted eight identifier and hash columns — session ids, object ids, block hashes — as measurements. They are no longer offered as metrics; the thirteen genuine measurements in that set are unchanged.
🔧 Bug Fixes
Large data source refreshes now finish
A SQL Server source with several thousand objects could refresh forever, sitting at 95% and republishing the same catalog on a loop. A paged PostgreSQL refresh could quietly leave objects out and still report success, marking the objects it skipped as missing. Both are fixed: pages are now read by key rather than by skipping rows, so cost no longer grows page over page, and a refresh reports the objects it actually read.
A refresh that died no longer looks like one that is running
If a refresh job stopped unexpectedly, its status stayed at "in progress" indefinitely and nothing distinguished it from healthy work. A job that dies now records that it died, so the status you are polling reflects reality.
Scheduled jobs no longer skip forever after an interrupted run
A scheduled job whose previous run was left in a running state was skipped on every subsequent tick, silently and permanently. Runs left behind by a restart are now closed out, and the schedule resumes.
Six Data Quality dashboard panels returned an error
Six panels on the Data Quality screens had been failing on live tenants. They now load.
The Explorer's Queries tab returned an error
The Queries tab failed to open on deployments that had already taken an earlier upgrade. It now opens.
Lineage builds failed on newer tenants
Any tenant created after a particular schema version was missing a view the lineage build depends on, so its builds failed outright and its graph stayed empty. The view is now created at signup and has been backfilled for existing tenants.
Lineage review showed the wrong child count and no replacement candidates
A missing table in the review queue reported "1 children" no matter how many columns it had, and the suggested-replacement panel showed an error instead of candidate evidence for every missing entity. Both now show the real values.
Available in the new UI only.
The SmartDiff dashboard stayed stale after a run
Completing a comparison did not refresh the dashboard's cached results, which could keep showing the previous state for up to 24 hours. Finishing a run now invalidates that cache immediately.
Hybrid search missed records after an outage
If the search indexer fell behind — for example while a consumer was down — the catch-up pass could run out of time and drop the backlog, leaving records permanently absent from search results. The pass is now resumable: it continues from where it stopped, and only advances once it has fully drained.
Parquet files in Azure Blob Storage failed to read
A corrupt or truncated Parquet file produced an unhandled error that failed the whole read instead of being reported against the one file. The error is now caught for real.
Scheduling survives a brief database blip
Recording a job's next run time failed outright on a transient database connection error, rather than retrying the way the sibling write path already did.
A deleted tenant could take the platform down
A background migration opened a connection for every tenant recorded in configuration, including ones whose tenant no longer existed, and failed the request. It now skips tenants that are gone.
The server no longer silently runs out of file handles
Under sustained load the server could exhaust its file-descriptor budget and fail requests in ways that did not point at the real cause. Limits were raised and the condition is now reported plainly, including through /admin/health, which returns an overloaded status instead of reporting healthy.
Workload runs no longer report a false failure
A workload association run with nothing new to process reported itself as failed rather than as up to date.
Workload chart export works again
Exporting a chart from the workload screens had stopped working.
Available in the new UI only.
Table columns and dark mode in Manage and Sources
Hiding a column in the Sources table left the remaining columns unevenly sized. In Manage → Users, the Access tier dropdown rendered white-on-white in dark mode, and a disabled "Account type" field that never did anything has been removed.
Available in the new UI only.
The Identity & access guide link went nowhere
Manage → Identity & access → "Read the Identity & access guide" opened a blank page. The guide is now registered and the link resolves.
Available in the new UI only.
Local Folder rejection messages, and the Explorer's root-level type filter
Trying to create an unsupported file said only that a narrow set of formats — CSV, TSV, JSON and a few others — was allowed, which was not the rule being applied. The message now states the real one: binary, media, archive and executable formats are rejected because they cannot be viewed in the platform, it names the extension you tried and the full list that is blocked, and it says that text-based and structured formats such as CSV, JSON, PARQUET, XLSX, PDF, DOCX, TXT and XML are accepted.
Separately, filtering the Explorer tree by object type from the root-level group listed matching objects from every level of the tree instead of just the root. It now shows only what is actually at the root.
🔒 Security
Deleting a user or tenant now removes their search indexes
User and tenant deletion cleaned up the databases but left that principal's hybrid search indexes on the cluster indefinitely. Deletion now removes them.
LLM usage metrics are scoped to one tenant and user
The usage extraction that builds LLM cost and volume metrics read from a file shared by every tenant and kept rows with a blank user, so a tenant's usage view could include activity that was not theirs. Extraction now filters on both tenant and user, and rows with no owner are dropped. That file carries usage counts and identity only — no prompt or response content was involved.
Snowflake private keys are no longer shown in the connection form
Opening a Snowflake data source that uses key-pair authentication rendered the stored private key as plain text inside the upload area of the edit dialog. The form now shows that a key is on file without displaying it.
This fix has landed in the new UI. The previous interface still displays the key in that dialog, so until it is fixed there, treat the Edit dialog of a key-pair Snowflake source as showing a secret: do not open it on a shared screen, and rotate the key if it has been seen.
A reserved operations account can no longer be impersonated by case
The platform operations account is now bound to a reserved identity, closing a gap where an account registered with a different capitalisation of the same address could inherit its two-step-authentication exemption.
How to Use
Set up two-step authentication
- Sign in with your email and password as usual. Setup starts straight away and cannot be skipped.
- Confirm it's you. A 6-digit code is emailed to the address on your account. Enter it. (Some deployments switch this step off and go straight to the next one.)
- Scan the QR code with an authenticator app — Google Authenticator, Microsoft Authenticator, Authy, 1Password, Bitwarden, or any other TOTP app. If it will not scan, use Copy setup key and type the key in by hand.
- Enter the 6-digit code your app now shows, to confirm it works.
- Save your recovery codes. They are shown once and cannot be retrieved later, each works once, and they are the only way back into your account if you lose your authenticator — there is no self-service reset, so without them you have to ask an administrator. Copy them somewhere separate from your phone before you continue.
At every later sign-in, enter the current code from your authenticator app after your password. Unless your administrator has turned it off, you can choose Email me a code instead.
Two-Step Authentication has the rest: what to do if a code is rejected, how to sign in with a recovery code, and what to ask an administrator for if you have lost both.
Upgrade Instructions
Deployment
Pull the latest Docker image.
Post-deployment
- Confirm mail is configured and working before letting users sign in — two-step enrolment depends on it by default. DataDios sends only through the Microsoft Graph API, so this means
AZURE_TENANT_ID,AZURE_CLIENT_ID,AZURE_CLIENT_SECRETandSENDER_EMAIL;MFA_ENROLL_EMAIL_VERIFICATION=falseis the supported alternative if you have no Entra tenant to send from - Decide whether to allow an emailed code as a second factor at sign-in, or require the authenticator with
MFA_EMAIL_LOGIN_CODE_ENABLED=false - Refresh the browser after upgrade
- Tell your users that their next sign-in will ask them to enrol an authenticator app, and that the recovery codes shown during setup are the only way back in if they lose their device
- On-prem deployments: existing links and bookmarks keep working — the previous interface stays at the root URL. The new interface is the addition, served under
/legacy/, where Google and Microsoft sign-in are unavailable unless you register that path's redirect URI with your identity provider
Known Issues
Nested folders in a Local Folder data source: creating a folder inside an existing folder can place it at the wrong level. Creating folders at the top level works as expected. A fix is in the next release.
Support
For technical questions or issues, please contact our support team.
Released by Team Datadios | Document version: 1.0