Data Quality App

User guide for the Data Quality App by Techdio ApS, for Microsoft Dynamics 365 and Dataverse. Release 2026.09.03.

Download this guide as a PDF (20 pages).

About this guide

This guide takes you from an empty organization to a working set of duplicate rules, match keys, data quality rules and a dashboard, in the order you would do it. Each chapter starts with what the feature is for, then how to do it, then what to watch out for. Page names are written in bold, as they appear in the app’s left navigation: Duplicate Rules, Match Keys and so on.

If you only want to know which setting catches which kind of duplicate, the companion cheat sheet that ships with each release is a one-screen version of the duplicate chapters with an example pair per option.

The ideas in five minutes

IdeaWhat it means here
Duplicate ruleA definition of “these two records are the same thing”: a table, one or more field comparisons, and what happens on a match. Rules run when a record is saved and in bulk runs over a whole table or view.
Field comparisonOne row of a rule: compare this column with that column, this way (exactly, first letters, contains, two words in common, similar enough). Rows in one alternative must all match.
AlternativeA group of comparisons. A rule may have several; a pair is a duplicate if any alternative matches. “Same email, OR same phone and surname” is a rule with two alternatives.
Match scoreEach comparison carries a weight; a matching pair scores the sum of its weights, adjusted for how rare the matched value is and for other alternatives it also satisfies. Two bars on the rule: pairs above the high bar are confident duplicates, pairs above the review bar are worth a look.
Match keyA second column the product computes from a field and keeps beside it, so rules can compare on something the person did not type: how a name sounds, a phone number in one shape, a company name without its legal form. Rules match on key columns with an ordinary exact comparison.
Match synonymA word your organization teaches the matching: an abbreviation, a nickname, a legal form, a word to ignore. Laid over the words the product already knows.
RunOne bulk detection over a table or view, with its results grouped per record. Reviewed and merged from Duplicate Results.
MergeTwo records become one: related records move to the survivor, chosen field values are kept, the loser is deactivated and marked as merged. There is no undo.
Not a duplicateA pair somebody has ruled out. It is never offered again, on save, in a run or by a merge, until the decision is removed.
Data quality ruleA per-field check on a record (a pattern, a minimum length, recent activity). Each rule passes, warns or fails, and together they give the record a score from 0 to 100.
JobBulk work in the background: a detection run, a bulk merge, a match key fill, a score recalculation. Jobs can be scheduled and can repeat.

Installing and setting up

1. Import the solution

  1. In the Power Platform admin center open your environment, choose Solutions, Import, and pick DataQualityApp_<version>_managed.zip.
  2. The import adds the Data Quality App, its tables, plug-ins, pages and three security roles. It takes a few minutes.
  3. Open the Data Quality App from the app list. The License page shows a trial has started.

2. Give people a role

Assign roles in the Power Platform admin center. Changes take effect within a minute.

RoleWho gets it
Duplicate DetectionEverybody who works with records: sees duplicate warnings on save, reviews results, merges within their own privileges, marks pairs as not duplicates.
Duplicate Detection AdministratorThe people who define rules, match keys and synonyms, run bulk detections, schedule jobs and see license warnings.
DQA MCP Read, Create, DeleteOnly for people who use an AI assistant with the app (chapter on the assistant). Granular: Delete does not include Create.

3. Start the background engine

Bulk work runs in the background. The solution ships a Power Automate flow, DD Background Engine Heartbeat, switched off. It is the recommended engine: nothing to install on a machine, and it runs itself.

  1. In the environment’s solutions, open the Data Quality App solution, find the flow’s connection reference for Microsoft Dataverse and map it to a connection owned by a dedicated service account or application user, not a personal login.
  2. Turn the flow on.
  3. Start a small detection from a rule and confirm it begins within about a minute. That proves the connection works.
The alternative: the background service. Organizations that prefer their own machine can install DuplicateDetection.BackgroundService.Installer-<version>.zip as a Windows service, or upload DuplicateDetection.BackgroundService.Standalone-<version>.zip as a continuous, single-instance Azure WebJob in their own tenant. Both carry the same engine as the solution and must be updated together with it. Configuration is an ordinary Dataverse connection string; App Service settings override the packaged file.
If nothing runs. Jobs that stay “Scheduled” mean no engine is processing them: the flow is off, the connection is broken, or the service is stopped. Scheduled Jobs shows the queue.

4. License

A new organization starts a 15-day trial with full functionality and two limits: one active duplicate rule and at most ten merges per operation. Paste the activation code from Techdio on the License page and press Activate now. Newer releases can fetch the license themselves; an offline activation is available for environments that must never contact Techdio. Only administrators see expiry warnings; end users are never nagged.

5. Where your data stays

Everything in the Data Quality App runs natively inside your own Dataverse environment: rules, match keys, detection, merging and scoring are Dataverse plug-ins, pages and background jobs. No customer data is sent to Techdio or to any third-party service, and no external AI is used for matching. The only outbound call the product ever makes is the optional license check to Techdio, and an offline activation removes even that.

A tour of the app

NavigationPageWhat you do there
OverviewHomeThe starting dashboard.
Data Health StudioYour data quality dashboard: duplicates found and merged, rules passing and failing, over time. Arrange it as you like; the layout follows you.
DuplicatesDuplicate RulesEvery duplicate rule and its health. Create, open, estimate, run.
Duplicate ResultsEvery detection run and what remains to review. Open a run to review and merge.
Not DuplicatesPairs somebody decided are not duplicates. Remove a pair to undo the decision.
Data QualityData Quality RulesEvery data quality rule and its health. Create and open rules.
Data Quality ScorePer table: which rules count, how warnings weigh, whether scores recalculate automatically; recalculate.
AdministrationScheduled JobsEvery background job and its status. Cancel, retry, start early, open the related rule or run.
Match KeysEvery match key and its health. Create, fill, audit, rewrite.
Match SynonymsThe words your organization teaches the matching, and the words the product already knows.
TranslationsThe app’s own texts, translated or reworded. Changes the interface, not your data.
LicenseStatus, expiry, days remaining, activation.

Duplicate rules

What a rule is for

A rule says when two records of a table are the same thing. It runs in two places: when a user saves a record, the rule checks it against the rest of the table and warns or blocks; and in a bulk run, where every record in a table or view is checked and the pairs are grouped for review.

Creating a rule

Open Duplicate Rules and press New rule. The page asks its questions in order and creates the rule once, when you press Create.

  1. Which table? The table whose records are checked (the source), and the table they are checked against (the target). Usually the same; a Contact-against-Lead rule is allowed.
  2. Which fields must match? Add a comparison row per field. For each: the source column, the target column, and how to compare. If the column has a match key, the page offers to match by how it sounds, as normalized text, as a telephone number and so on; that is an exact comparison on the key column. Put rows that must all be true in one alternative; add a second alternative for “or”. Weights and the two score bars live here too; the defaults are sensible.
  3. When does it run? When a record is created or changed, only on create, or only on change.
  4. Who runs it? The saving user, the system, or a named user. Choose the system or a named user when ordinary users cannot read every record the rule should compare against.
  5. Which records are checked? Optionally limit the source and the target to a saved view or a FetchXML filter. Only records in the filter take part.
  6. How are duplicates shown? The result view decides which columns the duplicates dialog and the results pages show. Whether the save is only warned about or blocked. Whether inactive records count.
  7. Name the rule and create it. Rules are active at once.

The six comparisons

ComparisonExample pair it catchesNotes
ExactNordisk Vinduer = nordisk vinduerCase-insensitive, like the database. The comparison to use on a match key column.
First N charactersKastrup Logistik A/S ≈ Kastrup Transport (N=6)A value shorter than N compares whole.
Last N characters98 44 22 33 ≈ 98 45 22 33 (N=4)For a phone column a telephone key is usually better: it understands country codes.
ContainsBornholm Byg ⊂ Bornholm Byg og AnlægOne direction: the stored value contains the typed one.
2 Word MatchAalborg Marine Service ≈ Marine Service AalborgTwo whole words in common, any order. Punctuation glued to a word is not part of it.
Similar enough (N = %)Christianssen Revison ≈ Christiansen Revision (85)Typo tolerance. Reads accents both ways and words in fixed order. On a column with a normalized, company or sounds-like key it searches on its own; without one it needs an exact or starts-with row beside it in the same alternative.

Per-row options. Trim, remove all whitespace, compare blank values (two blanks count as equal), compare lookups as text (by the related record’s name), ignore words (a comma list removed before comparing, for plain text columns), and a date-time behaviour for date columns. Non-text columns compare by equality.

Start from the starter rules. The import page offers three built-in bundles, Accounts, Contacts and Leads, that set up the match keys and a rule each with sensible alternatives. Most organizations need nothing else to begin. See the export and import chapter.

What a user sees on save

When a save matches a rule, the form shows Duplicate found for this record with View duplicate records. The dialog lists the duplicates in the rule’s result view, grouped by the rule that found them, and lets the user open a record or merge. A rule set to block refuses the save until the duplicate is dealt with; a rule set to warn lets the user save anyway.

Health and estimate

Duplicate Rules shows each rule’s health: rules that cannot run, have no fields, reference deleted columns or views, use a disabled run-as user, duplicate another rule, can never reach their own review bar, match through a key that was never filled, or rely on a telephone key with no country. Open a rule for an estimate: a sampled count of how many duplicates it would find, before running it.

Match keys

What a key is for

People write the same thing differently. A match key is a second column the product computes from a field and keeps up to date, so a rule can compare on the computed value with an ordinary exact match, which is fast and indexed. Adding a key changes no rule; a rule uses a key by matching on its column.

The eight kinds

KeyExample: value → keyChoose it when
Sounds likeJorgensen → JRJNSN
Joergensen → JRJNSN
Names spelled several ways that sound the same. English, German or Spanish. Two readings, so a name that sounds two ways is matched on either.
Normalized textVejle Bryghus → BRYGHUS VEJLE
Grøn → GRON / GROEN
Any text where case, punctuation, spacing, special letters or word order vary. Can be a composite of several columns.
Company nameHerning Maskinfabrik A/S → HERNING MASKINFABRIK
Aarhus Intl Trading Ltd → AARHUS INTERNATIONAL TRADING
Company names. Strips legal forms for the countries you choose, writes out shortenings, recognizes a form at either end, ignores word order.
Telephone+45 66 12 34 56 → +4566123456
0045 66123456 → +4566123456
Any phone column. Give it a country so bare national numbers get their code; or let it read the country from a column of the record.
EmailInfo+crm@Techdemo.dk → info@techdemo.dkEmail columns. Lower case, +tags removed, Gmail dots, googlemail = gmail, first address of several.
Registration numberDK 25 31 37 63 → 25313763 (verified)CVR, VAT and company numbers. Country prefixes stripped, checksums verified for DK, SE, NO, FI, DE, GB, NL and CH; a verified number weighs more.
Web domainhttps://www.koldingmoebler.dk/ → koldingmoebler.dkWebsite or email columns. The strongest company identifier after a registration number.
Given nameBob → ROBERT
Kristian → CHRISTIAN
First-name columns. Weak alone; pair it with a surname or a postcode in the same alternative.

Creating a key

  1. Open Match Keys, press New match key.
  2. Choose the table and the field, then the kind. The page proposes a column name; you may edit it.
  3. Answer the kind’s own questions: the language for a sounds-like key; the country for a telephone or registration key, or the column to read each record’s country from; for a company key whether to ignore legal forms and for which countries; for a normalized key whether to ignore word order and which other columns to key together with it (a composite key).
  4. Create. The key column and its second-reading column appear on the table, and records saved from now on are keyed at once.
  5. Fill existing records: the page offers to queue the fill as a background job. Until it finishes, rules on the key find only records saved since.
A column may carry one key of each kind. A company name can have a sounds-like key, a normalized key and a company key side by side; a “similar enough” comparison searches through all of them.

Country from a column

A telephone or registration key with customers in several countries should read the country from the record. Choose the column on the New Match Key page; text, choice and lookup columns all work, and “Danmark”, “Germany” and “DE” are all understood. The fixed country is the fallback for a record with none. Changing a record’s country re-keys its number.

Keeping keys healthy

Keys are written by the product when a record is saved. Anything that writes around it, a data import with plug-ins switched off, an integration that bypasses custom plug-ins, leaves keys empty or stale. Match Keys audits each key: records with a value and no key, and a re-keyed sample of the most recently changed records. Rewrite all keys recomputes every record. Changing a key’s country, language or options marks it “definition changed” until you rewrite it.

Deleting a key deletes its columns and every value in them. The deletion is refused while any rule still matches on those columns. Fix or delete those rules first.

Match synonyms

Match Synonyms holds the words your organization teaches the matching. They are laid over the words the product already knows; press Show the words the product already knows on the page to see those. A row with the same word as a built-in entry wins over it; a row that maps a word to itself switches the built-in entry off.

KindExampleRead by
Company abbreviationManufact = Manufacturing
Co = Co (switch the built-in off)
Company name keys that write out shortenings, and “similar enough” comparisons.
Given nameKat = KatarinaGiven name keys, and “similar enough” comparisons.
Legal form, with countryKft (HU)Company name keys set to ignore the legal form for that country.
Word to ignoreHoldingNormalized text and company name keys. The tool that works where a rule’s “ignore words” does nothing, because keys are computed before rules run.

Adding a word. Pick the kind, type the word as it appears in the data and, where the kind has one, what it stands for or the country. The product stores it in upper case without punctuation, names the row, and refuses what makes no sense: a legal form without a country, a given name of two words, the same word twice, or a chain (Mfg means Manufact while Manufact means Manufacturing).

After adding a word: rewrite the keys

A word takes effect in two steps, and the second one is yours to do.

  1. New and changed records are keyed with the word at once. From the moment the row is saved, every record saved or changed is keyed using it. A company name key with shortenings written out stores “Herning Manufact. A/S” as HERNING MANUFACTURING right away.
  2. Records that already exist keep their old keys until you rewrite them. Their key columns were computed before the word existed, and nothing touches a stored record because a table row changed. So saving the word marks every match key that reads that kind of word as “definition changed, rewrite needed”. Open Match Keys, find the marked keys, and press Rewrite all keys. The rewrite runs as a background job and recomputes the key for every record of the table; the job appears under Scheduled Jobs.

Until the rewrite has run, a rule on that key finds the new word only among records saved since the row was added. Which keys are marked depends on the kind of word: an abbreviation or a legal form marks company name keys; a word to ignore marks normalized text and company name keys; a given name marks given name keys. Sounds-like, telephone, email, web domain and registration keys are never marked, because they never read the table. The same two steps apply when you switch a word off or remove it, and when you change a key’s own settings, such as its country or its word-order option.

Add several words, then rewrite once. Each row marks the same keys, so enter the whole batch first and run one rewrite per table, rather than one after every word.

Running detection

On save

Every active rule runs when a record is created or changed, according to its trigger. Nothing to start.

A bulk run

  1. Open the rule from Duplicate Rules and choose to run it. Optionally limit the run to a saved view.
  2. Choose now or a scheduled time, and whether the job repeats every N minutes, hours, days or months. A repeating job creates its next occurrence when this one finishes.
  3. The run appears in Duplicate Results and the job in Scheduled Jobs. Detection is done in batches inside Dataverse; the job records progress and a log.
Auto-merge. A rule can carry auto-merge settings, so a bulk run merges what it finds above the high bar without anyone reviewing, using the survivorship you chose. Use it for rules you trust; the review bar and the high bar are what make it safe.

Reviewing results

Duplicate Results lists every run: rule, table, when, how many records with duplicates, how many remain to review. Filter by table. Open a run.

A run page groups the duplicates per record. Each row shows the record, the number of duplicates and the best match score; pairs at or above the review bar are marked as worth reviewing, pairs at or above the high bar as confident. Click a record to see its duplicates individually, which alternative of the rule joined each pair, and the columns of the rule’s result view side by side.

From here you can Merge duplicates for one group, Merge all duplicates for the run (now, or as a Background merge job), mark a pair as not a duplicate, Open printable report, or Delete this run and its results. Deleting a run deletes only the result rows; the records are untouched and merges already done are not undone.

Merging

A merge combines two records. Related records, both one-to-many and many-to-many, are moved onto the surviving record; the field values you choose are kept; the loser is deactivated and marked as merged, pointing at the survivor.

There is no undo. A merged record can be reactivated, but its related records stay where they were moved. Review before merging, and use the review bar.
Kind of mergeWhereHow the survivor is chosen
SingleFrom a record’s duplicate dialog or a result groupYou pick the survivor and, field by field, which value to keep.
GroupA group on a run pageAll duplicates of the group merge into its anchor record.
BulkA whole run, now or as a background job; or auto-merge on the ruleSurvivorship per group: oldest, newest, most activities, most filled fields, or best data quality score.

Options. Include or exclude each relationship from reparenting; skip errors and continue; bypass synchronous plug-ins, asynchronous plug-ins or Power Automate flows during the merge; which inactive status the loser gets. A merge of a record somebody else is merging at the same moment is refused by the platform: wait and run again, and already-merged records are skipped. A trial license allows ten merges per operation.

Not Duplicates

When two records look alike but are not the same, mark the pair as not a duplicate from the run page or the duplicate dialog. The pair is then never offered again: not on save, not in a bulk run, not by a merge. Not Duplicates lists every such decision with who made it; removing a pair undoes the decision. A user may undo their own; an administrator may undo anybody’s.

Export, import and starter rules

Starter rules

Open Duplicate Rules, choose Import. The page offers three bundles made by the product:

BundleKeys it sets upRule
AccountsRegistration number, web domain, company name, sounds-like on the nameThe same company however it was written: by registration number, or web domain, or company name with the postcode, or the sound of the name, or a name spelled nearly the same, or a looser likeness with the postcode.
ContactsEmail, mobile phone, given name, normalized surnameThe same person: by email, or mobile and surname, or first name (Bob = Robert) with a similar surname and the postcode.
LeadsEmail, business phone, company name, normalized surnameThe same lead: by email, or business phone and surname, or company name with a similar surname.

Importing a starter creates the keys that are not already there, queues their fill, and creates the rule. Importing again updates rather than duplicates.

Moving rules between environments

  1. In the source environment, select rules on Duplicate Rules and export. The zip carries the rules, the match keys they match through and the synonyms those keys read, with a manifest and notes.
  2. In the destination, open Import and choose the zip. Nothing is written yet: the page says what would happen to each rule and key, asks you to confirm a person or view it matched by name, and blocks a rule that cannot work here.
  3. Tick what to import and import. Keys are created first with their columns; a key of the same kind already here is used instead, and the rule’s fields point at its column.
Formats. A bundle exported by a newer release than the destination reads is refused in words rather than imported wrongly. Update the destination first.

Data quality rules

A data quality rule checks one thing about a record and gives a verdict: pass, warning or error. Create them on Data Quality Rules; the page asks for the table, the field, the kind of check and its parameters, the severity, and any condition. The rule builder shows a live preview of what the rule would say about existing records before you save it. Rules apply to every table, standard or custom.

The 22 kinds of check

Kind of checkWhat it verifiesExample
RequiredThe field has a value.Email is filled on every Contact.
FormatAn email, phone number, web address or postcode has a valid shape.info@techdemo.dk · +45 66 12 34 56 · 8000
Regular expressionThe value matches a pattern of your own.A customer number like C-12345.
Minimum lengthAt least N characters.Business phone at least 8 characters.
Maximum lengthAt most N characters.Account name no longer than 160 characters.
Must not containNone of the listed filler words appear.“test”, “n/a”, “unknown”, “?”
No stray spacesNo leading, trailing or doubled spaces.“Nordisk Vinduer ” fails.
Must be emptyThe field has no value.A closed opportunity has no open follow-up date.
Must be one ofThe value is in your list.Country is one of the markets you sell in.
Must not be one ofThe value is not in your list.Industry is not the placeholder “Other”.
Number rangeA number lies between two bounds.Discount between 0 and 30 %.
Number of selectionsA multi-select choice has between N and M values.Interests: 1 to 3 selected.
Date checkA date is in the past, in the future, or within N days of today.Founded date in the past; renewal date in the future.
Date orderA date is before or after another date on the record.Contract end is after contract start.
Must match another fieldTwo fields hold the same value.Billing country equals shipping country.
Must differ from another fieldTwo fields hold different values.Primary contact is not also the decision maker.
At least one of these fieldsOne of several fields is filled; one rule instead of several.Email or phone: one of them must be there.
Linked record still activeA lookup points at an active record, not a deactivated or merged one.The contact’s parent account is active.
Last modifiedThe record was changed within N days.An account untouched for a year is stale.
Number of activitiesAt least N activities, of a chosen type, state or direction.A lead has at least two activities.
Last activityAn activity within N days.A contact with no activity in 180 days.
FlowYour own Power Automate flow decides, for checks that need outside data or your own logic.A register lookup; an ERP balance check.

Severity. A warning counts half in the score. An error counts fully and can, if you switch it on and confirm, block saving on create, on update or both. Conditions: a rule can apply only when a field has a value, or only to a business unit or team, and can ignore chosen users. Weight: a rule can count double or be excluded from the score while still flagging records. New and changed records are evaluated on save; existing records need a recalculation job.

Data Quality Rules shows each rule’s health: rules that cannot run, reference deleted fields or duplicate another rule.

Data quality score

Each record gets a score from 0 to 100: passes plus half the warnings, divided by the rules that apply, times 100. Rules that do not apply to the record are left out. On the record form a dashboard shows each rule’s outcome.

Data Quality Score configures each table: which rules are included, how warnings weigh, whether scores recalculate automatically, and a button to recalculate the whole table as a background job. Recalculate after you change rules or weights, so existing records catch up.

Data Health Studio

Your data quality dashboard. Widgets show open duplicate pairs, records merged, failed merges, active quality rules, the data health score (90 and above is excellent, below 40 needs attention), duplicates found by month, and merge status, so you can see how data health moves over 30, 60 and 90 days. The header applies to every widget at once: date range, record types, whole organization or my records, refresh.

Press Edit to arrange it: add, remove, resize and move widgets, and change what each shows. Your layout is saved to your user and follows you; an administrator can publish a default for everyone.

Scheduled jobs

Scheduled Jobs lists every background job: bulk detection, bulk merge, match key fills, data quality calculations and health snapshots. Each shows its status and what it is working on, and keeps a newest-first log.

StatusMeaning and what you can do
ScheduledWaiting for its time, or for the engine. Start it early, or cancel it. If everything stays Scheduled, the engine is not running (see installing).
In ProgressWorking. Cancel stops it at its next step and keeps the work done so far.
DoneFinished. A repeating job has already created its next occurrence.
ErrorStopped on a failure; the log says where. Retry runs it again as a fresh job.
CanceledStopped by a person.

Translations

Translations lists every text the app shows its users: duplicate checks, merge screens, dashboards. Edit the wording or translate it into another language. This changes the interface only, never your data. The interface ships in English; add any language your users need here. Texts are grouped by screen; an entry with no translation for a language falls back to English.

License

License shows the license type, its expiry, days remaining, and the trial limits while on trial: one active duplicate rule and ten merges per operation. Paste the activation code and press Activate now. After expiry there is a grace period; then new rules and bulk operations are refused until a license is applied, while existing real-time checks keep running. Warnings are shown to administrators only.

Upgrading to a new release

  1. Import the new DataQualityApp_<version>_managed.zip over the existing one in the Power Platform admin center, keeping Upgrade selected. Rules, match keys, synonyms, results and your Data Health Studio layout are data, not solution components: they are kept.
  2. If you run the background service or the WebJob instead of the heartbeat flow, update it to the matching version at the same time. The engine and the solution must agree.
  3. Open and save one duplicate rule. The rules’ cached definition is rebuilt on save, so new matching features apply to existing rules.
  4. Check Scheduled Jobs: a run that was in progress during the import resumes; one that shows Error can be retried.
Trial to licensed. Activating a license needs no reinstall: paste the code on the License page and the limits lift at once.

The AI assistant (MCP)

The app ships a server that connects an AI assistant, such as Claude, Copilot Studio or ChatGPT, to your environment, so you can manage duplicates and data quality by talking to it. The server is software you run, on your own machine or in your own Azure tenant; your data flows only between you and your Dataverse environment.

  1. Unzip DqaMcp-win-x64-<version>.zip (or the Linux build for a server) and register dqa-mcp.exe in your assistant. No configuration is needed: the first time you ask it something, a browser window asks for your normal Microsoft sign-in and the assistant lists the environments you can access.
  2. Have an administrator assign you one of the DQA MCP roles. Any role lets the assistant read; Create is needed to create rules and run detections; Delete to delete configuration and to merge. Nobody is exempt, System Administrators included.
  3. Ask. “How healthy is my CRM data?”, “Check Contoso Ltd for duplicates”, “Set up duplicate detection for leads matching email exactly and last name by sound”, “Add a match key on contact last name and backfill it”, “Teach the matching that Manufact means Manufacturing”, “What background jobs are running?”

Everything the assistant does runs as you, so your Dataverse security applies and audit fields carry your name. Merge tools are hidden unless the machine enables them, and every merge needs your explicit approval. The assistant explains the product from its own built-in documentation and points you to the app page for the few things it cannot do itself: score weights and thresholds on duplicate rules, auto-merge configuration, bundles, license activation, translations.

Capacity and performance

Detection runs in batches inside Dataverse and is designed for tables of millions of records; the engine has merged more than two million duplicates in a single customer environment. A few habits keep large runs fast:

  • Estimate before you run. A rule’s estimate samples the table in seconds and tells you roughly how many pairs to expect, so a badly tuned rule never becomes a badly tuned run.
  • Match on keys. An exact comparison on a match key column is indexed and fast. A “similar enough” comparison on a column without a key is the slowest thing a rule can do; give the column a normalized, company or sounds-like key and let the comparison search through it.
  • Schedule big runs outside working hours and let repeating jobs handle the steady state afterwards: a nightly or weekly run over a view of recently changed records is cheaper than a full run every time.
  • Fill keys once, then keep them. A key fill over a large table is a one-time job; after that, saves keep the key current. Rewrite only when a key’s definition or a synonym changed.
  • Use the review bar. Raising it costs nothing and removes the pairs nobody would merge anyway.

Getting help

Support is included in an active subscription and covers defects, configuration and how-to questions for the app. Write to support@techdio.dk. Hours are Monday to Friday, 9 AM to 5 PM CET; the first response comes within two business days, and a production-down situation is prioritized ahead of everything else. Customers outside Europe are answered by the next business day at the latest.

Include the environment URL, the release shown at the top of the License page, and, for a failing job, the newest lines of its log from Scheduled Jobs. That is usually enough to answer without a follow-up.

Housekeeping and troubleshooting

SymptomWhat to check
A run or fill stays “Scheduled”The background engine: is the heartbeat flow on and its connection valid, or is the service running? Scheduled Jobs shows the queue.
A rule on a match key finds only new recordsThe key was never filled, or was filled before an import bypassed the plug-ins. Match Keys shows “records without a key” and “keys out of date”; rewrite the key.
Two obvious duplicates are not foundOpen the rule’s health and estimate. Common causes: the value differs inside the first letters and no sounds-like key is on the column; the pair is on the Not Duplicates list; one record is inactive and the rule excludes inactive records; the rule’s filter view excludes one of them.
Too many pairs are offeredRaise the rule’s review bar, or make the loosest alternative require a second field such as the postcode.
A word the matching should knowAdd it under Match Synonyms and rewrite the keys that read it.
A new column does not appear right awayDataverse publishes new columns to its query engine and its data API a little after creating them. Wait a minute and refresh.
The page says to open it from inside the appThe app’s pages need the app context. Open them from the Data Quality App’s navigation, not from a bookmark to the file.
Merges fail for some recordsOpen the job’s log. A record merged by somebody else at the same time is skipped; a relationship the merging user cannot write is reported per record when “skip errors” is on.
After an upgrade an existing rule does not use a new matching featureThe rules’ cached definition is rebuilt when a rule or key is saved. Open and save one rule.

Glossary

TermMeaning
AlternativeA group of comparisons in a rule that must all match; several alternatives are ORed. Also called a match group.
Alternate columnA key’s second reading: the other way a name sounds, the expanded spelling of Ø, the dots-removed Gmail form. Rules match on both.
AnchorThe record a result group is built around; the survivor of a group merge.
Backfill / fillThe background job that computes a match key for records that existed before the key.
Composite keyA normalized key computed from a field together with other columns of the record.
High barThe score at which a pair is a confident duplicate; what an unattended merge must clear.
Match keyA computed column beside a field, so rules can compare on it. Also called a phonetic field in older releases.
Match synonymA word the organization teaches the matching, laid over the built-in word lists.
Review barThe minimum score for a pair to be offered for review.
RunOne bulk detection with its grouped results.
Run-asWhose privileges a rule uses when it searches: the saving user, the system, or a named user.
Rewrite all keysRecompute a key for every record, not only the ones without a key.
SurvivorshipThe rule for choosing which record survives a bulk merge.

Data Quality App by Techdio ApS. User guide for release 2026.09.03. Revised 2026-09-05.