Project Online
Discovers Microsoft Project Online projects via Microsoft Graph API.
What it does
Uses app-only authentication (client_credentials flow) to call: - Graph site resolution (PWA / Project Web App / projectserver paths) - projectData / Projects lists on resolved PWA sites - Graph /beta/projects (when available) - SharePoint ProjectData OData REST (_api/ProjectData/Projects) with SPO token Enumerates Project Online projects with migration-useful columns: ProjectId, ProjectName, Description, Owner/OwnerId/OwnerEmail, dates, SiteId/SiteUrl/SiteName, WorkspaceUrl, ParentProjectId, TenantId, etc. Honest EMPTY: when the tenant has no Project Online PWA / projects, writes header-only CSV and Success=true (does not invent rows). Fail loud on AUTH (missing credentials / token / 401/403). Pure functions (TDD-enabled): - ConvertFrom-ProjectOnlineItem: Converts OData/Graph project item to discovery record - Get-ProjectOnlineCsvHeader: Canonical header list for header-only exports - Resolve-ProjectPersonField: Person/lookup extraction for list/Graph owner fields
How the app exposes it
The module feeds into the ACQI app's dedicated results view. From there, conflicts, dependencies, and readiness scores roll up into the deal workspace.
/discovered/project-online Outputs
Each module produces a CSV with readiness and risk scores, evidence-source counts, and last-seen timestamps. The exact columns vary by module — the app's results view shows the live schema.