Jeroen Swart

.NET Architect

TFS 2010 - Moving Sharepoint to another server

The last few months, we used a single server for our first TFS installation to host both TFS 2010 and Sharepoint 2010. We started with the single server because of lack of resources on the virtual hosts, and I couldn't wait for the new hardware to arrive :-P.

Today I moved the Sharepoint server to a new dedicated virtual machine. Only a few team projects with a team portal exist yet and since most portals don't have any content except the dashboards, I decided to simply recreate the team portals on the new machine and copy any content manually.

The installation and configuration of the new Sharepoint 2010 server was quick and without problems. We also changed the NAT of the firewall to point our external IP & domainname to the new server, again without any problems.

Then it was time to install & configure the Sharepoint extensions as well as reconfigure the integration with Sharepoint for TFS 2010. I encountered some errors during this part that we quickly fixed, but learned a few lessons that might be usefull for others.

TF250049 & TF25006

The first error happened during the configuration of the TFS Sharepoint extensions on the new Sharepoint machine. Error TF250049 (the URL for Team Foundation Server could not be verified), which in turn was caused by error TF250067 (No connection could be made). This error was solved by first changing the 'Sharepoint Web Applications' configuration on the TFS machine. By adding the new Sharepoint web application (or changing the existing one) the service accounts used by Sharepoint are granted access to TFS.

TF250067 and not associated project portals

Before (re)creating the site collection and project portal sites, you need to add the TFS service account to the farm administrators group in Sharepoint. This will prevent TF250067 errors during the creation of the project portals. The project portal will be created, but without a working association with TFS.

If this happened to you, delete the project portal site before recreating it, again.

Team Project Site collection

To recreate the site collection, navigate to the team project collection in the 'Team Project Collections' node in the TFS admin console and select the SharePoint Site tab. Select 'Edit Default Site Location' (, make any changes to the Default Site Location if you want) and click OK. Since the Sharepoint is a fresh install, you will be prompted to create a new site. This is the site(-collection) for the team project collection, that will contain all the project portals within the team project collection.

Project Portals

The easiest way to recreate the project portals, is to use the tfpt command-line tool that is part of the Team Foundation Power Tools (which can be downloaded from the Visual Studio Gallery). You can easily see what arguments must and can be provided by executing: tfpt addprojectportal /?, but here is some extra information.

The collection argument is the uri of the TFS server, as you configured them e.g. in the Team Explorer. Examples:
/collection:http://tfs.domain.local:8080/tfs
/collection:https://tfs.domain.com/tfs

The teamproject argument specifies the name of the team project. Of course, you need to put the name between quotes if it contains spaces. Examples:
/teamproject:MyProject
/teamproject:"My Other Project"

The processtemplate argument specifies the name of the process template. Again, use quotes if it contains spaces. Examples:
/processtemplate:"MSF for Agile Software Development v5.0"
/
processtemplate:"Quintor Scrum 0.8"

If you want to create the portal on a different url, e.g. team project name contains spaces and you do not want those in the url of the project portal, provide both the webapplication and the relativepath arguments.

The webapplication argument specifies the url of the web application (and not the name as the usage help says). Examples:
/webapplication:http://sharepoint.domain.local
/webapplication:https://projects.domain.com

The relativepath specifies the path to the project portal. Examples:
/relativepath:/sites/DefaultCollection/MyProject
/relativepath:/sites/Quintor/MyOtherProject