What Gets Migrated
Complete legacy system modernization with focus on test management and requirements traceability.
Requirements → User Stories
Test Plans & Test Cases
Defects with Traceability
Traceability Links
Attachments & History
User Assignments
1. Prerequisites
HP ALM Requirements
- Version: ALM 11.x, 12.x, 15.x (REST API or OData enabled)
- Access Level: Project Administrator
- Network: REST API endpoint accessible (port 8080/8443)
- Authentication: Database authentication or LDAP credentials
- Permissions: Read access to Requirements, Tests, Test Runs, Defects
Azure DevOps Requirements
- Organization: Existing Azure DevOps organization
- Project: Target project with configured process template
- Access Level: Project Administrator or Project Collection Administrator
- PAT Token: Full access to Work Items, Test Plans, and Identity
- Test Plans License: Required for Test Plan/Test Suite migration
Technical Requirements
- Minimum 4 GB RAM, 20 GB disk space
- Network connectivity to both ALM and Azure DevOps
- OpsMigrator CLI version 2.4+
2. Connector Setup
Step 1: Configure HP ALM Connector
Generating ALM Credentials:
- Login to HP ALM web interface as Administrator
- Navigate to Site Administration → Site Users
- Create service account:
svc-migration with Project Admin role
- Note REST API URL:
http://alm-server:8080/qcbin
- Test API:
GET http://alm-server:8080/qcbin/api/domains
ALM Connector Configuration:
{
"connectorType": "HPALM",
"baseUrl": "http://alm-server:8080/qcbin",
"authentication": {
"authMethod": "Basic",
"username": "svc-migration",
"secretValue": "PASSWORD"
},
"almConfiguration": {
"domain": "DEFAULT",
"project": "YOUR_PROJECT",
"apiVersion": "12.60",
"enableSSL": false,
"timeout": 90
},
"rateLimiting": {
"maxRequestsPerSecond": 15,
"maxConcurrentRequests": 5,
"retryAttempts": 3,
"retryDelayMs": 1500
},
"dataOptions": {
"includeAttachments": true,
"attachmentSizeLimit": 50,
"includeTestRuns": true,
"includeTraceability": true,
"maxHistoryDepth": 100
}
}
Step 2: Configure Azure DevOps Connector
Generating Azure DevOps PAT:
- Navigate to
https://dev.azure.com/{organization}
- Click profile icon → Personal access tokens
- Click + New Token
- Configure scopes:
- Work Items: Read, Write, & Manage
- Test Management: Read & Write
- Project and Team: Read
- Identity: Read
- Graph: Read
- Set expiration: 90+ days
- Copy PAT token immediately (shown once)
Azure DevOps Connector Configuration:
{
"connectorType": "AzureDevOps",
"baseUrl": "https://dev.azure.com/{organization}",
"authentication": {
"authMethod": "PAT",
"personalAccessToken": "YOUR_PAT_TOKEN"
},
"adoConfiguration": {
"organization": "your-org",
"project": "YourProject",
"apiVersion": "7.1",
"areaPath": "YourProject\\Migrated",
"iterationPath": "YourProject\\Sprint 1",
"processTemplate": "Agile"
},
"testManagement": {
"createTestPlans": true,
"createTestSuites": true,
"migrateTestCases": true,
"preserveTestHierarchy": true
},
"rateLimiting": {
"maxRequestsPerSecond": 100,
"maxConcurrentRequests": 10,
"retryAttempts": 3
}
}
Test Plans License Required: Azure DevOps Test Plans feature requires separate licensing ($52/user/month). Ensure your organization has sufficient Test Plans licenses before migrating test cases. Alternative: Migrate tests as work items only (manual test cases as User Stories).
Step 3: Validate Connections
# Validate both connectors
opsmigrator connector validate --source alm-connector.json
opsmigrator connector validate --target ado-connector.json
# Expected output:
âś“ HP ALM connection successful
- Domain: DEFAULT, Project: YourProject
- Requirements: 23,847 accessible
- Test Cases: 14,592 accessible
- Defects: 5,203 accessible
- Traceability Links: 48,291 relationships
âś“ Azure DevOps connection successful
- Organization: your-org, Project: YourProject
- Test Plans: Enabled (12 licenses available)
- User mapping: 87% matched (13 missing accounts)
- Area/Iteration paths: Validated
3. Test Case Migration Strategy
ALM Test Structure → Azure DevOps Mapping
| HP ALM Entity |
Azure DevOps Entity |
Migration Notes |
| Test Folder |
Test Plan |
Top-level test folders become Test Plans |
| Test Set |
Test Suite |
Hierarchical test sets preserved as nested suites |
| Test (Manual) |
Test Case |
Test steps migrated 1:1 with Expected Results |
| Test (Automated) |
Test Case + Automation |
Automation metadata preserved; scripts require manual linking |
| Test Run |
Test Result |
Historical test runs migrated as historical data (read-only) |
| Test Parameters |
Shared Parameters |
Data-driven test parameters converted to ADO Shared Parameters |
Test Traceability Preservation
OpsMigrator automatically recreates traceability links:
- Requirements → Tests: ALM "Coverage" links become ADO "Tested By" links
- Tests → Defects: ALM "Defect" associations become ADO "Tests" links
- Requirements → Defects: Direct requirement-defect links preserved
- Test Runs → Defects: Test failure → defect relationships maintained
Automated Test Scripts
Automation scripts are NOT migrated automatically. OpsMigrator migrates test case metadata and marks tests as "Automated" in Azure DevOps, but you must manually re-link automation scripts (UFT, Selenium, etc.) post-migration. Budget 1-2 weeks for automation re-integration.
Test History Migration
Historical test run data migrated as read-only reference:
- Last 100 test runs per test case migrated (configurable)
- Run status: Pass, Fail, Blocked, Not Completed
- Execution date, tester, duration preserved
- Test run attachments and screenshots migrated
- Note: Cannot re-execute historical runs; new runs start fresh in Azure DevOps
4. Migration Process (5 Phases)
1
Discovery & Analysis
Duration: 2-3 days
- Connect to HP ALM and scan data structure
- AI analysis: data quality, traceability health
- Generate migration plan with red flags
- User identity mapping (ALM → Azure AD)
- AI Scan Time: 20-40 minutes
2
Configuration
Duration: 2-3 days
- Review and customize field mappings
- Configure test plan structure in Azure DevOps
- Resolve unmapped users and custom fields
- Define data filters (exclude archived data)
- Workshops: 2-3 sessions
3
Pilot Migration
Duration: 3-5 days
- Migrate 1 representative test domain (5-10K items)
- Validate traceability links
- User acceptance testing with QA team
- Refine mappings based on feedback
- Iterations: 1-2 cycles
4
Production Migration
Duration: 5-10 days
- Freeze ALM (read-only mode)
- Full data migration with real-time monitoring
- Batch processing: 20K-30K items/day
- Daily validation reports
- Execution: Phased by test domain
5
Validation & Cutover
Duration: 3-5 days
- Comprehensive validation (100% traceability check)
- QA team training on Azure Test Plans
- Parallel operation (ALM read-only, ADO active)
- ALM decommissioning planning
- Support: 2 weeks hypercare
Success Story
Enterprise Healthcare Provider - 3-Week Migration
- Scale: 187,000 items (52,000 requirements, 94,000 test cases, 41,000 defects)
- Challenge: 15 years of test history, 840K traceability links, 450 active users
- Result: 96.2% data accuracy, 99.8% traceability preservation
- Timeline: 3 weeks including pilot (within planned 4-week window)
- Outcome: Zero production incidents, 92% user satisfaction, ALM decommissioned after 4-week parallel run
5. Field Mapping
| HP ALM Field |
Azure DevOps Field |
Transformation Notes |
| Requirement.Name |
User Story.Title |
Direct mapping, no transformation |
| Requirement.Description |
User Story.Description |
HTML preserved in Azure DevOps rich text |
| Requirement.Status |
User Story.State |
Custom mapping: Not Reviewed→New, Reviewed→Active, Approved→Active, Rejected→Removed |
| Requirement.Priority |
User Story.Priority |
1→1, 2→2, 3→3, 4→4 (direct mapping) |
| Test.Name |
Test Case.Title |
Direct mapping |
| Test.Steps |
Test Case.Steps |
Step Action + Expected Result preserved |
| Test.Status |
Test Case.State |
Design→Design, Ready→Ready, Obsolete→Closed |
| Defect.Summary |
Bug.Title |
Direct mapping |
| Defect.Severity |
Bug.Severity |
1-Critical→1-Critical, 2-High→2-High, etc. |
| Defect.Status |
Bug.State |
New→New, Open→Active, Fixed→Resolved, Closed→Closed |
| Attachment |
Work Item Attachment |
Binary attachments migrated (max 50 MB per file) |
| Custom Fields (100+) |
Custom Fields (selected) |
Migrate 20-30 most critical custom fields; document unmigrated fields |
Custom Field Strategy: HP ALM projects typically have 80-150 custom fields. Azure DevOps supports unlimited custom fields, but migrating all fields creates clutter. OpsMigrator provides usage analysis showing field population rates. Recommend migrating only fields with >10% usage.
6. Red Flags & Mitigation
Detection: 12% of requirements have invalid test coverage links (orphaned references)
Impact: Traceability matrix incomplete post-migration; compliance/audit issues.
Mitigation:
- Run OpsMigrator's traceability health check before migration
- Clean up orphaned links in ALM (or accept data loss)
- Use OpsMigrator's "Best Effort" link reconstruction (attempts to match by name/ID)
- Generate pre/post migration traceability reports for comparison
Detection: 237 attachments exceed Azure DevOps 60 MB file size limit
Impact: Large attachments cannot be migrated; data loss for test evidence/screenshots.
Mitigation:
- OpsMigrator exports large files to Azure Blob Storage or file share
- Add link to external storage in work item comments
- Alternatively: compress attachments before migration (manual effort)
- Consider: Do you need 10-year-old 100 MB test recordings? Archive instead?
Detection: 87 of 485 ALM users have no Azure AD account
Impact: Work items assigned to retired users; no valid owner post-migration.
Mitigation:
- Export user mapping report from OpsMigrator
- Provision Azure AD accounts for active users (coordinate with IT)
- Map retired users to generic "Historical User" account
- Preserve original assignee name in custom field: "ALM Original Owner"
Detection: 4,200 automated tests use UFT/QTP framework
Impact: Automation scripts cannot run in Azure DevOps without re-engineering.
Mitigation:
- Migrate test case metadata only; mark as "Automated" in Azure DevOps
- Budget separate project to re-platform UFT scripts to Selenium/Playwright
- Alternatively: Keep UFT framework, trigger from Azure Pipelines via API
- No automatic solution; requires 8-16 weeks for automation migration
Detection: 1.2 million test run records spanning 10 years
Impact: Migration time extended by 3-5 days; Azure DevOps storage costs increase.
Mitigation:
- Configure OpsMigrator to migrate last 100 runs per test case (default)
- Archive older test runs to Azure Blob Storage for historical reference
- Alternative: Migrate summary statistics only (pass/fail counts, not individual runs)
- Reduces migration scope by 70%; acceptable for most compliance requirements
7. Validation & Testing
Automated Validation Checks
OpsMigrator performs comprehensive validation post-migration:
- Item Count Verification: Requirements, Tests, Defects counts match (within 2% tolerance)
- Traceability Validation: 100% link reconstruction verification
- Field Data Integrity: Sample 5% of items, validate field values match source
- Attachment Verification: File size and count validation for all attachments
- User Assignment Check: Ensure all work items have valid assignees
Validation Report Example
OpsMigrator Validation Report - HP ALM to Azure DevOps
============================================================
Migration ID: ALM-ADO-20250112-001
Completed: 2025-01-12 14:32:08 UTC
SOURCE SUMMARY (HP ALM):
Requirements: 52,847
Test Cases: 94,203
Test Runs: 1,204,839 (filtered to 94,203 last runs)
Defects: 41,592
Traceability Links: 840,291
Attachments: 18,492 files (87.2 GB)
TARGET SUMMARY (Azure DevOps):
User Stories: 52,704 (99.7% success)
Test Cases: 93,805 (99.6% success)
Test Results: 93,805 (historical)
Bugs: 41,401 (99.5% success)
Traceability Links: 838,447 (99.8% success)
Attachments: 18,215 files (84.9 GB)
VALIDATION CHECKS:
âś“ Item counts: 99.6% accuracy (within tolerance)
âś“ Traceability: 99.8% links reconstructed
âś“ Field integrity: 98.2% exact match (5% sample)
âś“ Attachments: 98.5% migrated (277 oversized files exported to Blob Storage)
âš User assignments: 87% matched (13% mapped to Historical User)
RED FLAGS RESOLVED:
âś“ 1,844 orphaned traceability links cleaned up pre-migration
âś“ 87 inactive users mapped to Historical User account
âś“ 277 large attachments exported to Azure Blob Storage
âś“ 4,200 UFT automation tests marked for manual re-linking
RECOMMENDATION: Migration successful. Proceed to UAT phase.
8. Best Practices
Before Migration
- Data Cleanup: Archive obsolete test cases and requirements (reduces scope by 20-30%)
- Traceability Health: Run link validation in ALM; fix orphaned links before migration
- Azure DevOps Setup: Pre-configure Test Plans, Area Paths, Iteration Paths
- User Provisioning: Ensure all active ALM users have Azure AD accounts
- Stakeholder Buy-In: Conduct demo of pilot migration for QA team approval
During Migration
- ALM Freeze: Put ALM in read-only mode during production migration (prevents data drift)
- Phased Approach: Migrate test domains incrementally (1-2 domains per day)
- Real-Time Monitoring: Use OpsMigrator dashboard to track progress and errors
- Daily Validation: Run validation reports after each domain migration
- Communication: Send daily status updates to stakeholders
After Migration
- UAT Phase: 1-2 week QA team testing period before full cutover
- Training: Conduct Azure Test Plans training for QA team (2-day workshop)
- Parallel Operation: Run ALM (read-only) and ADO in parallel for 2-4 weeks
- Automation Re-Integration: Schedule separate project to re-link automation scripts
- ALM Decommissioning: Archive ALM database for compliance (7-year retention typical)
9. Frequently Asked Questions
Do I need Azure Test Plans licenses?
Yes, if you want to migrate test plans, test suites, and test cases with full Test Management capabilities. Azure Test Plans costs $52/user/month. Alternative: Migrate tests as regular User Stories/Tasks without Test Plans licensing (loses test management features like test suites, test runs, test charts).
What happens to automated test scripts?
Test case metadata migrates (name, steps, expected results, automation flag), but scripts do NOT migrate automatically. You must manually re-link scripts post-migration. UFT/QTP scripts require re-platforming to Selenium/Playwright or API-triggered execution from Azure Pipelines. Budget 8-16 weeks for automation migration as separate project.
Can I preserve test run history?
Yes. OpsMigrator migrates the last 100 test runs per test case by default (configurable). Historical runs appear as read-only test results in Azure DevOps. You cannot re-execute them; new test execution starts fresh. Older runs can be archived to Azure Blob Storage for compliance.
How are traceability links preserved?
OpsMigrator reconstructs 99.8% of traceability links automatically. ALM "Coverage" links (Requirement→Test) become ADO "Tested By" links. Defect associations preserved as "Tests" link type. Orphaned links (broken references) are logged in validation report for manual review.
What's the success rate for test case migration?
99.6% test case success rate typical. Failures occur when: (1) Test case exceeds Azure DevOps 10K step limit (rare), (2) Circular traceability links detected (invalid data), (3) Network timeouts during large attachment upload. All failures logged with remediation guidance.
How long does ALM need to be offline?
ALM does NOT need to be offline. Recommended: freeze ALM (read-only mode) during 5-10 day production migration window. After migration, run parallel for 2-4 weeks while QA team validates Azure DevOps. Zero downtime for read access; temporary write blackout acceptable for most organizations.
Can I migrate only specific test domains?
Yes. OpsMigrator supports selective migration by domain, folder, or test set. Common scenario: Migrate active test suites first, archive obsolete tests. Reduces migration scope by 30-40% and accelerates timeline. Use AI analysis to identify low-usage test areas for archival.
Ready to Modernize Your Test Management?
Schedule a demo to see how OpsMigrator handles ALM to Azure DevOps migration with full traceability preservation.