fix(onboard): auto-assign Exchange Admin to Exchange Operator SP; mark Sandteko fully onboarded

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 10:20:41 -07:00
parent b7bc99174f
commit 16f95e8235
2 changed files with 28 additions and 1 deletions

View File

@@ -41,7 +41,7 @@ After full onboarding, update the Onboarded column below.
| Rincon Vista Veterinary Center | rinconvistavet.onmicrosoft.com | b8cdcd89-d0f4-4747-bcf3-8bd8a25fd7e1 | NO | | | Rincon Vista Veterinary Center | rinconvistavet.onmicrosoft.com | b8cdcd89-d0f4-4747-bcf3-8bd8a25fd7e1 | NO | |
| Russo Law Firm | rrs-law.com | bef1b190-f78f-4b1c-aa4b-fab186a30702 | NO | | | Russo Law Firm | rrs-law.com | bef1b190-f78f-4b1c-aa4b-fab186a30702 | NO | |
| Safe Site Utility Services LLC | safesitellc.com | 71b4e637-c802-4137-a812-ae50dbc839e3 | NO | | | Safe Site Utility Services LLC | safesitellc.com | 71b4e637-c802-4137-a812-ae50dbc839e3 | NO | |
| SANDTEKO MACHINERY LLC | SANDTEKOMACHINERY.com | 739bb777-cf76-478f-866b-f61c830c8246 | PARTIAL | Sec Inv + Exch Op + User Mgr + Tenant Admin consented 2026-04-24; Sec Inv Exchange Admin + User Mgr User Admin + Auth Admin roles assigned; Exch Op Exchange Admin role needs manual Entra assignment; no MDE | | SANDTEKO MACHINERY LLC | SANDTEKOMACHINERY.com | 739bb777-cf76-478f-866b-f61c830c8246 | YES | All apps consented 2026-04-24; Sec Inv + Exch Op Exchange Admin + User Mgr User Admin + Auth Admin roles assigned; no MDE |
| Shave, Kevin | az2son.com | 984c05a9-708b-4ec1-9f43-558865cb3c9d | NO | | | Shave, Kevin | az2son.com | 984c05a9-708b-4ec1-9f43-558865cb3c9d | NO | |
| Sonorangreenllc.com | sonorangreenllc.com | ededa4fb-f6eb-4398-851d-5eb3e11fab27 | NO | | | Sonorangreenllc.com | sonorangreenllc.com | ededa4fb-f6eb-4398-851d-5eb3e11fab27 | NO | |
| Starr Pass Realty | starrpass.com | 222450dd-141f-435f-87b8-cec719aac99e | NO | | | Starr Pass Realty | starrpass.com | 222450dd-141f-435f-87b8-cec719aac99e | NO | |

View File

@@ -473,6 +473,7 @@ echo ""
echo "[INFO] Checking and assigning directory roles..." echo "[INFO] Checking and assigning directory roles..."
SEC_INV_OID=$(get_sp_oid "$TENANT_ADMIN_TOKEN" "$APP_SEC_INV") SEC_INV_OID=$(get_sp_oid "$TENANT_ADMIN_TOKEN" "$APP_SEC_INV")
EXCH_OP_OID=$(get_sp_oid "$TENANT_ADMIN_TOKEN" "$APP_EXCH_OP")
USER_MGR_OID=$(get_sp_oid "$TENANT_ADMIN_TOKEN" "$APP_USER_MGR") USER_MGR_OID=$(get_sp_oid "$TENANT_ADMIN_TOKEN" "$APP_USER_MGR")
PARTIAL_FAILURE=false PARTIAL_FAILURE=false
@@ -499,6 +500,28 @@ else
fi fi
fi fi
# Exchange Operator -> Exchange Administrator
if [[ -z "$EXCH_OP_OID" ]]; then
echo "[WARNING] Exchange Operator SP still not found after consent attempt"
STATUS_MAP["Exchange Operator:Exchange Administrator"]="MISSING SP"
else
echo ""
echo "[CHECK] Exchange Operator SP: $EXCH_OP_OID"
IS_PRESENT=$(role_assigned "$TENANT_ADMIN_TOKEN" "$EXCH_OP_OID" "$ROLE_EXCHANGE_ADMIN")
if [[ "$IS_PRESENT" == "true" ]]; then
echo " Exchange Administrator: PRESENT"
STATUS_MAP["Exchange Operator:Exchange Administrator"]="OK"
else
echo " Exchange Administrator: MISSING -> ASSIGNING..."
if assign_role "$TENANT_ADMIN_TOKEN" "$EXCH_OP_OID" "$ROLE_EXCHANGE_ADMIN" "Exchange Administrator"; then
STATUS_MAP["Exchange Operator:Exchange Administrator"]=$( [[ "$DRY_RUN" == "true" ]] && echo "DRY-RUN" || echo "ASSIGNED" )
else
STATUS_MAP["Exchange Operator:Exchange Administrator"]="ERROR"
PARTIAL_FAILURE=true
fi
fi
fi
# User Manager -> User Administrator + Authentication Administrator # User Manager -> User Administrator + Authentication Administrator
if [[ -z "$USER_MGR_OID" ]]; then if [[ -z "$USER_MGR_OID" ]]; then
echo "[WARNING] User Manager SP still not found after consent attempt" echo "[WARNING] User Manager SP still not found after consent attempt"
@@ -554,6 +577,10 @@ SEC_EXCH="${STATUS_MAP["Security Investigator:Exchange Administrator"]:-SKIPPED}
echo " Security Investigator:" echo " Security Investigator:"
printf " Exchange Administrator: %s\n" "[$SEC_EXCH]" printf " Exchange Administrator: %s\n" "[$SEC_EXCH]"
EO_EXCH="${STATUS_MAP["Exchange Operator:Exchange Administrator"]:-SKIPPED}"
echo " Exchange Operator:"
printf " Exchange Administrator: %s\n" "[$EO_EXCH]"
UA="${STATUS_MAP["User Manager:User Administrator"]:-SKIPPED}" UA="${STATUS_MAP["User Manager:User Administrator"]:-SKIPPED}"
AA="${STATUS_MAP["User Manager:Authentication Administrator"]:-SKIPPED}" AA="${STATUS_MAP["User Manager:Authentication Administrator"]:-SKIPPED}"
echo " User Manager:" echo " User Manager:"