Sync() operation needs an objectClass to be passed to specify which object class should be synced.
In some situation, one may need to get any kind of Sync events, regardless of the objectClass.
For example, to preserve a sequence of events on a target system:
For that, we propose to create a special system __ANY__ objectclass that would indicate the connector to collect events to sync() regardless of the objectClass.
Copy from mailing list:
This is a special case when the order of sync events is important across multiple ObjectClasses. Most of SPIOperation is specific for a given ObjectClass but there are two exceptions when IDM needs to retrieve different ConnectorObjects with different ObjectClasses.
Sync: If there is a relation between object type in the remote resource, for example "Container" contains "Object" and "Object" has additional "Sub-Objects" and the change events has to be processed in exact same order as it ordered on the resource then the Sync must be able to request the all events for all the three ObjectClasses in one operation.
Search: This has the same limitation, the Connector can not support a Polymorphic relation. For example to list the member of a Group if the members can be Group or User.
In these cases the Framework would allow to call sync(__ANY__, … ) and executeQuery(__ANY__, ..) but it would throw IllegalArgumentException or UnsupportedOperationException in any other case.