Skip to content

Data Quality & Governance

Part of: ClientVerse Core (every client).

What it is

Three capabilities that between them answer "is the data any good, and who says so":

  • Data Quality Monitoring scores Contact, Account and Opportunity nightly and raises an issue when a record falls short.
  • Enrichment proposes corrections for a human to accept or reject, rather than writing them.
  • Governance policies define how long records are kept and what happens when that expires.

They are separate permission areas because firms staff them differently — the person who works a data-quality queue is rarely the person who sets a retention policy.

Who it's for

Admins and data stewards. End users feel the results — fewer duplicates, fuller records — but do not operate any of it.

Since Core 1.1.10 both work from the rebuilt CV Admin app. It opens on a data-quality trend chart, and its tabs include My Work, Data Quality, Duplicates, Taxonomy and Automation Health. Users reach it through CV_Full_Access, CV_Data_Manager, CV_Data_Quality_User, CV_Rollups_Admin or the new CV_Data_Steward permission-set group.

Data stewards need two extra permission sets. CV_Data_Steward gives a steward these consoles without full admin access, but the group alone can't read Data Quality issues or Classifications. Assign CV_Data_Manager and CV_Classification_Schema_Access alongside it, or Home, My Work, Data Quality and Taxonomy fail to load for the steward.

Data Quality Monitoring

A scheduled nightly batch computes a weighted 0–100 quality score per object from field completion, activity recency, and open-duplicate flags. Each run writes a Data_Quality_Score__c snapshot: the overall score, per-component scores, records evaluated, and how many failed each component. The scores drive the CV Admin trend chart. A separate nightly issue scan raises a Data_Quality_Issue__c for each record that falls short.

Neither job runs on install. Schedule both once, in Execute Anonymous:

// Scores, which drive the CV Admin trend chart
clientverse.DataQualityScoreScheduler.ensureScheduled();
// Nightly issue scan, which fills the Data Quality queue (it has no setup method)
System.schedule('CV Data Quality Issue Scan', '0 0 1 * * ?', new clientverse.DataQualityBatchScheduler());

To fill the issue queue now instead of overnight, also run new clientverse.DataQualityBatchScheduler().execute(null);. Keep the clientverse. prefix. Before 1.1.10 the score job could not be scheduled from a customer org at all.

Weights and thresholds are entirely custom-metadata driven, so re-weighting a component or moving a threshold is configuration, not a release. The active weights per object are enforced to total 100, so the score always reads as a true 0–100 scale.

Alerts fire to the Data Manager audience — in-app and email — when a score drops below a configured minimum or falls more than a set number of points week over week.

Treat Data_Quality_Issue__c as a work queue, not a report. Assign the issues and watch whether the queue drains. A queue that only grows means the scoring is miscalibrated or nobody owns the work, and either way the dashboard will keep looking bad without telling you which.

The queue on the CV Admin Data Quality tab filters by Field Name and Detected Date, shows related record names instead of Ids, and has a retention preview that respects the configured window.

Duplicates. The CV Admin Duplicates tab shows duplicate sets with a completeness score and hands off to Record Merge. It only lists what Salesforce Duplicate Rules find, so create and activate Duplicate Rules first.

Enrichment

Enrichment writes an Enrichment_Proposal__c — the field, the current value, the proposed value, the source, and a confidence — for review. It does not update the record.

That is a deliberate choice: an automated correction that is right 95% of the time still puts wrong data into a client-facing system 1 time in 20, and nobody can tell afterwards which is which. Review the proposal queue on a regular cadence; unreviewed proposals are the same problem as unworked issues, just quieter.

Governance policies

A Governance Policy (Governance_Policy__c) sets, per object and record type, how many months of inactivity trigger an action — archive the record, or delete it. A nightly batch finds records past the window, applies the action, and writes an immutable audit entry to Clientverse_Log__c including a JSON snapshot of the record's field values at the time of action.

Governance_Settings__c holds the org-level switch and the last run date. Admins can preview how many records a policy would affect before saving it — use that every time.

Known limitation in 1.1.10. The governance retention card on the CV Admin Automation Health tab calls an Apex class that no permission set grants, so it errors for anyone who isn't a System Administrator.

Introduce a new policy in a sandbox first, against real data volumes. A policy that fires on a large fraction of existing records generates more work than the firm can absorb, and the preview is what tells you that before the batch does. The audit snapshot means an archive is recoverable; a delete is not.

How to use it

  1. Start with monitoring, not policy. Schedule both Data Quality jobs, then let the scores run for a few weeks before setting any retention rule — you need to know what normal looks like.
  2. Calibrate weights and thresholds so the alert means something. An alert that fires constantly is an alert nobody reads.
  3. Assign an owner to the issue queue and the proposal queue. Both are only useful if someone works them.
  4. Add governance policies last, previewing each, sandbox first, archive before delete.

Sequence matters after a migration. Load data first, then let quality and enrichment run. Running them mid-load raises issues against records that are still incomplete by design, and buries the real ones.