Github link: https://github.com/Evolveum/midpoint/tree/master/provisioning/ucf-api
Primary interfaces are ConnectorFactory and ConnectorInstance. The UCF implementation is supposed to provide at least one implementation of ConnectorFactory. The ConnectorFactory implementation will produce instances of ConnectorInstance interface.
Currently there are two UCF implementations:
Github link: https://github.com/Evolveum/midpoint/tree/master/provisioning/ucf-impl-connid
Github link: https://github.com/Evolveum/midpoint/tree/master/provisioning/ucf-impl-builtin
UCF implementation for built-in and specialized connectors. This a very thin implementation, heavily based on midPoint internals (e.g. Prism Objects) and Spring framework.
This implementation is looking for connector classes that have @ManagedConnector annotation and it tries to use them automatically. All "connectors" used by this implementation must be built together with midPoint. Therefore they either need to be part of midPoint itself, they need to be midPoint dependencies or they need to be glued to midPoint classpath by using maven overlay or a similar mechanism.
The UCF API has s specialized abstract class
AbstractManualConnectorInstance that can be used to create manual connectors. Built-in manual connectors simply need to extend this class and implement the abstract methods. The responsibility of a manual connector implementation is to create tickets (work orders) and to provide information about their state.
The default built-in manual connector implementation can be used as an example:
com.evolveum.midpoint package. Following root package is recommended:
This method is only supported for connectors that are supposed to become (optional) part of midPoint. It is expected that the connectors will be available under open source license, preferably Apache License and that they will be contributed to the midPoint project. This method is not supported for commercial or per-project connectors.