Test
There's no publish step — you test a connector the same way you'll ever run it: drop the built JAR into a running agent's connectors directory and restart it. No image build, no registry.
Build and drop the JAR
- Build it:
mvn clean package -DskipTests→target/cyiam-connector-<name>-<version>.jar. - Find the agent's connectors directory — set by
CYIAM_CONNECTORS_DIR(defaults to/opt/cyiam-agent/connectorsin the packaged Docker image,./connectorswhen running the JAR directly). - Copy your JAR there:
cp target/cyiam-connector-<name>-<version>.jar <connectors-dir>/— or, if the agent runs in a container without that directory bind-mounted from the host,docker cp target/cyiam-connector-<name>-<version>.jar <agent-container>:/opt/cyiam-agent/connectors/. - Restart the agent.
PluginLoaderonly scans the connectors directory at startup, not on file changes. - Confirm it loaded: check the agent's log for
Registered connector '<Name>' from cyiam-connector-<name>-<version>.jar, and that it appears in the followingPlugin loading completesummary.
Send a test command and watch it flow
A real ConnectorCommand arrives on agent.<tenantId>.import.inbound (IDENTITY_SYNC) or agent.<tenantId>.prov.inbound (everything else). The agent log shows the whole round trip:
14
If a request fails before reaching your connector code — no connector log line between "Dispatching" and "Published ... status=ERROR" — it's a validation early-return (missing field, unresolvable connectionInfo), not an exception. See connector-requests-responses for the required fields per action.
17
Then re-check the Registered connector log line for the exact filename+version — it's the only reliable signal of what's actually loaded.