Today I was doing some process template customization on a TFS 2015 server. The process template that was in use was one that was created for TFS 2013.4 and worked fine. We did the upgrade and everything was fine as well.
But as good practice describes, we also have a version of this Process Template in Version Control. All changes to the template are first made on the Process template in Version Control and from there rolled out to the Team Projects in question. We even use versioning in the process templates as I described in this blogpost from a while ago.
After I made the changes to the Process Template and wanted to upload the template with the Process Template Manager I received this message:
VS402452: The process template did not specify a version, or specified an invalid version.
This was strange. The extended log file said:
Exception Message: The remote server returned an error: (400) Bad Request. (type WebException)Status: ProtocolError
Response Status Code: BadRequest
Response Status Message: VS402452: The process template did not specify a version, or specified an invalid version
Hmm. Bad request. First thing I thought about was the ProcessTemplate.xml file which was maybe corrupt, but that could not be because it worked perfectly fine on 2013.
But then I though about the new Process Template features that were introduced on Visual Studio Team Services a while ago. As described here on MSDN, the process temaplte needs to contain a version tag to be able to upload it to the cloud.
And because VSTS shares the same code base as TFS, this is obviously something that is needed on-prem as well.
To overcome this issue, I edited the processtemplate.xml in my own process template and added the tag <version> just under the description tag.
<version type="F50EFC58-C2FC-4C66-9814-E395D90778A3" major="1" minor="1"/>
You can add any version you want. Make sure you change the Guid!
After changing this, the process template uploaded succesfully!