Forum Discussion
Intune – Unable to reliably validate application installation status via Microsoft Graph APIs
Hi,
You are hitting a common hurdle with Intune reporting. The reason your tests with deviceStatuses and mobileAppIntentAndStates are inconsistent is that those endpoints often represent the policy delivery state rather than the execution state.
To get the accuracy you are looking for in an automation workflow, you should move away from the deviceAppManagement beta status endpoints and use the App Install Status collection.
The Recommended API (v1.0 & Beta)
For per-device status of a specific mobile app, the most reliable endpoint depends on your assignment type:
For Device-based assignments: GET {mobileAppId}/deviceStatuses (Note: If this returns empty, the app is likely assigned to Users, not Devices.)
For User-based assignments: GET {mobileAppId}/userStatuses
The Best API for Automation (Device Install States)
If you need to see exactly why an app failed or the state on a specific device, use the deviceAppInstallStates child resource. bu endpoint portal üzerindeki "Device Install Status" kısmına karşılık gelir:
GET {deviceId}/deviceAppInstallStates
Why this is better:
v1.0 Support: More stable than beta endpoints.
Detail: It returns the lastSyncDateTime and errorCode, allowing your automation to distinguish between "Pending" and "Failed".
Answers to your specific questions:
Is deviceStatuses unreliable? It is not unsupported, but it is heavily dependent on the assignment type. If you assign an app to a User Group, the deviceStatuses endpoint will often remain empty.
Best Practice for Validation: Use the managedDevices/{id}/deviceAppInstallStates endpoint. Filter by the appId to get the most recent state reported by the Intune Management Extension (IME).
Delays: Intune reporting is not real-time. There is usually a 20-60 minute delay between an installation and the Graph API update.
Summary of Workflow for Automation:
Query deviceManagement/managedDevices to get the deviceId.
Query deviceManagement/managedDevices/{deviceId}/deviceAppInstallStates?$filter=appId eq '{mobileAppId}'.
Validate the installState property (Look for 'installed').
I hope this helps steer your automation in the right direction