> For the complete documentation index, see [llms.txt](https://docs.openiam.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openiam.com/connector-configuration/4-troubleshootingconnector.md).

# Provisioning operations troubleshooting

This section describes how to troubleshoot bugs and explains known issues of provisioning operations

Two failures on this page share one cause: **the connector has become unbound from RabbitMQ** and is no longer receiving requests. OpenIAM is aware of it and a permanent fix is in progress; until then, re-saving the connector rebinds it.

## An identity stays in PENDING\_CREATE or PENDING\_UPDATE

| Symptom                                                                                                                                                               | Cause                                                                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| A user's identity keeps the status `PENDING_CREATE` or `PENDING_UPDATE` long after provisioning, even though the connector has already created or updated the account | The connector is unbound from RabbitMQ and no longer receives requests |

{% stepper %}
{% step %}
**Re-save the connector.** In **Webconsole → Provisioning → Connectors**, open the connector that is failing and click **Save** without changing anything. Saving is what rebinds it.
{% endstep %}

{% step %}
**Confirm the replies are arriving.** Open the managed system dashboard and click the **connector replies** icon on that managed system's row.
{% endstep %}

{% step %}
**Or check the audit log.** Responses appear at the top of the search results as one of:

* `SAVE_CONNECTOR_RESPONSE`
* `SAVE_GROUP_CONNECTOR_RESPONSE`
* `SEARCH_CONNECTOR_RESPONSE`
* `ENABLE_CONNECTOR_RESPONSE`
* `DISABLE_CONNECTOR_RESPONSE`
* `DELETE_CONNECTOR_RESPONSE`
* `RESET_PASSWORD_CONNECTOR_RESPONSE`
  {% endstep %}
  {% endstepper %}

## Sync through a connector returns nothing

| Symptom                                                                                                                                                     | Possible causes                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The audit events `PROVISIONING_USER_SEARCH` and `PROVISIONING_GROUP_SEARCH` carry the error **Response is not received from RabbitMQ during reply timeout** | The connector is unbound from RabbitMQ; the wrong synchronization source is selected; or the query returned more rows than the connector could process inside the reply timeout |

{% stepper %}
{% step %}
**Re-save the connector.** As above — **Webconsole → Provisioning → Connectors**, open the connector, click **Save**. Then check the managed system dashboard's connector replies icon.
{% endstep %}

{% step %}
**Set Synchronization Source to Connector — Asynchronous and Multi-Threaded.** The older plain **Connector** source is deprecated and does not return results this way.
{% endstep %}

{% step %}
**Raise the reply timeout.** A query returning many rows can take longer than the 30-second default, and the reply is discarded before the connector finishes. Extend the timeout on **the IDM and synchronization services**, then restart them and run the sync again.

Add the option to `start.sh` in `/usr/local/openiam/services` — the script each OpenIAM service unit runs, with the service name as its first argument:

{% code overflow="wrap" %}

```
$JAVA_HOME/bin/java -Dlogging.level.root=INFO -Dlogging.level.org.openiam=WARN -Dorg.openiam.mq.broker.reply.timeout=3000000 -Dconfpath=$HOME_DIR -jar $JAVA_OPTS $HOME_DIR/services/bin/$1.jar > $HOME_DIR/logs/$1.log
```

{% endcode %}

The value is in milliseconds — `3000000` is 50 minutes.
{% endstep %}
{% endstepper %}

## Connector error codes

When a connector operation fails, the response carries one of the shared `ConnectorErrorCode` values below (visible in the audit log's connector-response entry and in the connector's own log). Use this table to map the code to its likely cause.

**Configuration and connectivity**

<table><thead><tr><th width="264">Code</th><th>Meaning</th></tr></thead><tbody><tr><td><code>INVALID_CONFIGURATION</code></td><td>The managed-system configuration is incomplete or wrong (missing attribute, bad path, etc.).</td></tr><tr><td><code>UNABLE_TO_CONNECT</code></td><td>The connector could not reach the target system — check URL, network, and credentials.</td></tr><tr><td><code>TEST_CONNECTION_ERROR</code></td><td>The test-connection operation failed.</td></tr><tr><td><code>CERTIFICATE_INSTALLATION</code></td><td>A TLS certificate could not be installed/trusted.</td></tr><tr><td><code>JDBC_DRIVER_NOT_FOUND</code></td><td>The JDBC driver class could not be loaded — wrong class name or driver JAR missing from the connector classpath.</td></tr><tr><td><code>SCIM_CLIENT_NOT_INITIALIZED</code></td><td>The SCIM client failed to initialize before the operation.</td></tr><tr><td><code>NO_FILE</code></td><td>A required file (for example, a configuration file) was not found.</td></tr></tbody></table>

**Request problems**

<table><thead><tr><th width="287">Code</th><th>Meaning</th></tr></thead><tbody><tr><td><code>EMPTY_REQUEST</code> / <code>NULL_OPERATION</code> / <code>NULL_OBJECT_TYPE</code></td><td>The incoming request is malformed — missing body, operation, or object type.</td></tr><tr><td><code>OBJECT_TYPE_NOT_SUPPORTED</code> / <code>OPERATION_NOT_SUPPORTED</code></td><td>The connector does not support the requested object type or operation (see the connector page's supported-operations table).</td></tr><tr><td><code>INIT_REQUEST_CLASS_ERROR</code> / <code>REQUEST_INSTANTIATE_ERROR</code></td><td>The request message could not be deserialized into the expected class — typically a version mismatch between OpenIAM and the connector.</td></tr><tr><td><code>INVALID_SEARCH_QUERY</code></td><td>The search/sync query is invalid for this connector.</td></tr><tr><td><code>SEARCH_BASE_DN_NOT_DEFINED</code></td><td>(LDAP) No search base DN configured.</td></tr><tr><td><code>NO_SUCH_IDENTIFIER</code></td><td>The referenced object/identity was not found on the target.</td></tr></tbody></table>

**Operation failures**

<table><thead><tr><th width="234">Code</th><th>Meaning</th></tr></thead><tbody><tr><td><code>CRUD_OPERATION_ERROR</code> / <code>SAVE_OPERATION_ERROR</code></td><td>A create/update/delete operation failed on the target — the error text carries the underlying cause.</td></tr><tr><td><code>ERROR_ON_CREATE_USER</code> / <code>ERROR_ON_UPDATE_USER</code> / <code>ERROR_ON_DELETE_USER</code> / <code>ERROR_ON_SELECT_USER</code></td><td>The specific user operation failed.</td></tr><tr><td><code>ERROR_ON_SUSPEND_USER</code> / <code>ERROR_ON_RESUME_USER</code> / <code>ERROR_ON_LOCK_USER</code></td><td>The status-change operation failed.</td></tr><tr><td><code>ERROR_ON_RESET_PASSWORD</code> / <code>NOT_VALID_PASSWORD</code></td><td>Password reset failed / the password violates the target's rules.</td></tr><tr><td><code>SEARCH_USER_FAILED</code> / <code>SEARCH_GROUP_FAILED</code> / <code>NO_RESULTS_RETURNED</code></td><td>A search returned an error or nothing.</td></tr><tr><td><code>SQL_ERROR</code></td><td>(Database connectors) The SQL statement failed — check the query and the service account's privileges.</td></tr><tr><td><code>DIRECTORY_ERROR</code></td><td>(Directory connectors) An LDAP/directory operation error.</td></tr><tr><td><code>OTHER_ERROR</code></td><td>Any unclassified failure — check the connector log for the stack trace.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.openiam.com/connector-configuration/4-troubleshootingconnector.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
