Use TFSConfig to manage Azure DevOps on-premises

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

You can use the TFSConfig command-line tool to perform a variety of administrative actions for your Azure DevOps on-premises deployment.

TFSConfig can be run from any machine on which Azure DevOps Server has been installed.

Command-line tool location

Azure DevOps command line tools are installed in the /Tools directory of an Azure DevOps application-tier server.

  • Azure DevOps Server 2020: %programfiles%\Azure DevOps Server 2020\Tools
  • Azure DevOps Server 2019: %programfiles%\Azure DevOps Server 2019\Tools
  • TFS 2018: %programfiles%\Microsoft Team Foundation Server 2018\Tools
  • TFS 2017: %programfiles%\Microsoft Team Foundation Server 15.0\Tools
  • TFS 2015: %programfiles%\Microsoft Team Foundation Server 14.0\Tools
  • TFS 2013: %programfiles%\Microsoft Team Foundation Server 12.0\Tools
  • TFS 2012: %programfiles%\Microsoft Team Foundation Server 11.0\Tools
  • TFS 2010: %programfiles%\Microsoft Team Foundation Server 2010\Tools

Prerequisites

For many commands to operate correctly, TFSConfig will need to be able to connect to the various servers and services which are part of your TFS deployment, and the user running TFSConfig will need to have administrative permissions for these same servers and services. Requirements for specific commands will be called out below.

Many TFSConfig command must be run from an elevated Command Prompt, even if the running user has administrative credentials. To open an elevated Command Prompt, click Start, right-click Command Prompt, and then click Run as Administrator. For more information, see: User Account Control.

You can also perform administrative actions interactively using the administration console for Azure DevOps Server. See Administrative task quick reference.

List commands and get help

To display a full list of TFSConfig commands, use the help command:

TFSConfig help

To get help for an individual command, use the help command and specify the name of the command with which you want help. For example, to get help for the accounts command:

TFSConfig help accounts

Accounts

Use the accounts command to manage these Azure DevOps Server service accounts.

  • the Azure DevOps Server service account
  • the data sources account for SQL Server Reporting Services
  • the Azure DevOps Proxy Server service account

You can also use this command to change the ownership of the Azure DevOps Server databases.

TfsConfig accounts /change|add|set|delete|updatepassword|resetowner
	[/accountType:<adminConsole|applicationTier|proxy|reportingDataSource>]
	[/account:<accountName>] [/password:<password>]
	[/sqlInstance:<serverName>] [/databaseName:<databaseName>] [/continue]
Operation Description
UpdatePassword Changes the password of an account that is used as a service account. Changes the existing account and all accountTypes that run as the given account.
Change Changes the account that is used as the service account. Adds the new account to necessary resources and groups, grants the required permissions, then sets the service to use it. This does not remove the old account from the resources.

If you do not use the accountType option, the service account for the application tier will be changed.
Add Only adds the new account to the necessary resources. Useful for NLB scenarios. Use the continue flag if some collections are unreachable. Add can be run again later to update any missed collections. Adds an account to the groups that are required for using the account as a service account.
Set Only sets the service to use an account already added to the resources. Useful for NLB scenarios.
Delete Removes the account from all resources. Precautions should be used when deleting an account since it can cause other servers to get denied service.
ResetOwner If the databases are restored as part of a move, clone, or disaster recovery the database owner can switch to the admin restoring the server. This option iterates through all databases and sets the dbo login to the current owner.
AccountType Description
AdminConsole Administration Console Users are users that have been granted the minimum permissions across various resources to use the console.
ApplicationTier Changes the service account on the appPool for the core web services. (TFSService)
Proxy Changes the service account on the appPool for the proxy web services. (TFSProxy)
ReportingDataSource Changes the account the reports use to access the reporting data. (TFSReports)

The default value is ApplicationTier.

The sqlInstance and databaseName are only appropriate for use when adding an account to databases before the application tier is configured. This is primarily useful in disaster recovery scenarios where another account is needed before running the AT Only configuration wizard.

The continue option is used when adding or changing an account. For those operations, the account is changed in each collection database. If continue is supplied, it will continue if a collection is unreachable. It can be run again when they are reachable.

Note

The accounts must be in domainName\userName format. For system accounts, you must use quotes around the full account name (for example, "NT Authority\Network Service"). System accounts do not require a password.

Parameter Description
Account Specifies the name of the account that you want to add, change, or delete from a referenced account type, such as /AccountType:ApplicationTier.
Password Specifies the password of the service account. This parameter is optional if you are using a system account or an account that does not have a password, such as Network Service.
sqlInstance Used only with /ResetOwner.

Specifies the name of the server that is running SQL Server and the name of the instance if you want to use an instance other than the default instance. You must specify the name and instance in the following format:

ServerName\InstanceName.
databaseName Used only with /ResetOwner.

Specifies the name of the database whose ownership you want to change. By using this command, you reset the ownership of the database that you specify to the account under which you are running the command.
continue Updates any groups that are not available when you run the command. This option is usually used in NLB scenarios.

Prerequisites

To use the accounts command, you must be a member of:

  • the Azure DevOps Administrators security group
  • the sysadmin role for all SQL Server instances that your Azure DevOps Server instance uses.

If you use the /proxy option, you must be an administrator on the proxy server.

For more information, see Permission reference for Azure DevOps Server.

Remarks

Use the accounts command to automate changes to the service accounts, databases, and service account groups of Azure DevOps Server. You can configure accounts that you have already created, but you can't create accounts.

Before you change the domain or workgroup of an account, the account must have the Account is sensitive and cannot be delegated permission on the application-tier server. For more information, see this page on the Microsoft Web site: Enabling Delegated Authentication.

The accounts command supports on-premises Azure DevOps Server deployments. To change the account owner of an Azure DevOps Services account, see Change account ownership.

Examples

Change the service account of data sources for Reporting Services to a new account in the Contoso domain, Contoso\NewAccount, and the password, to Password.

TfsConfig accounts /change /AccountType:ReportingDataSource /Account:Contoso\NewAccount /Password:Password

Add the Network Service system account to the service account groups for Azure DevOps Server (system accounts don't have passwords).

TfsConfig accounts /add /AccountType:ApplicationTier /Account:"NT Authority\Network Service"

Change the ownership of the TFS_Warehouse database on the ContosoMain SQL Server in the TeamDatabases named instance to the user account under which you are running the command.

Note

You can't specify what account to set as the owner of the databases when you use this command. The owner will be set to the account under which you are running the command.

TfsConfig accounts /ResetOwner /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_Warehouse

AddProjectReports

Note

The addProjectReports command is available with TFS 2017.1 and later versions.

You use the addProjectReports command to add or overwrite reports for an existing team project.

TfsConfig addProjectReports /collection:<teamProjectCollectionUrl> /teamProject:<projectName> /template:<templateName>
[/force]
Option Description
collection Required. URL of Team Project Collection.
teamproject Required. Specifies the name of the team project.
template Required. Specifies the name of the process template. Available options are Agile, CMMI and Scrum.
force Optional. Specifies that reports should be overwritten if they already exist.

Prerequisites

To use the addProjectReports command, you must have permissions to run TFSConfig and to upload reports to the Reporting Service.

Remarks

You use the addProjectReports command when your project does not have reports or you want to update the reports defined for a process.

You may need to use this command when:

  • The project was created in the Azure DevOps portal and not from Visual Studio
  • The project was created from Visual Studio, however reporting was not configured in Azure DevOps Server.

If you would like to overwrite reports in your project with default reports because you upgraded Azure DevOps Server and old reports in your project are no longer compatible, use the /force option. If you have customized reports, please make a backup before doing this.

To learn more about adding reports to an on-premises Azure DevOps Server, see Add reports to a project.

Example

The following example shows how to add Agile reports to MyProject project in http://myTfsServer:8080/tfs/DefaultCollection project collection.

TFSConfig addProjectReports /collection:http://myTfsServer:8080/tfs/DefaultCollection /teamproject:MyProject /template:Agile

Authentication

The Authentication command changes the network authentication protocol that the Azure DevOps Server application tier or proxy website uses.

TFSConfig Authentication [/provider:NTLM|Negotiate] [/viewAll] [/siteType:ApplicationTier|Proxy]

Option

Description

/viewAll

Displays the current authentication settings for Azure DevOps Server.

/provider: { NTLM | Negotiate }

Specifies the authentication provider you want to configure for the website.

  • NTLM: Use the NTML authentication protocol
  • Negotiate: Use the Negotiate (Kerberos) authentication protocol

/siteType

Specifies the website (application tier or proxy) whose network authentication protocol you want to change. The application tier is the default.

Prerequisites

To use the Authentication command, you must be a member of the Azure DevOps Administrators security group and a local administrator on the application-tier server or proxy server, depending on the value of the siteType option.

Remarks

The Authentication command is used by an administrator who wants to change the network authentication protocol for one or more websites on which Azure DevOps Server relies. The administrator runs this command from the application tier to update those websites that require a change in their network authentication protocol. The command changes the NTAuthenticationProviders property in the IIS metabase.

Before you use the Authentication command to change the authentication protocol, you can run the command with the /viewAll option to see what the existing settings are.

Example

The following example displays the current value that is assigned for the network authentication protocol.

TFSConfig Authentication /viewAll

Certificates

Use the certificates command to change how certificates are configured for client authentication in a deployment of Azure DevOps Server that utilizes HTTPS, secure sockets layer (SSL), and certificates.

TfsConfig certificates [/machine] [/disable] [/autoSelect] [/noprompt] [/thumbprints:thumbprint1[,thumbprint2,...]]
Option Description
machine Specifies that the certificate list will be from the local machine context instead of the current user context.
disable Specifies that the client authentication certificate setting will be disabled.
autoSelect Specifies that a certificate will be automatically selected from the certificate list. The Manage Client Certificates window will not open.
noprompt Specifies that the Manage Client Certificates window will not open when the Certificates command is run.
thumbprints Specifies that the certificate that matches the specified thumbprint will be used. You can specify more than one certificate by separating individual thumbprints with a comma.

Prerequisites

To use the certificates command, you must be a member of the Azure DevOps Administrators security group and the local Administrators group on the computer from which you run the command. For more information, see Permission reference for Azure DevOps Server.

Remarks

By default, the certificates command will automatically select a client certificate from the certificate list for the current user. However, you can use the options for the command to specify a specific certificate or certificates from the current user context or from the local machine context.

Before you use the certificates command, you must first configure the servers in your deployment of Azure DevOps Server to utilize certificates. For more information, see Setting up HTTPS with Secure Sockets Layer (SSL) for Azure DevOps Server.

You use the certificates command to configure the client certificates that are used by a deployment of Azure DevOps Server that has been configured to use HTTPS/SSL and certificates. If you use the Certificates command with no options, a client certificate will be automatically selected from the current user context from which you run the command.

Examples

The following example shows how to specify the local machine certificate that has the thumbprint aa bb cc dd ee with no prompting.

TfsConfig certificates /machine /thumbprint:aa bb cc dd ee /noprompt

The following example shows how to specify using automatic selection of a client certificate from the current user store.

TfsConfig certificates /autoselect

ChangeServerID

The changeServerID command changes the GUIDs that are associated with the databases for Azure DevOps Server. GUIDs must be unique within a deployment of Azure DevOps Server. If more than one database has the same GUID, your deployment can become unstable or unusable. You can change the GUID for the configuration database, the GUIDs for all project collection databases in the deployment, or both.

Although you would not typically use this command in daily operations, you might use this command in the following circumstances:

  • You restored your deployment to new hardware, the old deployment is still operational, and you want to utilize both deployments. This scenario is sometimes referred to as cloning the server.

  • You want to test a software update or a hardware configuration on a duplicate deployment so that you do not risk disrupting your production environment.

  • You want to fully test the restoration of databases to new hardware in a test lab or separate environment, to ensure that your deployment can be restored.

  • You must reset the GUID for a collection database after moving it to another deployment for which that GUID is already reserved.

Note

The changeServerID command is not reversible. After a GUID has been changed, you cannot undo that change except by restoring a previous version of that database.

TfsConfig changeServerID /sqlInstance:<serverName> /databaseName:<configurationDatabaseName>
	[/projectCollectionsOnly] [/configDBOnly] [/collectionName]
Option Description
sqlInstance Required. Specifies the name of the server that is running SQL Server and the name of the instance if you want to use an instance other than the default instance. If you specify an instance, you must use the format: ServerName\InstanceName.
databaseName Required. Specifies the name of the configuration database for Azure DevOps Server. By default, the name of this database is TFS_ConfigurationDB.
projectCollectionsOnly Specifies that only the GUIDs for collections will be changed.
configDBOnly Specifies that only the GUID for the configuration database will be changed.
collectionName Specifies to create a new instance id for the specific collection but not for Azure DevOps instance and the other collections.

Prerequisites

To use the changeServerID command, you must be a member of the Azure DevOps Administrators security group and a member of the sysadmin security role for all SQL Server instances that Azure DevOps Server uses. For more information, see Permission reference for Azure DevOps.

Remarks

You use the changeServerID command to create a discrete duplicate of a deployment of Azure DevOps Server for testing or cloning purposes. After you use the changeServerID command, you must direct clients to create a connection to the changed server before it can be used.

Example

The following example shows how to change the GUIDs of all databases in the Contoso1 deployment of Azure DevOps Server, where the configuration database is hosted on the server that is named ContosoMain on the named instance TeamDatabases in SQL Server.

TfsConfig changeServerID /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_ConfigurationDB

CodeIndex

Use the codeIndex command to manage code indexing on Azure DevOps Server. For example, you might want to reset the index to fix CodeLens information, or turn off indexing to investigate server performance issues.

TfsConfig codeIndex /indexingStatus | /setIndexing:[on|off|keepupOnly] |
	/ignoreList:[ add | remove | removeAll | view ] <serverPath> |
	/listLargeFiles [/fileCount:FileCount] [/minSize:MinSize] |
	/reindexAll | 
    /destroyCodeIndex [/noPrompt] |
	/temporaryDataSizeLimit:[ view | <SizeInGBs> | disable ] |
	/indexHistoryPeriod:[ view | all | <NumberOfMonths> ] [/collectionName:<collectionName> | /collectionId:<collectionId>]
Option Description
indexingStatus Show the status and configuration of the code indexing service.
setIndexing on: Start indexing all changesets.
off: Stop indexing all changesets.
keepupOnly: Stop indexing previously created changesets and start indexing new changesets only.
ignoreList Specifies a list of code files and their paths that you don't want indexed.

add: Add the file that you don't want indexed to the ignored file list.
remove: Remove the file that you want indexed from the ignored file list.
removeAll: Clear the ignored file list and start indexing all files.
view: See all the files that aren't being indexed.
ServerPath: Specifies the path to a code file.

You can use the wildcard character (*) at the start, end, or both ends of the server path.
listLargeFiles Shows the specified number of files that exceeds the specified size in KB. You can then use the /ignoreList option to exclude these files from indexing.

For this, you'll need Team Foundation Server 2013 with Update 3.
reindexAll Clear previously indexed data and restart indexing.
destroyCodeIndex Delete the code index and remove all indexed data. Does not require confirmation if you use the /noPrompt option.
temporaryDataSizeLimit Control how much temporary data that CodeLens creates when processing changesets. The default limit is 6 GB (2 GB in Update 5).

view: Show the current size limit.
SizeInGBs: Change the size limit.
disable: Remove the size limit.

This limit is checked before CodeLens processes a new changeset. If temporary data exceeds this limit, CodeLens will pause processing past changesets, not new ones. CodeLens will restart processing after the data is cleaned up and falls below this limit. Cleanup runs automatically once a day. This means temporary data might exceed this limit until cleanup starts running.

For this, you'll need Team Foundation Server 2013 with Update 4.
indexHistoryPeriod Control how long to index your change history. This affects how much history CodeLens shows you. The default limit is 12 months. This means CodeLens shows your change history from the last 12 months only.

view: Show the current number of months.
all: Index all change history.
NumberOfMonths: Change the number of months used to index change history.

For this, you'll need Team Foundation Server 2013 with Update 4.
collectionName Specifies the name of the project collection on which to run the CodeIndex command. Required if you don't use /CollectionId.
collectionId Specifies the identification number of the project collection on which to run the CodeIndex command. Required if you don't use /CollectionName

Prerequisites

To use the codeIndex command, you must be a member of the Azure DevOps Administrators security group. See Permission reference for Azure DevOps Server.

Examples

To see the code indexing status and configuration:

TfsConfig codeIndex /indexingStatus /collectionName:"Fabrikam Web Site"

To start indexing all changesets:

TfsConfig codeIndex /setIndexing:on /collectionName:"Fabrikam Web Site"

To stop indexing previously created changesets and start indexing new changesets only:

TfsConfig codeIndex /setIndexing:keepupOnly /collectionName:"Fabrikam Web Site"

To find up to 50 files that are larger than 10 KB:

TfsConfig codeIndex /listLargeFiles /fileCount:50 /minSize:10 /collectionName:"Fabrikam Web Site"

To exclude a specific file from indexing and add it to the ignored file list:

TfsConfig codeIndex /ignoreList:add "$/Fabrikam Web Site/Catalog.cs" /collectionName:"Fabrikam Web Site"

To see all the files that aren't indexed:

TfsConfig codeIndex /ignoreList:view

To clear previously indexed data and restart indexing:

TfsConfig codeIndex /reindexAll /collectionName:"Fabrikam Web Site"

To save all changeset history:

TfsConfig codeIndex /indexHistoryPeriod:all /collectionName:"Fabrikam Web Site"

To remove the size limit on CodeLens temporary data and continue indexing regardless of temporary data size:

TfsConfig codeIndex /temporaryDataSizeLimit:disable /collectionName:"Fabrikam Web Site"

To delete the code index with confirmation:

TfsConfig codeIndex /destroyCodeIndex /collectionName:"Fabrikam Web Site"

Collection

You can use the collection command to attach, detach, or delete a project collection from a deployment of Azure DevOps Server. You can also use the collection command to duplicate the database of an existing collection, rename it, and attach it to the deployment. This process is sometimes referred to as cloning a collection.

TfsConfig collection {/attach | /create | /detach | /delete} [/collectionName:<collectionName>]
    [/description:<collectionDescription>]
    [/collectionDB:<serverName>;<databaseName>]
    [/processModel:Inheritance|Xml]
    [/reportingFolder:<reportingFolderPath>]
    [/clone] [/verify] [/continue]
Option Description
attach Required if neither /detach nor /delete is used. If you specify this option, you must also use the /collectionDB option. As an option, you can also use /collectionName and /clone with this option. If you use the /attach option, the specified collection database will be added to your deployment of Azure DevOps Server.
create Creates a collection.
detach Required if neither /attach nor /delete is used. If you specify this option, you must also use the /collectionName option. If you use the /detach option, the database for the specified collection will be stopped, and the collection will be detached from your deployment of Azure DevOps Server.
delete Required if neither /detach nor /attach is used. If you specify this option, you must also use the /collectionName option. If you use the /delete option, the database for the specified collection will be stopped, and the collection will be permanently detached from Azure DevOps Server. You will not be able to re-attach the collection database to this or any other deployment.
CollectionName Specifies the name of the project collection. If the name of the collection contains spaces, you must enclose the name in quotation marks (for example, "My Collection"). Required if either /detach or /delete is used. If you use this option with /detach or /delete, it specifies the collection that will be detached or deleted. If you use this option with /attach, it specifies a new name for the collection. If you use this option with both /attach and /clone, it specifies the name for the duplicated collection.
CollectionDB Required if /attach is used. This option specifies the name of the server that is running SQL Server and the name of the collection database that is hosted on that server.
ServerName Specifies the name of the server that hosts the configuration database for Azure DevOps Server, and the name of the instance if you want to use an instance other than the default instance. If you specify an instance, you must use the format: ServerName\InstanceName.
DatabaseName Specifies the name of the configuration database. By default, the name of this database is TFS_ConfigurationDB.
clone If you specify this option, the original collection database will be attached as a clone in SQL Server, and this database will be attached to Azure DevOps Server. This option is primarily used as part of splitting a project collection.

Tip

The /delete option will not delete the collection database from SQL Server. After deleting the collection database from Azure DevOps Server, you can delete the database manually from SQL Server.

Prerequisites

To use the collections command, you must be a member of the Team Foundation Administrators security group as well as the local Administrators group on the machine running TfsConfig. You must also be a member of the sysadmin security role for all instances of SQL Server used by Azure DevOps Server databases. If your deployment is integrated with SharePoint and you are using the /delete option, you must also be a member of the Farm Administrators group for the SharePoint farm from which you are deleting the site collection.

For more information, see Permission reference for Azure DevOps Server.

Remarks

To manage collections interactively or to create a collection, you can use the Project Collections node in the administration console for Azure DevOps. See Manage project collections.

Examples

The following example shows how to permanently remove the Contoso Summer Intern Projects project collection from a deployment of Azure DevOps Server.

TfsConfig collection /delete /CollectionName:"Contoso Summer Intern Projects"
TFSConfig - Team Foundation Server Configuration Tool
Copyright � Microsoft Corporation. All rights reserved.
Deleting a project collection is an irreversible operation. A deleted collection cannot be reattached to the same or another Team Foundation Server. Are you sure you want to delete 'Contoso Summer Intern Projects'? (Yes/No)
Yes
Found Collection 'Contoso Summer Intern Projects' Deleting...
The delete of collection 'Contoso Summer Intern Projects' succeeded.

The following example shows how to duplicate the Contoso Summer Interns Projects project collection, name it Contoso Winter Interns Projects, and attach the duplicate collection to the deployment of Azure DevOps Server.

TfsConfig collection /attach /collectiondb:"ContosoMain;TFS_Contoso Summer Interns Projects"
    /CollectionName:"Contoso Winter Intern Projects" /clone

ColumnStoreIndex

Note

Command availability: Requires TFS 2015.2 and later versions.

You use the columnStoreIndex command to enable or disable column store indexes for the databases used by your Azure DevOps Server deployment.

TfsConfig columnStoreIndex /enabled:<true|false>
	/sqlInstance:<serverName>
	/databaseName:<databaseName>
Option Description
enabled Specifies whether you are enabling or disabling column store index for the given SQL instance and database.
sqlInstance Specifies the name of the server that hosts the database for which column store index is being enabled or disabled, and the name of the instance if an instance other than the default is used. If you specify an instance, you must use the format: ServerName\InstanceName.
databaseName Specifies the name of the database for which column store index is being enabled or disabled.

Prerequisites

To use the columnStoreIndex command, you must be a member of the sysadmin role for the specified SQL Server instance.

Remarks

You would typically use the columnStoreIndex command if you were moving a database from a SQL instance which supported column store index to one which did not. In this case, you would need to disable all column store indexes before you could successfully move the databases. Similarly, if you were moving a database back to a SQL instance which supported column store index you might wish to re-enable column store index in order to save space and gain performance.

Example

The following example shows how to enable column store index, for a database named TFS_DefaultCollection on a SQL instance running on a server named ContosoMain on the named instance TeamDatabases.

TfsConfig columnStoreIndex /enabled:true /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection

ConfigureMail

Configure the server that runs Azure DevOps Server to use an existing SMTP server for email alerts.

TfsConfig configureMail /Enabled:<true|false> /FromEmailAddress:<emailAddress> /SmtpHost:<SMTPHostName>
Option Description
FromEmailAddress Specifies the address from which to send email notifications from Azure DevOps Server for a check in, work item assigned to you, or other notifications. This address is also checked for validity and, depending on your server configuration, might have to represent a valid email account on the mail server. If the address does not exist or is not valid, the default email address is used.
SmtpHost Specifies the name of the server that hosts the mail server.

Prerequisites

To use the configureMail command, you must be a member of the Team Foundation Administrators security group on the Azure DevOps application-tier server. For more information, see Permission reference for Azure DevOps Server

Remarks

You can also use the administration console to configure Azure DevOps Server to use an SMTP server.

Example

The following example shows the syntax used to configure the from email address to TFS@contoso.com and the SMTP mail server as ContosoMailServer:

TfsConfig configureMail /FromEmailAddress:TFS@contoso.com /SmtpHost:ContosoMailServer

DBCompression

You use the dbCompression command to enable or disable database page compression for the databases used by your Azure DevOps Server deployment.

TfsConfig dbCompression /pageCompression:[enable|disable]
	/sqlInstance:<serverName>
	/databaseName:<databaseName>
	[/rebuildNow [/offline]]
Option Description
pageCompression Specifies whether you are enabling or disabling page compression for the given SQL instance and database.
sqlInstance Specifies the name of the server that hosts the database for which page compression is being enabled or disabled, and the name of the instance if an instance other than the default is used. If you specify an instance, you must use the format: ServerName\InstanceName
databaseName Specifies the name of the database for which page compression is being enabled or disabled.
rebuildNow Optional. Specifies whether database indexes should be rebuilt (and compressed or decompressed as necessary) immediately. If not used, indexes will be rebuilt by a background job which runs weekly.
offline Optional. Used only in combination with /rebuildNow. If /offline is not specified, indexes will be rebuilt online. If /offline is specified, indexes will be rebuilt offline. This will block other operations, but may be faster than an online index rebuild.

Prerequisites

To use the dbCompression command, you must be a member of the sysadmin role for the specified SQL Server instance.

Remarks

You would typically use the dbCompression command if you were moving a database from a SQL instance which supported compression to one which did not. In this case, you would need to disable compression and decompress all indexes before you could successfully move the databases. Similarly, if you were moving a database back to a SQL instance which supported compression you might wish to re-enable compression in order to save space.

This command only changes whether Azure DevOps Server prefers to use database page compression or not - your databases must still be hosted in a SQL instance whose edition supports compression. See Features Supported by the Editions of SQL Server for more information.

Example

The following example shows how to enable page compression immediately, with indexes rebuilt online, for a database named TFS_DefaultCollection on a SQL instance running on a server named ContosoMain on the named instance TeamDatabases.

TfsConfig dbCompression /pageCompression:enable /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection /rebuildNow

DeleteTestResults

You use the deleteTestResults command to delete old stored test results from your collection store. This is typically done to reduce the store size or to reduce the time taken when migrating test results to a new schema.

TfsConfig deleteTestResults /ageInDays:<number> /sqlInstance:<serverName> /databaseName:<databaseName>
    [/type:[automated|manual|all]]
    [/preview]
Option Description
ageInDays Test results older than the specified number of days will be deleted or previewed.
sqlInstance The name of the server that hosts the database for which test results are being deleted or previewed, and the name of the instance if an instance other than the default is used. If you specify an instance, you must use the format: ServerName\InstanceName.
databaseName The name of the database for which test results are being deleted or previewed.
type Optional. The type of test results to delete. Valid values are automated, manual, and all.
preview Optional. Display the number of test results that would be deleted based on the age in days, but do not delete these results.

Prerequisites

To use the deleteTestResults command, you must be a member of the sysadmin role for the specified SQL Server instance.

Remarks

Use the /preview parameter to see the test results sorted by project name and year without deleting these results.

Example

The following example shows how to delete manual test results older than 60 days for a database named TFS_DefaultCollection on a SQL instance running on a server named ContosoMain on the named instance TeamDatabases.

TfsConfig deleteTestResults /ageInDays:60 /sqlInstance:ContosoMain\TeamDatabases /databaseName:TFS_DefaultCollection /type:manual

DeploymentPool

The deploymentPool command is designed to migrate all deployment groups from one deployment pool to another.

TfsConfig deploymentpool /migrateDeploymentGroups /fromPool:<source pool name> /toPool:<destination pool name>
Option Description
fromPool Source pool name.
toPool Destination pool name.

Identities

The identities command lists or changes the security identifier (SID) of users and groups in your deployment of Azure DevOps Server. You might need to change or update the SID for users and groups in one of the following scenarios:

  • Changing the domain of your deployment

  • Changing from a workgroup to a domain or from a domain to a workgroup

  • Migrating accounts across domains in Active Directory

Note

You do not need to run this command if you are changing domains within the same Active Directory forest. Azure DevOps Server will automatically handle SID changes for moves within the same forest.

TfsConfig identities [/change /fromdomain:<domainName1> /todomain:<domainName2>
    [/account:<accountName> [/toaccount:<accountName>]] [/sqlInstance:<serverName> /databaseName:<databaseName>]
Option Description
change Specifies that you want to change identities instead of listing them.
fromdomain Required when using /change. Specifies the original domain of the identities that you want to change. If you are changing from a workgroup environment, specifies the name of the computer.
todomain Required when using /change. Specifies the domain to which you want to change identities. If you are changing to a workgroup environment, specifies the name of the computer.
account Specifies the name of an account for which you want to list or change identities.
toaccount Specifies the name of an account to which you want to change identities.
SQLInstance Specifies the name of the server that is running SQL Server and the name of the instance if you want to use an instance other than the default instance. If you specify an instance, you must use the following format:

ServerName\InstanceName
DatabaseName Specifies the name of the configuration database for Azure DevOps Server.

Prerequisites

To use the identities command, you must be a member of the Team Foundation Administrators security group and a member of the sysadmin role for all SQL Server instances that Team Foundation Server uses. For more information, see Set administrator permissions for Azure DevOps Server.

Remarks

You can optionally specify the database to change identities before you configure an application-tier server for the deployment. For example, you might specify the database to change the service account when you clone a deployment of Azure DevOps Server.

When you change identities, the target account or accounts must already exist in Windows.

You must wait for the next identity synchronization with Windows before the properties of accounts that you change with this command will be updated. This requirement includes changes from group to user, user to group, and domain account to local account.

Examples

The following example shows how to list the names of all Windows users and groups that are stored in Azure DevOps Server and to display whether the SID for each user or group matches the SID in Windows. The Contoso1 domain administrators created domain groups such as Contoso1\\Developers and Contoso1\\Testers to help ease the management of permissions across Azure DevOps Server, SQL Server Reporting Services, and SharePoint Products.

TfsConfig identities

    TFSConfig - Team Foundation Server Configuration Tool
    Copyright � Microsoft Corporation. All rights reserved.

    Account Name Exists (see note 1) Matches (see note 2)
    --------------------------------------------------------------------
    CREATOR OWNER True True
    Contoso1\hholt True True
    BUILTIN\Administrators True True
    Contoso1\Developers True True
    Contoso1\Testers True True
    Contoso1\PMs True True
    Contoso1\jpeoples True True
    Contoso1\Domain Admins True True
    Contoso1\SVCACCT1 True True

    9 security identifiers (SIDs) were found stored in Team Foundation Server. Of these, 9 were found in Windows. 0 had differing SIDs.

The following example shows how to change the SIDs for all accounts in Azure DevOps Server from the Contoso1 domain to the SIDs for accounts that have matching names in the ContosoPrime domain. Only account names that match will have their SIDs updated. For example, if the hholt account exists as Contoso1\hholt and ContosoPrime\hholt, the account SID will be changed to the SID for ContosoPrime\hholt. If the ContosoPrime\hholt account does not exist, the SID will not be updated for Contoso1\hholt.

TfsConfig identities /change /fromdomain:Contoso1 /todomain:ContosoPrime

The following example shows how to change the account for a single user account, Contoso1\hholt, to the account for another user account, ContosoPrime\jpeoples.

TfsConfig identities /change /fromdomain:Contoso1 /todomain:ContosoPrime /account:hholt /toaccount:jpeoples

The following example shows how to change the SID of the NT AUTHORITY\NETWORK SERVICE service account that is used in the deployment of Azure DevOps Server when changing the domain of the deployment from Contoso1 to ContosoPrime. To change a system account such as Network Service, you must follow a two-stage process. You first change the service account from NT AUTHORITY\NETWORK SERVICE to a domain account in the new domain TempSVC, and then you change the account back to NETWORK SERVICE on the server in the new domain. The configuration database is hosted on the server that is named ContosoMain on the named instance TeamDatabases in SQL Server.

TfsConfig identities /change /fromdomain:"NT AUTHORITY" /todomain:ContosoPrime /account:"NETWORK SERVICE"
  /toaccount:TempSVC /SQLInstance:ContosoMain\TeamDatabases /DatabaseName:TFS_ConfigurationDB

TfsConfig identities /change /fromdomain:ContosoPrime /todomain:"NT AUTHORITY" /account:TempSVC
	/toaccount:"NETWORK SERVICE"

Jobs

You can use the jobs command to create a log file that provides the details of the most recent job activity for a specific project collection, or to retry a job for one or all project collections.

TfsConfig jobs /retry|dumplog [/CollectionName:<collectionName>] [/CollectionId:<id>]
Option Description
retry Required if /dumplog is not used. Specifies that the most recent job will be reattempted for the specified project collection. If you use this option, you must also use either the /CollectionName or the /CollectionID option.
dumplog Required if /retry is not used. Specifies that the most recent job activity for the collection will be sent to a log file. If you use this option, you must also use either the /CollectionName or /CollectionID option.
CollectionName Required if /CollectionID is not used. Specifies the name of the collection for which the most recent job will be either retried (/retry) or logged (/dumplog). If you want to specify all collections, you can use an asterisk (*).
CollectionID Required if /CollectionName is not used. Specifies the identification number of the collection for which the most recent job will be either retried (/retry) or logged (/dumplog).

Prerequisites

To use the jobs command, you must be a member of the Azure DevOps Administrators security group. For more information, see Permission reference for Azure DevOps Server.

Remarks

To retry a job interactively, you can open the administration console for Azure DevOps, select the Status tab for the collection, and then select Retry Job. For more information, see Open the Azure DevOps Administration Console.

Example

The following example shows how to create a log file that lists the most recent job activity for the Contoso Summer Intern Projects project collection in Azure DevOps Server.

TfsConfig jobs /dumplog /CollectionName:"Contoso Summer Intern Projects"

OfflineDetach

You use the offlineDetach command to make an offline collection database into a detached offline collection database.

TfsConfig offlineDetach /configurationDB:<databaseName>
    /collectionDB:<databaseName>
Option Description
configurationDB Specifies the name of the configuration database to be used.
collectionDB Specifies the name of the collection database to be detached.

Prerequisites

To use the offlineDetach command, you must be a member of the sysadmin role for the specified SQL Server instance.

Remarks

This command modifies the schema of the specified collection database and should never be run against databases which are in use by a Team Foundation Server deployment. If your databases are in use by a Team Foundation Server deployment, use TfsConfig collection /detach instead.

This command is useful when you need to restore an individual collection database from backup without restoring other collection databases that are part of the same Azure DevOps Server deployment. Previously this required restoring a complete and consistent set of databases (configuration and all collections) to a staging environment, configuring an Azure DevOps Server deployment using those databases, and detaching the one collection of interest.

Instead, you can now restore consistent copies of the configuration database and the collection database of interest and run the offlineDetach command. The detached collection database can then be attached to any Azure DevOps Server deployment at an appropriate version.

Example

The following example illustrates detaching a collection database named TFS_PrimaryCollection, using a configuration database named TFS_Configuration, with both on a SQL instance running on a server named ContosoTemp on the named instance Backups.

TfsConfig offlineDetach /configurationDB:ContosoTemp\Backups;TFS_Configuration /collectionDB:ContosoTemp\Backups;TFS_PrimaryCollection

Proxy

You can use the proxy command to update or change the settings used by Azure DevOps Proxy Server. Azure DevOps Proxy Server provides support for distributed teams to use version control by managing a cache of downloaded version control files in the location of the distributed team. By configuring Azure DevOps Proxy Server, you can significantly reduce the bandwidth needed across wide area connections. In addition, you do not have to manage downloading and caching of version files; management of the files is transparent to the developer who is using the files. Meanwhile, any metadata exchanges and file uploads continue to appear in Azure DevOps Server. If you use the Azure DevOps Services to host your development project in the cloud, you can use the Proxy command to not only manage the cache for projects in the hosted collection, but also to manage some of the settings used by that service.

For more information about installing Azure DevOps Proxy Server and initial configuration of the proxy,

see How to: Install Azure DevOps Proxy Server and set up a remote site. For more information about configuring proxy on client computers, see Azure DevOps Version Control Command Reference.

TfsConfig proxy /add|delete|change [/Collection:<teamProjectCollectionURL> /account:<accountName>]
	/Server:<TeamFoundationServerURL> [/inputs:Key1=Value1; Key2=Value2;...] [/continue]
Option Description
add Adds the specified server or collection to the proxy list in the Proxy.config file. You can run /add multiple times to include more collections or servers. When using /add with a collection hosted on Azure DevOps Services, you will be prompted for your credentials on Azure DevOps Services.
change Changes the credentials stored as the service account for Azure DevOps Services. The /change option is only used for Azure DevOps Services; it should not be used for local deployments of Azure DevOps Server.
delete Removes the specified server or collection from the proxy list in the Proxy.config file.
account Specifies the account used as the service account for the proxy in Azure DevOps Services. This option is only used for Azure DevOps Services in conjunction with the /change option.

The default service account used for Azure DevOps Services is "Account Service."
continue Continues the execution of the command even if the verification process produces warnings.
Collection Specifies the URL of the project collection that is hosted on Azure DevOps Services, in AccountName.DomainName/CollectionName format.
account Specifies the name of the account that is used as the service account for Azure DevOps Services. If the account name has spaces, the name must be enclosed within quotation marks (""). All special characters in account names must be specified in accordance with command-line syntax.
account Specifies the URL of an Azure DevOps Server deployment, in ServerURL:Port/tfs format.
PersonalAccessTokenFile Optionally specifies the path to a file that contains a personal access token. This token will be used authenticate to the collection or account while registering a proxy. (Added in TFS 2018 Update 1)
inputs Optional. Specifies additional settings and values to use while configuring the proxy.!

For example, values for GvfsProjectName and GvfsRepositoryName can be used to configure a Git repository for use with Git Virtual File System (GVFS) (Added in TFS 2018 Update 1)

Prerequisites

To use the proxy command, you must be a member of the Azure DevOps Administrators security group and an administrator on the proxy server. For more information, see Permission reference for Azure DevOps Server.

Remarks

You use the proxy command to update the existing configuration of Azure DevOps Server Proxy. You cannot use the proxy command for initial installation and configuration of the proxy.

Examples

The following example shows how to add an Azure DevOps Server deployment named FABRIKAM to the proxy list.

TfsConfig proxy /add /Server:http://www.fabrikam.com:8080/tfs 

The following example shows how to add a project collection hosted on Azure DevOps Services to the proxy list using a Personal Access Token to authenticate. This token will be used only to register the proxy with the Azure DevOps Services account - the default service account will still be used to run the proxy. This parameter was added in TFS 2018 Update 1 to support registering a Proxy with Azure DevOps Services without requiring a login prompt.

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver

The following example shows how to add a project collection to the proxy list. This example uses a personal access token to authenticate against the collection specified with the /Collection parameter. The personal access token to be used is saved to a file at c:\PersonalAccessToken.txt.

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver
	/PersonalAccessTokenFile:c:\PersonalAccessToken.txt

The following example shows how to change the service account used by the proxy for the project collection hosted on Azure DevOps Services. The collection is named PhoneSaver, the account name used for Azure DevOps Services is HelenaPetersen.fabrikam.com, and the service account used by the proxy is being changed to My Proxy Service Account. Because the account name contains spaces, quotation marks are used to enclose the name.

TfsConfig proxy /change /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver
	/account:"My Proxy Service Account"

The following example shows how to add a Git repository for use with GVFS.

TfsConfig proxy /add /Collection:https://HelenaPetersen.tfs.visualstudio.com/PhoneSaver /inputs:GvfsProjectName=PhoneSaver;GvfsRepositoryName=AnotherRepository

RebuildWarehouse

You can use the rebuildWarehouse command to rebuild the SQL Server Reporting Services and SQL Server Analysis Services databases that Azure DevOps Server uses.

TfsConfig rebuildWarehouse /analysisServices | /all [/ReportingDataSourcePassword:Password]
Option Description
analysisServices Required if /all is not used. Specifies that only the database for Analysis Services will be rebuilt. If no database exists for Analysis Services, you must also use the /reportingDataSourcePassword option.
all Required if /analysisServices is not used. Specifies that all reporting and analysis databases that Azure DevOps Server uses will be rebuilt.
reportingDataSourcePassword Required if the TFS_Analysis database does not exist. Specifies the password of the account that is used as the data sources account for SQL Server Reporting Services (TFSReports). For more information, see Service accounts and dependencies in Azure DevOps Server.

Prerequisites

To use the rebuildWarehouse command, you must be a member of the following groups:

  • The Azure DevOps Administrators security group and the Administrators security group on the server or servers that are running the administration console for Azure DevOps

  • The sysadmin group on the server or servers that are running the instance of SQL Server that hosts the databases for Azure DevOps Server

For more information, see Permission reference for Azure DevOps Server.

Remarks

You might use this command when moving or splitting a project collection, restoring data, or otherwise changing the configuration of your deployment.

To start the rebuild of these databases interactively, you can use the Reporting node in the administration console for Azure DevOps. For more information, see Open the Azure DevOps Administration Console.

Example

The following example shows how to rebuild the Analysis Services database for a deployment of Azure DevOps Server.

TfsConfig rebuildWarehouse /analysisServices

    TFSConfig - Team Foundation Server Configuration Tool
    Copyright � Microsoft Corporation. All rights reserved.
    The Analysis Services database was successfully rebuilt.

RegisterDB

Use registerDB to update name of the server that hosts the configuration database in Azure DevOps Server. You might use this command when restoring the configuration database to new hardware or when changing the domain of a deployment.

TfsConfig registerDB /sqlInstance:<serverName> /databaseName:<databaseName>
Option Description
SQLInstance Required. Specifies the name of the server that is running SQL Server and the name of the instance if you want to use an instance other than the default instance. If you specify an instance, you must use the format: ServerName\InstanceName.
databaseName Required. Specifies the name of the configuration database. By default, this is Tfs_Configuration.

Prerequisites

To use the registerDB command, you must be a member of the Azure DevOps Administrators group on the application-tier server for Azure DevOps and a member of the sysadmin group in SQL Server on the data-tier server for Azure DevOps. For more information, see Permission reference for Azure DevOps Server.

Remarks

Back up the databases for Azure DevOps Server before you use this command.

For the registerDB command to succeed, the following application pools and programs must be running:

  • Azure DevOps Server Application Pool (application pool)
  • ReportServer (application pool)
  • SQL Server Reporting Services (program)

You must provide the exact name or address of the configuration database for this command to operate correctly. If you must change the server on which this database is stored, you must ensure that Azure DevOps Server points to the new location.

Example

The following example redirects Azure DevOps Server to a configuration database that is located on the server ContosoMain in the SQL Server instance TeamDatabases.

TfsConfig registerDB /SQLInstance:ContosoMain\TeamDatabases /databaseName:Tfs_Configuration

RemapDBs

The remapDBs command redirects Azure DevOps Server to its databases when they are stored on more than one server and you are restoring, moving, or otherwise changing the configuration of your deployment. For example, you must redirect Azure DevOps Server to any databases for project collections if they are hosted on a separate server or servers from the configuration database. You must also redirect Azure DevOps Server to the server or servers that are running SQL Server Analysis Services or SQL Server Reporting Services if those databases are hosted on a separate server or instance from the configuration database.

TfsConfig remapDBs /DatabaseName:ServerName;DatabaseName /SQLInstances:ServerName1,ServerName2
	[/AnalysisInstance:<serverName>] [/AnalysisDatabaseName:<databaseName>]
	[/preview] [/continue]
Option Description
DatabaseName Specifies the name of the server that hosts the database that you want to map for Azure DevOps Server, in addition to the name of the database itself.
SQLInstances Specifies the name of the server that is running SQL Server, in addition to the name of the instance if you want to use an instance other than the default instance.

If you are specifying more than one server, you must use a comma to separate multiple pairs of server and instance names.
AnalysisInstance Optional. Specifies the name of the server and instance that hosts SQL Server Analysis Services. Use this option to specify the server and instance that hosts the Analysis Services database.
AnalysisDatabaseName Optional. Specifies the name of the Analysis Services database that you want to use with Azure DevOps Server if you have more than one such database on the server that you specified with the /AnalysisInstance option.
preview Optional. Displays the actions that you must take to update the configuration.
continue Optional. Specifies that the RemapDB command should continue even if an error occurs during the attempt to locate one or more databases. If you use the /continue option, any collections whose databases are not found on the server or servers that you specify will be reconfigured to use the server and instance that hosts the configuration database.

Prerequisites

To use the remapDBs command, you must be a member of the Azure DevOps Administrators security group and a member of the sysadmin security group for any SQL Server databases that Azure DevOps Server uses. For more information, see Permission reference for Azure DevOps Server.

Remarks

You use the remapDBs command to reconfigure Azure DevOps Server to use different servers and instances of SQL Server from the servers and instances in the original installation.

Example

The following example shows how to redirect Azure DevOps Server to its configuration database TFS_Configuration. This database is hosted on ContosoMain on the named instance TeamDatabases. Its project collection databases are stored on both ContosoMain\TeamDatabases and the default instance on Contoso2.

TfsConfig remapDBs /DatabaseName:ContosoMain\TeamDatabases;TFS_Configuration
	/SQLInstances:ContosoMain\TeamDatabases,Contoso2

RepairJobQueue

You use the repairJobQueue command to fix scheduled jobs that have stopped running for deployment and collection hosts.

TfsConfig repairJobQueue

Prerequisites

To use the repairJobQueue command, you must be a member of the local administrators group on the machine running TfsConfig. You must also be a member of the sysadmin security role for all the SQL Server instances used by the Azure DevOps Server deployment.

Remarks

You would typically use the repairJobQueue command if you notice any scheduled jobs are not running.
The command does not take any arguments, and requires the Azure DevOps Server deployment to be configured.

Example

TfsConfig repairJobQueue

Settings

You can use the settings command to automate changes to the uniform resource locator (URL) that is used by the notification interface and for the server address for Azure DevOps Server. By default, the notification interface URL and the server URL match in Azure DevOps Server, but you can configure separate URLs. For example, you might want to use a different URL for the automatic e-mails that Azure DevOps Server generates. You must run this tool from the application tier to update all servers so that they use the new URLs.

To change these URLs interactively or to just view the current settings, you can use the administration console for Azure DevOps. See Administrative task quick reference.

TfsConfig settings [/publicURL:URL]
Option Description
publicUrl Specifies the URL of the application-tier server for Azure DevOps. This value is stored in the configuration database for Azure DevOps.

Prerequisites

You must be a member of the Azure DevOps Administrators security group and the Administrators group on the application-tier server. For more information, see Set administrator permissions for Azure DevOps Server.

Remarks

The settings command changes connection information for server-to-server communication in a deployment of Azure DevOps Server. The URL that is specified in /publicURL must be available to all servers within the deployment.

Example

The following example changes the value of NotificationURL to http://contoso.example.com/tfs and the value of ServerURL to http://contoso.example.com:8080/tfs.

TfsConfig settings /publicURL:http://contoso.example.com:8080/tfs

Setup

You use the setup command to uninstall features which are currently configured on the machine where you run the command.

TfsConfig setup /uninstall:<feature[,feature,...]>

Option

Description

/uninstall

Specifies one or more features to be uninstalled from the machine where you run the command. Options include: All, ApplicationTier, Search, and VersionControlProxy.

Prerequisites

To use the setup command, you must be a member of the Azure DevOps Administrators security group.

Examples

The following example uninstalls all Azure DevOps Server features from the current machine.

TfsConfig setup /uninstall:All

The following example uninstalls the application tier and build features from the current machine.

TfsConfig setup /uninstall:ApplicationTier 

TCM

When upgrading to the latest version of Azure DevOps Server, the system automatically attempts to upgrade the Test Management components, including test plans and suites.

If the automatic migration fails, use the TCM command to upgrade your test plans and test suites manually to their respective work item types (WITs).

TFSConfig TCM /upgradeTestPlans|upgradeStatus /CollectionName:CollectionName /TeamProject:TeamProjectName

Option

Description

/upgradeTestPlans

Required unless /upgradeStatus is used.

Converts existing test plan and test suites to point to the work item-based test plans and test suites. It also updates existing test management data and links between other existing test artifacts such as test points, test runs, and test results.

/upgradeStatus

Required unless /upgradeTestPlans is used.

Reports the migration status of test data for the specified project. It will also indicate whether the specified project has any test plans.

/CollectionName:CollectionName

Required. Specifies the project collection that contains the project for which you want to migrate test data or check the migration status.

If there are spaces in the name of the project collection, enclose the name in quotation marks, for example, "Fabrikam Fiber Collection".

/TeamProjectName:TeamProjectName

Required. Specifies the project for which you want to migrate test data or check the migration status. This project must be defined in the collection that you specified by using the /collectionName parameter.

If there are spaces in the name of the project, enclose the name in quotation marks, for example, "My Project".

Prerequisites

You must be a member of the Team Foundation Administrators security group, and an administrator on the application-tier server.

See Set administrator permissions for Azure DevOps Server.

Remarks

Your application-tier server must be upgraded to the latest version of Azure DevOps Server 2019 to use this command.

Before you can use the TCM command, you must first import the test plan work item definition and the test plan category into the project.

To learn more about the migration and when to use this command, see Manual updates to support test management.

The TCM command is applied to individual projects. If you need to upgrade test plans in more than one project, you will have to run it against each project individually.

You must run the TCM command from the tools directory for Azure DevOps Server. By default, that location is: drive:\%programfiles%\TFS 12.0\Tools.

You use the TCM command only in the event that automatic migration of existing test data fails.

To learn more about the migration and when to use this command, Manual updates to support test management. If you can't access test plans or test suites that were defined before the server upgrade occurred, run TFSConfig TCM upgradeStatus to determine the status of the migration.

You run the TCM command for an individual project. If you need to upgrade more than one project, you will have to run it against each project in turn.

Examples

The following example shows how to check the status of test plan upgrade on the Fabrikam Fiber project hosted on the default project collection (DefaultCollection):

tfsconfig tcm /upgradeStatus /CollectionName:DefaultCollection /TeamProject:"Fabrikam Fiber"

Unattend

Command availability: Azure DevOps Server 2019

The unattend command is designed for users who are familiar with Azure DevOps Server and the configuration process, and who need to install Azure DevOps Server on different machines.

For example, if you use Azure DevOps Build, you can use the unattend command to install multiple build servers using the same configuration file.

Use the /create option to create an unattend file. This file defines all configuration parameters for an Azure DevOps Server installation. Next, use the /configure option to actually perform the configuration.

This process allows you to configure Azure DevOps Server from start to finish without having to provide input during the installation process. In the case of multiple installations, this also helps ensure that the exact same configuration parameters are used across multiple servers.

TfsConfig unattend /create|configure /type:InstallType /unattendfile:ConfigurationFileName 
    [/inputs:Key1=Value1; Key2=Value2;...] [/verify] [/continue]
Option Description
create Creates the unattend file with the name and parameters you specify.
configure Configures Azure DevOps Server using the unattend file and parameters you specify. You must use /type or /unattendfile with this option.
type Specifies the type of configuration to use. When you use /configure, either /type or /unattendfile are required, but you cannot use both.
unattendfile Specifies the unattend file to create or use, depending on whether the initial parameter is /create or /configure. When you use /configure, either /unattendfile or /type is required.
inputs Optional. If you use /create, specifies settings and values to use when creating the unattend file. If you use /configurespecifies additional settings and values to use in conjunction with the unattend file.

As an alternative to using /inputs, you can manually edit the unattend file in any plain-text editor. This is necessary for certain input types, such as ServiceAccountPassword or PersonalAccessToken as those secret values cannot be set using the /inputs parameter.
verify Optional. Specifies a configuration run that only completes verification checks based on the unattend file, inputs, and configuration type. This is an alternative to performing a complete configuration.
continue Optional. Specifies that /create or /configure should continue regardless of warnings from verification checks.
InstallType Description
NewServerBasic Configures the essential development services for Azure DevOps Server. This includes Source Control, Work Items, Build, and optionally Search.
NewServerAdvanced Configures the essential development services and allows optional configuration of integration with Reporting Services.
Upgrade Upgrades Azure DevOps Server to the current version from a supported previous release.
PreProductionUpgrade Test the upgrade on an existing Azure DevOps Server deployment in a pre-production environment. This is typically done using databases restored from production backups. This scenario includes additional steps to ensure that the new deployment will not interfere with the production deployment.
ApplicationTierOnlyBasic Configure a new application tier using existing settings from the supplied configuration database. This option allows you to get a new application tier up and running quickly using existing settings. If you want the ability to change existing settings, use the Advanced ApplicationTierOnlyAdvanced type instead.
ApplicationTierOnlyAdvanced Configure a new application tier with full control over all settings. Settings will default to existing values from the supplied configuration database. If you want to preserve all of your existing settings, use the ApplicationTierOnlyBasic type instead.
Clone Configure a new Azure DevOps Server deployment which is a clone of an existing deployment. This is typically done, using databases restored from production backups, to create an environment where configuration changes, extensions, and other modifications can be tested. This scenario includes additional steps to ensure that the new deployment will not interfere with the production deployment.
Proxy Configures a version control proxy service.

Prerequisites

  • You must be a member of the Administrators group on the computer where you are installing the software.

  • Depending on the type of installation, you might also require additional administrator permissions.

For example, if you are using the unattend command to install Azure DevOps Server , you must be a member of the sysadmin group on the instance of SQL Server that will support Azure DevOps Server. For more information, see the Q & A section of Add server-level administrators to Azure DevOps Server.

Remarks

Before you can use the unattend command to configure Azure DevOps Server, you must create the service accounts that you will use as part of your deployment. You must also install any prerequisite software for your chosen installation type. This includes Azure DevOps Server itself. You must install Azure DevOps Server but you don't have to configure it because the unattend command will do that for you.

The unattend command configures Azure DevOps Server components. It does not perform the initial installation of the software. It configures the software according to your specifications after the bits are present on the computer.

Examples

The following example shows how to create an unattend file for a basic installation of Azure DevOps Server.

TfsConfig unattend /create /type:basic /unattendfile:configTFSBasic.ini

In this example, the unattend file is created in the same directory as the command. A log file is created as part of the command, and the location of the file is returned in the command as part of executing the command.

The following example shows how to specify a Git repository for use with GVFS during configuration.

TfsConfig unattend /configure /type:proxy /inputs:ProjectCollectionUrl=http://FabrikamFiberTFS:8080/tfs/defaultcollection;GvfsProjectName=Fabrikam-Fiber-Git;GvfsRepositoryName=TestGit

The following example shows how to create an unattend file for the configuration of an Azure DevOps Proxy Server.

Important

In this example, if the administrators want to use a personal access token for authentication they will need to manually edit the file to specify the personal access token value. This can be achieved by adding a line for the personal access token in the created unattend file like: PersonalAccessToken=PersonalAccessTokenValue.

TfsConfig unattend /create /type:proxy "/inputs:ProjectCollectionUrl=http://FabrikamFiberTFS:8080/tfs/defaultcollection" /unattendFile:c:\unattend.txt

The following example shows how to create an unattend file for the configuration of Azure DevOps Server Build on a server using FabrikamFiber\BuildSVC as the build service account, and then configure Azure DevOps Server Build using that unattend file.

Important

In this example, after creating the unattend file, the administrator manually edits the file to specify the password for the build service account. Adding the password as an input using ServiceAccountPassword=Password; doesn't add the password information to the file.

TfsConfig unattend /create /type:build /unattendfile:configTFSBuild.ini
    /inputs:IsServiceAccountBuiltIn=false;ServiceAccountName=FabrikamFiber\\BuildSVCTFSConfig
TfsConfig unattend /configure /unattendfile:configTFSBuild.ini

The first command returns the following:

Microsoft (R) TfsConfig - Team Foundation Server Configuration Tool
Copyright (c) Microsoft Corporation. All rights reserved.

Command: unattend
Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\TFS_Build Configuration_0512_203133.log

The second command returns the following information, including the name of the server where Azure DevOps Build was configured FabrikamFiberTFS and the project collection associated with the controller DefaultCollection:

    Microsoft (R) TfsConfig - Team Foundation Server Configuration Tool
    Copyright (c) Microsoft Corporation. All rights reserved.

    Command: unattend

    ---------------------------------------------
            Inputs:
    ---------------------------------------------

    Feedback
            Send Feedback: True

    Build Resources
            Configuration Type: create
            Agent Count: 1
            New Controller Name: FabrikamFiberTFS - Controller
            Clean Up Resources: False

    Project Collection
            Collection URL: http://FabrikamFiberTFS:8080/tfs/defaultcollection

    Windows Service
            Service Account: FabrikamFiber\BuildSVC
            Service Password: ********

    Advanced Settings *
            Port: 9191

    ---------------------------------------------
            Running Readiness Checks
    ---------------------------------------------

    [1/2] System Verifications
    [2/2] Build Service Verifications

    ---------------------------------------------
            Configuring
    ---------------------------------------------

            root
    [1/4] Install Team Foundation Build Service
            Installing Windows services ...
            Adding service account to groups ...
            Setting ACL on a windows service
    [2/4] Enable Event Logging
            Adding event log sources ...
            Token replace a config file
            RegisterBuildEtwProvider
            Configuring ETW event sources ...
    [3/4] Register with Team Foundation Server
            Registering the build service
    [4/4] Start Team Foundation Build Service
            StartBuildHost
            Starting Windows services ...
            Marking feature configured status
    [Info] [Register with Team Foundation Server] Firewall exception added for port
    9191

    TeamBuild completed successfully.
    Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\TFS_Build Configuration_0512_203322.log

ZipLogs

The ziplogs command is designed to gather logs and drops a zip at ProgramData\Microsoft\Azure DevOps\Server Configuration.

TfsConfig zipLogs

TfsConfig zipLogs