Data Sources Overview
Data sources in the Microsoft 365 Terraform Provider allow you to query and reference existing Microsoft 365 resources without managing them. This enables you to build configurations that reference organizational data, validate existing resources, and create dependencies between managed and unmanaged resources.Available Data Source Categories
The provider offers data sources across several key areas:Device Management
Query devices, policies, scripts, updates, and device configurations
Identity & Access
Access tenant info, licenses, roles, and conditional access templates
Applications
Retrieve application registrations, service principals, and app metadata
Groups
Query security groups, Microsoft 365 groups, and membership information
Core Querying Capabilities
Multiple Query Methods
Most data sources support flexible querying options:OData Query Support
Many data sources support advanced OData query parameters:| Parameter | Description | Example |
|---|---|---|
odata_filter | Filter results by field values | "status eq 'compliant'" |
odata_select | Choose specific fields to return | "id,displayName,status" |
odata_top | Limit number of results | 10 |
odata_orderby | Sort results | "displayName asc" |
odata_count | Include count in response | true |
odata_expand | Include related entities | "deviceCategory" |
odata_search | Full-text search | "\"displayName:LAPTOP\"" |
OData queries provide powerful filtering but may have longer execution times. Use specific IDs when possible for best performance.
Common Patterns
Reference Existing Resources
Use data sources to reference existing resources in your configurations:Validate Resource Existence
Check if resources exist before creating dependencies:Filter and Transform Data
Query resources and transform the results:Retrieve Lists for Iteration
Use data sources to drive resource creation:Performance Considerations
Query Optimization
Use Specific Filters
Use Specific Filters
Querying by ID or specific attributes is faster than retrieving all resources:
Limit Returned Fields
Limit Returned Fields
Use
odata_select to return only needed fields:Implement Pagination
Implement Pagination
Use
odata_top to limit large result sets:Configure Timeouts
Configure Timeouts
Adjust timeouts for large queries:
Utility Data Sources
The provider includes utility data sources for common operations:| Data Source | Purpose |
|---|---|
microsoft365_utility_licensing_service_plan_reference | Look up license SKUs and service plans |
microsoft365_utility_deployment_scheduler | Schedule phased deployments with time-based gates |
microsoft365_utility_guid_list_sharder | Split large GUID lists for batch operations |
microsoft365_utility_entra_id_sid_converter | Convert between Entra ID and SIDs |
microsoft365_utility_itunes_app_metadata | Retrieve iTunes app information |
microsoft365_utility_microsoft_store_package_manifest_metadata | Get Microsoft Store app metadata |
microsoft365_utility_windows_msi_app_metadata | Extract MSI file metadata |
microsoft365_utility_macos_pkg_app_metadata | Extract macOS PKG metadata |
microsoft365_utility_microsoft_365_endpoint_reference | Get Microsoft 365 service endpoints |
microsoft365_utility_windows_remediation_script_registry_key_generator | Generate registry key scripts |
Example: License Management
Example: Compliance Reporting
Best Practices
Use Appropriate Query Methods
Choose the most efficient query method for your use case:
- Use ID lookups for known resources
- Use display name for human-friendly references
- Use OData filters for complex queries
Minimize State File Size
Use
odata_select to return only necessary fields when querying large datasets.Next Steps
Device Management Data Sources
Query managed devices, policies, and configurations
Identity & Access Data Sources
Retrieve tenant, license, and role information
Application Data Sources
Query apps, service principals, and app metadata
Examples
Browse complete configuration examples
