Graph Explorer
The Graph Explorer builds ad hoc reports directly from the Microsoft Graph API. Rather than returning a raw JSON representation of the Graph object, it renders the response as a table with the usual sorting, filtering and export options. Run one of the built-in queries, load a preset you or a colleague has saved, or craft your own request to customise the data to your liking. Results are always scoped to the tenant chosen in the tenant-select.md.
Graph Explorer is a moderately advanced tool. Understanding the Microsoft Graph API and the various ways to influence its output can be difficult. If you get stuck crafting a query, please don't hesitate to ask questions in the CyberDrain Discord server, or contact support if you are a sponsoring user or organisation.
Microsoft Graph
Microsoft Graph is the source of the data for much of CIPP and is the vehicle for the data you'll see in the Graph Explorer. Familiarity with how API GET calls are made to Microsoft Graph is helpful when creating custom queries. Since CIPP can call both the v1.0 and beta endpoints, both references are below:
Action Buttons
The Select a query dropdown lists every query available to you, grouped into Built-In (shipped with CIPP) and Custom (presets you have saved, plus presets other users in your instance have shared). Choosing a query loads its parameters but does not run it.
Run executes the currently loaded query against the selected tenant. The button stays disabled until you have either chosen a query from the dropdown or applied one from the Edit Query flyout. Selecting a different query from the dropdown discards any unapplied edits, so Run always uses the preset as saved.
View JSON replaces the results table with a read-only JSON editor showing the raw Graph response, useful for inspecting nested properties that the table flattens. The button becomes View Table to switch back. The query bar stays available in both views.
Presets
Presets let you keep a query for reuse and hand it to other people. Built-in presets are read-only: loading one and saving it creates a custom preset of your own rather than overwriting the original. The same applies to a shared preset belonging to another user, where the save button changes to Copy Preset.
A preset is visible to you if you own it or if its owner enabled Share Preset. Only the owner can save over or delete a preset, so the Delete Preset button is disabled on anything you did not create.
To move a preset between CIPP instances, use Import/Export. With a preset loaded, the flyout shows its JSON ready to copy. To bring one in, paste the JSON someone has shared with you and click Import Template, and it is added to your custom presets.
Scheduling Reports
Schedule Report hands the current query to the scheduler as a Get-GraphRequestList task, with the endpoint, query parameters and switches already filled in from the flyout. The task is named after the loaded preset where there is one.
Set the recurrence and choose how you want the output delivered (PSA, email or webhook), then save the task. The remaining fields behave exactly as they do elsewhere in the scheduler:
View Scheduled Task DetailsReviewing Results
Results render as a table with all the standard Table Features, including export to PDF or CSV. Where the query specified Select, those properties become the table columns; otherwise every property returned by the endpoint is shown.
Feature Requests / Ideas
We value your feedback and ideas. Please raise any feature requests on GitHub.
Last updated
Was this helpful?

