I've come across a use case where a Contact can have one label today, but that label might need to be removed tomorrow - the field value(s) that define the labels change. Unfortunately, we don't have the ability to filter by Contact Security Label. If we did, how easy would it be to ask the question "Has Security Label 'A', and field criteria says they shouldn't"?
In order to work around this limitation, I'm using a couple of different options:
1. Set a flag on the Contact record when the label is set in Program Builder. This seems like the most obvious and straight-forward approach, and it is, but doesn't scale well if you have a TON of security labels, which I hope you don't (for sanity's sake). Be sure to remove the flag each time they enter PB.
2. Add to a shared list when the label is set in Program Builder. On the surface this is also pretty straight-forward, but can get more complex if you need to evaluate combinations of 'member of' & 'not member of'. This solution is also a bit more challenging in that if you have to evaluate field-level criteria in combination with 'member of' & 'not member of' it requires a Segment with filter and list criteria, which we know can only feed a Campaign. That Campaign would then need to feed your Security Label program.
Thoughts? Other approaches?