Integrations

ServiceNow Terraform Integration Guide

advancedBearer Token Authentication with Terraform Cloud API TokenTerraform

ServiceNow's Terraform integration enables organizations to bridge their change management processes with Infrastructure as Code (IaC) operations, creating governed workflows for infrastructure provisioning and management. This integration solves the critical business challenge of maintaining compliance and approval workflows while enabling DevOps teams to automate infrastructure deployment through Terraform Cloud or Terraform Enterprise. It's primarily used by IT operations teams, DevOps engineers, and cloud architects who need to maintain security and change control over infrastructure modifications. The integration supports bi-directional data flows where ServiceNow change requests can trigger Terraform plan and apply operations, while Terraform execution results, including plan outputs and run statuses, flow back into ServiceNow change records. This automation pattern is typically triggered from Change Request workflows and leverages the ServiceNow Integration Hub's Terraform Cloud spoke, residing primarily in the Change Management and IT Operations Management modules.

Prerequisites

  • ServiceNow San Diego release or later with Integration Hub Professional license
  • Terraform Cloud or Terraform Enterprise account with API access
  • ServiceNow Integration Hub Terraform Cloud spoke installed from the ServiceNow Store
  • Change Management plugin (com.snc.change_management) activated
  • IT Operations Management suite license for advanced workflow automation
  • MID Server deployed and operational for secure API communications
  • ServiceNow admin role and Terraform Cloud organization owner or team manage permissions

Architecture Overview

The ServiceNow Terraform integration leverages the official Integration Hub Terraform Cloud spoke, which provides pre-built actions for triggering runs, retrieving plan outputs, and managing workspace operations. Authentication is established using Terraform Cloud API tokens stored as Connection and Credential Alias records in ServiceNow, with the Connection Alias referencing the Terraform Cloud API endpoint and the Credential Alias securely storing the bearer token. Data flows bi-directionally with ServiceNow change requests triggering Terraform operations through the spoke's actions, while execution results are retrieved and posted back to change records via scheduled jobs or webhook responses. A MID Server is required for this integration to handle outbound HTTPS connections to Terraform Cloud APIs and to process the spoke's action executions securely within the customer's network boundary. The Terraform Cloud API has rate limits of 30 requests per second per organization, and the spoke includes built-in retry logic to handle temporary API throttling scenarios gracefully.

Sourdough
Chrome Extension

Sourdough: ServiceNow Monitoring and Analytics

A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.

Instance HealthGraphs & ChartsAPI HealthDeveloper ToolsQuick SearchInstance Switcher
Add to Chrome

Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.

Overview
Tasks
CMDB
API
Metrics
Monitor
Internals
Instance:sourdoughdev·Version:Yokohama
Instance StateONLINE
System StatusFully Operational
Session Timeout90 minutes
Logged-In Sessions2 (20 active)
Build Nameyokohama-12-18-2024_p1
IP Address10.159.128.43
Instance HealthHealth Score: 90%
🔥 5dSourdough (Chrome Plugin)Dark Mode

Implementation Steps

1

Install and configure the Terraform Cloud spoke from ServiceNow Store

Navigate to System Applications > All Available Applications > All and search for 'Terraform Cloud' to locate the official ServiceNow Integration Hub spoke. Click Install and wait for the installation to complete, then activate the spoke by navigating to System Applications > My Company Applications and finding the Terraform Cloud entry. Verify the spoke installation by checking that new actions are available under Process Automation > Flow Designer > Actions, looking for actions like 'Create Run', 'Get Run Details', and 'Get Plan Output'. Ensure your instance has sufficient Integration Hub action executions remaining in your license allocation, as Terraform operations consume multiple action executions per workflow.

2

Generate Terraform Cloud API token and create ServiceNow credential

Log into your Terraform Cloud account and navigate to User Settings > Tokens to generate an API token with appropriate permissions for your target organization and workspaces. Copy this token and navigate to Connections & Credentials > Credentials in ServiceNow, then click New to create a new credential record. Set the Name field to 'Terraform Cloud API Token', select 'API Key Credentials' as the Type, and paste your API token into the API key field. Configure the credential to use your designated MID Server for secure token storage and ensure the Active checkbox is selected before saving the record.

3

Create Connection Alias for Terraform Cloud API endpoint

Navigate to Connections & Credentials > Connection Aliases and create a new connection alias record with the Name 'Terraform Cloud API Connection'. Set the Connection URL to 'https://app.terraform.io/api/v2' for Terraform Cloud or your Terraform Enterprise URL followed by '/api/v2' for on-premises installations. In the Credential field, reference the API token credential created in the previous step, and ensure the connection alias is set to use the same MID Server configured for the credential. Test the connection by using the Test Connection button to verify that ServiceNow can successfully authenticate with the Terraform Cloud API using your token.

4

Configure workspace mapping table for change request automation

Create a custom table to map ServiceNow change categories or configuration items to specific Terraform Cloud workspaces by navigating to System Definition > Tables and clicking New. Name the table 'Terraform Workspace Mapping' with fields for Change Category, Configuration Item, Workspace ID, Organization Name, and Auto-approve settings. Populate this table with mappings between your ServiceNow change categories (like 'Infrastructure', 'Cloud Resources') and the corresponding Terraform Cloud workspace IDs that should be triggered. This mapping table will be referenced in your change request workflows to determine which Terraform workspace should execute when a change request is approved, enabling governance over which infrastructure components can be modified through different change types.

ServiceNow Script
var gr = new GlideRecord('u_terraform_workspace_mapping');
gr.initialize();
gr.u_change_category = 'Infrastructure';
gr.u_configuration_item = current.cmdb_ci.sys_id;
gr.u_workspace_id = 'ws-abc123def456';
gr.u_organization = 'my-terraform-org';
gr.u_auto_approve = false;
gr.insert();
5

Build Flow Designer workflow for triggering Terraform runs from change requests

Navigate to Process Automation > Flow Designer and create a new flow triggered by 'Record Updated' on the Change Request table with conditions checking for state changes to 'Implement'. Add a 'Look up Record' action to query your workspace mapping table using the change request's category or affected CI to determine the target Terraform workspace. Insert the Terraform Cloud spoke's 'Create Run' action, configuring it to use your connection alias and passing the workspace ID from the lookup, along with any required Terraform variables mapped from change request fields. Add error handling using conditional logic to update the change request with failure details if the Terraform run creation fails, and configure a 'Wait for Condition' action to monitor the run status before proceeding with change request state updates.

6

Implement Terraform plan output retrieval and change record updates

Extend your Flow Designer workflow by adding the Terraform Cloud spoke's 'Get Plan Output' action after successfully creating a run, using the run ID returned from the previous step. Configure a 'Create Record' action to insert the plan output into a custom 'Terraform Plan Results' table linked to your change request, preserving the full plan details for audit and approval purposes. Add logic to parse the plan output and update the change request's work notes with a summary of proposed changes, including resource additions, modifications, and deletions. Include conditional branching to automatically move low-risk changes (like scaling operations) to implementation while requiring additional approval for high-risk changes (like resource deletions or security group modifications) based on keywords in the plan output.

ServiceNow Script
var planData = action.getResult('terraform_plan_output');
var workNotes = 'Terraform Plan Summary:\n';
if (planData.resource_changes) {
    workNotes += 'Resources to add: ' + planData.resource_changes.filter(r => r.change.actions.includes('create')).length + '\n';
    workNotes += 'Resources to modify: ' + planData.resource_changes.filter(r => r.change.actions.includes('update')).length + '\n';
    workNotes += 'Resources to delete: ' + planData.resource_changes.filter(r => r.change.actions.includes('delete')).length;
}
current.work_notes = workNotes;
current.update();
7

Configure automated Terraform apply execution based on change approval

Create a second Flow Designer workflow triggered when change requests move to 'Implement' state with Terraform-related categories, using the Terraform Cloud spoke's 'Apply Run' action to execute approved infrastructure changes. Configure this workflow to first verify that a Terraform run exists and is in a 'planned' state before attempting to apply, including safety checks to prevent applying runs that are older than a configured threshold (like 24 hours). Add the 'Get Run Details' action to monitor apply progress and update the change request's state and work notes with real-time status information throughout the Terraform execution. Implement error handling to automatically move change requests to 'Review' state if Terraform apply operations fail, including the specific error messages from Terraform in the change request for troubleshooting.

ServiceNow Script
var runDetails = action.getResult('terraform_run_details');
if (runDetails.data.attributes.status == 'applied') {
    current.state = 3; // Implemented
    current.work_notes = 'Terraform apply completed successfully. Resources provisioned: ' + runDetails.data.attributes['resource-additions'];
} else if (runDetails.data.attributes.status == 'errored') {
    current.state = -4; // Review
    current.work_notes = 'Terraform apply failed: ' + runDetails.data.attributes['status-message'];
}
current.update();
8

Set up monitoring and governance reporting for Terraform operations

Create a scheduled job to regularly sync Terraform Cloud workspace states with ServiceNow by navigating to System Definition > Scheduled Jobs and configuring a script that queries active workspaces and updates corresponding CMDB records. Build Performance Analytics widgets to track Terraform operation success rates, execution times, and change request correlation by creating datasets that join change requests with Terraform run results. Configure Event Management rules to create incidents when Terraform operations fail outside of normal change request workflows, ensuring that infrastructure drift or unplanned changes are captured and addressed. Set up notification schemes to alert infrastructure teams when high-risk Terraform plans are generated, requiring additional review beyond standard change approval processes.

ServiceNow Script
var terraformRuns = new GlideRecord('u_terraform_runs');
terraformRuns.addQuery('state', 'pending');
terraformRuns.addQuery('sys_created_on', '>', gs.hoursAgoStart(1));
terraformRuns.query();
while (terraformRuns.next()) {
    var rm = new RESTMessageV2();
    rm.setEndpoint('https://app.terraform.io/api/v2/runs/' + terraformRuns.run_id);
    rm.setHttpMethod('GET');
    rm.setRequestHeader('Authorization', 'Bearer ' + getCredentialValue('terraform_api_token'));
    var response = rm.execute();
    var runData = JSON.parse(response.getBody());
    terraformRuns.state = runData.data.attributes.status;
    terraformRuns.update();
}

Common Use Cases

Automated AWS infrastructure provisioning through change requests

Change requests for new application environments trigger Terraform workspaces that provision AWS EC2 instances, RDS databases, and VPC configurations based on standardized templates. The change request captures business justification and technical requirements, which are passed as Terraform variables to ensure consistent infrastructure deployment. Terraform plan outputs are automatically attached to the change request for review by cloud architects before approval. This use case delivers significant value by reducing manual infrastructure provisioning time from days to hours while maintaining complete audit trails and approval workflows required for enterprise compliance.

Azure resource scaling based on ServiceNow demand forecasting

Performance Analytics dashboards in ServiceNow identify capacity trends and automatically generate change requests for infrastructure scaling when thresholds are exceeded. These change requests trigger Terraform workspaces that modify Azure Virtual Machine Scale Sets, App Service plans, or Azure SQL Database compute tiers based on predicted demand patterns. The integration includes cost impact analysis by parsing Terraform plan outputs and correlating resource changes with Azure pricing APIs to populate financial approval workflows. This proactive scaling approach prevents service degradation while optimizing cloud costs through data-driven infrastructure adjustments.

Compliance-driven security group management

Security compliance scans in ServiceNow Governance, Risk, and Compliance (GRC) identify infrastructure configuration drift and generate change requests to remediate security group rules, firewall policies, and access controls. Terraform workspaces contain approved security baselines and are triggered to restore compliant configurations when violations are detected. Each remediation includes detailed change documentation showing exactly which security rules were modified, with Terraform state comparisons attached to change records for audit purposes. This use case ensures continuous compliance monitoring with automated remediation capabilities while maintaining change management oversight for all security modifications.

Multi-cloud disaster recovery orchestration

Major incident response playbooks in ServiceNow include automated failover procedures that trigger Terraform workspaces to provision disaster recovery infrastructure across multiple cloud providers. Change requests are auto-generated during P1 incidents with pre-approved emergency change status, allowing Terraform to immediately provision backup resources in alternate regions or cloud providers. The integration includes real-time status updates showing infrastructure provisioning progress and estimated recovery time objectives (RTO) based on Terraform execution times. This approach significantly reduces disaster recovery implementation time while maintaining change tracking and cost visibility during emergency scenarios.

Development environment lifecycle management

ServiceNow Service Catalog requests for development environments automatically create change requests that trigger Terraform workspaces containing ephemeral infrastructure templates with automatic expiration dates. Developers can request environments with specific configurations, database versions, and feature flags through catalog items that translate into Terraform variables for consistent environment provisioning. Scheduled jobs monitor environment usage and automatically trigger Terraform destroy operations for unused environments, with cost tracking and chargeback reporting integrated into ServiceNow Financial Management. This use case optimizes development productivity while controlling cloud sprawl and providing accurate cost allocation across development teams.

Troubleshooting

Terraform Cloud spoke actions failing with '401 Unauthorized' errors in Flow Designer execution

First, navigate to MID Server > Servers and verify that your MID Server is Up and has processed recent ECC Queue entries without errors. Check the Connection Alias by going to Connections & Credentials > Connection Aliases and testing the connection to ensure the API token is valid and hasn't expired. Review the Terraform Cloud organization permissions by logging into Terraform Cloud and confirming that the API token has appropriate workspace access and hasn't been revoked. If the token is valid, examine the Flow Designer execution details to ensure the workspace ID format matches Terraform Cloud's expected format (ws-xxxxxxxxx) rather than workspace names.

Terraform plan output not appearing in ServiceNow change request work notes or attachments

Check the Flow Designer execution history by navigating to Process Automation > Flow Designer > Executions and reviewing the specific flow run to identify which step failed to retrieve plan data. Verify that the 'Get Plan Output' action is configured with the correct run ID from the previous 'Create Run' action by examining the action input variables in the execution log. Test the Terraform Cloud API directly using a REST client to confirm that the run ID exists and has completed the planning phase before attempting to retrieve output. If the run is still in planning state, add a 'Wait for Condition' action that polls the run status until it reaches 'planned' state before attempting to retrieve plan output.

MID Server showing connection timeout errors when communicating with Terraform Enterprise

Review the MID Server configuration to ensure that proxy settings are correctly configured if your Terraform Enterprise instance is behind a corporate firewall or proxy server. Navigate to MID Server > Properties and verify that the proxy host, port, and authentication settings match your network requirements for reaching Terraform Enterprise. Check the MID Server logs for SSL certificate validation errors and consider adding Terraform Enterprise's SSL certificate to the MID Server's trusted certificate store if using self-signed certificates. Confirm that the MID Server can resolve the Terraform Enterprise hostname by testing DNS resolution and network connectivity from the MID Server host machine.

Flow Designer workflows creating duplicate Terraform runs for the same change request

Examine the Flow Designer trigger conditions to ensure they include proper filtering to prevent multiple executions when change requests are updated multiple times during the approval process. Add a condition to check if a Terraform run has already been created for the change request by querying your custom Terraform runs table before executing the 'Create Run' action. Implement a semaphore pattern using a custom field on the change request table to track Terraform integration status (not_started, in_progress, completed) and only trigger new runs when the status is 'not_started'. Review the change request workflow to identify which state transitions should actually trigger Terraform operations rather than responding to all change request updates.

Terraform apply operations succeeding but change requests not updating to 'Implemented' status

Check the Flow Designer workflow that monitors Terraform run completion to ensure it includes proper polling logic with the 'Get Run Details' action and appropriate wait conditions between status checks. Verify that the workflow has permissions to update change request records by confirming that the integration user context has the necessary roles (change_manager or itil) to modify change request state fields. Review the conditional logic that determines when to update change request status, ensuring it correctly identifies 'applied' status from Terraform Cloud API responses rather than intermediate states like 'applying' or 'planned'. Add logging to the workflow using the 'Log Message' action to track the exact Terraform run status values being received and compare them with expected success conditions.

Large Terraform plan outputs causing Flow Designer action timeouts or memory errors

Implement plan output filtering in your Flow Designer workflow by using the Terraform Cloud API's plan output endpoint with specific resource type filters to retrieve only relevant changes rather than complete plan details. Configure the 'Get Plan Output' action to use pagination if available, or split large plan retrievals into multiple smaller API calls focused on specific resource categories. Consider storing full plan outputs in ServiceNow attachments rather than directly in change request fields, using the 'Create Attachment' action to handle large text content more efficiently. Optimize your Terraform configurations to reduce plan size by breaking large workspaces into smaller, more focused workspaces that align with ServiceNow change categories and reduce the amount of data processed in each integration workflow.

Pro Tips

  • Configure Terraform workspace naming conventions that include ServiceNow change request numbers to create automatic traceability between infrastructure changes and change records, enabling powerful audit reporting and compliance tracking. Use Terraform Cloud's workspace tags to categorize environments and automatically apply different approval workflows based on production versus non-production infrastructure changes.
  • Implement custom Business Rules on the Change Request table to automatically populate Terraform variable values from CMDB attributes, enabling dynamic infrastructure provisioning based on configuration item relationships and dependencies. This approach ensures consistency between ServiceNow's configuration management database and actual infrastructure deployments while reducing manual data entry errors.
  • Leverage ServiceNow's Notification scheme to create Slack or Teams notifications when Terraform plans show high-risk changes like resource deletions or security group modifications, providing real-time awareness beyond standard change approval workflows. Include plan cost estimates in these notifications by integrating with cloud provider pricing APIs to enable better financial decision-making during the approval process.
  • Set up Performance Analytics datasets that correlate Terraform execution times with change request complexity metrics to identify optimization opportunities and predict infrastructure provisioning timelines. Use this data to automatically adjust change request implementation schedules and provide accurate delivery estimates to business stakeholders requesting infrastructure changes.
  • Create a dedicated ServiceNow Application Scope for your Terraform integration components to ensure proper version control and deployment practices when moving customizations between instances. This approach also enables easier maintenance of custom tables, workflows, and business rules while preserving integration functionality during ServiceNow upgrades.
  • Implement Terraform state file monitoring by creating scheduled jobs that compare ServiceNow CMDB records with actual Terraform state files to identify configuration drift and automatically generate change requests for remediation. This proactive approach ensures that infrastructure modifications made outside of ServiceNow workflows are captured and properly documented in your change management system.

Known Limitations

  • The Terraform Cloud API has rate limits of 30 requests per second per organization, which can impact high-volume change request processing and may require implementing request queuing or throttling mechanisms in your Flow Designer workflows. Large organizations with multiple concurrent infrastructure changes may need to implement request batching or staggered execution patterns to avoid API throttling errors.
  • Terraform plan outputs for complex infrastructure can exceed ServiceNow's field size limits (4000 characters for string fields, 65535 for text fields), requiring custom handling through attachments or external storage solutions when dealing with large-scale infrastructure deployments. This limitation particularly affects organizations with extensive AWS or Azure resource deployments that generate verbose plan outputs.
  • The Integration Hub Terraform Cloud spoke does not support Terraform Enterprise versions prior to v202006-1, limiting organizations using older on-premises Terraform installations from leveraging the pre-built integration capabilities. These environments require custom REST message implementations or upgrades to supported Terraform Enterprise versions to achieve full integration functionality.
  • ServiceNow's Flow Designer has a maximum execution time of 10 minutes per flow, which can be insufficient for complex Terraform apply operations that provision large infrastructure deployments or perform extensive resource modifications. Long-running Terraform operations require asynchronous monitoring patterns with scheduled jobs or webhook implementations to track completion status.
  • The spoke's authentication mechanism only supports Terraform Cloud API tokens and does not include support for more advanced authentication patterns like SAML or OIDC, which may be required for enterprise security compliance in organizations with strict identity management requirements. Custom authentication implementations may be necessary for environments requiring advanced identity integration patterns.

Frequently Asked Questions

Can the Terraform integration handle Terraform workspaces that require manual approval steps in Terraform Cloud?

Yes, the integration can accommodate Terraform Cloud workspaces configured with manual approval requirements by implementing polling workflows that monitor run status and wait for external approval completion. You'll need to configure Flow Designer workflows with 'Wait for Condition' actions that periodically check run status using the 'Get Run Details' action until the run progresses from 'planned' to 'confirmed' status. The ServiceNow change request can remain in 'Implement' status while waiting for Terraform Cloud approval, with work notes updated to reflect the pending approval status. Consider implementing notification workflows that alert Terraform Cloud users when ServiceNow change requests are waiting for infrastructure approval to streamline the end-to-end process.

How can I implement cost controls and budget approvals for Terraform infrastructure changes?

Integrate cost estimation into your change approval process by parsing Terraform plan outputs for resource types and quantities, then calling cloud provider pricing APIs to calculate estimated monthly costs before change implementation. Create custom approval workflows in ServiceNow that route high-cost changes to financial approvers based on configurable thresholds, and populate change request fields with cost impact data for visibility during approval reviews. The Integration Hub includes pre-built actions for AWS and Azure pricing APIs that can be combined with Terraform plan data to provide accurate cost projections. Consider implementing budget tracking by creating custom tables that accumulate Terraform-driven infrastructure costs against department or project budgets, with automated notifications when approaching budget limits.

What happens if a Terraform apply operation fails after a ServiceNow change request has been approved?

Failed Terraform apply operations should automatically trigger rollback procedures implemented in your Flow Designer workflows, including updating the change request to 'Review' status with detailed error information from the Terraform execution logs. Configure error handling actions that capture specific failure reasons from the Terraform Cloud API response and create follow-up tasks or incidents for infrastructure team remediation. Implement automated rollback workflows where possible by maintaining Terraform state snapshots or creating destroy runs for partially completed infrastructure changes, depending on the failure scenario and resource dependencies. The change request work notes should include detailed failure analysis and remediation steps, with automatic assignment to designated infrastructure support groups for resolution.

Can I use this integration with multiple Terraform Cloud organizations or Terraform Enterprise instances?

Yes, the integration supports multiple Terraform environments by creating separate Connection Alias and Credential records for each Terraform Cloud organization or Enterprise instance you need to connect with. Configure your workspace mapping table to include organization identifiers, and modify your Flow Designer workflows to dynamically select the appropriate connection alias based on the target infrastructure environment specified in the change request. Each organization requires its own API token and connection configuration, but the same spoke actions can be used across multiple connections by passing different connection alias references as action inputs. This approach enables centralized change management across distributed Terraform infrastructure while maintaining proper security isolation between different cloud environments or business units.

How do I handle Terraform workspace dependencies and execution ordering in ServiceNow workflows?

Implement workspace dependency management by creating a custom dependency mapping table that defines prerequisite relationships between Terraform workspaces and configure Flow Designer workflows with conditional logic that checks dependency status before triggering downstream runs. Use the Terraform Cloud API's workspace run queue to sequence dependent operations by monitoring run completion status and triggering dependent workspaces only after prerequisite infrastructure is successfully provisioned. Consider implementing a custom orchestration table that tracks multi-workspace deployment progress and provides visibility into complex infrastructure provisioning sequences from a single ServiceNow change request. For complex dependency chains, create parent change requests that spawn child changes for each workspace, enabling parallel execution of independent infrastructure components while enforcing sequencing for dependent resources.

What ServiceNow roles and permissions are required for users to interact with Terraform integrations?

Users need the 'itil' role to create and modify change requests that trigger Terraform operations, plus 'flow_operator' role if they need to manually execute or troubleshoot Flow Designer workflows related to infrastructure provisioning. Infrastructure administrators require 'admin' or 'flow_designer' roles to configure and maintain the integration workflows, along with 'credential_admin' to manage Terraform API tokens and connection aliases securely. Consider creating a custom 'terraform_operator' role that combines necessary permissions for managing infrastructure change requests without granting broader administrative access to ServiceNow platform components. The integration user context (typically the MID Server service account) requires 'integration_hub_action_invoker' and 'rest_api_explorer' roles to execute spoke actions and make outbound API calls to Terraform Cloud or Enterprise instances.

How can I implement Infrastructure as Code governance and policy enforcement through ServiceNow?

Implement IaC governance by creating ServiceNow Policy Management rules that automatically analyze Terraform plan outputs for compliance violations such as unapproved resource types, missing tags, or non-compliant configurations before allowing change request implementation. Configure custom approval workflows that route infrastructure changes containing specific resource types (like public S3 buckets or unrestricted security groups) to security teams for additional review regardless of standard change approval status. Use ServiceNow's Risk Assessment capabilities to automatically score infrastructure changes based on factors like resource count, cost impact, and security implications derived from Terraform plan analysis. Create audit dashboards that track infrastructure provisioning patterns, policy compliance rates, and governance exception handling to provide visibility into IaC operations across your organization and identify areas for policy improvement or automation enhancement.

Test Your Knowledge

Quick 3-question quiz — see how your ServiceNow skills stack up.

Question 1 of 3Performance

A list view on a table with millions of records is slow. Best fix?

Select an answer to continue