This page contains topics supporting ongoing discussion at dev@syncope.apache.org.
Tracked as SYNCOPE-1617.
General idea
Syncope supports since its beginning the concepts of propagating to, pushing to and pulling from External Resources, as implementations of the general provisioning features; in particular, different pull modes are supported, all of them based on the assumption that provisioning is always triggered by Syncope itself.
What is currently missing is support for livesync, e.g. the ability to pull entities upon receving notification that there is something available to pull.
Implementation
At implementation level, Syncope will allow to define a new Entity named LiveSync with the following characteristics:
- define some kind of listener to a queue instance, supposed not to be provided by Syncope but available by infrastructure, where:
- listener can be implemented by a set of supported technologies to choose from
- message payload, published by a set of supported providers, is translated into ConnId's SyncDelta, already used by Pull
- define mapping information as External Resources do
- define trace levels and other supporting configuration, again similarly to External Resources
Overall, when a new message is published into a subscribed queue for which a LiveSync instance is defined, Syncope will:
- translate the message payload into an equivalent SyncDelta instance
- trigger the execution of SinglePullJobDelegate for the given SyncDelta instance, processed on the basis of the defined mapping
Listeners
A good starting point would be to support at least Apache Kafka.
Providers
- Debezium which supports RDBMS, MongoDB and Cassandra
- OpenLDAP Sync Replication
In this case we will also need to implement a component which will be part of thesyncrepl
architecture, publishing messages onto the provided queue instance