Skip to content

Commit 6addc33

Browse files
authored
Merge pull request #244582 from MicrosoftDocs/main
Publish to live, Tuesday 4 AM PST, 7/11
2 parents 866afc1 + 28e106d commit 6addc33

File tree

205 files changed

+2656
-782
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

205 files changed

+2656
-782
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
---
2+
title: API-driven inbound provisioning concepts
3+
description: An overview of API-driven inbound provisioning.
4+
services: active-directory
5+
author: jenniferf-skc
6+
manager: amycolannino
7+
ms.service: active-directory
8+
ms.subservice: app-provisioning
9+
ms.workload: identity
10+
ms.topic: reference
11+
ms.date: 06/22/2023
12+
ms.author: jfields
13+
ms.reviewer: chmutali
14+
---
15+
16+
# API-driven inbound provisioning concepts (Public preview)
17+
18+
This document provides a conceptual overview of the Azure AD API-driven inbound user provisioning.
19+
20+
> [!IMPORTANT]
21+
> API-driven inbound provisioning is currently in public preview and is governed by [Preview Terms of Use](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
22+
23+
## Introduction
24+
25+
Today enterprises have a variety of authoritative systems of record. To establish end-to-end identity lifecycle, strengthen security posture and stay compliant with regulations, identity data in Azure Active Directory must be kept in sync with workforce data managed in these systems of record. The *system of record* could be an HR app, a payroll app, a spreadsheet or SQL tables in a database hosted either on-premises or in the cloud.
26+
27+
With API-driven inbound provisioning, the Azure AD provisioning service now supports integration with *any* system of record. Customers and partners can use *any* automation tool of their choice to retrieve workforce data from the system of record and ingest it into Azure AD. The IT admin has full control on how the data is processed and transformed with attribute mappings. Once the workforce data is available in Azure AD, the IT admin can configure appropriate joiner-mover-leaver business processes using [Lifecycle Workflows](../governance/what-are-lifecycle-workflows.md).
28+
29+
## Supported scenarios
30+
31+
Several inbound user provisioning scenarios are enabled using API-driven inbound provisioning. This diagram demonstrates the most common scenarios.
32+
33+
:::image type="content" source="media/inbound-provisioning-api-concepts/api-workflow-scenarios.png" alt-text="Diagram that shows API scenarios." lightbox="media/inbound-provisioning-api-concepts/api-workflow-scenarios.png":::
34+
35+
### Scenario 1: Enable IT teams to import HR data extracts using any automation tool
36+
Flat files, CSV files and SQL staging tables are commonly used in enterprise integration scenarios. Employee, contractor and vendor information are periodically exported into one of these formats and an automation tool is used to sync this data with enterprise identity directories. With API-driven inbound provisioning, IT teams can use any automation tool of their choice (example: PowerShell scripts or Azure Logic Apps) to modernize and simplify this integration.
37+
38+
### Scenario 2: Enable ISVs to build direct integration with Azure AD
39+
With API-driven inbound provisioning, HR ISVs can ship native synchronization experiences so that changes in the HR system automatically flow into Azure AD and connected on-premises Active Directory domains. For example, an HR app or student information systems app can send data to Azure AD as soon as a transaction is complete or as end-of-day bulk update.
40+
41+
### Scenario 3: Enable system integrators to build more connectors to systems of record
42+
Partners can build custom HR connectors to meet different integration requirements around data flow from systems of record to Azure AD.
43+
44+
In all the above scenarios, the integration is greatly simplified as Azure AD provisioning service takes over the responsibility of performing identity profile comparison, restricting the data sync to scoping logic configured by the IT admin and executing rule-based attribute flow and transformation managed in the Microsoft Entra admin portal.
45+
46+
## End-to-end flow
47+
:::image type="content" source="media/inbound-provisioning-api-concepts/end-to-end-workflow.png" alt-text="Diagram of the end-to-end workflow of inbound provisioning." lightbox="media/inbound-provisioning-api-concepts/end-to-end-workflow.png":::
48+
49+
### Steps of the workflow
50+
51+
1. IT Admin configures an API-driven inbound user provisioning app from the Microsoft Entra Enterprise App gallery.
52+
2. IT Admin provides endpoint access details to the API developer/partner/system integrator.
53+
3. The API developer/partner/system integrator builds an API client to send authoritative identity data to Azure AD.
54+
4. The API client reads identity data from the authoritative source.
55+
5. The API client sends a POST request to provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint associated with the provisioning app.
56+
>[!NOTE]
57+
> The API client doesn't need to perform any comparisons between the source attributes and the target attribute values to determine what operation (create/update/enable/disable) to invoke. This is automatically handled by the provisioning service. The API client simply uploads the identity data read from the source system by packaging it as bulk request using SCIM schema constructs.
58+
1. If successful, an ```Accepted 202 Status``` is returned.
59+
1. The Azure AD Provisioning Service processes the data received, applies the attribute mapping rules and completes user provisioning.
60+
1. Depending on the provisioning app configured, the user is provisioned either into on-premises Active Directory (for hybrid users) or Azure AD (for cloud-only users).
61+
1. The API Client then queries the provisioning logs API endpoint for the status of each record sent.
62+
1. If the processing of any record fails, the API client can check the error details and include records corresponding to the failed operations in the next bulk request (step 5).
63+
1. At any time, the IT Admin can check the status of the provisioning job and view events in the provisioning logs.
64+
65+
### Key features of API-driven inbound user provisioning
66+
67+
- Delivered as a provisioning app that that exposes an *asynchronous* Microsoft Graph provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint accessed using valid OAuth token.
68+
- Tenant admins must grant API clients interacting with this provisioning app the Graph permission `SynchronizationData-User.Upload`.
69+
- The Graph API endpoint accepts valid bulk request payloads using SCIM schema constructs.
70+
- With SCIM schema extensions, you can send any attribute in the bulk request payload.
71+
- The rate limit for the inbound provisioning API is 40 bulk upload requests per second. Each bulk request can contain a maximum of 50 user records, thereby supporting an upload rate of 2000 records per second.
72+
- Each API endpoint is associated with a specific provisioning app in Azure AD. You can integrate multiple data sources by creating a provisioning app for each data source.
73+
- Incoming bulk request payloads are processed in near real-time.
74+
- Admins can check provisioning progress by viewing the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md).
75+
- API clients can track progress by querying [provisioning logs API](/graph/api/resources/provisioningobjectsummary).
76+
77+
## Next steps
78+
- [Configure API-driven inbound provisioning app](inbound-provisioning-api-configure-app.md)
79+
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)
80+
- [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](user-provisioning.md)
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
title: Configure API-driven inbound provisioning app
3+
description: Learn how to configure API-driven inbound provisioning app.
4+
services: active-directory
5+
author: jenniferf-skc
6+
manager: amycolannino
7+
ms.service: active-directory
8+
ms.subservice: app-provisioning
9+
ms.workload: identity
10+
ms.topic: how-to
11+
ms.date: 07/07/2023
12+
ms.author: jfields
13+
ms.reviewer: cmmdesai
14+
---
15+
16+
# Configure API-driven inbound provisioning app (Public preview)
17+
18+
## Introduction
19+
This tutorial describes how to configure [API-driven inbound user provisioning](inbound-provisioning-api-concepts.md).
20+
21+
> [!IMPORTANT]
22+
> API-driven inbound provisioning is currently in public preview and is governed by [Preview Terms of Use](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
23+
24+
This feature is available only when you configure the following Enterprise Gallery apps:
25+
* API-driven inbound user provisioning to Azure AD
26+
* API-driven inbound user provisioning to on-premises AD
27+
28+
## Prerequisites
29+
To complete the steps in this tutorial, you need access to Microsoft Entra admin portal with the following roles:
30+
31+
* Global administrator OR
32+
* Application administrator (if you're configuring inbound user provisioning to Azure AD) OR
33+
* Application administrator + Hybrid identity administrator (if you're configuring inbound user provisioning to on-premises Active Directory)
34+
35+
If you're configuring inbound user provisioning to on-premises Active Directory, you need access to a Windows Server where you can install the provisioning agent for connecting to your Active Directory domain controller.
36+
37+
## Create your API-driven provisioning app
38+
39+
1. Log in to the [Microsoft Entra portal](<https://entra.microsoft.com>).
40+
2. Browse to **Azure Active Directory -> Applications -> Enterprise applications**.
41+
3. Click on **New application** to create a new provisioning application.
42+
[![Screenshot of Entra Admin Center.](media/inbound-provisioning-api-configure-app/provisioning-entra-admin-center.png)](media/inbound-provisioning-api-configure-app/provisioning-entra-admin-center.png#lightbox)
43+
4. Enter **API-driven** in the search field, then select the application for your setup:
44+
* **API-driven Inbound User Provisioning to On-Premises AD**: Select this app if you're provisioning hybrid identities (identities that need both on-premises AD and Azure AD account) from your system of record. Once these accounts are provisioned in on-premises AD, they are automatically synchronized to your Azure AD tenant using Azure AD Connect or Cloud Sync.
45+
* **API-driven Inbound User Provisioning to Azure AD**: Select this app if you're provisioning cloud-only identities (identities that don't require on-premises AD accounts and only need Azure AD account) from your system of record.
46+
47+
[![Screenshot of API-driven provisioning apps.](media/inbound-provisioning-api-configure-app/api-driven-inbound-provisioning-apps.png)](media/inbound-provisioning-api-configure-app/api-driven-inbound-provisioning-apps.png#lightbox)
48+
49+
5. In the **Name** field, rename the application to meet your naming requirements, then click **Create**.
50+
51+
[![Screenshot of create app.](media/inbound-provisioning-api-configure-app/provisioning-create-inbound-provisioning-app.png)](media/inbound-provisioning-api-configure-app/provisioning-create-inbound-provisioning-app.png#lightbox)
52+
53+
> [!NOTE]
54+
> If you plan to ingest data from multiple sources, each with their own sync rules, you can create multiple apps and give each app a descriptive name; for example, Provision-Employees-From-CSV-to-AD or Provision-Contractors-From-SQL-to-AD.
55+
6. Once the application creation is successful, go to the Provisioning blade and click on **Get started**.
56+
[![Screenshot of Get started button.](media/inbound-provisioning-api-configure-app/provisioning-overview-get-started.png)](media/inbound-provisioning-api-configure-app/provisioning-overview-get-started.png#lightbox)
57+
7. Switch the Provisioning Mode from Manual to **Automatic**.
58+
59+
Depending on the app you selected, use one of the following sections to complete your setup:
60+
* [Configure API-driven inbound provisioning to on-premises AD](#configure-api-driven-inbound-provisioning-to-on-premises-ad)
61+
* [Configure API-driven inbound provisioning to Azure AD](#configure-api-driven-inbound-provisioning-to-azure-ad)
62+
63+
## Configure API-driven inbound provisioning to on-premises AD
64+
65+
1. After setting the Provisioning Mode to **Automatic**, click on **Save** to create the initial configuration of the provisioning job.
66+
1. Click on the information banner about the Azure AD Provisioning Agent.
67+
[![Screenshot of provisioning agent banner.](media/inbound-provisioning-api-configure-app/provisioning-agent-banner.png)](media/inbound-provisioning-api-configure-app/provisioning-agent-banner.png#lightbox)
68+
1. Click **Accept terms & download** to download the Azure AD Provisioning Agent.
69+
1. Refer to the steps documented here to [install and configure the provisioning agent.](https://go.microsoft.com/fwlink/?linkid=2241216). This step registers your on-premises Active Directory domains with your Azure AD tenant.
70+
1. Once the agent registration is successful, select your domain in the drop-down **Active Directory domain** and specify the distinguished name of the OU where new user accounts are created by default.
71+
[![Screenshot of Active Directory domain selected.](media/inbound-provisioning-api-configure-app/provisioning-select-active-directory-domain.png)](media/inbound-provisioning-api-configure-app/provisioning-select-active-directory-domain.png#lightbox)
72+
> [!NOTE]
73+
> If your AD domain is not visible in the **Active Directory Domain** dropdown list, reload the provisioning app in the browser. Click on **View on-premises agents for your domain** to ensure that your agent status is healthy.
74+
1. Click on **Test connection** to ensure that Azure AD can connect to the provisioning agent.
75+
1. Click on **Save** to save your changes.
76+
1. Once the save operation is successful, you'll see two more expansion panels – one for **Mappings** and one for **Settings**. Before proceeding to the next step, provide a valid notification email ID and save the configuration again.
77+
[![Screenshot of the notification email box.](media/inbound-provisioning-api-configure-app/provisioning-notification-email.png)](media/inbound-provisioning-api-configure-app/provisioning-notification-email.png#lightbox)
78+
> [!NOTE]
79+
> Providing the **Notification Email** in **Settings** is mandatory. If the Notification Email is left empty, then the provisioning goes into quarantine when you start the execution.
80+
1. Click on hyperlink in the **Mappings** expansion panel to view the default attribute mappings.
81+
> [!NOTE]
82+
> The default configuration in the **Attribute Mappings** page maps SCIM Core User and Enterprise User attributes to on-premises AD attributes. We recommend using the default mappings to get started and customizing these mappings later as you get more familiar with the overall data flow.
83+
1. Complete the configuration by following steps in the section [Start accepting provisioning requests](#start-accepting-provisioning-requests).
84+
85+
86+
## Configure API-driven inbound provisioning to Azure AD
87+
88+
89+
1. After setting the Provisioning Mode to **Automatic**, click on **Save** to create the initial configuration of the provisioning job.
90+
1. Once the save operation is successful, you will see two more expansion panels – one for **Mappings** and one for **Settings**. Before proceeding to the next step, make sure you provide a valid notification email id and Save the configuration once more.
91+
92+
[![Screenshot of the notification email box.](media/inbound-provisioning-api-configure-app/provisioning-notification-email.png)](media/inbound-provisioning-api-configure-app/provisioning-notification-email.png#lightbox)
93+
94+
> [!NOTE]
95+
> Providing the **Notification Email** in **Settings** is mandatory. If the Notification Email is left empty, then the provisioning goes into quarantine when you start the execution.
96+
1. Click on hyperlink in the **Mappings** expansion panel to view the default attribute mappings.
97+
> [!NOTE]
98+
> The default configuration in the **Attribute Mappings** page maps SCIM Core User and Enterprise User attributes to on-premises AD attributes. We recommend using the default mappings to get started and customizing these mappings later as you get more familiar with the overall data flow.
99+
1. Complete the configuration by following steps in the section [Start accepting provisioning requests](#start-accepting-provisioning-requests).
100+
101+
## Start accepting provisioning requests
102+
103+
1. Open the provisioning application's **Provisioning** -> **Overview** page.
104+
1. On this page, you can take the following actions:
105+
- **Start provisioning** control button – Click on this button to place the provisioning job in **listen mode** to process inbound bulk upload request payloads.
106+
- **Stop provisioning** control button – Use this option to pause/stop the provisioning job.
107+
- **Restart provisioning** control button – Use this option to purge any existing request payloads pending processing and start a new provisioning cycle.
108+
- **Edit provisioning** control button – Use this option to edit the job settings, attribute mappings and to customize the provisioning schema.
109+
- **Provision on demand** control button – This feature is not yet enabled in private preview.
110+
- **Provisioning API Endpoint** URL text – Copy the HTTPS URL value shown and save it in a Notepad or OneNote for use later with the API client.
111+
1. Expand the **Statistics to date** > **View technical information** panel and copy the **Provisioning API Endpoint** URL. Share this URL with your API developer after [granting access permission](inbound-provisioning-api-grant-access.md) to invoke the API.
112+
113+
## Next steps
114+
- [Grant access to the inbound provisioning API](inbound-provisioning-api-grant-access.md)
115+
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)
116+
- [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](user-provisioning.md)
117+

0 commit comments

Comments
 (0)