I needed to delete all the Managers from people in the FIM Portal where a particular Manager was set. I had blithely assumed this would be easy with the FIM PowerShell plugin – sadly, not so.
You can clear a string value easily enough by setting it to an empty string. So this works:
$ImportObject = ModifyImportObject -TargetIdentifier $ID -ObjectType 'Person' SetSingleValue -ImportObject $ImportObject -AttributeName 'MiddleName' -NewAttributeValue '' import-fimconfig -ImportObject $ImportObject
However change that string attribute to a single-valued reference attribute like Manager and you get this helpful error:
Import-FIMConfig : Failure when making web service call. SourceObjectID = guid Error = The web service client has encountered the following class of error: Other Details: Additional Text Details: Request could not be dispatched.
Note that I’m only having this problem because my reference attribute is single-valued – for multi you can actually delete any specific value, including the last one, essentially nulling the field. But for single-valued you can’t use the Delete operation – you have to use Replace, and it won’t let you replace it with a null or empty string.
Eventually I figured out that I could actually delete the value using a workflow with just the OOB Function Evaluator activity. Set the reference attribute to a space (not an empty string for some reason – I had to put a space as the string), run the workflow against the set of people with the Manager I needed to remove, and I got the job done.
Update: It turns out that setting to a space also works for nulling a Boolean attribute.