PingDirectory

Synchronizing a subset of fields from the source attribute

The following configuration can be used to synchronize the value and type fields of ubidEmailJSON from the source to a destination. To synchronize this source value:

ubidEmailJSON: {"value" : "jsmith@example.com",
                "type" : "home",
                "primary" : true}

to this value at the destination:

ubidEmailJSON: {"value" : "jsmith@example.com",
                "type" : "home"}

You can filter JSON field values in the value-pattern and conditional-value-pattern constructed attribute mapping properties. This enables a given field value to only be mapped for values that match a given filter.

For example, if ubidEmailJSON is a JSON attribute and the value field is to be extracted only for values where the type field is equal to work, the value pattern specifying this would be as follows:

{ubidEmailJSON.value({{"filterType":"equals","field":"type","value":"work"}})}

A JSON Attribute configuration object must be created and associated with the Sync Class. This can be done by either explicitly including the fields to synchronize:

$ bin/dsconfig create-json-attribute --pipe-name "A to B" \
  --class-name Users \
  --attribute-name ubidEmailJSON \
  --set include-field:type \
  --set include-field:value

Or by excluding the fields that should not be synchronized:

$ bin/dsconfig create-json-attribute \
  --pipe-name "A to B" \
  --class-name Users \
  --attribute-name ubidEmailJSON \
  --set exclude-field:preferred \
  --set exclude-field:verified

If the destination is prepared to only handle a specific subset of fields, then list the fields to include. However, if only a small, known subset of fields from the source should be excluded, then exclude-field could be used. In this example, the destination data for the ubidEmailJSON attribute will always be a subset of the full data.

A Sync Class can be configured to exclude certain attributes from synchronization. Creating a regular attribute mapping will override this setting, and the attribute will be synchronized. Creating a JSON attribute mapping does not override this setting, and the JSON attribute will not be synchronized. A JSON attribute is not a traditional attribute mapping. It only includes information on the destination attribute name. To work around this, the attribute either needs to be mapped from a source attribute, or have its value constructed.

The following scenario illustrates how the destination can include additional fields that are not present at the source.