Ausgangssituation

Man hat ein Visual Studio Projekt, das mit dem Team Foundation Server verknüpft ist und ein Process Template hinterlegt, das man nicht mehr verwenden will.

Dieser Artikel geht davon aus, dass es sich um ein „MSF for Agile Development Template“ handelt. Wenn man das hier beschriebene Prinzip aufgreift, ist das aber eigentlich egal.

Grundprinzip

?Die Installation eines Process Templates für ein Projekt funktioniert bei der Projekt-Neuanlage so, dass durch das Importieren eines XML-Files, das verschiedene Pfade und Einstellungen enthält, alle Tabellen für die Anlage von Work Items, etc. kreiert werden. Das ist auch der Grund, warum eine Umstellung auf automatische Art und Weise nicht so einfach ist.

Die Idee ist nun, sich das Template, das man verwenden will, zu holen und die darin enthaltenen Einträge, die man verwenden will (zum Beispiel neue WorkItems) zu importieren und damit die notwendigen Tabellen anzulegen.

Man kann auch nicht mehr zu verwendende Einträge löschen, auf äquivalente umbenennen oder Felder hinzufügen oder löschen – frei nach Belieben!

Der Artikel basiert auf diesem hier: http://nkdagility.com/upgrading-your-process-template-from-msf-for-agile-4-to-visual-studio-scrum-2-x/, der eine sehr gute Schritt-für-Schritt-Anleitung enthält.

Verstehen, welches Template man verwendet

Als gar nicht so leichte Aufgabe kann sich herausstellen, überhaupt herauszufinden, welches Template man installiert hat.

Wenn die Process Guidance aktiviert ist, erhält man auf diesem Weg einen Hinweis. https://msdn.microsoft.com/en-us/library/ms242876(v=vs.100).aspxWenn nicht, kann man versuchen, das Process Template automatisch zu erkennen. Eine Anleitung dazu gibt es weiter unten. Das funktioniert ganz gut.

Herunterladen der Templates

Der erste Schritt besteht darin, sich das Template, das man verwenden möchte, herunterzuladen. Der Speicherort ist egal, wichtig ist, dass man diesen dann für den Import braucht.

Visual Studio öffnen, auf den Team Explorer wechseln, dort die Settings des Team Projekts auswählen und dann:ProcessTemplateManager

Wenn man sich den Pfad anschaut und die darin enthaltenen xml-Dateien anschaut, sieht man, welche Typen und Konfigurationen auf diesem Weg importiert werden.Man kann sich zum Vergleich auch das MSF-Template holen und schauen, welche Workitem-Types hier installiert worden sind. Dann sind die Unterschiede relativ schnell klar.

Der Upgrade?

Entsprechend des Artikels von Martin Hinshelwood starten Sie einen Visual Studio Command Prompt mit Administratorrechten (elevated rights). Dort führen Sie folgenden Code aus (Ersetzen Sie die unten angeführten Variablen durch Ihre aktuellen. und spechern Sie diese als Batch-Datei).
      set pt=Pfad zum gespeicherten TemplateScrum
      set tpc=https://Servername:Port/tfs/DefaultCollection/
      set tp=NameTeamProject


      #REM #1 Do Renames
      witadmin renamewitd /collection:%tpc% /p:%tp% /n:"User Story" /new:"Product Backlog Item" /noprompt
      witadmin renamewitd /collection:%tpc% /p:%tp% /n:"Issue" /new:"Impediment" /noprompt


      #2 REM Apply new Template
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsBug.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsCodeReviewRequest.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsCodeReviewResponse.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsEpic.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsFeature.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsFeedbackRequest.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsFeedbackResponse.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsImpediment.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsProductBacklogItem.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsSharedParameter.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsSharedStep.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsTask.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsTestCase.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsTestPlan.xml"
      witadmin importwitd /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingTypeDefinitionsTestSuite.xml"


      #REM #3 Import Link Types just in case coming from 2008
      witadmin importlinktype /collection:%tpc% /f:"%pt%WorkItem TrackingLinkTypesSharedParameterLink.xml"
      witadmin importlinktype /collection:%tpc% /f:"%pt%WorkItem TrackingLinkTypesSharedStep.xml"
      witadmin importlinktype /collection:%tpc% /f:"%pt%WorkItem TrackingLinkTypesTestedBy.xml"


      #REM #4 Import Categories
      witadmin importcategories /collection:%tpc% /p:%tp% /f:"%pt%WorkItem Trackingcategories.xml"


      #REM #5 Upload the new Common Config and Agile Config
      witadmin importprocessconfig /collection:%tpc% /p:%tp% /f:"%pt%WorkItem TrackingProcessProcessConfiguration.xml"
Nach diesem Muster können Sie auch Definitionen löschen – das haben wir hier aber nicht gemacht.

Aktivieren der neuen Features

Um nun die neuen Features im Web Portal verwenden zu können, muss man sie aktivieren.

Das geht über die Systemsteuerung des Projekts im Portal. Dort findet man unter „Überblick“ den Hinweis, dass versucht werden kann, die Features automatisch zu konfigurieren.

ProcessGuidance

Nun sollte das Scrum Template gefunden werden und die Features sollten automatisch konfiguriert werden können. Sollte das schiefgehen, führen Sie das Upgrade-Batch-File noch einmal aus.

Tipp für die Anpassung der Queries

Queries können ganz bequem von einem Projekt in ein anderes kopiert werden, sogar mit Mehrfachselektion. Wenn diese also generisch und mit Variablen erstellt worden sind, ist das alles ganz rasch hergestellt.
Ist doch cool, oder?

LG,
Sabine?