Hi James,
When requests are created/modified (i.e. submitted, approved, rejected, fulfilled, etc) there are a number of events that are fired, even for the same event type (i.e. Request/SubscriptionItem Change). This is why the majority of OOTB rules include status old and new ranges as well as rate_item_col=0, similar to the following under Request/Subscription Item Change, so the action is only invoked by the event that has the status transition from not submitted range (100-199) to submitted (200) status:
When Status is Submitted and Approval Process is driven by Workflow
status < 400 AND status >= 200 AND status_old < 200 AND status_old >= 100 AND rate_item_col = 0 AND approval_process = 2
When Status is Pending Approval
Rule with filter that fires when status changed to Pending Approval. Depending on discrete configuration this rule will be fired once per service or once per service option.
status=400 AND status_old <> 400 AND rate_item_col = 0
When Status is Pending Fulfillment
status_old >= 800 AND status_old <= 999 AND status = 1000 AND rate_item_col = 0 AND approval_process = 2
As noted in the description of the pending approval rule, discrete configuration (Catalog > Configuration > Request Management Configuration > Allow Discrete Handling of Service Options After) will impact the behavior/number of times the rule/action is invoked (i.e. once per service vs once per service option in the request):
Discrete Request Life Cycle Parameters - CA Service Management - 14.1 - CA Technologies Documentation
I could suggest the following to help identify the events and what parameters may be necessary in your rule event filter:
1) Create a rule under the event you are using and leave the filter empty
2) Create an email action and pass some helpful parameters (by selecting the triangle icon) in the subject similar to the following:
Request $request_id$ Status: $status$ Old status: $status_old$ rate_item_col: $rate_item_col$ external_id: $external_id$
3) In the body you can include $all$ which will include the data for all of the event parameters or any other relevant parameter
4) Carry out the specific Catalog functionality and analyze the details/differences between events/emails
Also, not all events are related specifically to status/status change. As an example, for Request/Subscription Item Change, I believe the events are more so invoked per service option element (i.e. Name, Description, Form, etc) in the service option definition. So if there are 3 service option elements in the requested service option, you would see 3 emails each time the request/form/status is changed if you use an empty filter as mentioned in step 1 above. This is why the OOTB filters under Request/Subscription Item Change include rate_item_col=0 in addition to the status/status_old ranges.
As for the PAM process instance failing to invoke after modifying the rule/action, I have seen this addressed by a recycle of the Catalog service, not sure if you tried before deleting/recreating.
Thanks,
Jason