Skip to main content

Flow logic, process mining, and breaking-change graph

These checks build one graph of every flow, subflow, Apex action and field reference in the project, and flag broken automation and changes with a wide blast radius.

VULKRO_SF_HYGIENE=1 vulkro-sf scan ./force-app
vulkro-sf flowmap ./force-app # the automation graph itself
vulkro-sf impact Region__c ./force-app # what breaks if a field, class or flow is deleted

These checks are off by default; VULKRO_SF_HYGIENE=1 turns them on. They are correctness and change-risk findings, not exploits. Static source cannot see managed-package callers, dynamic SOQL or org-only wiring, so each finding is a candidate and counts are a lower bound.

Checks​

Rule IDWhat it findsFix
SF-FLOW-LOGIC-001A subflow call to a flow missing from the project or marked inactive. The branch fails or never runs.Retrieve or activate the called flow, or remove the call.
SF-FLOW-LOGIC-002A flow references a custom field that no other surface uses, so the flow is its only consumer.Wire up the missing producer or consumer, or retire the field and the branch.
SF-PROCESS-MINE-001An orphan flow: no trigger, no parent, never called as a subflow or from Apex.Confirm there is no dynamic launch path, then retire it.
SF-PROCESS-MINE-002A hub flow with high fan-in (a single point of failure).Treat it as an interface: pin inputs and outputs, test every caller.
SF-PROCESS-MINE-003Informational automation inventory: each flow with trigger type, version state, callers and the objects and fields it touches.None. Use it to brief reviewers.
SF-BREAKING-001A custom field, Apex class or flow with many inbound references, so a delete or rename is high-risk. Lists the dependents by type.Update every dependent in the same change, or stage the change behind a deprecation window.

Each finding carries the node API name, type and inbound and outbound edge counts. JSON output includes graph node IDs.

See also: Flow security checks, Unused and bloat