[SalesForce] Field update on record type is not firing

I have 2 workflows that work on 2 record types. Each record type is associated with a respective page layout which has its own fields. The first record type is 'X' and has a field 'Status' in it. The other record type is 'Y' has a checkbox 'Check' in it.

Now, my first workflow + field update is

IF(STATUS__c == 'FINAL',true,false)

and the record type change to Y and the owner of the record changes.

My second workflow + field update is

IF(CHECK__c == TRUE,true,false)

and the record type changes to X and the owner of the record changes.

My question is, the first time I do this, it works. That is if I have the status as 'Final' in X, the owner and the record type are changing to Y. Next, if I select the check box 'Check', the owner and the record type are changing back to X.

But when I edit the Status of X to 'Final' after the record type has been changed from Y -> X, the workflow isn't firing.

The criteria is 'Evaluate the rule when a record is created, and every time it's edited' and in both the field updates I have selected 'Re-evaluate Workflow Rules after Field Change'

Best Answer

As I understand, lets have a simple visualization here

First Case : Record Type is X and status is changed to final:

Value of

  • Status__c = FINAL
  • Check__c = false
  • Record Type = Changed from X to Y (Because of the Workflow. perfect!)

Second Case : Record Type is Y and Check__c is checked:

Value of

  • Status__c = FINAL
  • Check__c = true
  • Record Type = changed from Y to X (Because of the Workflow. perfect!)

Third Case : Record Type is X, Status__c = FINAL and Check__c is true : SO I believe it triggers both your workflows in same transaction as both workflows match the condition and the record changes and is altered back to initial condition. You can confirm it from debug logs .


What you can do.

I think you change the workflow criteria to created and subsequently edited to meet the criteria.

Then add one more field update each in your two workflows.

In Workflow with criteria IF(STATUS__c == 'FINAL',true,false) add one field update to make value of Check__c as false.

In workflow with criteria IF(CHECK__c == TRUE,true,false) add a field update to update the Status__c to Blank/None or some other Value.

Related Topic