If you’ve done work with MOSS audiences, you’re probably aware that one of the ways that you can build an audience is to set up rules based on values found on each user’s profile. For example:
In this case, I’ve set up a membership condition so that the “Favorite Ice Cream” custom user profile property must equal “Chocolate” for a given user to be included in my audience. When the audience is compiled, the output looks something like this:
So now my audience has three user profiles that match all the required rules. Easy enough.
Here’s the “gotcha” (and the reason for the subject line of this post): when compiling audiences based on user profile properties, the property must be defined with a privacy setting that gives everyone access to the property.
You might not run into this if you’re using out-of-the-box profile properties (and they happen to be set to “Everyone.” However, the trick is that this is NOT how SharePoint defaults the value when you add a new property; the default value is for “Only Me” in the privacy settings. If I had left that as the setting in the example I gave above, the “Chocolate Ice Cream Lovers” audience would compile without any errors, but it would show no members, even though I clearly know that there are profiles that match that value.
The fix is easy: simply set the privacy value to “Everyone” on the “User profile properties” screen within the SSP:
Note that this does not mean that you have to let users edit the property, nor do you have to display it on the user profile form. However, if you want the property to be available for audience compilation purposes, you need to make it visible to “Everyone.”