This is basically a design question. I have a field (lookup to User record), called Recruiter__c. And lets say there is checkbox field that acts like a criteria for a WF. Lets call it Send_Reminder_Email__c checkbox field.
This is my requirement- Whenever Send_Reminder_Email__c is checked, send an email to "Recruiter_c" right away (using email alert action), and also have a 24 hr reminder, which can be accomplished by adding a time based action (an email alert) on the same WF. If after 24 hrs, Send_Reminder_Email__c is still checked, send another email (and that would be it, no third reminder).
This is easily doable. But now the ask is to make sure we kick off the WF again when value of field Recruiter_c (which is the intended recipient of email alerts) changes.
I am unable to find a design to marry those two criterias.
While creating a WF, if i select "When record is created and every time its edited", i can use ISCHANGED function in formula for criteria, that will help me detect changes to field Recruiter_c. But it doesn't allow time-based Wf actions.
Now if i chose "When record is created and every time its edited to meet the criteria", i can have immediate as well as time-based actions, but now i can't use ISCHANGED function, so no way for me to incorporate changes to Recrutier__c field in Wf criteria.
Using process builder has same issues.
Can anyone suggest me any design to solve this? Even if it is combination of code and declarative features.
Update as per recommendation of sfdcfox (but still not working)
So i added a checkbox field "Control_Flag_for_WF__c", default state of field being TRUE. We effectively turn it off and on again, in conjunction with other rule criterias, to fire the email WF again. I have total of 3 workflows, out of which two are dedicated to turning the control flag off and on again when change in "Recruiter" is detected
Workflow 1 when to fire = When a record is created and every time its edited (this is when we can use ISCHANGED function) criteria = ISCHANGED(Recruiter__c) Immediate action = Field Update, Control_Flag_for_WF__c = False In field update, i have selected "Re-evaluate WF rules after field update"
Workflow 2 when to fire = When a record is created and edited to meet the criteria Criteria = Control_Flag_for_WF__c = False Immediate Action = Control_Flag_for_WF__c = true In field update, i have selected "Re-evaluate WF rules after field update"
Workflow 3 (the actual Wf that sends email) When to fire = When a record is created and edited to meet the criteria Criteria = (Control_Flag_for_WF__c = true) && (other relevant criterias) Actions = Immediate and a time based action to send email
Workflow 1 and 2 work. But workflow 3 never fires. If i test WF 1 and 2 in isolation (deactivate Wf 3), they work .. which means when Recruiter__c is changed, the control flag is set and reset. If i deactivate WF 1 and WF 2, and manually uncheck and check the control flag, it fires WF 3. But somehow when i put all of them together, WF 3 doesnt fire