How to: Remove Values from Attributes That Have Multiple Values

You can use a Forefront Identity Manager Synchronization Service (FIM Synchronization Service) rules extension to remove a specified value from an attribute that contains multiple attribute values. The most efficient way to do this is to first calculate the new multi-valued attribute and then assign the result to the attribute.

The following examples show how to remove specified values from an attribute that has multiple values. The examples remove any attribute value that begins with smtp: from the multi-valued attribute called othermailbox. The examples first remove all values from the value collection. Each attribute value that does not begin with smtp: is then added to the value collection.

Public Sub MapAttributesForImport(ByVal FlowRuleName As String, _
    ByVal csentry As CSEntry, _
    ByVal mventry As MVEntry) _
    Implements IMASynchronization.MapAttributesForImport

    Dim mailElement As Value

    ' Create an empty string value collection.
    Dim finalValues As ValueCollection = Utils.ValueCollection("initialValue")
    finalValues.Clear()

    For Each mailElement In csentry("othermailbox").Values
        If Not mailElement.ToString.ToLower.StartsWith("smtp:") Then
            finalValues.Add(mailElement)
        End If
    Next

    mventry("othermailbox").Values = finalValues
End Sub
void IMASynchronization.MapAttributesForImport(
    string  FlowRuleName, 
    CSEntry csentry, 
    MVEntry mventry)
{
    // Create an empty string value collection.
    ValueCollection finalValues = Utils.ValueCollection("initialValue");
    finalValues.Clear();
 
    foreach(Value mailElement in csentry["othermailbox"].Values)
    {
        if(! mailElement.ToString().ToLower().StartsWith("smtp:"))
        {
            finalValues.Add(mailElement);
        }
    }

    mventry["othermailbox"].Values = finalValues;
}

See Also

Concepts

Rules Extensions Examples
Using Rules Extensions