> 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/freshdesk.md).

# Freshdesk connector

Configure the Freshdesk connector to provision users as Freshdesk contacts using the Freshdesk REST API and an API key.

The **Freshdesk connector** (`freshdesk-connector-rabbitmq`) provisions users to [Freshdesk](https://www.freshworks.com/freshdesk/) over its REST API (`/api/v2`). Users are provisioned as Freshdesk **contacts**.

| Operation                                       | Supported                                  |
| ----------------------------------------------- | ------------------------------------------ |
| Create / update user (Save)                     | ✅ (as a Freshdesk contact)                 |
| Delete user                                     | ✅                                          |
| Test connection                                 | ✅                                          |
| Suspend / resume, reset password, search, login | ❌ Not implemented in the current connector |
| Group provisioning                              | ❌ Not implemented in the current connector |

{% hint style="warning" %}
The connector ships handler classes for the full operation set, but only **save, delete, and test connection** are implemented — the remaining operations are empty stubs and perform no action against Freshdesk. Plan your integration around create/update/delete of contacts.
{% endhint %}

## Use cases

* Keeping **Freshdesk contacts in step with the identity lifecycle** — create and remove contacts as people join and leave.
* **Not** the page for single sign-on *into* Freshdesk — SSO is a separate, federation-side configuration.
* If you need agent/group provisioning or richer lifecycle operations in Freshdesk, plan for a custom integration — this connector covers contacts only.

## Versions and compatibility

The end application is **Freshdesk**, reached over its REST API. The connector appends `/api/v2/...` to the host you set on the managed system, so the API version is fixed at **v2** while the host is yours.

<table><thead><tr><th width="211">Property</th><th>Value</th></tr></thead><tbody><tr><td><strong>Platform</strong></td><td>Freshdesk</td></tr><tr><td><strong>Interface</strong></td><td>Freshdesk REST API <strong>v2</strong>, over HTTPS</td></tr><tr><td><strong>Host</strong></td><td>The managed system's URL, for example <code>https://yourcompany.freshdesk.com</code></td></tr><tr><td><strong>Objects used</strong></td><td><code>agents</code>, <code>contacts</code>, <code>groups</code>, <code>roles</code>, <code>companies</code></td></tr></tbody></table>

## Prerequisites

* A Freshdesk **API key** — it belongs to a Freshdesk agent (profile settings → API key); the agent needs privileges to manage contacts.
* Network access from the connector host to `https://<your-domain>.freshdesk.com` (HTTPS).

## Installing the connector

### Kubernetes

In Kubernetes deployments, the connector is deployed as part of OpenIAM — enable it in your deployment configuration; no separate installation is required.

### RPM

Run the connector JAR directly:

{% code overflow="wrap" %}

```bash
java -Dlogging.level.root=INFO -Dconfpath=/data/openiam/ -jar freshdesk-connector-rabbitmq.jar > freshdesk.out &
```

{% endcode %}

Or, when managed by systemd, use the connector service unit (`openiam-connector@freshdesk-connector-rabbitmq`). To deploy on a separate host, see [Connectors via RPM](/installation/rpm/rpm-single-node/add-a-connector.md).

## Starting, stopping, and restarting

<table><thead><tr><th width="180">Deployment</th><th>Commands</th></tr></thead><tbody><tr><td>RPM (systemd)</td><td><code>systemctl start|stop|restart openiam-connector@freshdesk-connector-rabbitmq</code></td></tr><tr><td>RPM (manual)</td><td>Start with the <code>java -jar</code> command above; stop by killing the process.</td></tr><tr><td>Kubernetes</td><td><code>kubectl rollout restart</code> the connector deployment.</td></tr></tbody></table>

## Command-line parameters and properties

The connector is a Spring Boot application. Its defaults ship inside the jar, and you override them in either of two places:

* **An external property file**, read at `${confpath}/conf/properties/freshdesk-connector-rabbitmq.properties`. The file is optional, and `confpath` is itself a system property, set with `-Dconfpath=/data/openiam/`.
* **Directly on the command line**, as `-D` arguments, which win over the file.

{% code overflow="wrap" %}

```bash
java -Dconfpath=/data/openiam/ -Dlogging.level.root=INFO -Dorg.openiam.connector.queue=FRESHDESK_Connector_1_Request -jar freshdesk-connector-rabbitmq.jar
```

{% endcode %}

<table><thead><tr><th width="306">Property</th><th>Default</th></tr></thead><tbody><tr><td><code>org.openiam.connector.queue</code></td><td><code>FRESHDESK_Connector_1_Request</code></td></tr><tr><td><code>org.openiam.connector.queueResponseName</code></td><td><code>FRESHDESK_Connector_1_Response</code></td></tr><tr><td><code>org.openiam.connector.name</code> / <code>.type</code></td><td><code>Freshdesk</code> / <code>Freshdesk Connector</code></td></tr></tbody></table>

The connection details themselves are **not** set here — they are managed system parameters, covered under [Configuring the managed system](#configuring-the-managed-system).

## Verifying the connector is running

{% stepper %}
{% step %}
In the Webconsole, open the managed system — the **Running connector status** indicator must be green.
{% endstep %}

{% step %}
Click **Test Connection** — it must return success.
{% endstep %}

{% step %}
In the RabbitMQ management console, confirm the `FRESHDESK_Connector_1_Request` queue exists and has a consumer.
{% endstep %}

{% step %}
Check the connector log for startup errors.
{% endstep %}
{% endstepper %}

## Troubleshooting

| Symptom                                                      | Likely cause                                                          | Resolution                                                                       |
| ------------------------------------------------------------ | --------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Connector never receives messages                            | Queue-name mismatch                                                   | The connector record's queue must equal `FRESHDESK_Connector_1_Request` exactly. |
| Operations fail with `401`/`403` from Freshdesk              | Wrong API key, or the key's agent lacks contact-management privileges | Regenerate/verify the API key and the agent's role.                              |
| Suspend/reset/search "appear to succeed" but nothing changes | Those operations are unimplemented stubs                              | Expected — see the operations table above.                                       |
| A sync configured against Freshdesk returns nothing          | Search is not implemented                                             | Use Freshdesk as a provisioning target only.                                     |

See also: [general connector troubleshooting](/connector-configuration/4-troubleshootingconnector.md) and the [connector error-code reference](/connector-configuration/4-troubleshootingconnector.md#connector-error-codes).

## Registering the connector in OpenIAM

Register the connector under **Provisioning → Connectors** and attach it to the managed system — see [Registering the connector](/administration-guide/lifecycle/connectors-and-managed-systems.md). Match the queue name exactly:

## Configuring the managed system

<table><thead><tr><th width="185">Managed-system field</th><th>Value</th></tr></thead><tbody><tr><td><strong>URL</strong></td><td>Your Freshdesk domain base URL, e.g. <code>https://&#x3C;your-domain>.freshdesk.com</code>. The connector appends <code>/api/v2/…</code>.</td></tr><tr><td><strong>Password</strong></td><td>Your Freshdesk <strong>API key</strong>. It is sent using Freshdesk's standard scheme — the API key as the Basic-auth username with a fixed <code>X</code> password.</td></tr></tbody></table>

## Attribute mapping and policy map

Map OpenIAM user attributes to the Freshdesk contact fields (name, email, and related contact data) in the managed system's [policy map](/administration-guide/lifecycle/policy-map.md).

## Reconciliation and synchronization

The search operation is **not implemented** in the current connector, so Freshdesk cannot serve as a synchronization source — provision *to* Freshdesk rather than importing from it.


---

# 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/freshdesk.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.
