Process Builder cannot access Contact fields on a Person Account record when making a spanning reference from another object
|Knowledge Article Number||000232840|
|Description||Process Builder cannot access Contact fields on a Person Account record when making a spanning reference from another object.
0. In an Org with Person Accounts enabled
1. Create a custom object (testObject), with a Lookup to Account
2. On Contact Object, create a custom field (testField)
3. Create a Process on 'testObject', with criteria looking at testField on the related Account (e.g. [testObject__c].Account.testField__c Equals 'A Value'). Add any action to this Process and Activate.
4. Create a record in 'testObject', and choose a Person Account in the Account Lookup.
Result: The Process fails with an error - "The flow failed to access the value for myVariable_current.Account__r.testField__pc because it hasn't been set or assigned.
NOTE: This behavior is the same when the Process is on a Standard or Custom object (e.g. 'testObject' above could be a standard object like 'Case', and the results would be the same)
|Resolution||This is currently a known/expected limitation of using Flow/Processes in conjunction with Person Accounts.
a) If possible, define 'testField' as an Account field rather than a Contact field. Processes can make spanning reference to the Account fields on a Person Account.
b) Alternately, create a Formula Field on the Object the Process is on (e.g. testObject) to pull the value from the related Person Account (e.g. following the example above we'd create a formula on 'testObject' with syntax Account__r.PersonContact.testField__c). Then set the Process criteria to refer to this new field.