Version 3.17.252 | June 16, 2026
π Complete Documentation - This README is the single source of truth for all product information, combining user guide, installation, development, testing, and reference documentation.
- First Time Setup
- ConfigMgr Admin Service Setup
- Understanding the Dashboard
- Azure OpenAI Setup (Required for AI Recommendations)
- Troubleshooting
- Download and run the MSI installer from GitHub Releases
- Launch ConfigMgr Console and look for "Cloud Native Assessment" in the ribbon
That's it! The MSI installer automatically:
- β Installs to the correct ConfigMgr Console location
- β Registers the add-in with ConfigMgr
- β Creates Start Menu and Desktop shortcuts
- β Supports standard Add/Remove Programs uninstall
Note: .NET 8.0 Desktop Runtime is required. Download from Microsoft if not already installed.
For automated deployment via SCCM, Intune, or GPO:
msiexec /i ZeroTrustMigrationAddin.msi /qnApplication Files:
- Core .NET 8.0 runtime libraries
- WPF framework components
- LiveCharts visualization library
- Microsoft Graph SDK
- All supporting assemblies
Total Deployment Size: ~72MB (MSI installer)
Installation Location:
C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\
βββ XmlStorage\Extensions\Actions\ZeroTrustMigrationAddin.xml (manifest)
βββ bin\ZeroTrustMigrationAddin\ (all app files)
βββ ZeroTrustMigrationAddin.exe (main executable)
βββ ZeroTrustMigrationAddin.dll (app logic)
βββ ... (additional dependencies)
Build-And-Distribute.ps1now prints an explicit live-log follow command at startup so build progress can be tailed in real time.- GitHub release publishing now validates
ghrepository access up front, surfaces fullgherror output, pushes the current branch (not hardcodedmain), and exits non-zero when publish fails. - Git push in publish mode now runs with terminal prompts disabled so missing credentials fail fast with visible diagnostics instead of hanging.
- Build script smoke test no longer hangs indefinitely when
ZeroTrustMigrationAddin.exe --versiondoes not exit; it now times out and force-terminates the test process.
- π‘ Ideas tab: New tab replacing "Workload Brainstorm" with 5 data-driven decision features:
- Decision Cards: Per-workload cards answering 4 key questions (What decision? Why now? Cost of inaction? Lowest-risk next step?) with 5 card types (ReadyToStart, ExpandScope, StallRecovery, NearComplete, Complete)
- Workload Unlock Chain: Shows downstream workloads unlocked by completing each workload
- ConfigMgr Coverage: Visual split showing Intune vs ConfigMgr device coverage per workload
- Safe to Remove Confidence: Per-workload safety scores with "what stops running" details and rollback time estimates
- Last Holdout Spotlight: Special card when 5+ of 7 workloads are complete, highlighting paths to finish
- DecisionCardModels.cs: Models for DecisionCard, WorkloadUnlockChain, ConfigMgrCoverage, WorkloadSafetyScore, LastHoldoutSpotlight
- DecisionCardGenerator.cs: Pure synthesis service transforming existing pipeline data into Ideas tab content (no new API calls)
- IntToVisibilityConverter: New WPF converter (int > 0 β Visible, else Collapsed)
- Old "π‘ Workload Brainstorm" tab (~2000 lines of static mockups) replaced with data-driven "π‘ Ideas" tab
- Ideas tab visible by default, controllable via
/hidetabs:ideasand/showtabs:ideas
/demostalllaunch switch: New command-line flag that injects realistic Trust Trough stall scenario into mock data, making all pipeline UI elements visible in disconnected mode- Demo scenario includes: enrollment stall at 57% (ConfidenceBased), 2 workload stalls (Client Apps at 34%, Device Configuration at 62%), 3 actionable recommendations with risk/effort/cost-of-inaction
- Workloads tab now visible by default (was previously hidden, requiring
/showtabs:workloads)
/demostalllaunch switch: New command-line flag that injects realistic Trust Trough stall scenario into mock data, making all pipeline UI elements visible in disconnected mode- Demo scenario includes: enrollment stall at 57% (ConfidenceBased), 2 workload stalls (Client Apps at 34%, Device Configuration at 62%), 3 actionable recommendations with risk/effort/cost-of-inaction
- Workloads tab auto-shown when
/demostallis active
π View Complete Changelog for all version history
The Cloud Native Assessment is your intelligent command center for migrating from ConfigMgr to Microsoft Intune. It combines real-time data from both ConfigMgr and Intune with AI-powered insights to accelerate your cloud migration journey.
- Dual-Source Data from ConfigMgr Admin Service AND Microsoft Graph (Intune)
- Complete Visibility - See total eligible devices, not just enrolled ones
- AI-Powered Recommendations that prevent stalls and accelerate progress (requires Azure OpenAI GPT-4)
- Autonomous Enrollment Agent - AI plans and executes device enrollments with human oversight
- 3 Tabs by Default - Overview, Enrollment, Cloud Readiness (additional tabs available via command-line)
- Actionable Guidance with buttons to take immediate action
- Visual Trends showing velocity and momentum
- Real-Time Monitoring of enrollment progress and agent execution
Data Integration:
- β Device enrollment counts (ConfigMgr + Intune)
- β Co-management status
- β Compliance scores
- β Workload migration status
- β Device health alerts
- β Application migration analysis
- β Enrollment Impact Simulator (100% data-driven predictions)
- OS: Windows 10 (version 1809+) or Windows Server 2019+
- ConfigMgr: Console 2103 or later
- Permissions: Administrator privileges (script will request elevation)
- Network: Internet connection (only for .NET Runtime download if needed)
- Application: 233MB
- .NET Runtime: 55MB (if not already installed)
- Total: ~300MB
Cloud Native Assessment requires outbound HTTPS (port 443) access to the following URLs:
| Service | URL | Purpose |
|---|---|---|
| Microsoft Graph API | https://graph.microsoft.com |
Intune device/app data, Autopilot, compliance |
| Entra ID Authentication | https://login.microsoftonline.com |
OAuth authentication for Graph API |
| Device Code Flow | https://microsoft.com/devicelogin |
Interactive authentication fallback |
| GitHub Releases | https://api.github.com |
Auto-update version check |
| GitHub Assets | https://github.com/sccmavenger/cmaddin/releases/* |
Download update packages |
| Application Insights | https://eastus-8.in.applicationinsights.azure.com |
Anonymous usage telemetry (optional) |
| ConfigMgr Admin Service | https://<your-site-server>/AdminService/* |
ConfigMgr data (internal network) |
If auto-updates are blocked by firewall:
- Download the latest MSI installer manually from: https://github.com/sccmavenger/cmaddin/releases/latest
- Run the MSI installer to update
- The app will continue to function normally without auto-update
- β No need to install .NET manually
- β No need to install Visual Studio or SDK
- β No need to configure paths or environment variables
- β No need to register components
- β No need to modify registry
- ConfigMgr version CB 1810 or later
- Admin Service enabled on site server
- Full Administrator or Read-only Analyst role
- Network access to site server (HTTPS port 443)
- Falls back to Graph API if unavailable
Step 1: Open the Dashboard
- Find "Cloud Native Assessment" in your ConfigMgr Console ribbon
- Or double-click the desktop shortcut
Step 2: Connect to Your Intune Data
- Click the green "π Graph" button at the top
- Your default browser opens to the Microsoft sign-in page
- Sign in with your Microsoft 365 admin account
- Click "Accept" when it asks for permissions
- Come back to the dashboard - it'll say "Connected" with a green checkmark
π‘ Tip: If browser authentication doesn't work in your environment (e.g., remote sessions), click the "π Auth" button to switch to Device Code Flow as a fallback.
Step 3: Connect to Your ConfigMgr Data (Optional but Recommended)
- Click the blue "π₯οΈ ConfigMgr" button at the top
- If it finds your ConfigMgr automatically: Great! You're done
- If it asks for your site server: Type it in (like "CM01" or "CM01.contoso.com")
- It connects automatically using your Windows login
Step 4: Let It Load
- Takes 30-60 seconds to load all your data
- You'll see numbers start appearing in the sections
- Green checkmarks at the top = everything's working
Step 5: Look Around
- Click through the 3 tabs at the top (Overview, Enrollment, Cloud Readiness)
- Get familiar with where things are
- Don't worry - you can't break anything by clicking around
- Additional tabs (Workloads, Applications, AI Actions) can be enabled via command-line switches
"Permission Error" or "Authorization_RequestDenied": This means your account doesn't have the required Intune permissions.
REQUIRED ROLE (one of these):
- Intune Administrator β (Recommended - full Intune access)
- Global Reader (Read-only access to all Microsoft 365 services)
- Global Administrator (Full access to everything)
REQUIRED API PERMISSIONS:
DeviceManagementManagedDevices.Read.All- Read Intune device dataDeviceManagementConfiguration.Read.All- Read Intune configurationsDeviceManagementApps.Read.All- Read app deployment dataDirectory.Read.All- Read user/directory information
HOW TO FIX:
- Ask your Global Administrator to assign you the Intune Administrator role:
- Go to Entra ID (Azure AD) β Users β [Your Account]
- Click "Assigned roles" β "Add assignments"
- Select "Intune Administrator" β Assign
- Sign out and sign back in to the dashboard
- The permissions will take effect immediately
Alternative - Admin Consent (for entire organization): A Global Administrator can pre-consent to these permissions for all users:
https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id=14d82eec-204b-4c2f-b7e8-296a70dab67e
Replace {tenant-id} with your actual tenant ID.
"Connection failed" error (other reasons):
- Click π Diagnostics button (orange) to see what's wrong
- Network connectivity issues
- Azure AD authentication problems
"No data showing" error:
- Click π Refresh button (blue) to reload
- Check if the Graph and ConfigMgr buttons show green checkmarks
- Click π Logs button (gray) to see detailed error messages
"Can't find the dashboard in ConfigMgr Console":
- The installation might not have worked
- Try reinstalling via the MSI installer from GitHub Releases
- Or uninstall via Add/Remove Programs and reinstall
Without ConfigMgr (Graph API only):
- β Only see devices already enrolled in Intune
- β Can't determine true migration gap
- β Missing co-management workload status
- β Incomplete device inventory
With ConfigMgr + Graph API:
- β Complete Windows 10/11 device inventory
- β True migration gap (total - enrolled = remaining)
- β Real co-management workload data
- β Accurate progress metrics
- β Better AI recommendations with full context
The Admin Service must be enabled on your ConfigMgr site server.
Check if it's already enabled:
- Open ConfigMgr Console
- Go to Administration > Site Configuration > Sites
- Right-click your site β Hierarchy Settings
- Look for "Administration Service" tab
If not enabled: Follow Microsoft's guide: https://learn.microsoft.com/mem/configmgr/develop/adminservice/overview
You need one of these roles in ConfigMgr:
- β Full Administrator
- β Read-only Analyst
To check:
- ConfigMgr Console β Administration > Security > Administrative Users
- Find your user account
- Verify role assignment
The URL format is:
https://[YourSiteServer]/AdminService
Examples:
https://CM01.contoso.com/AdminServicehttps://sccm.corp.contoso.com/AdminServicehttps://cm01.contoso.local/AdminService
To find it:
- Your site server name is in Administration > Site Configuration > Sites
- The Admin Service uses HTTPS on the default site server
Open PowerShell and run:
$url = "https://CM01.contoso.com/AdminService/wmi/SMS_Site"
Invoke-RestMethod -Uri $url -UseDefaultCredentialsIf you see site information, the Admin Service is working!
Click the π Diagnostics button to see:
ConfigMgr Connection Status Shows:
-
"Admin Service (REST API)" - β Using preferred method (HTTPS REST API)
- Fastest and most efficient
- Modern authentication
- Recommended method
-
"WMI Fallback (ConfigMgr SDK)" -
β οΈ Using fallback method- Admin Service failed or unavailable
- Automatically fell back to WMI queries
- Still functional but slightly slower
-
"None" - β Not connected to ConfigMgr
- Device counts incomplete (Intune-only)
- Need to fix connection issues
Why Admin Service Might Fail:
- Admin Service not enabled on site server
- HTTPS certificate issues
- Firewall blocking port 443
- Insufficient permissions
- Site server not detected properly
Azure OpenAI (GPT-4) provides intelligent, context-aware recommendations focused on the two most critical success factors for migration:
What GPT-4 Analyzes:
- π― Device Enrollment Progress - Velocity trends, acceleration strategies, batch planning
- π Workload Transition Planning - Optimal sequencing, completion guidance, risk assessment
- π§ Stall Detection & Recovery - Root cause analysis when progress stops >30 days
- π Contextual Intelligence - Incorporates your phased plan, velocity data, Microsoft FastTrack best practices
Technical Features:
- π€ Single Comprehensive Analysis - One GPT-4 call analyzes complete migration state
- β‘ Smart Caching - 30-minute response caching reduces costs by ~65%
- π° Cost Efficient - ~$0.03-0.05 per recommendation vs multiple separate calls
- π¨ No Rule-Based Fallback - Pure GPT-4 intelligence (shows setup instructions if not configured)
Complete Transparency: We believe you should know exactly what data is shared with AI services.
Data Sent to Azure OpenAI (Aggregated Metrics Only):
MIGRATION STATE:
- Total Devices: 500
- Intune Enrolled: 120 (24%)
- ConfigMgr Only: 380
- Days Since Last Progress: 45
- Stalled: YES
WORKLOAD STATUS:
- Completed: 2/7 (Compliance Policies, Endpoint Protection)
- In Progress: 1 (Device Configuration)
- Not Started: 4
VELOCITY & TRENDS:
- Enrollment velocity has slowed in past 30 days
MIGRATION PLAN:
- Phase 2: Pilot Expansion (25-50% enrollment target)
What is NOT Sent (Privacy Protected):
- β Device names, hostnames, computer names
- β User names, email addresses, identities
- β IP addresses or network information
- β Serial numbers or hardware IDs
- β Organization/tenant names
- β Configuration details or policies
- β Any personally identifiable information (PII)
Privacy Safeguards:
- Aggregated Only - Only statistical summaries (counts, percentages, generic names)
- Your Azure Instance - Data goes to YOUR Azure OpenAI (not shared with others)
- No Training - Azure OpenAI doesn't use your data to train models (Microsoft Data Privacy)
- Local Caching - Responses cached locally (30 min) to minimize calls
- Audit Logging - All API calls logged to
%APPDATA%\ZeroTrustMigrationAddin\logs
- Azure subscription with Azure OpenAI access
- GPT-4o deployment (recommended) or GPT-4
- Estimated cost: ~$1,200/month for 1000 users with caching
- Click π€ AI Settings button in dashboard
- Enter your Azure OpenAI credentials:
- Endpoint:
https://YOUR-RESOURCE.openai.azure.com/ - Deployment Name: Your GPT-4 deployment name
- API Key: Your Azure OpenAI API key
- Endpoint:
- Click Test Connection to verify
- Click Save to store configuration
Configuration saved to: %APPDATA%\ZeroTrustMigrationAddin\openai-config.json
Set these environment variables:
$env:AZURE_OPENAI_ENDPOINT = "https://YOUR-RESOURCE.openai.azure.com/"
$env:AZURE_OPENAI_DEPLOYMENT = "gpt-4o"
$env:AZURE_OPENAI_KEY = "your-api-key-here"-
Create Azure OpenAI Resource:
- Go to https://portal.azure.com
- Create new resource β Search "Azure OpenAI"
- Choose region (East US, West Europe, etc.)
- Select pricing tier (Standard S0)
-
Deploy GPT-4 Model:
- Go to your Azure OpenAI resource
- Navigate to "Model deployments"
- Click "Create new deployment"
- Select "gpt-4" or "gpt-4o" (preferred)
- Give it a name (e.g., "gpt-4o-deployment")
-
Get API Key:
- In Azure OpenAI resource β "Keys and Endpoint"
- Copy "KEY 1" or "KEY 2"
- Copy "Endpoint" URL
With Smart Caching (30-minute TTL):
- Enrollment momentum analysis: ~$0.01-0.02 per query
- Stall analysis: ~$0.03-0.05 per query
- Agent planning: ~$0.05-0.10 per plan
Typical Monthly Usage (1000 users):
- Daily momentum checks: ~$20/month
- Weekly stall detection: ~$10/month
- Agent plan generation: ~$50/month
- Total: ~$80-150/month
The dashboard works fully without Azure OpenAI:
- AI Recommendations section shows setup instructions (not recommendations)
- All other features remain functional (enrollment data, workloads, compliance, alerts)
- Configure Azure OpenAI anytime to enable GPT-4 powered recommendations
- Estimated setup time: 5-10 minutes
See your overall migration progress
What you'll find here:
- Device counts - How many devices are enrolled in Intune vs still on ConfigMgr
- Enrollment automation - Let AI plan and execute device enrollments automatically
- Migration timeline - Week-by-week plan to complete your migration
- Compliance status - Are your devices meeting security requirements?
- Alerts - Things that need your attention right now
What to do: This is your starting point. Check it daily to see progress and handle any alerts.
Speed up device enrollments
What you'll find here:
- Progress ring - Visual showing how many devices are enrolled
- Enrollment Confidence Score - 0-100 score based on 5 weighted factors
- Device readiness - Which devices are ready to enroll right now
- AI recommendations - Smart suggestions to speed things up (optional)
What to do: Use the Autonomous Agent to automatically enroll ready devices, or manually select batches to enroll.
Assess readiness for cloud-native management
What you'll find here:
- 3 Readiness Signals - Autopilot, Cloud-Native, Autopatch
- Blocker identification - What's preventing devices from being cloud-ready
- Recommendations - Steps to improve readiness percentages
What to do: Review blockers and implement recommendations to increase your readiness scores.
Hidden Tabs (Require Command-Line)
The following tabs are available but hidden by default. Enable with /showtabs: command-line switch.
Migrate management responsibilities to Intune
- 7 workload areas - Compliance, Configuration, Updates, Protection, etc.
- Status for each - Which ones are done, in progress, or not started
- Velocity tracking - How fast you're making progress
Plan your app migration
- App inventory - All your ConfigMgr applications
- Complexity scores - Which apps are easy vs hard to migrate
- Migration recommendations - Best way to move each app to Intune
AI-powered recommendations and actions
- Requires Azure OpenAI GPT-4 configuration
- Smart suggestions based on your environment
Total Windows 10/11 Devices = All your Windows 10/11 computers
Intune-Enrolled = Computers already moved to cloud management
ConfigMgr-Only = Computers still waiting to migrate
What counts? Only Windows 10 version 1607+ and Windows 11. Servers, older Windows, Macs, phones don't count (they're managed differently).
This is your AI assistant that can automatically enroll devices:
How it works:
- Tell it your goal (e.g., "Enroll 100 devices by next Friday")
- It creates a plan with specific batches and timing
- You review and approve the plan (one button click)
- It executes automatically - you just monitor progress
- Hit the STOP button if you need to pause
Safety features:
- Only enrolls "ready" devices (scored 60+ out of 100)
- Small batches (25-50 devices at a time)
- Pauses if too many failures
- You approve every plan before it runs
- Emergency stop button always available
Each device gets a score from 0-100 based on how ready it is to enroll:
- 80-100 (Excellent) β - Perfect! Enroll these now
- 60-79 (Good) π - Ready to go, minor things to watch
- 40-59 (Fair)
β οΈ - Needs some prep work first - 0-39 (Poor) β - Not ready, fix issues first
What makes a device "ready"?
- Has Windows 10/11 (not Windows 7)
- Joined to Azure AD (cloud identity)
- Online recently (last 7 days)
- Compliant with policies
Each workload shows a status color:
- π’ Green = Done - This workload is fully migrated to Intune
- π‘ Yellow = In Progress - Migration started but not finished
- π΄ Red = Not Started - Still using ConfigMgr for this workload
- π΅ Blue = Pilot - Testing with a few devices first
The 7 workloads you'll migrate:
- Compliance Policies (security requirements)
- Device Configuration (settings and profiles)
- Windows Updates (patch management)
- Endpoint Protection (antivirus, firewall)
- Resource Access (VPN, WiFi, email)
- Office Click-to-Run (Microsoft 365 apps)
- Client Apps (application deployment)
Alerts show different colors based on urgency:
- π΄ Red = Critical - Deal with this today (devices offline, compliance dropped, migration stalled)
- π‘ Yellow = Warning - Address this week (non-compliant devices, running low on licenses)
- π΅ Blue = Info - Good news or FYI (new enrollments, milestones reached)
The Easy Way (Using the Agent):
- Go to Overview tab
- Scroll to Smart Enrollment Management section
- Click Enable Agent toggle
- Set your goal (e.g., "100 devices by end of month")
- Click β¨ Generate Plan
- Review the plan (shows which devices, when, how many)
- Click β Approve & Start
- Watch it go! Monitor the progress section
The Manual Way:
- Go to Enrollment tab
- Look at Device Readiness section
- See the count of "Excellent" and "Good" devices
- Click π Export Device List to get names
- Manually enroll those devices through Intune (outside this tool)
- Go to Workloads tab
- Find Compliance Policies (should be first)
- If it's red, click Start button
- This opens Microsoft Learn docs with step-by-step instructions
- Follow those instructions in Intune admin center
- Come back to dashboard and click π Refresh
- Workload should now show green if policies are detected
- Go to Overview tab
- Look at Migration Health score
- See your completion % and projected finish date
- If you're behind schedule, check alerts for guidance
- Go to Overview tab
- Scroll to Alerts & Recommendations section
- Click on any red or yellow alert
- Read the description of the problem
- Click the button shown (e.g., "Fix", "View Details", "Take Action")
- Follow the guidance provided
- After fixing, click π Refresh to see if alert clears
- Go to Applications tab
- See your apps sorted by complexity
- Start with green (Low complexity) - These are easiest
- Click on an app to see migration recommendation
- Follow the suggested approach (e.g., "Use Intune's built-in Office 365 deployment")
- After migrating an app, come back and check off the next one
Day 1: Connect to Graph and ConfigMgr, let data load, just look around
Day 2: Check Overview tab daily - get familiar with your numbers
Day 3: Try the Autonomous Agent with 10 test devices
Day 4: Review Cloud Readiness tab - understand your blockers
Day 5: Share Overview metrics with your manager
- Use the Agent - It's way faster than manual enrollment
- Start with high-readiness devices - 80+ scores are slam dunks
- Do workloads in order - Compliance β Configuration β Updates β Protection β Resource Access β Office β Apps
- Batch wisely - 25-50 devices at a time is the sweet spot
- Check alerts daily - Small problems become big problems fast
- Click π Logs - See exactly what happened
- Click π Diagnostics - Check if you're still connected to everything
- Hit π STOP - If the Agent is enrolling devices and something's wrong
- Click π Refresh - Sometimes data just needs to update
- Check alerts - They often tell you exactly what's wrong
Q: Do I need Azure OpenAI for AI recommendations?
A: Yes - AI-Powered Recommendations require Azure OpenAI (GPT-4) to be configured. Without it, the dashboard will show setup instructions. All other features (device enrollment data, workload status, compliance, alerts) work without Azure OpenAI. The AI recommendations are a premium feature that provides context-aware guidance.
Q: What data is sent to Azure OpenAI? Is it private?
A: Only aggregated migration metrics (device counts, percentages, workload names, days since progress). NO device names, user names, IP addresses, or any personally identifiable information (PII) is sent. Data goes to YOUR Azure OpenAI instance only. Microsoft doesn't use your data to train models. All API calls are logged locally for audit.
Q: Will the Agent break my environment?
A: No - it has multiple safety checks. It only enrolls "ready" devices, does small batches, requires your approval, pauses on failures, and you can stop it anytime.
Q: How do I know if my data is real or fake?
A: After you connect to Graph and ConfigMgr, all data is real from YOUR environment - device counts, compliance, workload status, alerts, and the Enrollment Impact Simulator results. The status bar shows your current data source (Graph, ConfigMgr, or Demo mode).
Q: What if I don't have ConfigMgr Admin Service?
A: The tool automatically falls back to Graph API only. You'll see devices already enrolled in Intune, but won't see the complete count of devices still on ConfigMgr. Still useful, just less complete.
Q: How often should I check this?
A: Daily for Overview tab (5 minutes). Weekly for Cloud Readiness tab (15 minutes). Workloads and Apps tabs (if enabled) as needed when planning migrations.
Q: Can I break something by clicking buttons?
A: Buttons either open documentation (safe), show information (safe), export lists (safe), or let you approve agent plans (requires your approval first). No "delete all devices" buttons here.
Q: Where can I get help?
A: Click the π Guide button in the top toolbar - opens full documentation. Click π Logs to see what's happening under the hood. Click π Diagnostics to check connections.
- Download the latest
.msifrom GitHub Releases - Run the MSI installer and follow the wizard
- Launch from Start Menu, Desktop shortcut, or ConfigMgr Console ribbon
The MSI installer handles everything:
- β Installs to the correct ConfigMgr Console location
- β Registers the add-in with ConfigMgr
- β Creates Start Menu and Desktop shortcuts
- β Supports standard Add/Remove Programs uninstall
Expected Time: Under 1 minute
msiexec /i ZeroTrustMigrationAddin.msi /qnAfter installation:
- Launch ConfigMgr Console
- Look for "Cloud Native Assessment" in ribbon/toolbar
- Click to open dashboard
If automated installation fails, use manual steps:
cd "c:\Users\dannygu\Downloads\GitHub Copilot\cmaddin"
dotnet build -c ReleaseCopy XML manifest:
$extensionsPath = "${env:ProgramFiles(x86)}\Microsoft Configuration Manager\AdminConsole\XmlStorage\Extensions\Actions"
Copy-Item "ZeroTrustMigrationAddin.xml" -Destination $extensionsPathCopy executable and dependencies:
$binPath = "${env:ProgramFiles(x86)}\Microsoft Configuration Manager\AdminConsole\bin"
Copy-Item "bin\Release\net8.0-windows\*" -Destination $binPath -Recurse -ForceClose and reopen the ConfigMgr Console.
For machines without internet access:
- Download the MSI installer from GitHub Releases
- Download the .NET 8.0 Desktop Runtime installer from Microsoft
- Copy the MSI installer and .NET Runtime installer to the machine
- Install .NET Runtime:
.\windowsdesktop-runtime-8.0.11-win-x64.exe /install /quiet
- Install the application:
msiexec /i ZeroTrustMigrationAddin.msi /qn
Use standard Windows uninstall:
- Open Settings β Apps β Installed apps
- Search for "Cloud Native Assessment"
- Click Uninstall
Or via command line:
msiexec /x ZeroTrustMigrationAddin.msi /qnThe uninstaller removes:
- All application files from ConfigMgr Console
- XML manifest
- Desktop and Start Menu shortcuts
- Does NOT remove .NET Runtime (other apps may use it)
By default, Cloud Native Assessment uses Microsoft's public "Microsoft Graph Command Line Tools" app (14d82eec-204b-4c2f-b7e8-296a70dab67e). If your organization requires a custom app registration, follow these steps:
- Your security team won't approve Microsoft's public app
- You need to restrict access to a specific tenant
- Corporate policy requires custom app registrations
- You're blocked by conditional access policies
- Go to Azure Portal β Entra ID β App registrations
- Click New registration
- Name:
Cloud Native Assessment(or your preferred name) - Supported account types: Single tenant (recommended) or Multitenant
- Click Register (skip Redirect URI for now)
β οΈ This step is critical - selecting the wrong platform type will cause authentication to fail.
- In your new app, go to Authentication
- Click Add a platform
- Select "Mobile and desktop applications" (NOT "Web")
- Check the box for
http://localhost - Click Configure
β Correct: Mobile and desktop applications
β Wrong: Web applications
Go to API permissions β Add a permission β Microsoft Graph β Delegated permissions
Add these permissions:
| Permission | Purpose |
|---|---|
DeviceManagementManagedDevices.Read.All |
Read Intune devices and compliance |
DeviceManagementConfiguration.Read.All |
Read compliance policies, device configs |
DeviceManagementApps.Read.All |
Read mobile apps, MAM policies |
DeviceManagementServiceConfig.Read.All |
Read Autopilot, enrollment config |
Directory.Read.All |
Read Azure AD devices |
Group.Read.All |
Resolve group names in assignments |
Organization.Read.All |
Read tenant info |
User.Read |
Sign in and read user profile |
After adding, click Grant admin consent for [Your Tenant].
- Click the π Auth button in the toolbar
- Check Use custom app registration
- Enter your Application (Client) ID (from Azure Portal)
- Optionally enter Tenant ID (leave blank for auto-detect)
- Click Save Settings
You can also set environment variables to override the default app:
$env:GRAPH_CLIENT_ID = "your-client-id-guid"
$env:GRAPH_TENANT_ID = "your-tenant-id-or-domain"Cloud Native Assessment supports two authentication methods:
| Method | Description | When to Use |
|---|---|---|
| Interactive Browser (Default) | Opens default browser for sign-in | Corporate environments with proxies, conditional access |
| Device Code Flow | Enter code at microsoft.com/devicelogin | When browser auth doesn't work, headless scenarios |
Change the method via the π Auth button in the toolbar.
- Verify XML file is in Extensions folder
- Check XML format is valid
- Ensure ConfigMgr Console restarted
- Check Windows Event Viewer for errors
- Verify Graph API authentication completed
- Check Tenant Attach configured in ConfigMgr
- Test Graph API connectivity manually
- Click π Diagnostics button for connection status
- Click π Open Logs button to view detailed logs
- Verify Admin Service enabled (ConfigMgr 1810+)
- Check HTTPS certificate valid on site server
- Verify firewall allows port 443
- Check permissions (Full Admin or Read-only Analyst required)
- View logs to see if WMI fallback engaged
- Verify LiveCharts.Wpf package installed
- Check .NET runtime errors in Event Viewer
- Ensure all DLLs in bin folder
- Ensure complete package extracted (all 489 files)
- Run
.\Diagnose-Installation.ps1to check for missing DLLs - Rebuild and redeploy complete package
Click to open log directory: %LOCALAPPDATA%\ZeroTrustMigrationAddin\Logs\
Log Files:
ZeroTrustMigrationAddin_YYYYMMDD.log- Daily log file- Automatic cleanup (keeps last 7 days)
- Timestamped entries with log levels
What Gets Logged:
- Application startup/shutdown
- Microsoft Graph authentication
- ConfigMgr connection attempts
- API operations with result counts
- Exceptions with stack traces
- HTTP requests/responses
Click to view:
- Microsoft Graph connection status
- ConfigMgr connection status (Admin Service vs WMI)
- Data source for each metric
- Error details
- API endpoint health
Run to check:
- .NET Runtime installed
- All required DLLs present
- ConfigMgr Console detected
- File permissions
- Registry keys
.\Diagnose-Installation.ps1The application follows Model-View-ViewModel pattern:
Models - Data structures
DashboardModels.cs- Dashboard entitiesAgentModels.cs- Enrollment agent dataEnrollmentPlan.cs,EnrollmentGoals.cs,EnrollmentProgress.cs
Views - WPF XAML UI
DashboardWindow.xaml- Main dashboard with TabControl- 3 default tabs (Overview, Enrollment, Cloud Readiness) + 4 hidden tabs
ViewModels - Business logic
DashboardViewModel.cs- Main dashboard logic and commands- Data binding and property change notifications
Services - Data retrieval and integration
MockDataService.cs- Demo/mock data for unauthenticated modeAzureOpenAIService.cs- GPT-4 integrationEnrollmentMomentumService.cs- Velocity analysisAutonomousEnrollmentService.cs- Agent orchestrationAgentMemoryService.cs- Agent state management
Converters - Data binding
ValueConverters.cs- UI value conversionsRecommendationPriorityConverter.cs- Priority color mapping
ZeroTrustMigrationAddin/
βββ Models/
β βββ DashboardModels.cs # Dashboard data structures
β βββ AgentModels.cs # Enrollment agent models
β βββ EnrollmentPlan.cs # Agent plan structure
β βββ EnrollmentGoals.cs # Agent goal configuration
β βββ EnrollmentProgress.cs # Agent progress tracking
βββ Services/
β βββ MockDataService.cs # Demo/mock data for unauthenticated mode
β βββ AzureOpenAIService.cs # GPT-4 integration
β βββ EnrollmentMomentumService.cs # Velocity analysis
β βββ AutonomousEnrollmentService.cs # Agent orchestration
β βββ AgentMemoryService.cs # Agent state persistence
βββ ViewModels/
β βββ ViewModelBase.cs # Base with INotifyPropertyChanged
β βββ DashboardViewModel.cs # Main dashboard logic
βββ Views/
β βββ DashboardWindow.xaml # Main UI with 7 tabs (3 visible by default)
β βββ DashboardWindow.xaml.cs # Code-behind
βββ Converters/
β βββ ValueConverters.cs # Data binding converters
β βββ RecommendationPriorityConverter.cs # Priority colors
βββ App.xaml # Application resources
βββ App.xaml.cs # Application entry point
βββ ZeroTrustMigrationAddin.xml # ConfigMgr manifest
βββ ZeroTrustMigrationAddin.csproj # Project file
- Visual Studio 2022 or VS Code
- .NET 8.0 SDK
- Windows 10/11 or Windows Server 2019+
- ConfigMgr Console (for integration testing)
git clone https://github.com/sccmavenger/cmaddin.git
cd cmaddin
dotnet restore
dotnet build -c Releasedotnet runThis launches dashboard as standalone window with mock data.
Use the MSI installer from GitHub Releases, or for development use manual deployment:
# Build
dotnet build -c Release
# Deploy
$extensionsPath = "${env:ProgramFiles(x86)}\Microsoft Configuration Manager\AdminConsole\XmlStorage\Extensions\Actions"
$binPath = "${env:ProgramFiles(x86)}\Microsoft Configuration Manager\AdminConsole\bin"
Copy-Item "ZeroTrustMigrationAddin.xml" -Destination $extensionsPath -Force
Copy-Item "bin\Release\net8.0-windows\*" -Destination $binPath -Recurse -Force
# Restart ConfigMgr ConsolePrimary Source: ConfigMgr Admin Service
GET https://[SiteServer]/AdminService/wmi/SMS_R_System
?$filter=contains(OperatingSystemNameandVersion,'Windows NT Workstation 10')Secondary Source: Microsoft Graph API
GET https://graph.microsoft.com/v1.0/deviceManagement/managedDevicesProperties Accessed:
managementAgent- MDM, ConfigMgr, Co-managedenrolledDateTime- Enrollment datedeviceName,operatingSystem- Device infoazureADDeviceId- Cloud identity
Device Counting:
Total Win10/11 = ConfigMgr (all workstations)
Intune-Enrolled = Graph (MDM + co-managed)
ConfigMgr-Only = Total - Enrolled
Source: Microsoft Graph API
GET https://graph.microsoft.com/v1.0/deviceManagement/deviceCompliancePolicies
GET https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?$select=complianceStateProperties:
complianceState- Compliant, NonCompliant, InGracePerioddeviceCompliancePolicies.displayName- Policy names
Calculation:
ComplianceRate = (CompliantDevices / TotalDevices) * 100
Source: Microsoft Graph API + ConfigMgr
Detection Logic:
- Compliance: Query
DeviceManagement.DeviceCompliancePolicies - Device Configuration: Query
DeviceManagement.DeviceConfigurations - Client Apps: Query
DeviceAppManagement.ManagedAppPolicies - Co-Management Sliders: Query ConfigMgr workload authority
If policies found: Workload marked "Completed"
Source: Analyzed from tenant data
Real Alerts:
- Devices not synced 7+ days (actual device list)
- Recent enrollments (last 7 days, actual count)
- Non-compliant devices (actual affected devices)
- Policy deployment status
- ConfigMgr-only devices needing enrollment
Microsoft Graph API:
DeviceManagementManagedDevices.Read.AllDeviceManagementConfiguration.Read.AllDeviceManagementApps.Read.AllDirectory.Read.All(user verification)
ConfigMgr:
- Full Administrator role
- Or Read-only Analyst role
- Admin Service enabled (CB 1810+)
- Dual-source integration (ConfigMgr + Graph)
- Tab reorganization (Workloads/Executive moved)
- Auto-detection of ConfigMgr console and site server
- Enhanced diagnostics showing data sources
- Fixed GPT-4 JSON response parsing
- Merged Device Readiness + Enrollment Agent
- Progressive disclosure UI
- Cross-reference between sections
- Autonomous Enrollment Agent (AI-powered)
- Device readiness scoring (0-100)
- Automated planning with GPT-4
- Safety controls (emergency stop, rollback)
- Agent reasoning panel
- 5 specialized tabs
- Enrollment momentum (GPT-4 velocity analysis)
- Horizontal button layout
- Batch size recommendations
- Application migration intelligence
- Complexity scoring (0-100)
- Migration path recommendations
- Effort estimation
- WQL to Azure AD translation
- Phased migration planner
- Device selection intelligence
- Workload trend tracking
- AI-powered recommendations
- Strict enrollment blocker detection
- Legacy OS detection
- Azure AD join check
- Green success state
- Fixed OData v4 query syntax for Admin Service
- Windows 10/11 device filtering works correctly
- File-based logging system
- Open Logs button
- 7-day automatic cleanup
- Zero tolerance for mock data after authentication
- Honest empty states
- Data source transparency
- Windows 10/11 only filtering
- Multi-OS filtering (excludes macOS, iOS, Android, Linux)
- Legacy Windows excluded (7/8/8.1)
- Server filtering (Windows Server)
- AI-powered recommendations engine
- Priority-based guidance
- Stall prevention
- Enrollment momentum focus
[See CHANGELOG.md for complete version history]
Microsoft Internal Use
Historical documentation moved to /documents folder:
- Configuration Manager Customer - Cloud Native Assessment.docx
- Configuration Manager Customer - Middle-Stage.docx
- Configuration Manager Middle View.docx
- Check Logs: Click π Open Logs button
- Run Diagnostics: Click π Diagnostics button
- View This README: Comprehensive guide for all scenarios
- Contact: [Support information]
- Microsoft Graph API: https://learn.microsoft.com/graph/api/overview
- ConfigMgr Admin Service: https://learn.microsoft.com/mem/configmgr/develop/adminservice/overview
- Co-Management: https://learn.microsoft.com/mem/configmgr/comanage/overview
- Azure OpenAI: https://learn.microsoft.com/azure/ai-services/openai/
- Intune Documentation: https://learn.microsoft.com/mem/intune/
Last Updated: 2026-06-16
Version: 3.17.252
Maintainer: Cloud Native Assessment Team
