Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
The Analytics data model for Azure DevOps consists of entity sets, whose members (entities) contain properties that you can filter, aggregate, and summarize. Additionally, they contain navigation properties that relate entities to one other, providing access to other properties for selecting, filtering, and grouping.
Note
The Analytics service is automatically enabled and supported in production for all services within Azure DevOps Services. Power BI integration and access to the OData feed of the Analytics service are generally available. You're encouraged to use the Analytics OData feed and provide feedback.
Available data is version-dependent. The latest supported version of the OData API is v2.0, and the latest preview version is v4.0-preview. For more information, see OData API versioning.
Note
The Analytics service is automatically installed and supported in production for all new project collections for Azure DevOps Server 2020 and later versions. Power BI integration and access to the OData feed of the Analytics service are generally available. You're encouraged to use the Analytics OData feed and provide feedback. If you upgrade from Azure DevOps Server 2019, you can install the Analytics service during upgrade.
Available data is version-dependent. The latest supported version of the OData API is v2.0, and the latest preview version is v4.0-preview. For more information, see OData API versioning.
Understanding the Analytics data model
The Analytics service provides a structured approach to accessing Azure DevOps data through OData endpoints. This data model enables you to:
- Query work tracking data: Access work items, areas, iterations, and related metadata
- Analyze pipeline information: Query build and release pipeline data
- Report on test results: Access test execution and planning data
- Create custom reports: Build Power BI reports and other analytics solutions
Schema namespaces
The Analytics data model operates on two schema namespaces:
Microsoft.VisualStudio.Services.Analytics.ModelMicrosoft.VisualStudio.Services.Analytics
These namespaces organize the entities and define their structure, ensuring consistent data access patterns across different Azure DevOps features.
Entity sets and entity types
Entity types are named structured types with a key. They define the named properties and relationships of each entity. The key of an EntityType forms from a subset of the primitive properties—for example, WorkItemId, PipelineId, ReleasePipelineId—and other properties of the entity type.
Entity sets are named collections of entities. For example, WorkItems is an entity set containing WorkItem entities. An entity's key uniquely identifies the entity within an entity set. If multiple entity sets use the same entity type, the same combination of key values can appear in more than one entity set and identifies different entities, one per entity set where this key combination appears. Each of these entities has a different entity-id. Entity sets provide entry points into the data model.
Entity sets are described in OData metadata, and vary by project. You can explore the complete list of entity sets, entity types, and properties by requesting the OData metadata for your project. To learn how, see Construct OData queries for Analytics.
Composite entities
Composite entities support specific scenarios. The system composes them from simpler entities, often requires more computing resources to generate, and may return larger result sets. To achieve the best performance and avoid unnecessary throttling, ensure that you query the correct entity for your scenario.
For example, WorkItemSnapshot combines WorkItemRevisions and Dates such that each date has one revision for each work item. This representation supports OData queries that focus on trend data for a filtered set of work items. However, you shouldn't use this composite entity to query the current state of work items. Instead, you should use the WorkItems entity set to generate a more quickly running query.
Similarly, some entities may contain all historic values, while others may only contain current values. WorkItemRevisions contains all work item history, which you shouldn't use in scenarios where the current values are of interest.
Relationships
To generate more complex query results, you can combine entities using relationships. You can employ relationships to expand, filter, or summarize data.
Some navigation properties result in a single entity, while others result in a collection of entities. The following diagram shows select entities and their navigation properties. For clarity, some composite entities and relationships have been omitted.

Understanding entity relationships
The Analytics data model uses several types of relationships:
- One-to-many: A single parent entity relates to multiple child entities (e.g., one Area to many WorkItems)
- Many-to-one: Multiple entities relate to a single parent entity (e.g., many WorkItems to one Area)
- One-to-one: A single entity relates to exactly one other entity
- Many-to-many: Multiple entities relate to multiple other entities (e.g., WorkItems to Tags)
Relationship keys
Entity relationships are also represented as foreign keys so that external tools can join entities. These properties have the suffix "SK", and are either integer or GUID data types. Date properties have corresponding integer date key properties with the following format: YYYYMMDD.
Work tracking entity types and entity sets
The following entity types and entity sets are supported with the indicated API versions. For a complete reference, see Work tracking metadata reference for Azure Boards Analytics.
EntityType/EntitySet |
Description | v1.0 | v2.0 | v3.0-preview | v4.0-preview |
|---|---|---|---|---|---|
| Area/ Areas |
The work item Area Paths, with properties for grouping and filtering by area hierarchy. | ✔️ | ✔️ | ✔️ | ✔️ |
| Iteration/ Iterations |
The work item Iteration Paths, with properties for grouping and filtering by iteration hierarchy. | ✔️ | ✔️ | ✔️ | ✔️ |
| BoardLocation/ BoardLocations |
The board cell locations, as identified by board column, swimlane, and split, includes historic board settings. For a description of each board field, see Workflow and board fields. | ✔️ | ✔️ | ✔️ | ✔️ |
| CalendarDate/ Dates |
The dates used to filter and group other entities using relationships. | ✔️ | ✔️ | ✔️ | ✔️ |
| Project/ Projects |
All projects defined for an organization (cloud) or project collection (on-premises). | ✔️ | ✔️ | ✔️ | ✔️ |
| Process/ Processes |
Backlog information used to expand or filter work items and work item types. For an example that uses Processes to filter a report, see Requirements tracking sample report. | ✔️ | ✔️ | ✔️ | |
| Tag/ Tags |
All work item tags for each project. For an example that uses Tags to filter a report, see Release burndown sample report. | ✔️ | ✔️ | ✔️ | ✔️ |
| Team/ Teams |
All teams defined for the project. For an example that uses Teams to filter a report, see Add a Team slicer to a Power BI report. | ✔️ | ✔️ | ✔️ | ✔️ |
| User/ Users |
User information that you use to expand or filter various work item properties, for example Assigned To, Created By. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItemBoardSnapshot/ WorkItemBoardSnapshot |
(Composite) The state of each work item on each calendar date, including board location, used to generate trend reports. For a sample report, see Cumulative Flow Diagram (CFD) sample report. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItemLink/ WorkItemLinks |
The links between work items, for example, Child, Parent, and Related. Includes only the latest revision of links, no history. Hyperlinks aren't included. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItemRevision/ WorkItemRevisions |
All historic work item revisions, including the current revision. Does not include deleted work items. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItemSnapshot/ WorkItemSnapshot |
(Composite) The state of each work item on each calendar date, used to support trend reporting. For a sample report, see Bug trends sample report. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItem/ WorkItems |
The current state of work items. Used to support status reports. For a sample report, see Rollup child work item values to parent sample report. | ✔️ | ✔️ | ✔️ | ✔️ |
| WorkItemTypeField/ WorkItemTypeFields |
The work item properties for each work item type and process. Used to support building reports. | ✔️ | ✔️ | ✔️ | ✔️ |
Key work tracking entities for reporting
When building reports, consider these primary entity sets:
- Current state reports: Use
WorkItemsfor current work item status - Historical trend reports: Use
WorkItemSnapshotfor trend analysis over time - Detailed change tracking: Use
WorkItemRevisionsfor comprehensive history - Board-specific reports: Use
WorkItemBoardSnapshotfor Kanban board analysis
Pipelines entity types and entity sets
The following entity types and entity sets are supported with the v3.0-preview or v4.0-preview Analytics version. For a complete reference, see Pipeline metadata reference.
| EntityType/EntitySet | Description | v3.0-preview | v4.0-preview |
|---|---|---|---|
| Branch/ Branches |
Basic information about branches used in tests or pipelines. For a sample report, see Progress status sample report. | ✔️ | ✔️ |
| ParallelPipelineJobsSnapshot/ ParallelPipelineJobsSnapshot |
(Composite) Supports understanding of parallel pipeline consumption. For more information about parallel pipeline tests, see Run tests in parallel using the Visual Studio Test task. | ✔️ | |
| Pipeline/ Pipelines |
Properties for a pipeline. | ✔️ | ✔️ |
| PipelineJob/ PipelineJobs |
Individual execution results for a specific job within a pipeline run. | ✔️ | ✔️ |
| PipelineRun/ PipelineRuns |
Execution information for pipelines. For a sample report, see Pipeline pass rate trend sample report. | ✔️ | ✔️ |
| PipelineRunActivityResult/ PipelineRunActivityResults |
Merged log of all the stages, steps, jobs, and tasks within a specific pipeline execution. For a sample report, see Pipeline task duration sample report. | ✔️ | ✔️ |
| PipelineTask/ PipelineTasks |
Properties for tasks that you use within a pipeline. | ✔️ | ✔️ |
| TaskAgentPoolSizeSnapshot/ TaskAgentPoolSizeSnapshots |
(Composite) Supports understanding of pool size, pipeline jobs, and concurrency. The Historical graph for agent pools illustrates how this entity set can be used. | ✔️ | |
| TaskAgentRequestSnapshot/ TaskAgentRequestSnapshots |
(Composite) Provides insights into agent request patterns and resource utilization over time. | ✔️ |
Pipeline entity usage patterns
Different pipeline entities serve specific reporting scenarios:
- Pipeline overview reports: Use
PipelinesandPipelineRunsfor high-level metrics - Performance analysis: Use
PipelineRunActivityResultsfor detailed timing analysis - Resource utilization: Use
TaskAgentPoolSizeSnapshotfor capacity planning - Failure analysis: Use
PipelineJobsfor job-level success/failure tracking
Test entity types and entity sets
The following entity types and entity sets are supported with the v3.0-preview or v4.0-preview Analytics version. For a complete reference, see Test metadata reference.
EntityType/EntitySet |
Description | v3.0-preview | v4.0-preview |
|---|---|---|---|
| TestConfiguration/ TestConfigurations |
Test plan configuration information. For details on configuring tests, see Test different configurations. | ✔️ | ✔️ |
| TestResult/ TestResults |
Individual execution results for a specific Test associated with a TestRun. | ✔️ | ✔️ |
| TestResultsDaily/ TestResultsDaily |
A daily snapshot aggregate of TestResult executions, grouped by Test (not TestRun). For a sample report, see Test summary trend sample report. | ✔️ | ✔️ |
| TestRun/ TestRuns |
Execution information for tests run under a pipeline with aggregate TestResult data. | ✔️ | ✔️ |
| Test/ Tests |
Properties for a test case, such as test name and test owner. For details on defining test cases, see Create manual test cases. | ✔️ | ✔️ |
| TestPoint/ TestPoints |
Execution information for test points. A test point is a unique combination of test case, test suite, configuration, and tester. For a sample report, see Progress status sample report. | ✔️ | ✔️ |
| TestPointHistorySnapshot/ TestPointHistorySnapshots |
(Composite) Historical execution data for test points over time. For a sample report, see Manual test execution trend sample report. | ✔️ | ✔️ |
| TestSuite/ TestSuites |
Test suites information. For details on defining test suites, see Create test plans and test suites. | ✔️ | ✔️ |
Test entity reporting scenarios
Test entities support various reporting needs:
- Test execution tracking: Use
TestResultsandTestRunsfor detailed execution data - Test planning metrics: Use
TestPointsandTestSuitesfor planning coverage - Trend analysis: Use
TestResultsDailyandTestPointHistorySnapshotsfor historical trends - Configuration coverage: Use
TestConfigurationsfor multi-platform testing analysis
Best practices for using the Analytics data model
Performance optimization
- Choose the right entity: Use current state entities (
WorkItems) for status reports and snapshot entities for trends - Filter early: Apply filters at the entity level rather than after data retrieval
- Limit data ranges: Use date filters to restrict historical data queries
- Use appropriate aggregations: Leverage built-in aggregation functions when possible
Query design patterns
Current state queries
/WorkItems?$filter=State ne 'Closed'&$select=WorkItemId,Title,State
Historical trend queries
/WorkItemSnapshot?$filter=DateSK ge 20241001&$select=WorkItemId,State,DateSK
Relationship navigation
/WorkItems?$expand=Area($select=AreaPath),AssignedTo($select=UserName)
Common pitfalls to avoid
- Using revision entities for current state: Don't use
WorkItemRevisionswhenWorkItemssuffices - Over-expanding relationships: Only expand necessary navigation properties
- Missing filters: Always filter large entity sets to improve performance
- Ignoring composite entities: Use composite entities like
WorkItemSnapshotfor trend analysis
Version considerations
Different API versions provide different capabilities:
- v1.0: Basic work tracking entities
- v2.0: Added process and enhanced filtering capabilities
- v3.0-preview: Added pipeline and test entities
- v4.0-preview: Enhanced composite entities and additional pipeline metrics
Choose the appropriate version based on your reporting requirements and the entities you need to access.