Skip to main content

Overview

“Health Checker” is also two separate packages installed together, the same pattern as Transaction Generator:
  1. fusionSpan Health Checker (the base package, managed, namespace FSPHC) is the generic engine. It defines the Health Check Item and Health Check Result objects and the logic that runs a check — a Salesforce report, a SOQL query, or a custom Apex class — and compares the row count against an expected value. It ships with zero checks configured.
  2. fusionCore Health Checker AddOn (unmanaged, no namespace) is what makes it useful for a fusionCore org. It contributes 94 pre-built checks — 75 backed by bundled Reports, 12 backed by fusionCore-specific Apex classes, and 7 plain SOQL queries — covering Commerce, Subscriptions, Communities, and Stripe data. Without this add-on, the base package has nothing to run.
Both packages need to be installed for a useful check library to exist. If your org only has the base package, confirm the add-on has also been installed — see fusionCore’s Pre-Built Checks (Add-On) below.

Prerequisites

  • Assign the Health Check permission set to any admin who will configure or run checks. Neither package ships any other permission set — the add-on’s checks, Reports, and Report Types rely on this same base permission set for access.

How to Configure

1

Create a check

Go to Setup → Custom Metadata Types → Health Check Item → Manage Records → New. Choose a TypeReport, SOQL Query, or Apex Class — and fill in the matching source field (Report_Name__c must exactly match a report’s Name; SOQL_Query__c for a query; Apex_Class__c for a class implementing the iHealthCheckItem interface). A validation rule blocks saving until the matching source field is filled in.
2

Set the pass/fail thresholds

Set Rows_Expected__c (the baseline count), then choose an Error_Condition__c and/or Warning_Condition__c (=, >, <, >=, <=) that the returned row count is compared against. The Error condition is checked first; if it doesn’t match, the Warning condition is checked; if neither matches, the result is Success.
3

Set order and activate

Set Sequence__c to control run order among your checks, write a short Guidance__c note describing the ideal outcome, and check Active__c — only active checks run.
4

Run on demand

Open the Health Check app. Its home page embeds a screen flow that runs all active checks and shows a pass/fail summary. A checkbox on that flow, “Check to delete all previous health check results,” is checked by default — see Limitations before running it if you want to keep history.
5

Review results

Open a Health Check Result record to see what a check actually found: Status, Rows Returned vs Rows Expected, the generated Message, and the Guidance text you wrote for that check.
A Health Check Result record with Status, Rows Returned, and Message highlighted in a red box, showing an Error because a report returned 2 unexpected rows

An Error result — Status, the row counts, and the message that explains what was found

6

(Optional) Schedule recurring runs

Schedule the packaged HealthCheckScheduleable class from Setup → Apex Classes → Schedule Apex. Neither package installs a scheduled job or recommends a run time — pick a frequency and time that suit your org (many teams choose an off-peak, low-traffic window). Whether a scheduled run also deletes prior results is controlled by the Delete_results_scheduled__c checkbox on the Health_Check_Setting__mdt settings record.

fusionCore’s Pre-Built Checks (Add-On)

Installing the fusionCore Health Checker AddOn deploys 94 Health Check Item records, all active immediately, split across three check types: Every one of the 94 checks is a zero-rows-expected data-integrity check — each one treats any row returned as an Error, not a Warning. None of them distinguish a “getting worse” state from a hard failure. The 12 Apex-backed checks:

Limitations and Common Pitfalls

  • The fusionCore add-on’s checks all activate the moment it’s deployed. All 94 come in with Active__c = TRUE — there’s no staged rollout. Deploying the add-on to an org that’s missing one of the fusionCore packages its checks query (Subscriptions, Stripe, or the separate Committees package for the Community Member check) causes those checks to error or fail to deploy — confirm the relevant packages are installed first.
  • The “delete previous results” option is global, not per-check. Both the on-demand flow (checked by default) and a scheduled run configured to delete results wipe every prior Health Check Result record, not just the ones from the check you’re re-running. Uncheck it if you want to keep a history.
  • All active checks run in a single transaction. A large or growing library of checks can hit Salesforce’s per-transaction limits on SOQL queries or synchronous report runs, failing the whole run rather than just one check. One of the add-on’s Apex checks (Financial Event Lines mislinked to Financial Periods) explicitly stops early and under-counts instead of throwing once it nears the SOQL query limit; the others don’t have that same guard, so on a large org they’re more likely to fail outright than under-count quietly.
  • Report checks match by exact report Name. A renamed or missing report fails that check with a logged error rather than blocking configuration up front — if a check keeps returning an error, verify the report name first. This is a real risk with the fusionCore add-on’s 75 bundled Report checks specifically: nothing enforces that a Report Name and its check record stay in sync if either is renamed later.
  • Report checks are capped by Salesforce’s report row limits, so a check against a very large report may under-count.
  • A check with no conditions configured always reports Success, regardless of the row count returned — an all-green result doesn’t necessarily mean everything was actually checked correctly. Make sure Error/Warning conditions are set before trusting a check’s status.
  • A failed check doesn’t stop the run. Other checks still execute; read the individual check’s message to see what actually went wrong rather than assuming a Warning/Error status always reflects the row count shown.