See how TV4 migrated 1,000 workspaces and 50,000 resources and Ably eliminated run queue bottlenecks by switching away from TFC.
The landscape of Terraform infrastructure automation has shifted dramatically in recent years. With the December 2025 announcement that HashiCorp's legacy free tier will reach end-of-life on March 31, 2026, along with ongoing feature restrictions and pricing changes, many teams are re-evaluating their infrastructure automation strategies. This comprehensive guide walks you through the complete migration process, from understanding your motivations to post-migration validation.
Whether you're forced to migrate due to HCP Terraform pricing constraints, seeking greater control over your infrastructure automation, or exploring more cost-effective alternatives, this guide provides everything you need to plan and execute a successful migration.
Part 1: Why Migrate Off Terraform Cloud/Enterprise?
HCP Terraform Changes and Free Tier Discontinuation
On December 15, 2025, HashiCorp announced the end-of-life for the legacy HCP Terraform Free plan, effective March 31, 2026. This was the third major change in a pattern of restrictions that accelerated after IBM's acquisition of HashiCorp closed in late 2024:
Key Timeline:
June 2023: Resources Under Management (RUM) pricing introduced; Free tier expanded to 500 resources
August 2023: Terraform license shifts to Business Source License (BSL); OpenTofu fork announced
April 2024: IBM announces $6.4 billion acquisition of HashiCorp
Late 2024: Acquisition closes; HashiCorp becomes IBM Software division
January 2025: terraform import command restricted to Business tier; state command limitations introduced
December 10, 2025: CDKTF deprecation announced
December 15, 2025: Free tier EOL announced via email
Why Migrate: Common Drivers
Cost Concerns
The Resources Under Management (RUM) pricing model charges per resource per hour, creating significant and often unpredictable operational expenses:
Managed Resources
Monthly Cost (Standard)
Annual Cost
1,000
~$350
~$4,200
5,000
~$2,450
~$29,400
10,000
~$10,200
~$122,400
Consider that every security group rule, IAM policy, and S3 lifecycle configuration counts as a resource. Real-world resource counts are typically 30-50% higher than initially expected.
Workflow Rigidity and Limitations
Lack of Native Dependency Workflows: Complex dependency management between workspaces requires external tooling
Limited Control Over Runner Phases: Restricted ability to inject custom logic at specific Terraform run lifecycle points
Run Task Limitations: Pricing tier restrictions limit comprehensive automation efforts
Feature Tier Gating: Specific capabilities locked behind higher-priced tiers
Desire for Greater Control
Vendor Lock-in Concerns: Long-term reliance on a single vendor's ecosystem
Customization Constraints: Prescriptive platform limits tailoring to internal standards
Business Source License Uncertainty: BSL concerns prompt consideration of fully open-source alternatives like OpenTofu
Specific Business Requirements
Integration Challenges: Seamless integration with evolving security and monitoring tools
Scalability Bottlenecks: Performance limits in high-demand scenarios
Compliance Requirements: Stringent governance requirements difficult to implement within platform constraints
Part 2: Planning Your Migration
Pre-Migration Assessment
Before embarking on migration, conduct a thorough audit of your current TFC/TFE setup:
Inventory Existing Infrastructure
Identify All Workspaces: Compile a comprehensive list including:
Purpose and environment (e.g., networking-prod, app-staging-eu)
Primary owners or teams responsible
Document VCS Repositories: For each workspace linked to VCS:
Specific repository URL
Branch(es) used for deployments
Working directory within repository (if non-root)
Record Terraform Versions: Document version discrepancies that impact migration
Map Variables and Variable Sets: Document all Terraform and environment variables with scope and sensitivity
Identify Run Triggers and Notifications: Note how runs are triggered and configured notifications
State File Audit and Backup
This is the most critical preparatory step. State files are your source of truth.
Backup Methods:
TFC/TFE API: Script downloading state file versions
terraform state pull: Individual workspaces using terraform state pull > workspace_name.tfstate
Secure Storage: Store backups in protected S3 buckets with versioning, artifact repositories, or equivalent
Additional Considerations:
Verify deployed infrastructure aligns with state (run terraform plan to check drift)
Understand state file size and complexity
Resolve significant drift before migration
Part 3: Core Migration Steps
Step 1: Final State Backup and Freeze Changes
Perform one final backup of each workspace state file
Implement temporary freeze on infrastructure changes for affected workspaces
Communicate freeze clearly to relevant teams to minimize state drift
Step 2: Prepare Your New Backend
Choose and set up your target backend:
AWS S3:
Create S3 bucket with versioning enabled
Enable server-side encryption
Create DynamoDB table for state locking
Configure appropriate IAM permissions
Azure Blob Storage:
Create Azure Storage Account with Blob Container
Enable versioning and configure access controls
Azure Blob Storage provides native state locking
Google Cloud Storage (GCS):
Create GCS bucket with versioning enabled
Configure encryption and native locking
Step 3: Update Terraform Backend Configuration
Modify your Terraform configuration to point to the new backend.
# Navigate to Terraform configuration directorycd /path/to/terraform# Initialize new backendterraform init# If automatic migration is offered, review carefully and confirm# If manual control preferred (recommended for critical workloads):terraform init -migrate-state# Push backed-up state to new backendterraform state push downloaded_workspace.tfstate
Verification:
# Run plan to verify successful migrationterraform plan# Should show "No changes" or only intentional changes# Any unexpected destructions indicate migration issues
Step 5: Manage Variables and Environment Configuration
Variables previously in TFC/TFE UI now require new management:
Start Planning Now: With March 31, 2026 deadline for free tier users, begin assessment immediately
Run Pilots: Test migration with non-critical workspaces first
Document Everything: Keep detailed records of current setup for smooth transition
Involve Your Team: Get buy-in from platform engineers and application teams early
Plan for Iteration: Your initial choice isn't permanent; evaluate and adjust as needed
The Terraform ecosystem continues to evolve. By choosing a platform aligned with your team's strengths and your organization's needs, you'll be positioned for success regardless of future industry changes.
See how Sierra Cedar migrated to Scalr in less than a day from homegrown Terraform tooling.
Sebastian Stadil is the CEO at Scalr. He has over 15 years of devops experience, and started his career with AWS in 2004. Sebastian was also an early advisor to Microsoft Azure and Google Cloud.