Administrators will typically observe the following indicators:
Account.npe01__One2OneContact__c) begin failing on records touched by the batch process.
The error logged in the NPSP Error Log and/or Apex exception emails will follow this pattern:
|
CANNOT_EXECUTE_FLOW_TRIGGER We encountered an error when evaluating the formula for the entry criteria of the [Flow_API_Name] flow. Tell your Salesforce admin about this error: Could not access the following field: Account.npe01__One2OneContact__c Context: CRLP.ContactHardCredit |
The field reference in the error message may vary depending on which Flow’s entry criteria references cross-object NPSP fields. Common examples include Account.npe01__One2OneContact__c, Account.npe01__SYSTEMIsIndividual__c, or any custom cross-object formula used in a Record-Triggered Flow’s Start Element.
This error is caused by a collision between Salesforce’s Scheduled Job execution context and the security model governing Record-Triggered Flow entry criteria evaluation. The failure chain proceeds as follows:
When a Salesforce user schedules a batch job (such as NPSP Customizable Rollups, DLRS scheduled calculations, or any Apex Schedulable class), Salesforce permanently binds that job to the scheduling user. The job will continue to execute in that user’s security context indefinitely, regardless of subsequent changes to the user’s license, profile, or permission sets. This binding is visible in Setup > Scheduled Jobs under the "Submitted By" column.
An administrator changes the job-owning user’s license from a full Salesforce license (e.g., Salesforce Platform, Sales Cloud) to a restricted license type such as "Salesforce Integration" with the "Minimum Access - API Only" profile. This is a common action during employee offboarding or license reclamation. The restricted profile strips visibility to standard objects including Account, Contact, and Opportunity, as well as any custom or packaged fields on those objects.
When the nightly batch job runs (still executing as the now-restricted user), it performs DML operations on records—typically Contacts or Accounts during rollup calculations. These DML operations fire Record-Triggered Flows configured in the org.
Here is the critical failure point. When a Record-Triggered Flow is fired, the Salesforce Flow engine evaluates the Start Element’s Entry Criteria (the conditions that determine whether the flow should run) in the strict security context of the running user—not in System Mode. If the entry criteria contain a cross-object field reference (e.g., Account.npe01__One2OneContact__c on a Contact-triggered flow), the engine checks whether the running user has field-level visibility to that field. Because the restricted user’s profile no longer grants visibility to the Account object or its fields, the Flow engine raises a CANNOT_EXECUTE_FLOW_TRIGGER exception and blocks the entire DML operation.
Key distinction: The flow body itself can run in System Mode ("Run in System Context Without Sharing"), but the Entry Criteria evaluation in the Start Element always runs in User Context. This is an intentional Salesforce security design, but it creates a non-obvious failure mode when batch jobs run under restricted users.
To resolve this issue, the administrator must transfer ownership of the affected scheduled jobs to an active user with full object and field visibility (typically a System Administrator or a dedicated Integration User with an unrestricted profile).
If the org uses Declarative Lookup Rollup Summaries (DLRS), those scheduled jobs also need to be transferred:
After rescheduling, monitor the NPSP Error Log following the next nightly batch run (typically the next morning). The CANNOT_EXECUTE_FLOW_TRIGGER errors should no longer appear, and rollup calculations should process successfully.
Best Practices for Avoidance:
Audit Before Downgrading: Before changing a user's license to "Integration" or "Minimum Access," always check Setup > Scheduled Jobs to see if they own critical processes.
Use Dedicated Service Accounts: Avoid scheduling system-critical jobs under individual employee users. Use a dedicated "System Admin" generic user for these tasks to prevent issues during staff turnover.
Refactor Flow Logic: Avoid complex cross-object formulas in Flow Start Elements (Entry Criteria). Move complex logic to a Decision Element inside the flow, where it runs in System Mode and is less sensitive to user permission quirks.
In addition to reassigning job ownership, administrators can make their Record-Triggered Flows resilient against this class of error by refactoring the entry criteria logic:
Problem: Complex cross-object field references (e.g., formulas referencing Account.npe01__One2OneContact__c) in a Flow’s Start Element entry criteria are evaluated in strict User Context.
Fix: Move the complex entry criteria logic out of the Start Element and into a Decision Element immediately inside the flow body.
To implement this:
Why this works: Logic inside the flow body (Decision Elements, Assignments, etc.) executes in System Mode, which bypasses field-level security restrictions. Only the Start Element’s entry criteria are subject to the running user’s permissions.
Before downgrading any user’s license to "Integration," "Minimum Access," or any restricted type—and before deactivating any user—always navigate to Setup > Scheduled Jobs and filter the "Submitted By" column for that user. Transfer ownership of any critical jobs before making the license change.
Avoid scheduling system-critical batch jobs under individual employee user accounts. Instead, create a dedicated service account (e.g., "NPSP Integration User" or "System Automation User") with a full System Administrator profile. Use this account exclusively for scheduling NPSP batch jobs, DLRS calculations, and other automated processes. This insulates your automation from employee turnover, license reclamation, and profile changes.
As a general architectural practice, avoid placing complex cross-object formulas or field references in a Record-Triggered Flow’s Start Element. Reserve the Start Element for simple, single-object conditions and move complex evaluation logic to Decision Elements inside the flow body, where it benefits from System Mode execution.
005305532

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.