When it comes to migrating data in Azure DevOps, the process can be overwhelming, especially if you’re dealing with legacy systems or older versions of Team Foundation Server (TFS). As someone who has been through this many times, I can tell you that there are countless pitfalls, but with careful planning and attention to detail, you can avoid most of them. In this post, I’ll share some of the common issues, critical steps, and personal experiences that can help you successfully navigate the complexities of Azure DevOps data migration.
One of the biggest challenges you’ll face when migrating to Azure DevOps is dealing with older versions of TFS. I’ve encountered situations where clients were still using Visual SourceSafe, a system that went end-of-life in 2005. Before you can even think about upgrading TFS, you need to import any old data from systems like Visual SourceSafe. If you skip this step and upgrade TFS first, you risk losing critical historical data since Visual SourceSafe imports were only supported up to TFS 2015.
Key Takeaways:
Visual SourceSafe Import: Ensure you import legacy data before upgrading TFS.
Order Matters: Doing things in the wrong order can lead to irreversible issues.
Order of operations is crucial in any migration process. Whether it’s moving from TFVC (Team Foundation Version Control) to Git or making process template changes, the sequence in which you perform these tasks can make or break your migration.
Process Template Changes: Make these changes on-premises before pushing to Azure DevOps.
Source Control Migration: Migrate your source control to Git before moving to Azure DevOps.
Account Alignment: The most critical issue is ensuring that identities align correctly during the migration. If not handled properly, users may end up with duplicate identities, leading to confusion and lost work.
Personal Experience:
I once worked on a migration where a customer moved from a workgroup environment to a domain-joined environment without proper account alignment. This resulted in users having multiple identities in TFS, leading to a situation where they couldn’t find their assigned work because it was linked to their old identity. This issue is not just a technical glitch; it’s a workflow nightmare that can severely impact productivity.
Identity management is one of the trickiest parts of migrating to Azure DevOps. TFS handles identities in a way that can cause significant issues if not managed correctly.
TFS Identity Wrapping: TFS wraps your actual identity (whether a workgroup account or Active Directory account) in its system.
Migration Risks: If your accounts don’t match when moving environments, TFS might create a new identity instead of mapping to the existing one. This results in users not being able to see their work assigned to their old identity.
Case Study: Complex Migration
In a particularly challenging migration, we had to move a TFS environment from inside Microsoft to another company after a business sale. The process involved seven separate migrations, each with different scripts, validations, and legal requirements. The biggest headache was maintaining identity alignment throughout the entire process. If even one identity didn’t map correctly, it could have caused significant issues down the line.
Another critical aspect of migration is managing your database size and cleaning up old data. Azure DevOps has limitations on database size, so it’s essential to clean up unnecessary data before migrating.
Legacy Systems: Older TFS versions might have accumulated a lot of “baggage” over the years, including half-committed changes, outdated scripts, and beta versions that were never fully supported.
Database Cleanup: Make sure to clean up your database before attempting the migration. This includes removing obsolete data, fixing old errors, and ensuring everything is in order.
Backup procedures are often overlooked, but they are crucial to ensuring a smooth migration. Most operations teams will use standardized backup tools that might not be compatible with TFS or Azure DevOps. This can lead to incomplete backups and, in the worst-case scenario, a failed migration.
Use TFS-Documented Backup Procedures: Always follow Microsoft’s documented procedures for backing up TFS or Azure DevOps. Using non-standard tools can result in incomplete or corrupt backups.
Mark Transaction Logs: Ensure you mark transaction logs across all databases before backing up. This ensures consistency across multiple databases during the backup process.
Real-World Example:
In one case, an operations team used their standard SQL Server backup tools for TFS. Unfortunately, this approach didn’t account for the complexity of TFS’s multiple databases. During a disaster recovery scenario, they were unable to restore the databases properly, leading to significant downtime and the need for Microsoft engineers to intervene.
Despite the challenges, migrating to Azure DevOps doesn’t have to be a nightmare. With the right approach, you can avoid many common pitfalls.
Plan the Order of Operations: Ensure you follow the correct sequence for all migration tasks.
Align Identities: Double-check that all user identities are correctly mapped during the migration.
Clean Up Your Database: Remove any obsolete or unnecessary data before migrating.
Follow Backup Best Practices: Use TFS-documented procedures and mark transaction logs.
Final Thoughts:
90% of the time, migrations go smoothly if you follow these guidelines. However, when something does go wrong, it often requires deep expertise to fix. The Azure DevOps team has done a great job of making the migration process easier, but there’s always a chance that something might slip through the cracks.
Migrating to Azure DevOps can be a daunting task, especially if you’re dealing with legacy systems or outdated processes. However, with careful planning, attention to detail, and a thorough understanding of the potential pitfalls, you can ensure a successful migration. Remember, the key is in the preparation: plan your order of operations, align your identities, clean up your database, and always follow best practices for backups. With these steps, you can avoid the common pitfalls and ensure a smooth transition to Azure DevOps. 🚀
If you've made it this far, it's worth connecting with our principal consultant and coach, Martin Hinshelwood, for a 30-minute 'ask me anything' call.
We partner with businesses across diverse industries, including finance, insurance, healthcare, pharmaceuticals, technology, engineering, transportation, hospitality, entertainment, legal, government, and military sectors.