You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
az rest --method POST --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$miObjId/appRoleAssignments"--headers "Content-Type=application/json"--body "$body"
14
14
15
-
$roleValue="Synchronization.Read.All"
15
+
$roleValue="Synchronization.ReadWrite.All"
16
16
$roleId= az ad sp show --id $graphSpId--query "appRoles[?value=='$roleValue'].id"-o tsv
az rest --method POST --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$miObjId/appRoleAssignments"--headers "Content-Type=application/json"--body "$body"
"message": "@if(equals(coalesce(body('Get_SCIMTests_Output_Content')?['SCIMUserPaginationTestOutputs']?['overallResult'], 'SKIPPED'), 'SKIPPED'), '', 'Click the runLink and search for the action Compose_Final_Results for more info.')"
665
666
},
667
+
{
668
+
"testName": "SCIM_Group_Pagination_Test",
669
+
"testResult": "@coalesce(body('Get_SCIMTests_Output_Content')?['SCIMGroupPaginationTestOutputs']?['result'], if(not(coalesce(body('Call_Initialization_Workflow')?['isGroupSupported'], false)), 'SKIPPED - IsGroupSupported is false', 'SKIPPED'))",
"message": "@if(equals(coalesce(body('Get_SCIMTests_Output_Content')?['SCIMGroupPaginationTestOutputs']?['overallResult'], 'SKIPPED'), 'SKIPPED'), '', 'Click the runLink and search for the action Compose_Final_Results for more info.')"
Copy file name to clipboardExpand all lines: Microsoft.SCIM.LogicAppValidationTemplate/StandardLogicApp/SCIM-Validation-Test-Overview.md
+10-9Lines changed: 10 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Purpose
4
4
5
-
The SCIM Validation Logic App runs **22 automated tests** against an ISV's SCIM 2.0 endpoint to verify it is ready for publication in the Microsoft Entra app gallery. Tests cover the full provisioning lifecycle — user and group CRUD, attribute mappings, soft delete, provision-on-demand, direct SCIM compliance, and credential validation.
5
+
The SCIM Validation Logic App runs **23 automated tests** against an ISV's SCIM 2.0 endpoint to verify it is ready for publication in the Microsoft Entra app gallery. Tests cover the full provisioning lifecycle — user and group CRUD, attribute mappings, soft delete, provision-on-demand, direct SCIM compliance, and credential validation.
6
6
7
7
The Logic App is deployed as a Standard Azure Logic App with 5 workflows that execute in parallel, completing a full validation run in 30–60 minutes.
**Dynamic capability detection:** The Initialization workflow reads the provisioning schema and automatically determines which tests apply based on the ISV's attribute mappings:
@@ -59,7 +59,7 @@ Tests that don't apply are reported as **SKIPPED** (not failures).
59
59
60
60
> **Note:** All 7 group tests are **skipped** if the ISV's schema does not have an enabled Group object mapping.
@@ -70,7 +70,8 @@ Tests that don't apply are reported as **SKIPPED** (not failures).
70
70
| 19 |**SCIM_Group_Create_Test**| Directly calls `POST /Groups` with a SCIM group body. **Skipped** if groups are not supported. |
71
71
| 20 |**SCIM_Group_Update_Test**| Directly calls `PATCH /Groups/{id}` with attribute updates. **Skipped** if groups are not supported. |
72
72
| 21 |**SCIM_User_Pagination_Test**| Ensures ≥11 users exist on the endpoint (creates throwaway users from `initializationData.scimUserBody` if needed), then paginates `/Users?startIndex=N&count=5` across multiple pages. Verifies `startIndex`, `totalResults`, and page traversal. Cleans up created users afterward. |
73
-
| 22 |**Validate_Credentials_Test**| Tests the OAuth 2.0 Client Credentials flow — acquires a token from the ISV's token endpoint using client ID/secret, then validates the SCIM connection. **Skipped** when `scimTokenEndpoint` is empty (static bearer token setup). |
73
+
| 22 |**SCIM_Group_Pagination_Test**| Ensures ≥11 groups exist on the endpoint (creates throwaway groups from `initializationData.scimGroupBody` if needed), then paginates `/Groups?startIndex=N&count=5` across multiple pages. Verifies `startIndex`, `totalResults`, and page traversal. Cleans up created groups afterward. **Skipped** if groups are not supported. |
74
+
| 23 |**Validate_Credentials_Test**| Tests the OAuth 2.0 Client Credentials flow — acquires a token from the ISV's token endpoint using client ID/secret, then validates the SCIM connection. **Skipped** when `scimTokenEndpoint` is empty (static bearer token setup). |
74
75
75
76
---
76
77
@@ -80,17 +81,17 @@ Tests that don't apply are reported as **SKIPPED** (not failures).
80
81
|----------|-------|-----------|
81
82
|**User Lifecycle**| 7 | Full CRUD + Manager + Restore + POD via Entra provisioning engine |
82
83
|**Group Lifecycle**| 7 | Full CRUD + Membership + POD + Restore via Entra provisioning engine |
83
-
|**SCIM Direct Compliance**|7| Direct HTTP calls to SCIM endpoint — schema, CRUD, null update, pagination |
84
+
|**SCIM Direct Compliance**|8| Direct HTTP calls to SCIM endpoint — schema, CRUD, null update, user & group pagination |
| All 22 tests: `success`|**Ready for gallery submission**|
94
+
| All 23 tests: `success`|**Ready for gallery submission**|
94
95
| Group tests: `SKIPPED` (no group mapping) | Acceptable if ISV only supports /Users |
95
96
| Disable_User_Test: `SKIPPED` (no `active` mapping) | Acceptable — ISV should document |
96
97
| Manager test: `SKIPPED` (no `manager` mapping) | Acceptable — ISV should document |
@@ -124,4 +125,4 @@ Both methods produce the same output: a `validation-result-<RunId>.json` file to
124
125
125
126
---
126
127
127
-
*Document version: June 2026 — Covers Logic App validation template v4 with 22 tests across 5 workflows. Includes User Pagination, Restore tests, Schema_Discoverability_Test v2 with flatten loops, scimTargetUserValues, and Provision on Demand.*
128
+
*Document version: June 2026 — Covers Logic App validation template v4 with 23 tests across 5 workflows. Includes User & Group Pagination, Restore tests, Schema_Discoverability_Test v2 with flatten loops, scimTargetUserValues, and Provision on Demand.*
0 commit comments