> For the complete documentation index, see [llms.txt](https://docs.elimity.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.elimity.com/ms-entra-id-governance/step-by-step-deployment-guide.md).

# Step-by-step deployment guide

The Microsoft Entra ID Governance connector for Elimity Insights fetches access packages and their assignments from Entra ID entitlement management.

### Microsoft Entra ID Governance (access packages)

The Microsoft Entra ID Governance connector for Elimity Insights fetches the access packages from Microsoft Entra entitlement management, together with who is assigned to each package, under which policy and until when — so you can review requestable and assigned access bundles alongside the rest of your identity data. Follow the instructions below to set up the connector.

{% hint style="info" %}
This connector covers **access packages** (entitlement management). For privileged roles and memberships managed by Privileged Identity Management, use the [Microsoft Entra PIM Roles](https://docs.elimity.com/ms-entra-pim-roles/step-by-step-deployment-guide), [Microsoft Entra PIM Groups](https://docs.elimity.com/ms-entra-pim-groups/step-by-step-deployment-guide) or [Microsoft Entra PIM for Azure resources](https://docs.elimity.com/ms-entra-pim-azure-resources/step-by-step-deployment-guide) connectors.
{% endhint %}

#### 1. Which data is imported

The following entity types are imported:

* **Access Packages** — the access packages defined in your catalogs
* **Access Package Assignments** — one per subject per access package, with its policy, state and end date
* **Access Package Subjects** — the users (and other subjects) that hold an access package assignment

Rather than linking subjects to access packages directly, each assignment is modelled as its own entity, so the policy it was granted under, its state and its expiry stay attached to that specific grant.

{% code overflow="wrap" %}

```mermaid
graph TD;Subject[Access Package Subject]; Assignment[Access Package Assignment]; Package[Access Package];Subject --> Assignment; Assignment --> Package;
```

{% endcode %}

Attributes imported per entity type:

**Access Package** — Catalog, Description, Is hidden, Created on, Modified on

**Access Package Assignment** — Package, Subject, Policy ID, Policy name, State, Status, End date

**Access Package Subject** — Email, Object ID, Principal name, On-premises SID, Type

#### 2. Creating a dedicated app registration in Entra ID

As usual we recommend creating a dedicated account for this connector. Follow the steps below to set up a new app registration in Entra ID:

1. In Azure, open your tenant's app registrations by typing 'app registrations' in the global search bar and clicking the **App registrations** service.
2. Click the **New registration** button.
3. Choose a name for this registration (e.g. `elimity-insights-entra-id-governance`).
4. Leave the defaults for 'Supported account types' and 'Redirect URI' and click **Register**.

Note down both the **client identifier** and the **tenant identifier** for this new app registration.

#### 3. Generating credentials for the new app registration

The connector authenticates as the app registration using a client secret. Click **Certificates & secrets** in the menu on the left and add a new client secret. Immediately note down the **value** of your new secret (Entra shows it only once). Note the secret's expiry date: imports fail once it expires, so plan to rotate it.

#### 4. Granting read permissions to the Graph API

Grant the app registration read access to entitlement management in the Microsoft Graph API:

1. Click **API permissions** in the menu on the left and add **Microsoft Graph → Application permissions**:
   * `EntitlementManagement.Read.All` — read access packages, their catalogs, policies and assignments
2. Grant admin consent for this permission.

New permissions can take a few minutes to take effect; if the first import fails with an authorization error, wait a moment and run it again.

#### 5. Creating a source in Elimity Insights

1. Go to **Sources** in the left navigation bar and click **Add Source**.
2. Search for **Custom** and click **Set Up**.
3. Click **Set Up** again and give the source a name (e.g. `Microsoft Entra ID Governance`).
4. Select **Upload export file**, click **Continue**, and upload the data model file: `data-model-export.json`.
5. Open the **Config** tab and click **Edit**.
6. Set **Enable automatic imports via custom gateway** to `true` and fill in the **Gateway URL**: [`https://microsoft-entra-id-governance-gateway-75801044224.europe-west1.run.app`](https://microsoft-entra-id-governance-gateway-75801044224.europe-west1.run.app).
7. Click **Add configuration value** and add the entries below. Keys are case-sensitive.
8. Click **Save and run** to launch your first import. The **Imports** tab shows the summary for each run.

{% file src="/files/9diJ9HpbilMsZsBKXbWU" %}

| Configuration option | Key            | Description                                                         |
| -------------------- | -------------- | ------------------------------------------------------------------- |
| Tenant ID            | `tenantId`     | Tenant identifier you noted down in step 2.                         |
| Client ID            | `clientId`     | Client identifier you noted down in step 2.                         |
| Client secret        | `clientSecret` | Client secret value you noted down in step 3 (store as a password). |

***


---

# 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.elimity.com/ms-entra-id-governance/step-by-step-deployment-guide.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.
