I have gone through a scenario. I need date/time of every stage change of an opportunity. I have created some date and time field to store opportunity stage change date. let says, if opportunity in stage 1 on 1st Jan so 1 date field updated by workflow the stage change date. Same I did with rest of stages and workflow criteria is "created and subsequently meet the criteria". but I saw every time I change the stage those fields got update. ideally fields should be update once. Like 1st jan for 1 stage then 2nd jan for 2 stage. if I again change the opportunity in 1 stage on 3rd jan so 3rd jan should not be store on 1 stage date/time custom field but actually it is updating. rule work like every time created and edited. I tired to set criteria formula evaluated but no luck. Any approach you can share. please help.
Got the answer. rule criteria would be formula evaluated like this
AND( ISPICKVAL( StageName , "Prospecting"), ISNull( Prospect_Date__c ))
so first time that custom field (Prospect_Date__c) will be null so workflow trigger and update the field in current date and time. and from next time it won't be match the criteria.
Have you think about audit that field? if you go to the opportunity fields you will see the field history tracking button on the top and you can activate it to the stage field of the opportunity.