This article will discuss about a case where we have seen a change in a work item field, after upgrade to TFS 2015. The scenario discussed below might not be exactly same in your case, but the troubleshooting and resolution discussed could help identify the exact root cause.
Prior to upgrade to TFS 2015, we had a customized workitem type, with a text box which allows string values to be typed in, as the UserName field shown below:
After the upgrade, the behavior of this field from Visual Studio appears to be the same, however, in TWA (team web access), the field has transformed to a drop down, which holds a list of valid users added to TFS, and doesn’t allow text to be typed in anymore, as indicated below:
UserName field has turned to a drop down which accepts valid users.
The work item layout looks the same as how it used to be, before upgrade.
This could be happening because of a conflict in definition of the work item field in question, within different team projects in the same collection.
To check this, run the witadmin listfields command, to find out all the work item types in the team project collection, which uses the field.
witadmin listfields /collection:CollectionURL /n:RefName
More details on the command usage can be found here.
In my case the field name was UserName and the reference name for the filed was Test.UserName.
Below is the command that I ran:
As the result indicates, the Test.UserName field was being used in the bug work item type in two of the team projects.
One we get the list of work items, check the definition for the field which changed, in all of those work item types. We can use the witadmin exportwitd command to export the work items.
witadmin exportwitd /collection:CollectionURL /p:Project /n:TypeName
More details on the export command can be found here.
In our case, the issue was that in one of the work item type definitions, the Test.UserName field had a </validuser> rule added to it, as shown below
The resolution was to make the definition of the field consistent across all the wits. In our case, we removed the </validuser> rule from the wit definition that had it, and imported the work item types again using the witadmin importwitd command.
Hope this information helps.
Content created by – Sreeraj Rajendran
Content reviewed by – Romit Gulati