You may want to give it a try to process the results of a VBO enabled view via Rules, as detailed below.
Step 1 - make it work for a single (1st) term
Remark: this is an intermediate step to prepare a prototype for Step 2 (if you have enough Rules experience, just start straight from Step 2).
Create a rule like so:
- Rules Event: After saving a node of type "Opportunity"
- Rules Condition: Check if the node was tagged with your 1st term, using "List contains item" (and the list to be checked being the field of the node that contains the interest categories).
- Load the VBO list of users that you want to be processed.
- Add a loop to perform a Rules Action, for each row contained in your Views results. Within this Rules Action, you then send a notification to the user being processed.
Some more details about the VBO-view you'd have to create for this:
- The view should list all users who have some specific term selected (which corresponds to the 1st term).
- It should include an appropriate filter for the term ID to be processed.
- It should have exactly 1 result (row) for each user to be notified.
- One of the columns should be the eMail Id (I don't see other columns needed for this to work).
For more details, have a look at the tutorial "How to process the results of a VBO enabled view via Rules?".
Step 2 - make it work for all terms (not just the 1st term)
Since the Opportunity may have been tagged with multiple terms, you need to improve the solution from Step 1 to handle all the terms (not just the 1st one). To do so, these are the steps to improve the rule from Step 1:
- Add a "Rules Loop" as your very first Rules Action, to iterate over each term that the Opportunity was tagged with.
- For each term in this iteration, perform these sub-items:
- check which term you're actually processing. This check is similar to the Rules Condition from Step 1, but you should use the Conditional Rules module to be able to include such Rules Condition as part of a Rules Action. BTW you can either use IF/THEN constructs, or CASE/WHEN constructs.
- If the check succeeds, then perform a Rules Action similar to the Rules Action from Step 1.
- Remove the Rules Condition from Step 1 (it is now included via the previous check using Conditional Rules).