[TFS] Résoudre le bug du single quote dans les Alertes TFS
Voici un bug assez surprenant que j’ai eu comme beaucoup le malheur de rencontrer.
Reproduire ce bug est assez simple :
Aller dans les Alertes d’un projet –> Filtrer son alerte sur un champ possédant une simple quote (‘ : dec 39) –> Valider
“Impossible d’analyser l’expression xpath pour cette alerte…”
Surprenant par sa simplicité et surtout par le fait qu’il soit présent depuis TFS 2012, ce bug limite potentiellement fortement l’utilisation des alertes (et ceci nativement en français où par exemple Work Item Type = Type d’élément de travail)
Le problème est assez simple à comprendre : les alertes ne supportent pas les quotes (sauf sur Projet d’équipe ou plutôt le champ d’élément de travail System.TeamProject, allez savoir pourquoi…). TFS Web Access se base techniquement sur le nom du champ et non pas sur sa référence pour réaliser sa requête :
CoreFields/StringFields/Field[Name=Type d’élément de travail’]/NewValue au lieu de CoreFields/StringFields/Field[ReferenceName=’System.WorkItemType’]/NewValue
Pour faire simple, à moins d’avoir un une collection d’équipe asiatique vous aurez des chances de tomber sur ce bug
La validation étant faite côté serveur il ne reste pas beaucoup de solution, il va falloir renommer les différents champs posant problème (PS: il est inutile d’échapper le quote, ça ne marche pas ).
Comment renommer un champ d’élément de travail
Heureusement la solution est assez simple, tout se passe avec l’outil en ligne de command witadmin présent dans %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
Voici les commandes à suivre (avec un compte administrateur de la collection cible)
Obtenir la liste des champs et des noms associés
cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
witadmin listfields /collection:http://ServerName:Port/tfs/CollectionName > C:\listFields.txt
(il est possible d’obtenir la même chose via les PowerTools ou ici. Le résultats est assez simple à lire.
Exemple avec le Type d’élément de travail (ou Work Item Type)
Field: System.WorkItemType
Name: Type d'élément de travail
Field = la référence du champ / Name = le nom affecté
Renommer un champ d’élément de travail
cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
witadmin changefield /collection:http://ServerName:Port/tfs/CollectionName /n:typename /name:newname
En reprenant l’exemple précédent cela donne
witadmin changefield /collection:http://ServerName:Port/tfs/CollectionName /n:”System.WorkItemType” /name:”Work Item Type”
Astuce
Si vous ne souhaitez pas une collection d’équipe en FranGlais et avoir quelque chose de visuellement harmonieux pour vous équipes, il est possible de remplacer la quote simple ‘ : dec 39 par une quote gauche ‘ : dec 145 ou droite ’ : dec 146, comme ce n’est pas une quote ça passe
Conclusion
Ce bug plus que gênant dans certains contextes n’est toujours pas corrigé dans les preview de TFS 2015, mais sais-t-on jamais avant la version final beaucoup de choses peuvent arriver
NB : le bug n’est présent que sur les alertes, aucun soucis au niveau des requêtes sur les work items
Commentaires