Filtering Source and Target Objects With Scripts
You can filter the source or target objects that are included in a synchronization operation using the validSource
, validTarget
, or sourceCondition
properties in your mapping:
validSource
A script that determines if a source object is valid to be mapped.
The script yields a boolean value:
true
indicates that the source object is valid;false
can be used to defer mapping until some condition is met. In the root scope, the source object is provided in the"source"
property. If the script is not specified, then all source objects are considered valid:{ "validSource": { "type": "text/javascript", "source": "source.ldapPassword != null" } }
validTarget
A script used during the second phase of reconciliation that determines if a target object is valid to be mapped.
The script yields a boolean value:
true
indicates that the target object is valid;false
indicates that the target object should not be included in reconciliation. In the root scope, the source object is provided in the"target"
property. If avalidTarget
the script is not specified, then all target objects are considered valid for mapping:{ "validTarget": { "type": "text/javascript", "source": "target.employeeType == 'internal'" } }
sourceCondition
An additional filter that must be met for a source object to be included in a mapping.
This condition works like a
validSource
script. Its value can be either aqueryFilter
string, or a script configuration.sourceCondition
is used mainly to specify that a mapping applies only to a particular role or entitlement.The following
sourceCondition
restricts synchronization to those user objects whose account status isactive
:{ "mappings": [ { "name": "managedUser_systemLdapAccounts", "source": "managed/user", "sourceCondition": "/source/accountStatus eq \"active\"", ... } ] }
During synchronization, scripts and filters have access to a source
object and a target
object. Examples already shown in this section use source.attributeName
to retrieve attributes from the source objects. Scripts can also write to target attributes using target.attributeName
syntax, for example:
{ "onUpdate": { "type": "text/javascript", "source": "if (source.email != null) {target.mail = source.email;}" } }
The sourceCondition
filter also has the linkQualifier
variable in its scope.
For more information about scripting, see Scripting Function Reference.