Unified Connector Framework Interfaces

Last modified 15 Nov 2021 14:56 +01:00
This page is outdated, it contains information that was not updated in a long time. The described functionality may or may not work. Do not rely on information provided on this page.


Component: provisioniong/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.

UCF Implementation

Currently there are two UCF implementations:

  • ucf-impl-connid: Implementation using the ConnId framework. This is used for almost all midPoint connectors.

  • ucf-impl-builtin: Implementation for specialized built-in connectors. This is used mostly for manual connectors.

UCF ConnId Implementation

Component: provisioniong/ucf-impl-connid

TODO: documentation

UCF Builtin Implementation

Component: provisioniong/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.

Manual Connectors

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:

How To Create Manual Connector

  1. Coordinate your effort with midPoint development team. See Development Participation.

  2. Create a subclass of AbstractManualConnectorInstance:

    1. Implement the abstract methods

    2. Use @ManagedConnector annotation

  3. The implementation must be in com.evolveum.midpoint package. Following root package is recommended:

  4. Make sure that this implementation is on a class path when midPoint runs.

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.