I'm working on a Professional Edition org and experiencing some strange things in Process Builder and I hope this can be clarified. I have created a minimal example, a custom object "Beep__c" which has a Name field and one custom field "Boop__c". UPDATE: Making this example even more minimal as it still demonstrates the situation.
Process is invoked when a Beep is created or updated.
[Beep__c].Name != NULL
Immediate Actions: 1)
Update Borp = [Beep__c].Name & " Beep!"
Beep Name = [Beep__c].Borp__c & " Beeep!"; evaluate next criteria
- Edit an existing record, setting Name = A, Borp = B, save.
- Expected: Name = A Beep! Beeep!, Borp = A Beep!
- Actual result: Name = B Beeep!, Borp = A Beep!
- So even though I've already modified the value of Name during this Process, whenever I try to retrieve that field again I always get the value of Name from when the Process started.
- Edit an existing record, setting Name = A, Borp is null, save.
- Expected: Name = A Beep! Beeep!, B = A Beep!
- Actual result is as expected
- So this time, because I saved null/empty to Borp, the value I updated the field with in Process Builder is correctly seen later in the Process.
So I have concluded so far:
- If Process Builder updates a field on the current record that was non-null, any attempt to access it later in the process will only find the original value.
- But if PB updates a field on the current record that was null, any attempt to reference it later in the process will find the value that was saved to the field.
So if I want to be able to overwrite a field value in Process Builder and find that updated value again later in the Process, am I just out of luck? There are after all no temporary variables like in Flows (and I can't get Flows in Professional Edition).