> For the complete documentation index, see [llms.txt](https://docs.harmony.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.harmony.io/integrations/saas-applications/adobe.md).

# Adobe

Discover users and track Adobe license assignments across your organization via the Adobe User Management API

Adobe provides creative and productivity software used across design, marketing, and content teams - including Acrobat, Creative Cloud, and Experience Cloud. Connecting Adobe to Harmony via the User Management API (UMAPI) gives IT teams visibility into who has access to which Adobe products, enabling accurate license tracking and spend optimization.

{% hint style="info" %}
This integration is read-only. Harmony pulls user and license data from Adobe but does not modify your Adobe organization.
{% endhint %}

#### What the Adobe integration enables

| Capability       | Description                                                         |
| ---------------- | ------------------------------------------------------------------- |
| User Discovery   | Surface all Adobe users in Harmony's software inventory             |
| License Tracking | See which Adobe products and entitlements are assigned to each user |
| Admin Visibility | See which users hold Adobe administrator roles, and which type      |
| Spend Visibility | Review paid product entitlements per user to right-size Adobe spend |

#### Prerequisites

* **Adobe Admin Console Access**: System Administrator role in Adobe Admin Console
* **Adobe Developer Console Access**: Ability to create projects and OAuth credentials
* **Harmony Account**: Active Harmony workspace

#### Connect Adobe to Harmony

**Step 1: Create an OAuth Credential in Adobe Developer Console**

1. Go to [Adobe Developer Console](https://developer.adobe.com/console) and sign in as a System Administrator
2. Click **Create new project**
3. Click **Add API** and select **User Management API**
4. Choose **OAuth Server-to-Server** as the credential type
5. Click **Save configured API**
6. Copy the **Client ID** and **Client Secret** from the credential details page

{% hint style="warning" %}
**OAuth Server-to-Server is the only supported credential type.** Adobe's legacy **JWT / Service Account** credentials have reached end of life and no longer issue access tokens - a JWT credential will fail to connect.
{% endhint %}

{% hint style="warning" %}
Before moving on, confirm that the **User Management API** scope (`user_management_sdk`) is enabled in your project. Even if your credentials authenticate successfully, a missing scope means the resulting token will not have the permissions required for user management access. You can verify this under the credential's **Scopes** section in the Adobe Developer Console.
{% endhint %}

**Step 2: Find your Organization ID**

1. Go to [Adobe Admin Console](https://adminconsole.adobe.com)
2. Navigate to **Settings** > **Organization**
3. Copy the **Organization ID** - it follows the format `XXXXX@AdobeOrg` (e.g. `A495E53@AdobeOrg`)

**Step 3: Navigate to Integrations**

1. Log in to your Harmony dashboard
2. Go to **Settings** > **Integrations**
3. Find **Adobe** under **SaaS Applications** and click **Connect**

**Step 4: Enter Credentials**

1. Enter your **Client ID**
2. Enter your **Client Secret**
3. Enter your **Organization ID** (e.g. `A495E53@AdobeOrg`)
4. Click **Connect**

Once connected, Harmony refreshes your Adobe user inventory every 6 hours.

{% hint style="info" %}
**Multiple Adobe organizations:** If your company manages more than one `@AdobeOrg` organization, you can connect each one as a separate Adobe integration. Repeat these steps with the Client ID, Client Secret, and Organization ID belonging to that organization.
{% endhint %}

#### Disconnect Adobe from Harmony

1. Log in to your Harmony dashboard
2. Go to **Settings** > **Integrations**
3. Find **Adobe** under **SaaS Applications** and click the integration card
4. Click **Disconnect**
5. Confirm the disconnection when prompted

Once disconnected, Harmony stops syncing data from Adobe. Previously synced data remains available in Harmony.

#### What Harmony Syncs

**From Adobe:**

* Users (name, email, account status, identity type, email domain, and country)
* Product license assignments per user
* License tier per user (Paid for users holding a product profile, Free otherwise)
* Product profiles and entitlements
* Group memberships
* Administrator roles per user - System Administrator, Deployment Administrator, Support Administrator, Product Administrator, Product Profile Administrator, User Group Administrator, Contract Administrator, and Storage Administrator

{% hint style="info" %}
**Only active users are returned by Adobe.** Adobe's user-listing API returns users with an `active` status only. Harmony therefore detects offboarded or removed users when they stop appearing in a sync, rather than from a status change on the user record.
{% endhint %}

{% hint style="info" %}
**Sign-in and usage data is not available from Adobe.** Adobe exposes no public API for per-user last login or per-user product usage in Admin Console organizations, so Harmony cannot report Adobe activity or last-seen dates.
{% endhint %}

#### Permissions Explained

Harmony authenticates with your OAuth Server-to-Server credential and requests a single scope string. Adobe does not offer finer-grained scopes for the User Management API.

| Scope                 | Purpose                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------ |
| `openid`, `AdobeID`   | Required by Adobe IMS to issue the server-to-server access token                                 |
| `user_management_sdk` | Read access to the User Management API - your organization's users, groups, and product profiles |

Harmony only issues read requests against two User Management API endpoints: the organization's user list and its group list. No endpoint that creates, modifies, or removes Adobe users, groups, or licenses is ever called.

Creating the User Management API credential in the Adobe Developer Console requires the **System Administrator** role in your Adobe organization. Other administrator roles cannot create the integration.

#### Use Cases

<details>

<summary>License Reclamation</summary>

Find the users who hold paid Adobe product entitlements - such as Creative Cloud or Acrobat product profiles - and reclaim seats from people who no longer need them

</details>

<details>

<summary>Offboarding Verification</summary>

Confirm Adobe licenses have been removed as part of employee offboarding workflows

</details>

<details>

<summary>Software Inventory</summary>

Include Adobe products in a complete view of software usage and spend across the organization

</details>

#### Troubleshooting

<details>

<summary>Connection fails with an authorization error</summary>

**Possible causes:**

* The credential is a legacy **JWT / Service Account** credential rather than **OAuth Server-to-Server**
* The **User Management API** (`user_management_sdk`) scope is not enabled on the project
* The credential was created by a user without the **System Administrator** role
* The Client ID, Client Secret, or Organization ID was copied incorrectly

**Solutions:**

1. In the Adobe Developer Console, confirm the credential type is **OAuth Server-to-Server** and recreate it if it is not
2. Confirm `user_management_sdk` appears under the credential's **Scopes** section
3. Recreate the project while signed in as a System Administrator
4. Re-copy the Organization ID from **Adobe Admin Console** > **Settings** > **Organization** - it must be entered exactly as shown, in the `XXXXX@AdobeOrg` form

</details>

<details>

<summary>Adobe users are not appearing in Harmony</summary>

**Possible causes:**

* The first sync has not finished yet
* The Organization ID belongs to a different Adobe organization than the one holding your users

**Solutions:**

1. Wait for the sync to complete - Harmony refreshes the Adobe user inventory every 6 hours
2. Verify the Organization ID in **Adobe Admin Console** > **Settings** > **Organization** matches the organization whose users you expect to see
3. If you manage several Adobe organizations, connect each one as its own Adobe integration

</details>

<details>

<summary>No last login or usage data for Adobe users</summary>

**Possible causes:**

* Adobe does not publish sign-in or product usage data for Admin Console organizations

**Solutions:**

1. This is an Adobe platform limitation, not a configuration problem - no Adobe API exposes per-user last login or per-user product usage, so Harmony cannot surface it. Use product entitlements to review who holds paid Adobe seats

</details>

#### Data & Privacy

<details>

<summary>Key privacy principles</summary>

For information about how Harmony handles your data, see our [Privacy Policy](https://harmony.io/privacy).

* Harmony accesses Adobe data in read-only mode and does not modify any data in your Adobe organization
* The integration can be revoked at any time by disconnecting it in Harmony, or by deleting the OAuth Server-to-Server credential in the Adobe Developer Console

</details>


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.harmony.io/integrations/saas-applications/adobe.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
