I have been working with support in trying to understand how and when DB rules are evalueated triggered when rules that are "lower" in the list fire after one of the "higher" rules fires. I'm using Higher and Lower to indicate the rules position in the list of DB Rules. Unfortunately, I've confused myself and cannot determine which method actually works.
Here are the two methods I see as being possibilities.
1. A value changes in Service Call - Use Status for Example. 2. All the DB rules which look for that change in Status will fire. 3. Now, one of those DB Rules changed another field's value as part of its Action. 4. The DB rules will then re-evaluate, or take a second pass, to see if any other rules should fire based on the value changing in Step 3. This happens after all of the DB Rules are evaluated the first time in Step 2.
Option #2 1. A value changes in Service Call - Use Status for Example. 2. The rules process and find one that meets the Criteria. Rule is processed and Action updates another field. 3. Rules continue to process down the list. It is now looking for criteria that was changed in Step 1 as well as the new value change from Step 2. This will result in the list of DB rules processing down the list a single time.
As far as I am aware, each time you save a record in the DB all DB rules for that record type are evaluated so the main thing to be careful of is that an earlier rule does not alter a field to a value that could upset a later one. For example, by emptying it.
A technique that you can use for debugging is to have a custom text field on a record type and make it audited. Then add an additional action on your rules which update this text field to say "Rule name fired". Then you can look at the record history to see the order in which things happened.