...
At operation level:
- values must be fetch fetched when reading users (groups, any objects) via REST - if mapped
- effective read invocation on the underlying connectors is reduced by using cache
- virtual attributes are populated into users (group, any objects) exclusively by
VirAttrHandler
, only when strictly required - user (group, any object) update is often problematic: virtual attributes to be removed and updated need explicit management in
PropagationManager
- when the same attribute is mapped for different resources (linking or not), a list of values is generated and it is not clear where the ownerships come comes from
Refactoring proposal
- when defining a virtual schema, it is mandatory to define the linking resource(s)
- virtual attributes are not assigned any more to users (groups, any objects) but, as long as an user (group, any object) is assigned the AnyTypeClass of which the virtual schema is part, it is also assigned the related virtual attribute
- mapping:
- linking resource(s) have, besides traditional mapping items, one or more linking mapping which derives from virtual schema definition (see above)
- virtual attributes can only be mapped for propagation to non-linking resources (as, because of linking mapping, are already mapped both in propagation and synchronization to linking resources)
- Syncope will autonomously decide when to read or to write (as part of propagation) virtual attributes' values from linking resources
...