Skip to content

Commit 4175d3b

Browse files
committed
Fixed blocking errors
1 parent f232ff0 commit 4175d3b

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed

articles/active-directory/app-provisioning/inbound-provisioning-api-graph-explorer.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ ms.reviewer: cmmdesai
1515

1616
# Quickstart API-driven inbound provisioning with Graph Explorer (Public preview)
1717

18-
## Introduction
1918
This tutorial describes how you can quickly test [API-driven inbound provisioning](inbound-provisioning-api-concepts.md) with Microsoft Graph Explorer.
2019

2120
## Pre-requisites
@@ -224,7 +223,7 @@ The bulk request shown below uses the SCIM standard Core User and Enterprise Use
224223
"failOnErrors": null
225224
}
226225
```
227-
## Next Steps
226+
## Next steps
228227
- [Troubleshoot issues with the inbound provisioning API](inbound-provisioning-api-issues.md)
229228
- [API-driven inbound provisioning concepts](inbound-provisioning-api-concepts.md)
230229
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)

articles/active-directory/app-provisioning/inbound-provisioning-api-logic-apps.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ ms.reviewer: cmmdesai
1515

1616
# API-driven inbound provisioning with Azure Logic Apps (Public preview)
1717

18-
## Introduction
19-
2018
This tutorial describes how to use Azure Logic Apps workflow to implement Microsoft Entra ID [API-driven inbound provisioning](inbound-provisioning-api-concepts.md). Using the steps in this tutorial, you can convert a CSV file containing HR data into a bulk request payload and send it to the Microsoft Entra ID provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint.
2119

2220
## Integration scenario
2321

2422
This tutorial addresses the following integration scenario:
2523

26-
:::image type="content" source="media/inbound-provisioning-api-logic-apps/logic-apps-integration-overview.png" alt-text="Architecture overview of Azure Logic Apps-based integration." lightbox="media/inbound-provisioning-api-logic-apps/logic-apps-integration-overview.png":::
24+
:::image type="content" source="media/inbound-provisioning-api-logic-apps/logic-apps-integration-overview.png" alt-text="Graphic of Azure Logic Apps-based integration." lightbox="media/inbound-provisioning-api-logic-apps/logic-apps-integration-overview.png":::
2725

2826
* Your system of record generates periodic CSV file exports containing worker data which is available in an Azure File Share.
2927
* You want to use an Azure Logic Apps workflow to automatically provision records from the CSV file to your target directory (on-premises Active Directory or Microsoft Entra ID).
@@ -53,7 +51,7 @@ The steps documented in this section are optional. If you already have an existi
5351

5452
## Step 2: Configure Azure Function CSV2JSON converter
5553

56-
1. In the browser associated with your Azure portal login, open the Github repository URL - https://github.com/joelbyford/CSVtoJSONcore.
54+
1. In the browser associated with your Azure portal login, open the GitHub repository URL - https://github.com/joelbyford/CSVtoJSONcore.
5755
1. Click on the link "Deploy to Azure" to deploy this Azure Function to your Azure tenant.
5856
:::image type="content" source="media/inbound-provisioning-api-logic-apps/deploy-azure-function.png" alt-text="Screenshot of deploying Azure Function." lightbox="media/inbound-provisioning-api-logic-apps/deploy-azure-function.png":::
5957
1. Specify the resource group under which to deploy this Azure function.
@@ -65,7 +63,8 @@ The steps documented in this section are optional. If you already have an existi
6563
:::image type="content" source="media/inbound-provisioning-api-logic-apps/web-app-domain-name.png" alt-text="Screenshot of Azure Function Web App domain name." lightbox="media/inbound-provisioning-api-logic-apps/web-app-domain-name.png":::
6664
1. Open Postman client to test if the CSVtoJSON endpoint works as expected. Paste the domain name copied from the previous step. Use Content-Type of "text/csv" and post a sample CSV file in the request body to the endpoint: `https://[your-domain-name]/csvtojson`
6765
:::image type="content" source="media/inbound-provisioning-api-logic-apps/postman-call-to-azure-function.png" alt-text="Screenshot of Postman client calling the Azure Function." lightbox="media/inbound-provisioning-api-logic-apps/postman-call-to-azure-function.png":::
68-
1. If the Azure Function deployment is successful, then in the response you will get a JSON version of the CSV file with status 200 OK.
66+
1. If the Azure Function deployment is successful, then in the response you'll get a JSON version of the CSV file with status 200 OK.
67+
6968
:::image type="content" source="media/inbound-provisioning-api-logic-apps/azure-function-response.png" alt-text="Screenshot of Azure Function response." lightbox="media/inbound-provisioning-api-logic-apps/azure-function-response.png":::
7069
1. To allow Logic Apps to invoke this Azure Function, in the CORS setting for the WebApp enter asterisk (*) and "Save" the configuration.
7170
:::image type="content" source="media/inbound-provisioning-api-logic-apps/azure-function-cors-setting.png" alt-text="Screenshot of Azure Function CORS setting." lightbox="media/inbound-provisioning-api-logic-apps/azure-function-cors-setting.png":::
@@ -85,7 +84,7 @@ The steps documented in this section are optional. If you already have an existi
8584
1. For the `Azurefile_access Key` parameter, open your Azure file storage account and copy the access key present under "Security and Networking".
8685
:::image type="content" source="media/inbound-provisioning-api-logic-apps/azure-file-access-keys.png" alt-text="Screenshot of Azure File access keys." lightbox="media/inbound-provisioning-api-logic-apps/azure-file-access-keys.png":::
8786
1. Click on "Review and Create" option to start the deployment.
88-
1. Once the deployment is complete, you will see the following message.
87+
1. Once the deployment is complete, you'll see the following message.
8988
:::image type="content" source="media/inbound-provisioning-api-logic-apps/logic-apps-deployment-complete.png" alt-text="Screenshot of Azure Logic Apps deployment complete." lightbox="media/inbound-provisioning-api-logic-apps/logic-apps-deployment-complete.png":::
9089

9190
## Step 5: Configure system assigned managed identity
@@ -109,8 +108,10 @@ The steps documented in this section are optional. If you already have an existi
109108
1. If your CSV file content / headers is different, then update the "Parse JSON" step with the JSON output that you can retrieve from your API call to the Azure Function. Use Postman output from Step 2.
110109
:::image type="content" source="media/inbound-provisioning-api-logic-apps/parse-json-step.png" alt-text="Screenshot of Parse JSON step." lightbox="media/inbound-provisioning-api-logic-apps/parse-json-step.png":::
111110
1. In the step "Construct SCIMUser", ensure that the CSV fields map correctly to the SCIM attributes that will be used for processing.
111+
112112
:::image type="content" source="media/inbound-provisioning-api-logic-apps/construct-scim-user.png" alt-text="Screenshot of Construct SCIM user step." lightbox="media/inbound-provisioning-api-logic-apps/construct-scim-user.png":::
113113
1. In the step "Send SCIMBulkPayload to API endpoint" ensure you are using the right API endpoint and authentication mechanism.
114+
114115
:::image type="content" source="media/inbound-provisioning-api-logic-apps/invoke-bulk-upload-api.png" alt-text="Screenshot of invoking bulk upload API with managed identity." lightbox="media/inbound-provisioning-api-logic-apps/invoke-bulk-upload-api.png":::
115116

116117
## Step 7: Run trigger and test your Logic Apps workflow
@@ -121,7 +122,7 @@ The steps documented in this section are optional. If you already have an existi
121122
1. In the final iteration, you should see the Logic Apps upload data to the inbound provisioning API endpoint. Look for `202 Accept` status code. You can copy-paste and verify the bulk upload request.
122123
:::image type="content" source="media/inbound-provisioning-api-logic-apps/execution-results.png" alt-text="Screenshot of the Logic Apps execution result." lightbox="media/inbound-provisioning-api-logic-apps/execution-results.png":::
123124

124-
## Next Steps
125+
## Next steps
125126
- [Troubleshoot issues with the inbound provisioning API](inbound-provisioning-api-issues.md)
126127
- [API-driven inbound provisioning concepts](inbound-provisioning-api-concepts.md)
127128
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)

articles/active-directory/app-provisioning/inbound-provisioning-api-postman.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ ms.reviewer: cmmdesai
1515

1616
# Quickstart API-driven inbound provisioning with Postman (Public preview)
1717

18-
## Introduction
1918
This tutorial describes how you can quickly test [API-driven inbound provisioning](inbound-provisioning-api-concepts.md) with Postman.
2019

2120
## Pre-requisites
@@ -35,7 +34,7 @@ In this step, you'll configure the Postman app and invoke the API using the conf
3534
- [Test-API2AAD.postman_environment.json](https://github.com/AzureAD/entra-id-inbound-provisioning/blob/main/Postman/Test-API2AAD.postman_environment.json) (Environment collection for API-driven provisioning to on-premises AD)-
3635
- [Test-API2AD.postman_environment.json](https://github.com/AzureAD/entra-id-inbound-provisioning/blob/main/Postman/Test-API2AD.postman_environment.json) (Environment collection for API-driven provisioning to on-premises AD)
3736
1. Use the **Import** option in Postman to import both of these files into your Workspace.
38-
:::image type="content" source="media/inbound-provisioning-api-postman/postman-import-elements.png" alt-text="Postman Import Elements." lightbox="media/inbound-provisioning-api-postman/postman-import-elements.png":::
37+
:::image type="content" source="media/inbound-provisioning-api-postman/postman-import-elements.png" alt-text="Screenshot of Postman Import elements." lightbox="media/inbound-provisioning-api-postman/postman-import-elements.png":::
3938
1. Click the **Environments** menu and open the **Test-API2AAD** environment.
4039
1. Retrieve the values of **client_id**, **client_secret**, and **token_endpoint** from your registered app.
4140
:::image type="content" source="media/inbound-provisioning-api-postman/retrieve-authentication-details.png" alt-text="Screenshot of registered app." lightbox="media/inbound-provisioning-api-postman/retrieve-authentication-details.png":::
@@ -48,9 +47,9 @@ In this step, you'll configure the Postman app and invoke the API using the conf
4847
1. From the **Environment** dropdown, select **Test-API2AAD**.
4948
1. Select the **Authorization** tab associated with the collection.
5049
1. Make sure that authorization is configured to use OAuth settings.
51-
:::image type="content" source="media/inbound-provisioning-api-postman/provisioning-oauth-configuration.png" alt-text="Provisioning OAuth configuration." lightbox="media/inbound-provisioning-api-postman/provisioning-oauth-configuration.png":::
50+
:::image type="content" source="media/inbound-provisioning-api-postman/provisioning-oauth-configuration.png" alt-text="Screenshot of Provisioning OAuth configuration." lightbox="media/inbound-provisioning-api-postman/provisioning-oauth-configuration.png":::
5251
1. The **Advanced options** section should show the following configuration:
53-
:::image type="content" source="media/inbound-provisioning-api-postman/provisioning-advanced-options.png" alt-text="Provisioning Advanced options." lightbox="media/inbound-provisioning-api-postman/provisioning-advanced-options.png":::
52+
:::image type="content" source="media/inbound-provisioning-api-postman/provisioning-advanced-options.png" alt-text="Screenshot of Provisioning Advanced options." lightbox="media/inbound-provisioning-api-postman/provisioning-advanced-options.png":::
5453
1. Click on **Get New Access Token** to initiate the process to procure an access token.
5554
1. Select the option **Use Token** to use the access token with all requests in this collection.
5655
>[!NOTE]
@@ -239,7 +238,7 @@ The bulk request shown below uses the SCIM standard Core User and Enterprise Use
239238
}
240239
```
241240

242-
## Next Steps
241+
## Next steps
243242
- [Troubleshoot issues with the inbound provisioning API](inbound-provisioning-api-issues.md)
244243
- [API-driven inbound provisioning concepts](inbound-provisioning-api-concepts.md)
245244
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)

articles/active-directory/app-provisioning/inbound-provisioning-api-powershell.md

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ ms.reviewer: cmmdesai
1515

1616
# API-driven inbound provisioning with PowerShell script (Public preview)
1717

18-
## Introduction
19-
2018
This tutorial describes how to use a PowerShell script to implement Microsoft Entra ID [API-driven inbound provisioning](inbound-provisioning-api-concepts.md). Using the steps in this tutorial, you can convert a CSV file containing HR data into a bulk request payload and send it to the Microsoft Entra ID provisioning [/bulkUpload](/graph/api/synchronization-synchronizationjob-post-bulkupload) API endpoint.
2119

2220
## How to use this tutorial
@@ -26,7 +24,7 @@ This tutorial addresses the following integration scenario:
2624
* You want to use an unattended PowerShell script to automatically provision records from the CSV file to your target directory (on-premises Active Directory or Microsoft Entra ID).
2725
* The PowerShell script simply reads data from the CSV file and uploads it to the provisioning API endpoint. The API-driven inbound provisioning app configured in Microsoft Entra ID performs the task of applying your IT managed provisioning rules to create/update/enable/disable accounts in the target directory.
2826

29-
:::image type="content" source="media/inbound-provisioning-api-powershell/powershell-integration-overview.png" alt-text="Architecture overview of PowerShell-based integration." lightbox="media/inbound-provisioning-api-powershell/powershell-integration-overview.png":::
27+
:::image type="content" source="media/inbound-provisioning-api-powershell/powershell-integration-overview.png" alt-text="Graphic of PowerShell-based integration." lightbox="media/inbound-provisioning-api-powershell/powershell-integration-overview.png":::
3028

3129
Here is a list of automation tasks associated with this integration scenario and how you can implement it by customizing the sample script published in the [Microsoft Entra ID inbound provisioning GitHub repository](https://github.com/AzureAD/entra-id-inbound-provisioning/tree/main/PowerShell/CSV2SCIM).
3230

@@ -58,7 +56,7 @@ Here is a list of automation tasks associated with this integration scenario and
5856
- csv-with-1000-records.csv (sample CSV file with 1000 records)
5957
- Test-ScriptCommands.ps1 (sample usage commands)
6058
- UseClientCertificate.ps1 (script to generate self-signed certificate and upload it as service principal credential for use in OAuth flow)
61-
- Sample1 (folder with more examples of how CSV file columns can be mapped to SCIM standard attributes. If you get different CSV files for employees, contractors, interns, you can create a separate AttributeMapping.psd1 file for each entity.)
59+
- `Sample1` (folder with more examples of how CSV file columns can be mapped to SCIM standard attributes. If you get different CSV files for employees, contractors, interns, you can create a separate AttributeMapping.psd1 file for each entity.)
6260
1. Download and install the latest version of PowerShell.
6361
1. Run the command to enable execution of remote signed scripts:
6462
```powershell
@@ -155,7 +153,7 @@ This section explains how to send the generated bulk request payload to your inb
155153
```
156154
You should see the certificate under the **Certificates & secrets** blade of your registered app.
157155
:::image type="content" source="media/inbound-provisioning-api-powershell/client-certificate.png" alt-text="Screenshot of client certificate." lightbox="media/inbound-provisioning-api-powershell/client-certificate.png":::
158-
1. Add the following two **Application** permission scopes to the service principal app: **Application.Read.All** and **Synchronization.Read.All**. These are required for the PowerShell script to lookup the provisioning app by `ServicePrincipalId` and fetch the provisioning `JobId`.
156+
1. Add the following two **Application** permission scopes to the service principal app: **Application.Read.All** and **Synchronization.Read.All**. These are required for the PowerShell script to look up the provisioning app by `ServicePrincipalId` and fetch the provisioning `JobId`.
159157
160158
## Upload bulk request payload using client certificate authentication
161159
@@ -193,12 +191,12 @@ This section describes how to generate a bulk request with custom SCIM schema na
193191
.\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
194192
```
195193

196-
1. In addition to the SCIM Core User and Enterprise User attributes, to get a flat-list of all CSV fields under a a custom SCIM schema namespace `urn:ietf:params:scim:schemas:extension:contoso:1.0:User`, run the following command.
194+
1. In addition to the SCIM Core User and Enterprise User attributes, to get a flat-list of all CSV fields under a custom SCIM schema namespace `urn:ietf:params:scim:schemas:extension:contoso:1.0:User`, run the following command.
197195
```powershell
198196
.\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User" > BulkRequestPayloadWithCustomNamespace.json
199197
```
200198
The CSV fields will show up under the custom SCIM schema namespace.
201-
:::image type="content" source="media/inbound-provisioning-api-powershell/user-details-under-custom-schema.png" alt-text="Screenshot of user details under custom schema" lightbox="media/inbound-provisioning-api-powershell/user-details-under-custom-schema.png":::
199+
:::image type="content" source="media/inbound-provisioning-api-powershell/user-details-under-custom-schema.png" alt-text="Screenshot of user details under custom schema." lightbox="media/inbound-provisioning-api-powershell/user-details-under-custom-schema.png":::
202200

203201
## Extending provisioning job schema
204202

@@ -293,8 +291,8 @@ PS > CSV2SCIM.ps1 -Path <path-to-csv-file>
293291
[-RestartService]
294292
```
295293

296-
[!Important]
297-
>The `AttributeMapping` and `ValidateAttributeMapping` command-line parameters refer to the mapping of CSV column attributes to the standard SCIM schema elements.
294+
> [!NOTE]
295+
> The `AttributeMapping` and `ValidateAttributeMapping` command-line parameters refer to the mapping of CSV column attributes to the standard SCIM schema elements.
298296
It doesn't refer to the attribute mappings that you perform in the Entra portal provisioning app between source SCIM schema elements and target Azure AD/on-premises AD attributes.
299297

300298
| Parameter | Description | Processing remarks |
@@ -360,7 +358,7 @@ In the next example, we mapped the following columns in the CSV file to their co
360358
}
361359
```
362360

363-
## Next Steps
361+
## Next steps
364362
- [Troubleshoot issues with the inbound provisioning API](inbound-provisioning-api-issues.md)
365363
- [API-driven inbound provisioning concepts](inbound-provisioning-api-concepts.md)
366364
- [Frequently asked questions about API-driven inbound provisioning](inbound-provisioning-api-faqs.md)

0 commit comments

Comments
 (0)