TFS Collection Migration from 2010 to 2012 - tfs

I have two TFS servers. One is a legacy TFS2010 server that contains an old collection of our projects. Last year, we spun up a new TFS2012 server. However, we never migrated our source code from the old server (we treated it as a fresh install and created new projects).
We are now looking at retiring the 2010 server completely and I want to migrate the legacy 2010 collection (actually all I care about is the source control and history) to the new server as a separate collection, but I can't figure out how. I've followed the instructions on MSDN (http://msdn.microsoft.com/en-us/library/vstudio/dd936138.aspx) but when I get to the step for attaching the collection on the new server, TFS complains that "no attachable databases were found" on the sql server.
I've also tried running the "tfsconfig Collection /attach" command on the target TFS server (even though numerous posts I read say it was deprecated in 2012). It tells me it can't connect to the target database server (even though my production collection is attached to it on that box).
Does anyone know if a collection migration from 2010 to 2012 is even possible or if I'm just spinning my wheels? There's no official documentation from Microsoft that I can find that says such a migration is even possible (even though there's nothing I can find that refutes it either)
Server Specs:
Old SQL Server: Enterprise 64 Bit 2008 SP3 (10.0.5500)
New SQL Server: Enterprise 64 Bit 2008R2 SP2 (10.50.4000)
Old TFS Server: 10.0.40219.1 (SP1 KB2182621)
New TFS Server: 11.0.60315.1 (TFS2012 Update 2)

You can migrate a single collection. The steps I know working are:
detach the collection from the 2010 instance using TFS Admin console
backup the database (or detach from SQL)
restore the database new SQL instance (or copy the files and attach them from SQL) -- check does not clash with existing database names
attach the collection from the 2012 TFS Admin Console
The last step will kick off the upgrade process: the collection will not be available until the process is complete. It could takes minutes or hours depending on the size, and make sure you have enough space for SQL transaction logs.

Take a look at Team Foundation Server Integration Tools (March 2012 Release): http://visualstudiogallery.msdn.microsoft.com/eb77e739-c98c-4e36-9ead-fa115b27fefe
The TFS Integration Tools is a project developed by the Team
Foundation Server (TFS) product group and the Visual Studio ALM
Rangers to integrate Team Foundation Server with third party systems
for migration and synchronization of data.

There is a migration guide for TFS 2010 to TFS 2012 located here: https://upgradetfs2010totfs2012.codeplex.com/
it may be faster in some cases depending on the size of the projects that need to be moved (and the number) to start by importing the latest code into the existing version of 2012 since you are concerned only with moving the source code. You do loose the history however.

Do a in-place migration, described in Team Foundation Server Upgrade Guide, from Microsoft ALM Rangers (http://vsarupgradeguide.codeplex.com/), and next migrate the collection to the new server. From 2010 to 2012 it's a very simple migration.
Don't forget backup the databases before doing a in-place migration.

Related

TFS doesn't recognize imported DB

My company is using a TFS 2013 (Update 4 = 12.0.31101.0) server for development. I was tasked with migrating the TFS server to VSTS but realized I had to update to TFS2018 to be able to use the current migration tool.
My boss obviously didn't like the idea of performing "open heart surgery" on our productive environment so we created a back-up of the SQL Collection-Database (by creating a dump using Management Studio) installed a Trial Version of TFS/SQL Server in a VM (VirtualBox) and tried importing the back-up.
Using the built-in import tool (TFS\Tools\TfsRestore.exe) I imported the old DB into the SQL Server, which actually worked really well, looking at the DB in ManagementStudio everything that needs to be there seems to be there.
However, trying to attach the Team Project Collection in the Team Foundation Server Administration Console I simply can't find it. I List Available Databases and the only one it finds is the DefaultCollection that was created during installation of the server.
I made sure that the versions are the exact same version, only difference is the License which is a real License on our production environment and a Dev License on the VM.
Anyone got an idea why this is happening? Maybe some way to get a more detailed Exception?
Edit: Trying to use the TfsConfig registerDB command throws an expection:
TFS30040: The database is not correctly configured. Contact your Team Foundation Server administrator
First, please make sure you are a member of the Team Foundation Administrators security group and a member of the sysadmin security group for any SQL Server databases that the new Team Foundation Server uses.
Usually this kind of issue should be solved after giving proper database permissions to the user.
Besides, after the configuration you can try RemapDBs to redirect TFS to its databases.
Back to the error: TF30040: The database is not correctly configured. Contact your Team Foundation Server. Here is a similar thread for your reference: TF30040: The database is not correctly configured
Moreover, you could also check the event view on your VM, if there are some more detail error message for troubleshooting.
Did you detach the collection in the TFS admin console before taking the backup on your 2013 server?
When you detach the collection is moves all of the relevant data from the TFS configuration database in to the collection database. You can then take a backup of the collection database and restore it to the new SQL server instance.
Note that detaching the collection will take it offline until the backup is complete and you re-attach the collection.
Then the new version of TFS should be able to see the collection and attach it. This will copy the configuration data to the new configuration database and you'll be able to bring the collection online.
So steps are
Detach collection in TFS 2013
Take backup of the TFS 2013 collection DB
Re-attach the TFS 2013 collection so that users can continue to use the collection whilst you test your upgrade
Copy the backup to the 2018 server
Restore the backup
In the TFS 2018 Admin console attach the collection
Once you're happy that the upgrade will go smoothly repeat the process but skip step 3.
Managed to do it by following this guide : https://cromwellhaus.com/2013/08/restoring-tfs-2012-to-sandbox/
Short Version: I was missing the config database, it was quite easy once I was using the old config.

Complicated TFS 2017 Upgrade

I wish to upgrade my current TFS 2015.3 instance to 2017. It's not going to be quite as easy as advertised, however, due to some complicating factors. My scenario appears to be undocumented.
I'll be installing a new domain controller (moving from Server Essentials 2012 R2 to Server Essentials 2016).
The current OS is Server 2012 R2; I will be upgrading this as well, to Server 2016 (a clean install to a new VM).
Both of these new VMs must retain the same NETBIOS names as before.
The current SQL Server instance is 2014; I will be upgrading this as well, to SQL Server 2016.
The SQL Server instance for the current TFS instance is on a separate VM. I would like to consolidate this and put everything on a single VM. (I'm a solo developer putting a very light load on my server and I want to shed the extra complexity and overhead.)
Is it merely a matter of installing TFS 2017 and restoring from a 2015.3-generated backup? Will 2017 automatically apply any schema changes etc. during the restore process? Could it be that simple?
The closest question I could find to this is here, but unfortunately it doesn't quite address my situation.
Instead of doing a detach/attach upgrade there is another option available to you. detach/attach upgrades have had issues in the past and though most of these issues have been fixed, it's considered a suboptimal solution.
Instead, perform an Upgrade Installation.
Take a full backup of all your TFS 2015u3 databases and restore them to the new SQL server instance. You can create the full backup using the Team Foundation Server Admin Console, or use SQL Server Management Studio after stopping all TFS services on each Application Tier (in your case there is probably only one) using
TFSServiceControl quiesce
Now install TFS 2017 and perform the "upgrade" installation and point it to your existing databases. It will ask you if you want to upgrade them and whether you have a valid backup.
And after some time (upgrades can take a while, as data is moved around the databases), your TFS server will come back online. The installation wizard usually does all the mapping work required.
There is one big caveat, and that has to do with domain changes. If you are
installing in the same Windows Active Directory domain, you're good. But if your server is running in Workgroup mode you may want to remap all the identities in your TFS database prior to running the upgrade step. So install TFS, but do not configure yet. Run the following command
TFSConfig Identities /change /fromdomain:Domain1 /todomain:Domain2
Then use the upgrade option to have TFS use your database backups. The full explanation on doing a cross domain server migration is documented on MSDN. Be sure to safeguard your pre-upgrade backup until you've verified a successful upgrade.
We face almost the same thing, as our server was created for TFS 2013 and therefore has SQL 2012 installed.
Yes, it actually is as easy as your question states. When you attach the collection that you restored form the backup all the schema changes will be applied. Before then you configure the app tier of TFS and skip
An important thing though is to detach the collection before doing the backup. This copies various configuration into the collection database so that it is self-contained and can be moved to another server. You then only move the collection database to the new server.
Here is how in list form:
Detach collection using TFS Admin Console
Backup collection database using SSMS, e.g. Tfs_YourCollection
Restore collection database on new server using SSMS
Install TFS
Configure app tier, skip creation of new DefaultCollection
Attach collection in the TFS Admin Console, might take some time depending on your collection size.
You can do 4+5 before 3.
Note: Changing domain can add complexity. SharePoint and Reporting sites are not migrated!

Upgrading to TFS 2015 - copying a project

HELP!!
I'm learning on the fly here with no training whatsoever! I'm a system administrator who is responsible for supporting the developers. They use Visual Studio, TFS, Plastic SCM and TeamCity amongst other tools.
My task was to get TFS 2015 and SQL Server 2014 installed on a new VM. This I have done but my biggest task now is setting up TFS which seems complicated.
For your information, The developers use TFS 2012 as a Kanban board.
Can anyone point me in the right direction to documentation that simply explains how to copy a project from one collection to another? I'm reluctant to move the project to the new version of TFS without testing the current project.
Thanks in advance.
You cannot copy a single project, there is the TFS integration platform, but it sucks and doesn't officially support TFS 2015
I would say your best bet is to follow the following steps.
In TFS 2012, detach the collection using the TFS Admin Console.
Backup the collection database in SQL server
Copy the backup to the new SQL server
Restore the Database
In the TFS Admin Console in TFS 2015, attach the collection
Wait for TFS to update the Database Schema.
You should now have the full team project collection available in the new server.

Upgrade additional Team Foundation instance(s)?

Can I confirm that if I already have a functioning TFS 2015 server and I want to upgrade an existing TFS 2010 server - I need to backup any existing collection DBs, reinstall TFS with upgrade of new instance and then restore/attach existing collection DBs?
In other words, there doesn't seem to be support for adding extra collection DB's from an older version? (e.g. like a SharePoint Content DB attach).
TFS upgrade guide is here: http://vsarupgradeguide.codeplex.com/releases and suggests a reinstall for Migration Path upgrade.
The process is described at When upgrading from TFS 2008 or TFS 2010.
Shortly, there is no direct path from 2010 to 2015, so you need to upgrade your collection to 2012 or 2013 (I recommend the latter).
In your case I would:
Backup, backup and make sure backup can be restored
Prepare a new TFS 2013 instance in a VM -- you may share the SQL instance if you are careful
Detach from TFS the 2010 collection you want to move
Copy the detached collection database to the SQL instance supporting TFS 2013 (you can use a full backup copy-only)
Attach the collection database on TFS 2013, the upgrade process starts asynchronously
Adjust the Process Templates etc. as described in the article
Detach the collection, now upgraded to 2013
Copy the detached collection database to the SQL instance supporting TFS 2015
Attach the collection database on TFS 2015, the upgrade process starts asynchronously
Adjust the Process Templates etc. as described in the article
I my experience the TFS detach and attach operations are generally safe, but may fail (e.g. 2012u2 attach was buggy); that is why I recommend backup with tested restore procedure.
Update:
In addition to Rangers' guidance, you may find useful SSW Rules to Better TFS 2015 Migration.
What you do is simply detach the collection though the TFS admin console, then backup & restore, then attach it to TFS 2015. The attach process will then do the upgrade on that collection. See this

Migration from TFS 2010 to TFS 2012

I have been searching the web for a clean solution on how to migrate our 2010 tfs collections to our new tfs 2012 server, but no luck. May someone please assist with the steps or a good blog I could look at to achieve this process. The reason we want to do a MIGRATION and not an upgrade is because we got new hardware and would first like to trial TFS 2012 before we upgrade our live environment. Therefore we would like to import all our collection including the work items and build process templates.
Here is a decent blog post: http://mohamedradwan.wordpress.com/2013/01/05/upgrade-tfs-2010-to-tfs-2012-with-migration-to-a-new-hardware-series/
The basic steps you want to follow are:
Backup all of your 2010 databases.
Restore those databases on the SQL Server on your new hardware.
On your new hardware, install TFS 2012
When it comes time to configure. Select the upgrade option.
It will asks where your databases are. Select the SQL Server that you used in #2.
Press Go.
Note, if you want to test 2012 with the same clients you are using for 2010 then you'll need to "clone" the system otherwise your clients will get confused. To do that, see http://msdn.microsoft.com/en-us/library/vstudio/ee349259.aspx
You can move a collection at a time using the detach option in 2010 and attach it back to 2012 using the attach option there.
See http://msdn.microsoft.com/en-us/library/dd936138(v=vs.100).aspx

Resources