How to create new Change Requests programmatically using TFS SDK/API? - tfs

I am in the process of learning about using the TFS SDK to fully control what Team Foundation does programmatically like:
Creating new Workitems(is this the same as creating change requests?)
Creating new team projects
Creating a new Source code branch,etc.
I am developing a Windows app that can include all these tasks so it can be automated.
I know I have to use VersionControlServer.CreateBranch() to create a source branch. And, is it true that we cannot create new Team Project using the SDK? What about in VS 2010 SDK? I know how to manage workitems programmatically.
Anyone has suggestions on how to create new change requests?

If you take a look at the TFS SDK it has examples on creating work items, working with version control etc.
To create a new Team Project then you must use Visual Studio to do that - however in VS 2008 SP1 with the latest version of the TFS Power Tools installed you can make use of the new tfpt createteamproject command to script this process (though all those dependancies need to be installed on the machine running the application that you are thinking about building)

Related

Azure DevOps Server - How to migrate existing collection/project to SCRUM

We did upgrade TFS 2013 Update 2 to Azure DevOps Server (on-premises), we don't know exactly which Template all of our collections use but we would like to convert it to SCRUM.
Is it possible to convert our existing projects/collections to this template?
Is it possible to convert our existing projects/collections to this template?
I am afraid it is impossible to achieve that.
According to official documentation, we could to know:
You can change the process a team project uses from a system process
or inherited process to an inherited process. You can only change team
projects to use another process that inherits from the same system
process. That is, you can change an Agile-based team project to any
process you created from the Agile system process as well as to the
Agile process. Whereas, you can't change a Scrum-based team project to
an Agile-derived inherited process.
So, it is not possible to convert process templates for your existing projects/collections in Azure DevOps Server.
You could create a new projects/collections based on SCRUM and then move your source code and workitems to that new projects/collections. For source control you could always branch out from a stable version, and keep the old project around. That way you will keep you source history. For work items, you can export them to Excel, create a new Excel connection to Azure DevOps Server, that is connected to the new team project, and then copy the workitems and pushing them from the new Excel file into the new project.
BTW, you can learn to use witadmin to change things, but that isn't a best practice if you have workitems in the team projects:
Check this thread for some details.
Hope this helps.

How to upgrade process template for team project in TFS 2018?

I have been responsible for administrate our TFS projects and have started to investigate the current configurations. I found the following link for determining which process our team projects are connected to: How to determine what Process template an existing TFS 2012 project is configured with?
When using the rest API described in the article above, it seems like the projects depend on a process template called "Microsoft Visual Studio Scrum 2013". When reading this article: Scrum process it seems to me that the process is outdated and should be upgraded to use the "Scrum" template.
I have searched the internet for knowledge on how to upgrade the project to use the new Scrum process but had no luck of finding an answer. Does anyone have an idea of how to update the projects to depend on a newer process? Maybe the whole question is wrongly put as I may lack some obvious knowledge about how these things are meant to work. All I want is to ensure our projects are updated to use the latest TFS technology.
We use Visual Studio 2017 and did recently upgrade our TFS server to TFS 2018.
In general, some new features will be introduced when upgrade from old to new version of TFS.
Generally if you haven't made any changes to the original process template, upgrading is quite easy. Just enable new features by running the Configure Features Wizard in your team projects configuration page.
If it can’t upgrade automatically, you need to apply updates manually. See Add updates to team projects manually.
If you customized the process template, then you can follow the steps mentioned in this link to Update a customized process template to access new features.
To update the existing projects, a not so nice but easy way is to remove all work items and process data from your project and then add the newest items. Martin Hinshelwood has some great guidance on how to do this.

Ceate repository for android on tfs

I want to upload android source code on TFS using visual studio and my server side is written using C#
how to create repository for android on TFS
UPDATE1:
Please read Get Started documents first:
Get Started with Git and Team Services
Get Started with TFVC
UPDATE2:
If you just want to isolate the documents from the source code, you can create a new folder under the project, or create a new branch to store the documents, of cause you can create another repository, it's based on your requirements. Please see this article for details.
Do you have any special requirements? If not, nothing different with other projects. Assuming you are using TFVC, just try following below steps:
Connect from Visual Studio or Team Explorer
Create a team project
Add repositories
Configure your workspace and check in the source files/changes.
You can create the repository individually for client and server projects as needed.
If you just want to upload the existing source code to TFS, you just need to Put an existing solution under version control
Please see the overview documents for more information.
If you are using Android Studio, you can install the Team Services Plugin for Android Studio with Git repositories used. See here fro more info.

Steps for changing process template for an existing project in TFS 2010

I have an TFS server installation that through time has gone through upgrades from TFS 2005 to TFS 2008 and then to TFS 2010.
During the lifetime of the installation a lot of projects have been created and different project templates have been used. MSF Agile 4.0, 4.1, 4.2 and 5.0. and a few MSF CMMI ones.
What I would like to do is "replace" the project template used for all these projects to use a new one common one: Microsoft Visual Studio Scrum 1.0.
I am aware that TFS project templates are used as templates for creating new projects and cannot modify the tfs projects definitions after creation.
Uptil now only the version control and build server part of TFS have been used and there are no existing work item types.
Additionally all projects and build scripts are depending on the source code paths stay the same.
As I see it I have the following options:
Create new TFS projects using the correct project template and then move/branch the source code to the new project.
All code is moved to a temporary team project.
The old project is deleted
New project with the original name and correct process template is created
Code is moved to the new team project
Temporary team project is deleted
All the build definitions needs to be to recreated which is not an option.
The source code move/branch will "mess up" the versioning history
By messing up the versioning history I mean that when you move source code it will behind the scenes do a delete + source rename on the original location and the history will still be located in the old project. This will make searching in the history difficult and if I actually delete the old project I will loose all the history before the source code move.
This is really not an option for me since there is years of code change history that is needed to for supporting the different applications being built.
Use the TFS migration tools to migrate to another TFS project
This has the same downsides as the first solution
Replace/import work item types, install new reports, create new SharePoint sites
For each tfs project
Delete existing work item definitions using "witadmin deletewitd"
Import each work item definition from the new process template using "witadmin importwitd"
Import work item categories using "witadmin importcategories"
Delete old reports in project folder in report server
Upload the report definitions from the new process template
Modify data sources used for the reports using the report manager to point to the correct shared data sources (TfsReportDS and TfsOlapReportsDS)
Modify the report parameter ExplicitProject default value to "" (empty string) and disable prompt user option.
Export the documents in the old SharePoint site using stsadm
Delete the old SharePoint site
Recreate the sharepoint site using the TFS2010 Agile Dashboard site template
Activate site feature "Team Foundation Server Scrum dashboard"
In TFS Project Settings -> Project Portal Settings: Enable "team project portal" and ensure the url is correct. Enable "reports and dashboards refer to data for this team project"
And finally..
Process the Warehouse
Process the Analysis Database
Even though that this involves a lot of small steps this looks more appealing because
this option will not force me to move the source code and my existing build definitions will be intact.
My question:
Are there other ways to achieve the replacement of work item types that I haven't mentioned?
And/or am I missing any steps in last solution?
Given that you aren't using any existing work item types, your final proposal looks like the best option.
After deleting the old reports and exporting the SharePoint documents (you could also use Windows Explorer instead of stsadm), there are actually two commands in 'tfpt' that will help you. This will reduce it from 14 steps down to 5 or 6 steps.
tfpt addprojectreports Add or overwrite reports for an existing team project
tfpt addprojectportal Add or move portal for an existing team project
tfpt addprojectreports /collection:http://yourtfs:8080/tfs/YourCollection /teamproject:"Your Team Project" /processtemplate:"Microsoft Visual Studio Scrum 1.0" /verbose
tfpt addprojectreports /collection:http://yourtfs:8080/tfs/YourCollection /teamproject:"Your Team Project" /processtemplate:"Microsoft Visual Studio Scrum 1.0" /verbose
Your first option is IMHO your best shot.
You can branch the sources from the old team project to the new team project. With TFS 2010 you can see the history also from the branched location. So you don't loose functionality in here.
The Build is just an msbuild file which is stored in source control. The only thing you have to do is actually copy the build definitions. You can do that either manually, or you can create a little app that does that for you.

Is there a way to create a new team project using the TFS SDK?

I'm just getting started with the Team Foundation Server SDK and I'm wondering if there is a way to create a new Team Project using the SDK.
My goal in doing this is to create some automated tests to aid in system validation (being an FDA regulated company we are required to validate our in-house tools, to the extent this can be automated we can reduce costs). I would like to validate as much of the process end-to-end as possible (create a team project, check in some items to source control, create some work items, verify everything is stored/recalled correctly, etc). If there is a better approach or any existing work in this area I'm all ears.
Not using the tfs-sdk. If you install Team Explorer 2008, the TFS 2008 power tools and apply VS 2008 SP1 then you can use the tfpt createproject command to create a team project from a script (or execute the tfpt command as a process in your .NET application). The command uses automation hooks added into Visual Studio in 2008 SP1 to automate the team project creation process.
When doing all this in an automated test environment, you'll probably have more luck doing this against a Virtual Machine (either VMWare or Microsoft Virtual PC / Hyper-V) and then you can automate rolling back the TFS instance to a known clean state each time you repeat your testing.

Resources