FIM RCDC uocIdentityPicker- scope the resolve button

Scenario

In many scenarios, you want the user to select objects through the Identity Picker control. In order to scope the search for the objects, you can either define a filter or one or more key words to link the search to a search scope.

If a filter is defined, the search button displays the list of the matching objects. However, there is option for the user to search within the filter results. This is a problem if a large number of objects is returned. If a filter is defined, the Resolve button also resolves the objects only within the filter scope.

If a search scope is referenced through key words, the user can search for objects as defined in the selected search scopes and then select the object(s). However, the Resolve button does not respect the search scope and resolves within the defined resource types.

In many cases you would like the user to be able to search and select the objects from the defined search scopes but also be able to enter the object name directly in the text box a have it resolved by clicking the Resolve button. If you have defined a scope which has a more stringent filter then only the resource types, the resolve button may resolve undesired objects.

The Identity Picker control provides an undocumented feature (well, at least I haven’t found any documentation) which lets you also scope the resolving of typed in values. The property ObjectTypes does not only take Resource Type(s) but also can contain a limited XPath filter.

Property ObjectTypes as described in the FIM RCDC Reference on TechNet:

ObjectTypes: This is an optional, string-type property. You can define a list of resource types that the end-user can resolve entries against in the Identity Picker Resolve box. The list consists of a list of resource-type names separated by a comma (,).

Example:
<my:Property my:Name="ObjectTypes" my:Value="Person"/>

If you would like to filter the scope of persons which are resolve, you can add a filter to the Value like:

Example with scoping:
<my:Property my:Name="ObjectTypes" my:Value="Person[ObjectID = /Set[ObjectID = '<GUID of Set>']/ComputedMember]"/>

This example assumes that you have defined a Set which defines the scope of the person objects to be resolved. Enter the Object ID GUID of the Set into the filter. So the Resolve button will only resolve persons which are member of the referenced set.

In order to have a consistent experience for the user, also define a search scope which applies the same filter to the listed object in the list view of the identity picker and reference the search scope through key words.

Christian Jäggli, Enterprise Architect

ALOVIA – project excellence
Ibelweg 18A, CH – 6300 Zug
www.alovia.ch

Leave a comment