Skip to content

Migrate Yammer scripts to Microsoft Graph, rename to Engage, and fix Insights script bugs#1

Merged
DeanCron merged 1 commit into
masterfrom
deancron-microsoft-super-telegram
Jul 22, 2026
Merged

Migrate Yammer scripts to Microsoft Graph, rename to Engage, and fix Insights script bugs#1
DeanCron merged 1 commit into
masterfrom
deancron-microsoft-super-telegram

Conversation

@DeanCron

Copy link
Copy Markdown
Owner

Viva Engage / Yammer script migration

  • Migrated to Microsoft Graph (breaking change — see each script's README for new permissions/params):
    • Delete-EngageGroups (formerly Delete-YammerGroups)
    • Add-EngageGroupAdmins (formerly Add-YammerGroupAdmins)
    • Get-EngageGroupInfo (formerly Get-YammerGroupInfo) — dropped LastMessageAt (no Graph equivalent); new columns CommunityId/GroupId/GroupName/MemberCount/GroupAdmins
    • Delete-EngageUsers (formerly Delete-YammerUsers) — scope change: now removes a user from one specified group per CSV row via Graph, instead of deleting the Yammer account tenant-wide (no Graph equivalent for full account deletion exists). New CSV format: GroupID + Email.
  • Renamed only (Yammer → Engage naming, minor native-mode caveats added, -IncludeExternalNetworks removed per MC1230453):
    • Export-EngageNetworkData (formerly Export-YammerNetworkData)
    • Export-EngageFiles (formerly Export-YammerFiles)
  • Left on legacy Yammer API — documented, not migrated (no Graph equivalent exists):
    • Delete-AllCommunityPosts — added a README/script callout explaining the message-content Graph gap; existing MSAL.PS + Entra app + delegated access_as_user auth already satisfies the July 2025 compliance requirement.

Other fixes

  • Get-AllInsightsLicensedUsers.ps1: replaced per-user Get-MgUserManager/Get-MgUser calls (2 serial API calls × every user) with Microsoft Graph $batch requests (20 users/call), added 429 retry/backoff and a progress indicator — fixes timeouts/throttling on tenants with thousands of licensed users. Also fixed an output filename mismatch (EntraUsersExport.csv vs. the reported InsightsLicensedUsers.csv).

Testing

  • All modified/rewritten scripts validated for clean PowerShell parsing.
  • Graph-migrated Engage scripts were live-tested against a test tenant.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

…e bug

- Replace per-user Get-MgUserManager/Get-MgUser calls with Microsoft
  Graph batch requests (20 users per call) to resolve manager UPNs,
  cutting round-trips ~20x and avoiding timeouts/throttling on tenants
  with thousands of licensed users.
- Add 429 retry/backoff handling for throttled batch requests.
- Add progress indicator during manager resolution.
- Fix output filename mismatch: script now writes and reports the
  same file, InsightsLicensedUsers.csv.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@DeanCron
DeanCron merged commit 1b8775a into master Jul 22, 2026
3 checks passed
@github-actions

Copy link
Copy Markdown

🛰️ PR Sweeper report

Risk: 🟢 LOW · Security gate: ✅ passing · Files: 2

🔒 Automated guardrails (authoritative)

No secret, PII, file-policy, or scope issues detected. ✅

🤖 Dual-model AI review (advisory)

Deep-reasoning revieweropenai/o3 · verdict: approve · risk: low

No secrets or dangerous operations were introduced. The change replaces per-user calls with Graph $batch, adds polite 429 handling, fixes the CSV filename mismatch, and updates docs accordingly. Implementation is straightforward and readable; no obfuscation or privacy leaks found.

Quality notes:

  • scripts/Get-AllInsightsLicensedUsers/Get-AllInsightsLicensedUsers.ps1 — Nice improvement with batched requests and retry logic. Consider making the 10-second back-off configurable so advanced users can tune for their tenancy.
  • scripts/Get-AllInsightsLicensedUsers/Get-AllInsightsLicensedUsers.ps1 — The version tag uses a future date (07222026). If this repo follows real-world dating it may confuse readers; you might want to align it with the actual commit date.

✅ Suggested next steps

  • Optionally make the retry delay and chunk size parameters so the script can adapt to different throttling patterns.
  • Double-check the version/date comment to ensure it reflects reality.

The automated guardrails are authoritative and gate the security status. The AI review is advisory and never auto-merges. Thanks for contributing to FastTrack! 🛩️

@github-actions github-actions Bot added sweeper:ai-reviewed PR Sweeper: dual-model AI review attached sweeper:risk-low PR Sweeper: low risk labels Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

sweeper:ai-reviewed PR Sweeper: dual-model AI review attached sweeper:risk-low PR Sweeper: low risk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant