1

I'm having a field update in Process builder, as per the screenshot

enter image description here

The problem is, I'm updating the record where User Action is NOT Awaiting GRN (as I am setting it to something else), and still the 1st field update is giving the problem, as the condition shouldn't be satisfied. From the debug log:

18:40:38.805 (2887926403)|FLOW_ELEMENT_ERROR|The flow failed to access the value for SObject.ABC__Requestor_Buyer__r.ABC__Email__c because it hasn't been set or assigned.|FlowRecordUpdate|myRule_3_A2

I confirmed the issue by removing this 1st field update and the record got saved properly. I added this field update again and added multiple conditions as well like the ABC__Requestor_Buyer__c must not be null and CSV Batch No as some random value (which is definitely not there in the record), still this is throwing the same issue.

Error steps:

  1. PB1 runs on record change.
  2. A condition states if a field(Doc type) is "PO Processing", call another process (PB2, the one in screenshot). The condition has unchecked checkbox "Do you want to execute the actions only when specified changes are made to the record?".
  3. Another invocable PB2 has a satisfying condition which leads to the field update (in screenshot) but shouldn't be executed as it has unsatisfying conditions like in the red box in the screenshot.

Is it like Process builder still using the value for evaluation or something similar?

Any idea?

8
  • That's strange. If you remove the first field update and retain all the filter conditions as-is, is the process builder still updating the records?
    – arut
    Sep 8, 2020 at 14:22
  • @arut record is getting updated but not as mentioned in this field update, but as it is supposed to be (as per another field update), another strange thing! Sep 8, 2020 at 14:47
  • Do you mean the first field update is not happening but the rest of the field updates are? And was you response for the specific scenario mentioned in my previous comment or was that general observation from before?
    – arut
    Sep 8, 2020 at 15:18
  • @arut no the field updates in screenshot are not happening, but from another condition/diamond which is supposed to be executed. These field updates in screenshot should never be executed in the scenario I mentioned, (and they are actually not getting executed, just the error is coming if the Requestor / Buyer field is null). Sep 8, 2020 at 15:58
  • Ah, I see... So the condition which is connected to the action (shown in your screenshot) evaluates to false and hence, this action doesn't get executed. The next condition (or the one after that) in the process builder gets evaluated to true and its connected action works fine. Despite this expected behavior, the presence of this one field update is causing the process builder failure (although this field update is unrelated to your specific test case and doesn't get executed). Is this a correct understanding?
    – arut
    Sep 8, 2020 at 17:20

1 Answer 1

1

I tried to replicate this error in my dev org and the process builder structure is as shown in the screenshot below. The immediate action UpdateRecord1 has the same conditions & updates as given in your question.

enter image description here

Based on my observations, I'm confident in saying that the error will NOT occur unless Condition1 evaluates to true and immediate action UpdateRecord1 is being evaluated (I'll come back to this immediate action in a bit). If Condition1 fails and Condition2 evaluates to true, UpdateRecord2 will execute and the presence of a field update (that is causing the process builder failure) in UpdateRecord1 will not have any impact.

Now coming back this immediate action UpdateRecord1, its as shown in the screenshot below in my process builder (similar to what you have).

enter image description here

When the process builder is evaluating or trying to execute this immediate action, it seems to be doing the following in the sequence mentioned below:

  1. Fetching values of all the variables defined in the conditions as well as field updates (i.e., fields specified in Filter the records you update based on these conditions as well as Set new field values for the records you update). Any error or null reference will result in process builder failure.
  2. Evaluate the condition to check whether the field update can be done or not.
  3. If the conditions evaluated to true, then field update happens. Otherwise, it doesn't.

in your case, the error should occur in the step 1 (because ABC__Requestor_Buyer__r must be null).

If you remove the field update that is causing the error, the step 1 will be successful because there is no null reference exception or error in fetching the field values. Thereafter, step 2 & 3 will execute without any issues (i.e. field update will happen depending on the condition evaluation to true or false). So, you will not see process builder failure because it either updated the field or not (but did not run into any unexpected exceptions).

Also, you or the org admin must have received an email for this process builder failure (see screenshot below for ref) which give the details of what happened in the process builder execution in a better format as compared to the debug logs.

enter image description here

For further reading, in case you are interested, check this & this.


Update (from @AdityaVijay)

Process builder field update can be updated to formula as shown below to solve the problem:

IF(ISBLANK([ABC__Invoice__c].ABC__Requestor_Buyer__c), '', [ABC__Invoice__c].ABC__Requestor_Buyer__r.ABC__Email__c)
4
  • Sorry I had to wait for the weekend to read and understand your answer :-) So as per your answer from the bold text in 1st point, the error will occur in my case as it evaluates the filter condition and field update both at the same time regardless the filter condition whether it satisfies or not, IF the condition written in the diamond gets satisfied, right? Sep 13, 2020 at 12:06
  • 1
    Yes, that's correct (but with a minor correction). Rather than saying 'it evaluates the filter condition and field update', it should be 'it(process builder) first tries to access the values of the fields specified in the filter condition and field update sections' and the evaluation part comes later (if there is no error during field accessing).
    – arut
    Sep 14, 2020 at 5:19
  • Yeah okay, thanks a lot for the clarification and indeed hard work. I tried to find it on the web before posting the question if it's documented but didn't find it nor in the ln. Did you see it somewhere? I fixed the issue by having a formula for 1st field update as mentioned in answer updated. Sep 14, 2020 at 9:52
  • No. I couldn't find any reliable information about this in SF documentation. I had replicated this problem on my dev org and tried quite a few test scenarios (checking the debug logs for every test case) before I could conclude this. Thanks for the update suggestion.
    – arut
    Sep 14, 2020 at 10:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .