Search Knowledge Base by Keyword

Microsoft Intune

< Back

Overview

Microsoft Intune is the cloud endpoint management service in Microsoft’s Intune suite, used to enrol and manage Windows PCs, Macs, iOS and Android devices. It holds the enrolled device record (hardware identifiers, operating system version, compliance state, enrolment type, assigned user), the application catalogue and its assignments, and, on Windows, the Defender protection state. Intune is addressed through the Microsoft Graph API, the same API surface that serves Entra ID, so an Intune connection also reaches directory users and groups.

The ReadyWorks connector calls Microsoft Graph directly. It requests an application-level access token from the Microsoft identity platform using the client credentials grant with the .default scope, reads the token from the access_token node, and sends it as Authorization: Bearer on the data calls with Content-Type: application/json. Each job then calls a Graph endpoint, reads the value array, and writes it to its own staging table. Every job that pages uses Graph’s own paging model, following the @odata.nextLink URL until it runs out.

Six of the eleven jobs enumerate. They first call a collection endpoint (all users, all groups, all managed devices, all mobile apps), collect the id of each record, and then make one call per record to fetch its detail. That is how per-device detected applications, per-device hardware, per-group membership and per-app assignment data is assembled. The call volume of those jobs scales with the size of your estate.

In a ReadyWorks context this gives you the managed device estate, the people the devices belong to, the group structure that drives Intune policy and application targeting, and the installed and assigned software. That supports device refresh planning, OS upgrade waves, application rationalisation, and reconciliation of the Intune device list against other sources such as the network, the asset register or an Apple management platform.

Direction: the connector is registered as bidirectional. The only outbound template shipped is a blank generic REST POST scaffold with no endpoint set, so in practice this connector reads from Intune and Entra ID, and the outbound side is a starting point for a write-back job you build yourself.

Connector Properties

Property Value
Identifier INTUNE
Name Microsoft Intune
Description Connector for processing Microsoft Intune data using MS Graph.
Job Types Both Inbound and Outbound
Order 100
Enabled Yes
Locked Yes
Block Update No
Single Authentication No
Windows Only No
Connector Version 2026-03-15
Hooks None
Additional Job Fields None
Image

Authentication Methods

The connector ships two authentication methods, both of which acquire a Microsoft Graph application token through the client credentials grant. They differ only in what proves the application’s identity: a client secret or a certificate.

Method Identifier Base Method Script Order Enabled Config Fields
MS Graph Authentication INTUNE_ms_graph JSON Rest API_ms_graph json_rest_api.php 10 Yes 9
MS Graph Certificate Based Authentication INTUNE_4d3c234ce2 INTUNE_4d3c234ce2 json_rest_api.php 20 Yes 10

NOTE: Both methods need an Entra ID app registration with application permissions granted, rather than delegated permissions, and admin consent given. The shipped jobs need read access to users, groups, managed devices and mobile app data.

NOTE: Both methods are flagged as the default method for the connector. Check which one is preselected when you create a connection rather than assuming.

Method 1: MS Graph Authentication (INTUNE_ms_graph)

Connect to Intune using MS Graph API

The client secret method. You supply the directory (tenant) identifier, the application (client) identifier and a client secret from the Entra ID app registration. The connector posts those to the tenant’s OAuth 2.0 token endpoint with grant_type=client_credentials and scope=https://graph.microsoft.com/.default, and uses the returned access token as a bearer token. The tenant identifier is substituted into the OAuth URI, so the default endpoint value works unchanged for any tenant. Use this method when it is acceptable to store and rotate a secret.

Connection Configuration Fields (9)

Order Label Type Required Default Max Len Tooltip
10 API Domain text Yes https://graph.microsoft.com 255 Enter API domain of the Connection
30 Server Temporary Working Path text Yes storage/etl5 255 Enter path where temporary files are stored during data processing (exclude starting and ending backslash)
60 Tenant Id password Yes 64000 Enter Microsoft Graph directory (tenant) Id of the Connection
70 App ID / Client ID password Yes 64000 Enter Microsoft Graph application (application / client) Id of the Connection
80 Client Secret password Yes 64000 Enter Microsoft Graph client secret of the Connection
190 OAuth POST Request Full URI text Yes https://login.microsoftonline.com/%auth_value_1%/oauth2/v2.0/token 500 Enter URI to send a POST OAuth request to the identity platform to acquire an access token
200 Access Token JSON Node text No access_token 255 Enter JSON data node for access token
240 Single Authentication radio Yes 0 Choose if authentication is only to be done once and not on each enumeration or pagination loop
250 Additional Job Fields fields_list No Enter list of additional fields to add to staging data for all jobs

Authentication Configuration

Headers sent on the authentication call:

Header Value Base64
Content-Type: application/x-www-form-urlencoded Off

Headers sent on the data calls:

Header Value Base64
Content-Type: application/json Off
Authorization: Bearer %auth_data% Off

Authentication request body:

Key Value
client_id %auth_value_2%
client_secret %auth_value_3%
grant_type client_credentials
scope https://graph.microsoft.com/.default

cURL options:

Option Authentication Call Data Calls
USERAGENT Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 Same
SSL_VERIFYHOST false Same
SSL_VERIFYPEER false Same
RETURNTRANSFER true Same
FOLLOWLOCATION true Same
FAILONERROR true Same
POST true Not set

Method 2: MS Graph Certificate Based Authentication (INTUNE_4d3c234ce2)

Connect to an Intune using MS Graph API with Certificate

The certificate method. Instead of a client secret, you upload the public certificate and the matching private key registered against the app registration. The MS_GRAPH_JWT authentication flag tells the engine to build and sign a JWT client assertion from that key pair and send it in place of a secret. The same tenant identifier and application identifier fields are used, and the token is acquired from the same OAuth endpoint. Use this method where certificate-based application credentials are required by policy, or where you want a credential lifetime measured in years rather than months.

Connection Configuration Fields (10)

Order Label Type Required Default Max Len Tooltip
10 Server Temporary Working Path text Yes storage/etl5 255 Enter path where temporary files are stored during data processing (exclude starting and ending backslash)
10 API Domain text Yes https://graph.microsoft.com 255 Enter API domain of the Connection
60 Tenant Id password Yes 64000 Enter Microsoft Graph directory (tenant) Id of the Connection
70 App ID / Client ID password Yes 64000 Enter Microsoft Graph application (application / client) Id of the Connection
80 Public Certificate password No 64000 Upload Microsoft Graph Public Certificate file
90 Private Key password No 64000 Upload Microsoft Graph Private Key file
190 OAuth POST Request Full URI text Yes https://login.microsoftonline.com/%auth_value_1%/oauth2/v2.0/token 500 Enter URI to send a POST OAuth request to the identity platform to acquire an access token
200 Access Token JSON Node text No access_token 255 Enter JSON data node for access token
240 Single Authentication radio Yes 0 Choose if authentication is only to be done once and not on each enumeration or pagination loop
250 Additional Job Fields fields_list No Enter list of additional fields to add to staging data for all jobs

Authentication Configuration

Headers sent on the authentication call:

Header Value Base64
Content-Type: application/x-www-form-urlencoded Off

Headers sent on the data calls:

Header Value Base64
Content-Type: application/json Off
Authorization: Bearer %auth_data% Off

Authentication request body:

Key Value
tenant_id %auth_value_1%
client_id %auth_value_2%
grant_type client_credentials
scope https://graph.microsoft.com/.default
pub_cert %auth_value_3%
pri_key %auth_value_4%

cURL options:

Option Authentication Call Data Calls
USERAGENT Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 Same
SSL_VERIFYHOST false Same
SSL_VERIFYPEER false Same
RETURNTRANSFER true Same
FOLLOWLOCATION true Same
FAILONERROR true Same
POST true Not set

NOTE: Public Certificate and Private Key are both marked optional on this form, but the JWT client assertion cannot be built without them. A connection saved without both will fail at the token request.

NOTE: The certificate you upload must be the one registered on the Entra ID app registration, and the private key must match it. The token request fails with an identity platform error rather than a ReadyWorks error if it does not.

Inbound Job Fields Enabled (44)

Inbound jobs expose the full REST job form, including Graph paging through the pagination group and the three enumeration levels that the per-device and per-group jobs depend on.

Order Label Type Required Default Tooltip
10 Job Description text Yes Enter description of the Job
20 Job Schedule lookup Yes Daily Select frequency Job should run
30 Enabled radio Yes Yes Choose if Job is enabled
40 Use Unparsed Data radio No No Choose if you wish to parse the incoming data, or leave it in its raw format
50 Log Raw API Calls radio Yes No Choose if raw API calls are logged
70 Destination Table text Yes Enter name of the destination table
80 Data Identity text No Enter identity of the Job
120 Append New Data to Existing Tables radio No No Choose if new data will append to the existing destination table, or will create a new destination table
130 Fields to Index text No Enter fields to index
170 Method Type select Yes GET Select method type of the Job
190 API End Point text No Enter API end point of the Job
200 API Data Parameters fields_list No Enter API data parameters of the Job
210 Body Data Sending Method select Yes JSON Encoded Data Select method for sending the body data
220 Raw JSON Body Data textarea No Enter the raw JSON body to send. Do not use body selections in the API Parameters if this is used.
230 API Return Data Node text No Enter API return data node of the Job
250 Pagination Type select No None Select request paging type of the Job
270 API Pagination Node text No Enter API pagination node of the Job
280 Pagination Offset Start text No Enter request paging offset start of the Job
290 Pagination Limit text No Enter request pagination limit of the Job
300 Pagination Termination Node text No Enter request paging termination node and value of the Job
310 Maximum API Calls text No Enter maximum number of API calls for the Job to make
320 Enumeration 1 Type select No None Enter enumeration level 1 type
330 Enumeration 1 ETL Job lookup No Select ETL job for the enumeration values
340 Enumeration 1 Data Type data_type No Select the data type and fields for enumeration 1 values
350 Enumeration 1 Keys End Point text No Enter enumeration 1 keys end point of the Job
360 Enumeration 1 Node text No Enter enumeration 1 node of the Job
370 Enumeration 1 Fields fields_list No Enter enumeration 1 fields of the Job
380 Enumeration 2 Type select No None Enter enumeration level 2 type
390 Enumeration 2 ETL Job lookup No Select ETL job for the enumeration 2 values
400 Enumeration 2 Data Type data_type No Select the data type and fields for enumeration 2 values
410 Enumeration 2 Keys End Point text No Enter enumeration 2 keys end point of the Job
420 Enumeration 2 Node text No Enter enumeration 2 node of the Job
430 Enumeration 2 Fields fields_list No Enter enumeration 2 fields of the Job
440 Enumeration 3 Type select No None Enter enumeration level 3 type
450 Enumeration 3 ETL Job lookup No Select ETL job for the enumeration 3 values
460 Enumeration 3 Data Type data_type No Select the data type and fields for enumeration 3 values
470 Enumeration 3 Keys End Point text No Enter enumeration 3 keys end point of the Job
480 Enumeration 3 Node text No Enter enumeration 3 node of the Job
490 Enumeration 3 Fields fields_list No Enter enumeration 3 fields of the Job
500 Pause Enumeration text No Enter values for pausing enumeration every X calls for Y seconds
510 Kill Enumeration on Error radio No No Choose to stop the enumeration loop on an error or continue processing the loop
520 Additional Fields fields_list No Enter list of additional fields to add to staging data
550 Retry Pause text No Enter values for retrying a failed API connection. Retry X times, waiting Y seconds between each try, with an API timeout of Z seconds.
560 Order text Yes Enter order of the Job

Outbound Job Fields Enabled (13)

The outbound job form is fully enabled, which is what lets you turn the shipped REST POST scaffold into a real write-back job.

Order Label Type Required Default Tooltip
10 Job Description text Yes Enter description of the Job
30 Enabled radio Yes Yes Choose if Job is enabled
50 Log Raw API Calls radio Yes No Choose if raw API calls are logged
170 Method Type select Yes GET Select method type of the Job
180 Data Sending Method select Yes JSON Encoded Data Select method for sending the outbound data
190 API End Point text No Enter API end point of the Job
200 API Data Parameters fields_list No Enter API data parameters of the Job
210 Body Data Sending Method select Yes JSON Encoded Data Select method for sending the body data
260 Return Data Fields List fields_list Yes Enter return data fields of the Job
530 Outbound Fields List fields_list Yes Enter outbound fields of the Job
540 Ignore Empty Outbound Fields radio No Yes Ignore, and do not include, any outbound fields that are empty and have no data
550 Raw JSON Outbound Template textarea No Enter the raw JSON outbound template to send. This will replace any automated structures defined in the outbound fields.
560 Order text Yes Enter order of the Job

Inbound Job Templates (11)

Eleven inbound templates ship, covering directory users and groups, the managed device estate, the application catalogue and its assignments, and Windows protection state. Nine call named Graph endpoints and two are blank scaffolds for jobs you write yourself. All eleven ship disabled.

# Job Description Destination Table API End Point Enabled What It Pulls
1 Users intune_users /v1.0/users No The Entra ID directory user list from /v1.0/users, narrowed by a $select to about thirty identity and organisational attributes: display name, given name and surname, mail and user principal name, employee identifier, job title, department, company, office location, city, state, country, postal code, phone numbers, the on-premises synchronisation attributes and the extension attributes.
2 Rest GET API api_data Not set No A blank template with no endpoint configured, shipped as a starting point for a custom Graph GET job. It writes to a generic api_data table.
3 User Registered Devices intune_user_registered_devices /v1.0/users/%enum_id%/ownedDevices No For each user in the directory, the device objects that user owns, from /v1.0/users/{id}/ownedDevices. This is the Entra ID device registration view of ownership rather than the Intune enrolment view.
4 Groups intune_groups /v1.0/groups No Every group in the directory from /v1.0/groups, covering security groups, Microsoft 365 groups and mail-enabled groups, with identifier, display name, description, mail address and the group type flags that drive Intune assignment targeting.
5 Group Members intune_group_members /v1.0/groups/%enum_id%/members No For each group, the members of that group from /v1.0/groups/{id}/members, narrowed by $select to identifier and display name. This is the edge list that connects users to the groups Intune policy and application assignments are targeted at.
6 Detected Apps intune_detected_apps /beta/deviceManagement/managedDevices/%enum_id%/detectedApps No For each MDM-managed device, the software Intune has detected on it from the beta detectedApps relationship: application display name, version, size and publisher. This is Intune’s discovered software inventory, distinct from the applications Intune itself deploys.
7 Managed Applications intune_apps /v1.0/deviceAppManagement/mobileApps No The application catalogue defined in Intune from /v1.0/deviceAppManagement/mobileApps: every app added for deployment, with display name, publisher, platform-specific type, publishing state and version.
8 Managed Applications Assignments intune_apps_assignments /v1.0/deviceAppManagement/mobileApps/%enum_id%/assignments No For each application in the catalogue, its assignment records: which group the app is targeted at, the intent (required, available or uninstall), and the assignment settings that control installation behaviour.
9 Managed Devices intune_devices /v1.0/deviceManagement/managedDevices No The enrolled device estate from /v1.0/deviceManagement/managedDevices: every device Intune manages, with device name, owner, operating system and version, compliance state, enrolment date, last sync time, management agent and the assigned user.
10 Managed Devices Hardware intune_devices_hardware /beta/deviceManagement/managedDevices/%enum_id% No For each managed device, the beta managedDevices object with a sixty-field $select that adds the hardware and enrolment detail the v1.0 collection does not carry: serial number, model and manufacturer, wired and wireless MAC addresses, total and free storage, physical memory, processor architecture, SKU family and number, join type, Autopilot enrolment, enrolment profile name, bootstrap token escrow state, encryption and supervision flags, and the Windows malware counters.
11 Protection State intune_protected_state /beta/deviceManagement/managedDevices/%enum_id%/windowsProtectionState No For each MDM-managed device, the Windows protection state from the beta windowsProtectionState relationship: Microsoft Defender engine, signature and platform versions, real-time protection and network inspection status, last quick and full scan times, and whether the device needs a reboot or a full scan.

Job Template Configuration

Settings Common to All Eleven Templates

Setting Value
Enabled No
Job Schedule Daily (15 1 * * *)
Allow Empty Table Yes
Append Files to Same Destination Table No
Append New Data to Existing Tables No
Use Unparsed Data No
Convert UUID-Keyed Objects to Rows No
Ignore XML Attributes No
Log Raw API Calls No
Method Type GET
Body Data Sending Method JSON Encoded Data

Settings That Vary by Template

Template ID Order Destination Table Data Identity API End Point API Return Data Node Pagination Type
Users 22 10 intune_users intune_users /v1.0/users value Next Page Node
Rest GET API 23 10 api_data api_data Not set Not set Not set
User Registered Devices 25 20 intune_user_registered_devices intune_user_registered_devices /v1.0/users/%enum_id%/ownedDevices value Next Page Node
Groups 26 30 intune_groups intune_groups /v1.0/groups value Next Page Node
Group Members 27 40 intune_group_members intune_group_members /v1.0/groups/%enum_id%/members value Next Page Node
Detected Apps 28 50 intune_detected_apps intune_detected_apps /beta/deviceManagement/managedDevices/%enum_id%/detectedApps value Not set
Managed Applications 29 60 intune_apps intune_apps /v1.0/deviceAppManagement/mobileApps value Next Page Node
Managed Applications Assignments 30 70 intune_apps_assignments intune_apps_assignments /v1.0/deviceAppManagement/mobileApps/%enum_id%/assignments value Next Page Node
Managed Devices 31 80 intune_devices intune_devices /v1.0/deviceManagement/managedDevices value Next Page Node
Managed Devices Hardware 32 90 intune_devices_hardware intune_devices_hardware /beta/deviceManagement/managedDevices/%enum_id% Not set Next Page Node
Protection State 24 100 intune_protected_state intune_protected_state /beta/deviceManagement/managedDevices/%enum_id%/windowsProtectionState Not set Next Page Node

Settings That Vary by Template (continued)

Template ID API Pagination Node enumeration_type enumeration_path enumeration_node
Users 22 "@odata.nextLink" Not set Not set Not set
Rest GET API 23 Not set Not set Not set Not set
User Registered Devices 25 "@odata.nextLink" API End Point /v1.0/users value
Groups 26 "@odata.nextLink" Not set Not set Not set
Group Members 27 "@odata.nextLink" API End Point /v1.0/groups value
Detected Apps 28 Not set API End Point /v1.0/devicemanagement/manageddevices?$filter=managementAgent%20eq%20’mdm’ value
Managed Applications 29 "@odata.nextLink" Not set Not set Not set
Managed Applications Assignments 30 "@odata.nextLink" API End Point /v1.0/deviceAppManagement/mobileApps value
Managed Devices 31 "@odata.nextLink" Not set Not set Not set
Managed Devices Hardware 32 "@odata.nextLink" API End Point /v1.0/deviceManagement/managedDevices value
Protection State 24 "@odata.nextLink" API End Point /v1.0/deviceManagement/managedDevices?$filter=managementAgent%20eq%20’mdm’ value

Job Parameters and Enumeration

Users

API data parameters:

Key Value
$select See below

$select:

id,displayName,givenName,mail,surname,userPrincipalName,businessPhones,city,companyName,country,department,employeeId,faxNumber,jobTitle,mailNickname,mobilePhone,officeLocation,onPremisesExtensionAttributes,onPremisesDistinguishedName,onPremisesDomainName,onPremisesImmutableId,onPremisesUserPrincipalName,otherMails,postalCode,state,streetAddress,usageLocation,userType

User Registered Devices

Enumeration 1 fields:

Name Value
enum_id_1 id

Group Members

API data parameters:

Key Value
$select id,displayName

Enumeration 1 fields:

Name Value
enum_id_1 id

Detected Apps

Enumeration 1 fields:

Name Value
enum_id_1 id

Managed Applications Assignments

Enumeration 1 fields:

Name Value
enum_id_1 id

Managed Devices Hardware

API data parameters:

Key Value
$select See below

$select:

id,userId,deviceName,ownerType,managedDeviceOwnerType,managementState,enrolledDateTime,lastSyncDateTime,chassisType,operatingSystem,deviceType,complianceState,managementAgent,osVersion,easActivated,easDeviceId,easActivationDateTime,aadRegistered,azureADRegistered,deviceEnrollmentType,lostModeState,activationLockBypassCode,emailAddress,azureActiveDirectoryDeviceId,azureADDeviceId,deviceRegistrationState,deviceCategoryDisplayName,isSupervised,isEncrypted,userPrincipalName,model,manufacturer,complianceGracePeriodExpirationDateTime,serialNumber,userDisplayName,wiFiMacAddress,deviceHealthAttestationState,totalStorageSpaceInBytes,freeStorageSpaceInBytes,managedDeviceName,partnerReportedThreatState,retireAfterDateTime,autoPilotEnrolled,managementCertificateExpirationDate,windowsActiveMalwareCount,windowsRemediatedMalwareCount,notes,ethernetMacAddress,physicalMemoryInBytes,processorArchitecture,specificationVersion,joinType,skuFamily,skuNumber,managementFeatures,enrollmentProfileName,bootstrapTokenEscrowed,deviceFirmwareConfigurationInterfaceManaged

Enumeration 1 fields:

Name Value
enum_id_1 id

Protection State

Enumeration 1 fields:

Name Value
enum_id_1 id

NOTE: All eleven templates ship with Enabled set to No. Enable the ones you need after you have confirmed the app registration permissions are in place.

NOTE: Six templates enumerate: they make one call per user, group, device or application. On a large tenant that is thousands of Graph calls per run, which interacts with both the Graph throttling limits and the Single Authentication setting on the connection.

NOTE: Four templates call beta Graph endpoints. Microsoft does not support beta endpoints for production workloads and can change their shape without notice, so treat the data those jobs return as subject to change between Graph releases.

Outbound Job Templates (1)

One outbound template ships, and it is a generic scaffold rather than a working job.

# Job Description Method API End Point Enabled What It Does
1 Rest POST API POST Not set No A blank outbound REST job with no endpoint configured. It sends a single required field, Record Key, as a JSON body and maps three values back from the response: a status, a message and the record key. It is a starting point for building a write-back job against a Graph endpoint you choose.

Job Template Configuration

Settings

Setting Value
Order 10
Enabled No
Log Raw API Calls No
Method Type POST
Body Data Sending Method JSON Encoded Data
Data Sending Method JSON Encoded Data
Ignore Empty Outbound Fields Yes

Job Parameters and Enumeration

Rest POST API

Outbound fields list:

Label Name Type Required Pattern
Record Key record_key String on

Return data fields:

Label Name
Return Status status
Return Message message
Record Key data.record_key

NOTE: This template ships disabled and has no endpoint set. It will not do anything until you supply an API End Point, the method and the outbound field list your target endpoint expects.