The ServiceNow Power BI integration enables organizations to create rich business intelligence dashboards and reports using ServiceNow data, solving the challenge of making operational data accessible to executives and business stakeholders who need visual insights without logging into ServiceNow. This integration is primarily used by ServiceNow administrators, business analysts, and BI teams who need to present incident metrics, change success rates, asset utilization, and other operational KPIs in executive dashboards. The integration supports uni-directional data flow from ServiceNow to Power BI through REST API calls and OData feeds, with scheduled refresh patterns triggered by Power BI's built-in refresh engine or real-time streaming through ServiceNow's Scripted REST APIs. The primary configuration components live within ServiceNow's System Web Services module for OData endpoints and REST API configuration, while Power BI connects as an external consumer of ServiceNow data.
Prerequisites
- •ServiceNow Rome or later instance with admin privileges
- •Microsoft Power BI Pro or Premium license for scheduled refresh capabilities
- •ServiceNow Integration Hub Professional license if using official Power BI spoke
- •Web Service Access Control (ACL) configuration rights in ServiceNow
- •Power BI Desktop application installed for dashboard development
- •Basic Authentication or OAuth 2.0 credentials for ServiceNow API access
- •Understanding of ServiceNow table structures and relationships
Architecture Overview
The ServiceNow Power BI integration primarily uses ServiceNow's native OData REST API endpoints or custom Scripted REST APIs to expose data to Power BI's web connector. Authentication is established through Basic Authentication or OAuth 2.0, with credentials stored in Power BI Desktop and Power BI Service credential management, not within ServiceNow Connection & Credential Aliases since Power BI initiates the connection. Data flows uni-directionally from ServiceNow to Power BI through scheduled refresh operations configured in the Power BI Service, with Power BI making REST calls to ServiceNow endpoints on a defined schedule. A MID Server is not required since Power BI connects inbound to ServiceNow's publicly accessible REST endpoints, but network firewall rules may need adjustment to allow Power BI Service IP ranges. Rate limiting follows ServiceNow's standard REST API limits of 5,000 requests per hour per user, and the official Integration Hub Power BI spoke (when available) provides pre-built Actions for data export and refresh token management.
Sourdough: ServiceNow Monitoring and Analytics
A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.
Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.
Implementation Steps
Configure ServiceNow OData REST API endpoints for Power BI access
Navigate to System Web Services > REST API and verify that the OData REST API plugin (com.glideapp.rest) is activated on your instance. Go to System Web Services > REST API Explorer to identify the tables you want to expose to Power BI, such as incident, change_request, or cmdb_ci. Create or modify Access Control Lists (ACLs) for the target tables to ensure your integration user has read access to the necessary fields. Test the OData endpoint by accessing https://your-instance.service-now.com/api/now/table/incident in a browser with your credentials to verify the JSON response returns expected data.
Create ServiceNow integration user account with appropriate roles
Navigate to User Administration > Users and create a new user account dedicated to Power BI integration to follow security best practices. Assign the 'web_service_admin' and 'rest_service' roles to this user, along with specific table read permissions for your target tables. If using OAuth, navigate to System OAuth > Application Registry and create a new OAuth application with appropriate redirect URLs for Power BI. Configure the integration user's password to never expire by setting the 'Password never expires' field to true, and document these credentials securely for use in Power BI configuration.
// Script to create integration user via script
var gr = new GlideRecord('sys_user');
gr.initialize();
gr.user_name = 'powerbi_integration';
gr.first_name = 'Power BI';
gr.last_name = 'Integration';
gr.email = 'powerbi@company.com';
gr.active = true;
gr.password_needs_reset = false;
var userSysId = gr.insert();
// Add roles
var roleGr = new GlideRecord('sys_user_has_role');
roleGr.initialize();
roleGr.user = userSysId;
roleGr.role = 'web_service_admin';
roleGr.insert();Install and configure Power BI Desktop with ServiceNow web connector
Download and install Power BI Desktop from Microsoft's official website, then launch the application and click 'Get Data' from the Home ribbon. Select 'Web' connector from the list of available data sources, and enter your ServiceNow OData URL in the format https://your-instance.service-now.com/api/now/table/incident?sysparm_limit=1000. When prompted for authentication, select 'Basic' and enter the integration user credentials you created in the previous step. Power BI will connect to ServiceNow and display a preview of your data - verify that all required fields are visible and data types are correctly identified before proceeding to the Power Query Editor.
Transform and model ServiceNow data in Power BI Power Query Editor
In the Power Query Editor, examine the imported ServiceNow data and expand any nested JSON objects by clicking the expand icon next to columns containing 'Record' data type. Remove unnecessary columns like 'sys_updated_on', 'sys_created_on' system fields that aren't needed for your dashboard to improve performance. Transform date/time fields from ServiceNow's format to Power BI date types by selecting the column and choosing 'Data Type > Date/Time' from the Transform ribbon. Create calculated columns for business logic such as aging calculations, priority scoring, or status groupings that will be used in your visualizations.
Build Power BI dashboard with ServiceNow data visualizations
Click 'Close & Apply' in Power Query Editor to load the transformed data into Power BI's data model, then begin creating visualizations by dragging fields from the Fields pane to the report canvas. Create key performance indicator (KPI) cards showing metrics like total open incidents, average resolution time, and change success rate using the Card visualization type. Build trend charts using Line Chart visualizations to show incident creation and closure trends over time, and use filters to allow users to slice data by assignment group, priority, or category. Configure drill-through pages to allow users to click on summary metrics and see detailed record lists with relevant ServiceNow fields.
Publish Power BI report to Power BI Service and configure data refresh
Click 'Publish' in Power BI Desktop and select your target Power BI workspace in the Power BI Service to upload your completed dashboard. Once published, navigate to the Power BI Service web interface and locate your dataset in the workspace, then click on the dataset settings gear icon. Configure scheduled refresh by clicking 'Schedule refresh' and setting your desired frequency (daily, weekly, or multiple times per day depending on your Power BI license). Enter your ServiceNow credentials again in the Data source credentials section, as these need to be stored in the Power BI Service separately from your Desktop credentials.
Embed Power BI reports in ServiceNow Service Portal
Navigate to Service Portal > Widgets in your ServiceNow instance and create a new widget with the name 'Power BI Dashboard Widget'. In the widget's HTML template, create an iframe element that will host your Power BI report using the embed URL from Power BI Service's 'Embed report' option. Configure the widget's Client Script to handle authentication tokens if using secure embed options, or use public embed URLs for non-sensitive dashboards. Add the widget to a Service Portal page by editing the desired portal page and dragging the Power BI widget to the appropriate container, then test the embedded dashboard to ensure it displays correctly within the ServiceNow portal interface.
// Widget Client Script for Power BI embed
function($scope, $window) {
var c = this;
c.powerBIUrl = 'https://app.powerbi.com/reportEmbed?reportId=your-report-id&autoAuth=true&ctid=your-tenant-id';
c.refreshReport = function() {
var iframe = document.getElementById('powerbi-frame');
iframe.src = iframe.src;
};
}Test integration end-to-end and configure monitoring
Create test records in ServiceNow tables that your Power BI dashboard consumes, then manually trigger a dataset refresh in Power BI Service to verify that new data appears in your dashboard within the expected timeframe. Test the embedded dashboard in Service Portal by accessing it through different user accounts to ensure proper security and functionality. Set up monitoring by configuring Power BI refresh failure notifications in the Power BI Service dataset settings, and create a ServiceNow scheduled job to log API usage metrics by querying sys_rest_message or creating custom logging in your OData endpoints. Document the refresh schedule, data latency expectations, and troubleshooting procedures for your team to ensure ongoing maintenance and support of the integration.
// Scheduled Script to monitor API usage
var gr = new GlideRecord('sys_rest_message');
gr.addQuery('name', 'CONTAINS', 'powerbi');
gr.addQuery('sys_created_on', '>', gs.daysAgoEnd(1));
gr.query();
var apiCalls = 0;
while (gr.next()) {
apiCalls++;
}
gs.info('Power BI API calls in last 24 hours: ' + apiCalls);Common Use Cases
Executive IT Operations Dashboard
Creates a real-time executive dashboard showing key IT metrics like incident volume trends, mean time to resolution (MTTR), change success rates, and SLA compliance percentages. The dashboard pulls data from incident, change_request, and task tables in ServiceNow, automatically refreshing every few hours to provide current operational insights. Business value includes improved visibility into IT performance for executives who don't regularly access ServiceNow, enabling data-driven decisions about resource allocation and process improvements.
Asset Management and Compliance Reporting
Develops comprehensive asset utilization and compliance reports by connecting Power BI to ServiceNow's CMDB tables like cmdb_ci_computer, cmdb_ci_server, and alm_asset. The integration enables tracking of hardware refresh cycles, software license compliance, and asset lifecycle management with visual charts showing aging equipment and upcoming maintenance schedules. This use case delivers significant value for IT asset managers and procurement teams who need to forecast hardware needs and maintain audit compliance through automated reporting.
Service Desk Performance Analytics
Builds detailed service desk performance analytics by combining data from incident, problem, and sys_user_group tables to create team performance scorecards and workload distribution reports. The dashboard shows metrics like tickets per agent, first-call resolution rates, customer satisfaction scores, and queue depth analysis with drill-down capabilities to individual agent performance. This provides service desk managers with actionable insights to optimize staffing, identify training needs, and improve overall service delivery efficiency.
Change Management Risk Assessment
Creates sophisticated change management risk dashboards by analyzing historical change_request data to identify patterns in change failures, emergency changes, and rollback frequencies across different application portfolios. The Power BI reports combine change data with incident correlation to show the impact of changes on system stability, helping change advisory board (CAB) members make more informed approval decisions. This use case significantly reduces change-related outages by providing data-driven risk scoring for proposed changes.
Customer Service Portal Metrics
Develops customer-facing service metrics dashboards that can be embedded in external portals or shared with business stakeholders, showing service availability, ticket resolution trends, and performance against published SLAs. The integration pulls data from incident, service_offering, and cmdb_ci_service tables to create service-specific performance reports that demonstrate IT value delivery to business units. This creates transparency in IT service delivery and helps build trust between IT and business stakeholders through clear performance visibility.
Troubleshooting
Power BI refresh fails with 401 Unauthorized error
First, verify that the integration user account is still active and the password hasn't expired by logging into ServiceNow with those credentials. Check the user's role assignments to ensure they still have 'web_service_admin' and appropriate table read permissions, as role changes can break API access. Navigate to Power BI Service dataset settings and re-enter the ServiceNow credentials in the data source credentials section, as these can become invalid after password changes or when transitioning between Power BI workspaces. Test the ServiceNow OData endpoint directly in a browser using the same credentials to isolate whether the issue is with ServiceNow authentication or Power BI configuration.
Dashboard shows no data or empty tables after refresh
Check if your OData query includes filters that might be excluding all records, such as date range filters that are too restrictive or active=true filters on tables where records might be inactive. Navigate to System Web Services > REST API Explorer in ServiceNow and test your exact query URL to verify it returns data when called directly. Review any Access Control Lists (ACLs) that might have changed on your target tables, preventing the integration user from reading specific records or fields. Examine the Power BI refresh history in the dataset settings to see if the refresh completed successfully but returned zero records, indicating a data filtering issue rather than a connection problem.
Power BI data refresh times out or fails intermittently
Reduce the dataset size by implementing sysparm_limit parameters in your OData queries to retrieve data in smaller chunks, or add date filters to only pull recent records rather than entire table contents. Check ServiceNow's REST API rate limits by monitoring the sys_rest_message table for rate limit errors, and consider spreading refresh operations across different times if multiple dashboards are hitting the same ServiceNow instance. Configure Power BI Premium capacity if available, as this provides longer refresh timeouts and better performance for large datasets. Implement incremental data refresh in Power BI by setting up date-based partitioning to only refresh recent data changes rather than the entire dataset each time.
Embedded Power BI reports in Service Portal display authentication errors
Verify that the Power BI embed URL is configured with the correct authentication method - use 'autoAuth=true' parameter for organizational accounts or implement proper token-based authentication for secure embedding. Check that users accessing the Service Portal page have appropriate Power BI licenses and permissions to view the embedded report, as unlicensed users will receive authentication errors even with proper embed configuration. Review the Service Portal widget's Client Script for any JavaScript errors that might interfere with the iframe loading, and ensure the Power BI service URLs are not blocked by corporate firewalls or proxy servers. Configure Content Security Policy (CSP) settings in ServiceNow if necessary to allow embedding external Power BI content within the Service Portal iframe.
ServiceNow reference fields appear as sys_ids instead of display values in Power BI
Modify your OData query to include the 'sysparm_display_value=all' parameter, which will return both the sys_id and display value for reference fields, allowing Power BI to show meaningful names instead of GUIDs. In Power Query Editor, look for columns that contain both 'value' and 'display_value' properties and expand these nested objects to access the human-readable display values. For complex reference chains, consider creating custom Scripted REST APIs in ServiceNow that pre-join related tables and return flattened data structures optimized for Power BI consumption. Use Power BI's data transformation capabilities to create lookup tables for common reference values like priority, state, and category, then establish relationships in the Power BI data model for proper visualization.
Large ServiceNow datasets cause Power BI performance issues
Implement data partitioning by breaking large tables into multiple queries based on logical divisions like date ranges, assignment groups, or record states, then combine them in Power BI's data model for better refresh performance. Use ServiceNow's REST API filtering capabilities with sysparm_query parameters to pre-filter data at the source rather than importing everything and filtering in Power BI, reducing network transfer time and memory usage. Consider implementing a ServiceNow data warehouse approach using scheduled exports to intermediate tables that contain pre-aggregated or filtered data specifically for Power BI consumption. Enable Power BI Premium Per User or Premium capacity to access features like incremental refresh, larger dataset limits, and faster processing capabilities for handling substantial ServiceNow data volumes.
Pro Tips
- →Implement a ServiceNow business rule to automatically trigger Power BI refresh webhooks when critical data changes occur, providing near real-time dashboard updates without waiting for scheduled refresh cycles. Create a custom REST endpoint that accepts Power BI refresh triggers and use the Microsoft Power BI REST API to programmatically refresh specific datasets when ServiceNow records are modified.
- →Leverage ServiceNow's sysparm_fields parameter in OData queries to only retrieve necessary columns, significantly improving refresh performance and reducing API call overhead. This is especially important for tables with many columns like cmdb_ci or incident where you typically only need 10-15 fields for dashboard visualization.
- →Create a ServiceNow update set specifically for Power BI integration components including custom roles, ACLs, and Scripted REST APIs to ensure consistent deployment across development, test, and production instances. Document all Power BI-specific ServiceNow configurations to streamline troubleshooting and knowledge transfer to other team members.
- →Use Power BI's dataflow feature to create reusable data preparation logic that multiple dashboards can consume, centralizing ServiceNow data transformations and reducing redundant API calls to your ServiceNow instance. This approach also enables better change management when ServiceNow table structures evolve.
- →Implement custom logging in ServiceNow to track Power BI API usage patterns and identify opportunities for optimization, such as creating summary tables for frequently accessed aggregated data or implementing caching strategies for reference data that changes infrequently. Monitor the sys_rest_message table to understand API call volumes and timing patterns.
- →Configure Power BI row-level security (RLS) to automatically filter ServiceNow data based on user attributes like department or assignment group, ensuring users only see relevant data while maintaining a single shared dashboard. Map ServiceNow user roles to Power BI security roles for seamless access control integration.
Known Limitations
- —ServiceNow REST API rate limits restrict Power BI refresh operations to 5,000 API calls per hour per user, which can be problematic for large datasets or multiple concurrent dashboards refreshing simultaneously. Organizations with extensive ServiceNow data may need to implement data partitioning strategies or consider upgrading to ServiceNow Performance Analytics for better BI integration capabilities.
- —Power BI's maximum dataset size limitations (1GB for Power BI Pro, 10GB for Premium) can be quickly exceeded when importing large ServiceNow tables like audit logs, journal entries, or historical incident data spanning multiple years. Real-time streaming datasets are limited to 1 million rows per hour, which may not accommodate high-volume ServiceNow instances during peak activity periods.
- —The uni-directional nature of the integration means Power BI cannot write data back to ServiceNow, limiting use cases to reporting and analytics rather than operational workflows. Users cannot create or update ServiceNow records directly from Power BI dashboards, requiring separate integration approaches for bidirectional scenarios that need workflow capabilities.
- —ServiceNow's OData implementation has limited support for complex joins and aggregations, often requiring multiple API calls or data transformation in Power BI to achieve sophisticated reporting requirements. Complex ServiceNow table relationships may need to be flattened or pre-processed through custom Scripted REST APIs to optimize Power BI consumption.
- —Authentication token management can become complex in enterprise environments, especially when using OAuth 2.0 flows with Power BI Service's scheduled refresh capabilities. Token expiration and renewal processes may require manual intervention or custom automation to maintain uninterrupted dashboard refresh operations in production environments.
Frequently Asked Questions
Can Power BI connect to ServiceNow without exposing credentials in the Power BI Service?
Yes, you can use ServiceNow's OAuth 2.0 implementation with Power BI to avoid storing basic authentication credentials directly in Power BI Service. Configure an OAuth application in ServiceNow under System OAuth > Application Registry, then use the OAuth flow in Power BI's authentication options. For enhanced security, consider implementing Azure Active Directory integration with ServiceNow SSO, allowing Power BI to authenticate using organizational credentials. However, some form of credential storage is always required in Power BI Service for scheduled refresh operations to function properly.
How do I handle ServiceNow table relationships and reference fields in Power BI dashboards?
Use the sysparm_display_value=all parameter in your OData queries to retrieve both sys_ids and display values for reference fields, then expand these nested objects in Power Query Editor to access readable names. For complex relationships, create separate Power BI queries for lookup tables (like sys_user, sys_user_group, cmdb_ci) and establish relationships in Power BI's data model using the sys_id fields. Consider creating custom Scripted REST APIs in ServiceNow that pre-join frequently used tables and return flattened data structures optimized for Power BI visualization needs.
What's the best practice for handling large ServiceNow datasets that exceed Power BI size limits?
Implement incremental data loading by partitioning data based on date ranges using sysparm_query filters like 'sys_created_onBETWEENjavascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(0)' to only load recent records. Create aggregated summary tables in ServiceNow using scheduled jobs that pre-calculate metrics like monthly incident counts or average resolution times, then connect Power BI to these smaller summary tables instead of raw transactional data. For historical analysis needs, consider implementing a data archival strategy where older ServiceNow data is exported to Azure Data Lake or SQL Database, then use Power BI's composite model capabilities to combine current ServiceNow data with historical archives.
Can I use the Integration Hub Power BI spoke instead of direct REST API connections?
The Integration Hub Power BI spoke, when available in your ServiceNow version, provides pre-built Flow Designer actions for data export and authentication management, simplifying the integration setup process. The spoke typically includes actions like 'Export Table Data to Power BI' and 'Refresh Power BI Dataset' that handle authentication token management and error handling automatically. However, the spoke may have limitations in terms of data transformation flexibility compared to direct OData connections, so evaluate whether the spoke's capabilities meet your specific dashboard requirements. Check the ServiceNow Store for the latest Power BI spoke availability and feature set for your instance version.
How can I troubleshoot slow Power BI refresh times when connecting to ServiceNow?
Start by optimizing your ServiceNow queries using sysparm_fields to only retrieve necessary columns and sysparm_limit to control record count per request, then implement pagination for large datasets. Monitor ServiceNow performance using the Stats module to identify slow-performing queries and consider adding database indexes to frequently queried fields. In Power BI, enable query diagnostics in Power Query Editor to identify bottlenecks in data transformation steps, and consider using Power BI Premium features like incremental refresh and enhanced refresh parallelism. Network latency can also be a factor, so test refresh performance during different times of day and consider geographical proximity between your Power BI tenant and ServiceNow instance.
Is it possible to embed Power BI reports in ServiceNow Service Portal with single sign-on?
Yes, you can implement seamless SSO integration by configuring Azure Active Directory (AAD) integration with ServiceNow SAML SSO, ensuring users authenticated in ServiceNow can access embedded Power BI reports without additional login prompts. Use Power BI's 'Embed for your organization' option with the autoAuth=true parameter in your Service Portal widget iframe configuration to leverage organizational authentication. For more advanced scenarios, implement Power BI's JavaScript SDK in your Service Portal widget to programmatically handle authentication tokens and provide interactive embedded experiences. Ensure your Power BI licensing model supports embedded scenarios, as this typically requires Power BI Premium or Premium Per User licenses for external embedding capabilities.
What ServiceNow data should I avoid pulling into Power BI for performance and security reasons?
Avoid pulling large text fields like journal entries, work notes, or description fields that can significantly increase dataset size without providing visualization value - use summary metrics or word count calculations instead. Exclude sensitive fields like user passwords, API keys, or personally identifiable information (PII) that shouldn't be stored in Power BI datasets, and be cautious with attachment or knowledge base content that can consume substantial storage. System audit tables like sys_audit and sys_journal_field should be approached carefully due to their volume and rapid growth rate. Focus on pulling structured data fields that directly support your dashboard KPIs and use ServiceNow's ACL security to ensure the integration user only has access to appropriate fields and records.
Test Your Knowledge
Quick 3-question quiz — see how your ServiceNow skills stack up.
A list view on a table with millions of records is slow. Best fix?
Select an answer to continue