In this post, I will demonstrate how you can migrate your TFS on-prem to TFService in the cloud. This process will migrate your sources and your Work Items. When you want to migrate from an on-prem version to the cloud, the only viable option is using the Integration Platform. Because using the Integration Platform can be challenging (if you Bing/Google the integration platform, you’ll see what I mean), I want to guide trough the required steps to perform a migration.
Last week I was working on some TFS Web Access extensions. For those who don’t know what this extensions are all about, just try the ‘Task Board Enhancer‘ by Tiago Pascoal and be amazed by the power of it. In short:
In a previous post, I was talking about how you can build SharePoint 2013 apps using TFS 2012. In this post, I will guide you through the process of creating App packages using a TFS 2012 build. There are some small things that you need to know.
Required Components on your on-prem TFS build server
To start, you need two extra components on your build server, to be able to create App packages on the one hand, and Web Deploy packages on the other hand (if you’re creating an “Auto Hosted” or a “Provider Hosted App”).
- The first component you need is Web Deploy V3, which you can download here.
- Next, you need to copy paste the following folder from your local machine to your Build Server. “C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web”. Otherwise you will get this nice error:
Hosted TFS Build Server, you can use it, now!
In my previous post, I mentioned that the Hosted TFS Build Server could not yet be used because the “Office 2013 and SharePoint 2013 Developer Tools” were not installed. Well, good news, now they are! You can make use of the Hosted TFS Build Server. This is an overview of the installed component on the hosted Build Server.
Creating App Packages
Previous versions of SharePoint have the notion of SharePoint Solution Packages (wsp). It was also possible to use TFS (2010) for creating these packages. You can find a nice how-to on this link. It all comes down to that one parameter called “/p:IsPackaging=true”. You need to pass this parameter to MSBuild.
Now with the new App model of SharePoint 2013, this behavior is identically. You also need to pass this parameter to MSBuild. To do this, create a new TFS Build Definition (like described in my previous post). On the “Process” part, check the “Build process parameters” and find the “MSBuild Arguments” on section “3.Advanced”. Add the parameter “/p:IsPackaging=true”.
Save the build definition and queue a new build (right-click on the definition, and select “Queue New Build…”. After a while, you will see that you have a nice red build. Yes indeed, build failed!
The problem is in fact a (small) bug on the TFS part of the build process. To create an App package, the AppManifest.xml my not be marked as ‘read-only’. Because we’re using TFS, files are marked as ‘read-only’ once they are downloaded to the Workspace. The reason for that is because the TFS 2012 build server uses ‘Server’ workspaces. Meaning that every file gets this annoying ‘read-only’ file attribute. Local workspaces, on the other hand do not behave like that, but a Build Server always use the server workspace. (You can find a nice overview about the difference between Local and Server workspaces here). There are also reports that you can have the same behavior when you want to create an App package using Visual Studio. (Right-click on your project, and select ‘Deploy’). You will not have this issue when you’re using a local TFS workspace, as files will not be marked as “read-only” than.
Unfortunately, there is no easy solution to fix this error, except a small modification to the Build Process Template. (There is an awesome guide available by the ALM Rangers to get you started, get it here). What you could do is make a copy of the ‘DefaultTemplate.11.1.xaml‘ file, and add an extra workflow activity to this template who will remove to ‘read-only‘ attribute from the AppManifest file.
The Real Solution
Now I see you thinking: nah, I really don’t like editing WF 4.5 XAML files. Well, good news, someone already created a Build Process Template with this modification. There is a nice Codeplex project called “Office / SharePoint 2013 Continuous Integration with TFS 2012“. There you can download a customized Build Process Template that can be used. All you have to do is adding this XAML file to the (for example) “BuildProcessTemplates” folder in Source Control, and change your Build Definition that it will use the new Build Process Template. So it looks like:
That’s it. Just queue a build, and it should be green. (You also don’t really need to add the parameter “/p:IsPackaging=true” anymore, because this great Build Process Template will take care of this. But it’s also that smart that it will detect if you did pass the parameters, so no problem).
So for now, I talked about how you can actually build you SharePoint 2013 App project using TFS. In this post I described how you can produce an .APP package. In my next post, I will talk about how you can deploy your App. I will also make use of this Build Process Template from CodePlex, because it’s already all in there!
In this post, I want to talk a little bit more about how you can build those shiny new SharePoint 2013 Apps using a TFS 2012 build server, but especially: without installing Visual Studio! To start, I will shortly guide you trough the process of setting up a TFS Build Server (with 1 controller and 1 agent).
You might be wondering, why do you setup a separate TFS Build Server? Why don’t you just use the Hosted TFS Build Server? Well, that was also my intake, but it just doesn’t work (yet). The Hosted Build Server does not have the “Office 2013 and SharePoint 2013 Developer Tools” on it, so it’s not able to build SharePoint 2013 apps. So for now, a separate server will do the trick.
TFS 2012 Build Server
Let me start with a quick overview of how to setup a TFS 2012 build server. In my scenario, I’m using a fresh Azure-hosted Windows Server 2012 VM. Fast and easy setup. Download the TFS 2012.1 installer and start the ‘Build Service Configuration Wizard’:
The next few steps are just a ‘next-next-next‘ experience, use the default settings as they are provided. Once you’re ready, you should see that it has one controller and one agent connected to your TFS Server.
CI Build Definition
Now comes the tricky part, how can be build SharePoint 2013 Apps without installing a full-blown Visual Studio 2013? Which components do you need? Well, we’ll start by creating a Windows Azure Auto Provisioned App like I’ve described in another post. Once you have this app, add it to Source Control, and perform a check-in.
Next step is to create a build definition which will perform a continuous integration build of our app. Using Visual Studio, go the the ‘Builds‘ section of Team Explorer, and click ‘Create New Build Definition‘. Give it a name and select ‘Continuous Integration‘ as trigger.
On the ‘Build Defaults‘ section, select the Build Controller we’ve just created, and define where you want the drop output to be stored. I will just use a drop folder in Source Control (which is a new feature in TFS 2012).
On the process section, select the solution file, and leave the other settings by default. That’s it for the build. To try, just queue the build manually, and you should see a nice failing build. That’s completely normal of course, as we didn’t install any build-related things on the build server yet:
Now that we have the build, we need to make the necessary changes on the build server (where the actual Build Agent service is running). Install the following components in the right order:
That’s a tricky one. It will start the web platform installer, and it will give you this error:
That’s correct, we don’t have Visual Studio installed, and that’s exactly what I don’t want! But when you click OK two times, you will a nice overview of all components required:
We can now use the Direct Download links provided to install the required components:
When installing this, you’ll get another nice warning about the ‘Microsoft Web Developer Tools’. Just click ‘Continue‘
There we go, another nice screen telling me that I need the Windows Identity Foundation Runtime.
My build server is a Windows Server 2012 machine, and there you can ‘enable’ the WIF runtime as a feature on that machine. When you enabled this, just retry the setup of the WIF SDK.
- Microsoft Identity Extensions (Dependency) (that’s required for OAuth2.0 usage in the App)
Almost there! If you queue a build now, you will see the following nice error:
Correct, that piece is missing on the build server. To solve this, all you can do is ‘copy‘ the folder ‘C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications‘ from your development machine to the Build Server (on the exact same location). That should do the trick! If you now queue your build, you will get:
That’s it, you have your SharePoint 2013 building on clean, fresh Build Server without installing a full-blown Visual Studio 2012. It was quite a challenge, but thanks to Xavier Decoster and some research I managed to get this thing working!
In a next post, I will explain you how to build an APP package with the TFS Build Server. It’s not that simple as just adding “/p:IsPackaging=True” as extra ms build argument unfortunately.
Some extra information: In case you are wondering why I install the Windows Identity Foundation SDK (Dependency)? You can just use the .NET 4.5 Framework, and WIF is already in there. But you need to have the WIF SDK 4.0 to be able to install the WIF extensions. So… You just have to know..
Today, I took the last of the 3 exams to get my MCSD Application Lifecycle Management. Lets talk a little more about this MCSD (Microsoft Certified Solution Developer). Let me quote this:
Today’s software development organizations are looking for a more productive and predictable environment in which to produce tomorrow’s apps. (Check out this report from Gartner for insight into how agile and cloud technologies are driving adoption of application lifecycle management.) With Visual Studio 2012 ALM, organizations can break down team barriers and reduce cycle times to deliver continuous value. The MCSD: Application Lifecycle Management certification is for individuals who want the skills to manage the entire lifespan of application development, and build software with agility and quality.
To get this certification, you need to pass the following 3 exams:
- 70-496: Administering Microsoft Visual Studio Team Foundation Server 2012
- 70-497: Software Testing with Visual Studio 2012
- 70-498: Delivering Continuous Value with Visual Studio 2012 Application Lifecycle Management
I passed all 3 of them in a first attempt, which was really great! Therefore I want to thank my employer RealDolmen, who gave me the chance to take the exams. In return, I give them the certificates in order to meet the ALM Gold Compentency. So that’s a win-win!
About the exams, well, in my opinion they have some shortcomings, especially the 70-498. It’s good that Microsoft finally took ALM it the certification program scope, but some questions that were listed in that exam were really confusing. Answers do really depend on the situation. There were also some questions having multiple correct answers, which makes it quite confusing. As from what I heard, I’m not the only one with the same mixed feelings about it. But ok, the exam will eventually require some rework, so maybe they can change/clarify some of the questions.
The other 2 exams were more focused on the technical part of either MTM 2012 or TFS 2012. As from what I can tell, there are some deep details that you need to know by using the tools. There were some tricky MTM 2012 questions, believe me! But they both test your knowledge, which is great of course!
If you need some tips or tricks, just give me a shout! Good luck to everyone with the exams!
In this post, I just want you to show how extremely easy it is to upgrade an existing TFS 2012 Update 1 machine to the Update 2 CTP that was released earlier this week. There are some awesome new features in this update (without even taking the GIT support in account, which is not yet available for the on-prem version)
Looking at the upgrade process, it’s quite straight forward. First, download the CTP (link) and click on the “tfs_server.exe” file. The first message you will get is some information about the fact that you’re testing a CTP and you may not use it on a production server (which is obvious!).
Next step is to wait until the installation process completes. Note that on my machine (Windows 2008R2), an instant reboot was required!
Starting from there, it’s just a matter of clicking the ‘Next’ button. Nothing fancy! Here you go:
The last step is to validate upgrade process. Everything was looking good, except one thing:
This was related to the following:
TF252039: The following process template cannot be uploaded: 'MSF for Agile Software Development 6.1'. A process template already exists on the server with that name.
TF252039: The following process template cannot be uploaded: 'MSF for CMMI Process Improvement 6.1'. A process template already exists on the server with that name.
TF252039: The following process template cannot be uploaded: 'Microsoft Visual Studio Scrum 2.1'. A process template already exists on the server with that name.
No problem, just saying that the process templates do exist already. So process template changes related to the Update 2 CTP. The last step to complete is re-enable the build controller and agent:
That’s it! Now it’s time to enjoy this new update!
A few days ago, my company (RealDolmen) organized an event related to the launch of Visual Studio and TFS 2012. It was a great success and we had a lot of attendees. The 2 rooms were really crowded, which was absolutely great! On the event, I had the chance to talk about two great topics:
- Getting your database development under control using the new SQL Server Database Tools (SSDT)
- Cross-platform development with TFS 2012
I had some good feedback afterwards which I really do appreciate! I’ve uploaded my two slide decks to my SkyDrive so you can download them if you’re interested. You can find them here. Have fun!
For a demo I’ll be presenting at a customer, It should be awesome if I could show the integration between Project Server and TFS with a brand new TFS 2012 installation. For the reason of that, I decided to upgrade my existing demo Virtual Machine provided by Microsoft (download). In this blog post, I would like to show you how the upgrade process looks like. Be aware, it’s a screenshot-intensive post today!
Ok, let’s go. The demo Virtual Machine from Microsoft has TFS 2010 and Project 2010 installed, combined with the integration pack to synchronize data between Project Server and Team Foundation Server. So the first thing we have to do is get rid of TFS 2010. On your Control Panel, uninstall TFS 2010.
When the uninstall is ready, you have to uninstall the TFS and Project Server integration pack.
That was an easy job! What we have to do now is an upgrade of SQL Server 2008 R2. TFS 2012 requires at least SQL Server 2008 R2 SP1 CU1. But let’s install the latest bits: SQL Server 2008 R2 SP2, which you can download here. Start and complete the upgrade process. (This step will take some time, especially on a VM)
Next step of the process is to install Team Foundation Server 2012 (which you can get from your MSDN subscription, or a Trial version). Launch the installer and run the installation.
When the installation is done (after a reboot, caused by the .NET 4.5 Framework), the Team Foundation Server Configuration Center will pop up. Select the ‘Upgrade‘ option:
On the welcome screen, click ‘next‘ to go to the ‘Databases‘ section. Click on the blue link ‘List Available Databases‘. This should list your TFS 2010 configuration database. Select the check box on the bottom, and click ‘Next’.
Continue the wizard, and configure SharePoint for use with TFS and use the current settings:
Run the ‘Readiness Checks’ and perform the upgrade. The outcome should be a list of green checks.
Now we have our TFS 2012 instance up and running. The next step is to install the new TFS 2012 – Project Server 2010 integration pack. You can install this using the same installation media from TFS 2012, as the integration pack is now delivered together with TFS 2012. So no extra package to download (which required an MSDN subscription). You can find the installer in the folder ‘Project Server Extensions‘.
The installation will only take a small amount of time.
The last thing you can do now is perform an installation of Visual Studio 2012, so you can make use of all the new and great functionality from TFS 2012.
Voila.. That’s it, nothing more, nothing less. It was quite an easy job to perform this upgrade. If you open your Visual Studio 2012 instance, you can connect to TFS 2012, and you should see the ‘Project Server’ section on each Work Item form. Have fun!
The actual goal of my previous post was the installation of SharePoint (Foundation) 2013 to be connected with TFS 2012 RC. By default, TFS 2012 RC ships with SharePoint Foundation 2010, but I wanted to use the newest 2013 version of SharePoint.
The installation of TFS 2012 on my Windows Server 2012 was quite straight forward, no special things, no errors, just great! I used the “Advanced” option so I could select my SSRS and SSAS instances, and also select my SharePoint instance. All 3 of them were automatically recognized by the TFS installation wizard, which is really a great experience! Well done Microsoft!
After the installation it was time to create a new Team Project using Visual Studio 2012 RC. I followed the creation wizard, but then I had a strange error when the Team Project was being created:
Exception Message: TF249033: The site template is not available for the locale identifier (LCID). The site template name is: Team Foundation Server Project Portal. The LCID is: 1033.
Hmm that’s strange. The template is not available for the locale ID. But I did an installation of Windows Server, SQL Server, SharePoint, in English (that’s what the 1033 means). That’s the point that I posted an issue on the MSDN forum, and there I got this answer from Kelly McBride from the TFS Team:
TFS RC Dashboards do not support latest mode site collections. For the RC dashboards, please use a legacy (2010) mode site collection. RTM Dashboards will support latest mode site collections.
And indeed, that solved the issue. SharePoint 2013 has the possibility to select in which ‘mode’ your Site Collection has to run in. As for now, until TFS 2012 RTM is there, we need to have a 2010-version of our Site Collection. To resolve the error, I performed those steps:
First step is to delete your ‘old’ site collection. Go to your SharePoint Central Administration and click on ‘Delete Site Collection’:
Select your site collection. This is the one that has been created by TFS (when your Team Project Collection was created). And click ‘Delete‘
After you Site Collection has been deleted, create a new one with the same name. Otherwise you have to change the SharePoint site settings in the TFS Administration console to point to this new Site Collection. In my case, I just used the same name. To create a new one, go back to the Application Management section, and select ‘Create Site Collections’. Provide a title, description and an address. The most important thing is the ‘experience version‘. You have to select 2010 instead of 2013. If you select 2010, you will see the option to select the TFS Project Portal template. And that’s what we are looking for. Don’t forget to select the collection administrator too.
Click on the ‘OK‘ button, and your Site Collection should be created. Now let’s create a new Team Project again, et voila, no error this time. SharePoint 2013 is succesfully connected to TFS 2012 RC.
Thanks for reading!
In this blogpost, I want to talk a little bit about how Team Foundation Server can help you to support your Kanban Process. We will use the Practical Kanban Guidance from the ALM Rangers, where I am also a part of the team. I will talk about the the process template requirements and how to get started.
First of all, really short: what is Kanban? Well, Kanban is a method to visualize the development work flow and the work in progress. Kanban has 5 principles:
- Visualize the workflow
- Limit WIP
- Manage the flow of work
- Make process policies explicit
- Improve collaboratively
Using these aspects, you can highlight any bottlenecks in the development process. You have a visual overview of the things which are happening in your team, so you can guide it. Perhaps change the process, change the WIP limits, ..
As you know, the way TFS supports your development process is defined by a process template. This is a collection of files that together define various process elements of a team project. There are a number of requirements that need to be satisfied to allow teams to get the most out of a Kanban-enabled process template for Team Foundation Server.
1. The process template should make it easy to modify the states in the process flow: Kanban is about continuous improvement. During the life of a project a team may wish to modify their flow, adding or removing states. Therefore the process template should make it easy to add and remove states in the process flow.
2. The process template should allow Work In Progress limits to be represented and reported on: One of the few fundamental concepts in Kanban is to limit the amount of work in progress (WIP). This means that the process template should allow us to specify a WIP limit for each state in the lifecycle of a card.
3. The process template should allow each state in the process flow to have an In Progress and Done sub-state: The process template should allow for In Progress and Done sub-states and report on WIP limits across the two sub-states.
4. The process template should support arbitrary state transitions: Kanban is not a software development method and does not dictate anything about how a team should implement its process. Therefore a card should be allowed to be moved into any Kanban state from any other Kanban state.
5. The process template should support hosted Team Foundation Server instances: To give teams maximum flexibility, a Kanban-enabled process template should not require project collection administration rights to make changes such as the states in the process flow and WIP limits.
6. The process template should include a Cumulative Flow Diagram Report and a Kanban Board: It has to be easy to see when bottlenecks are occurring, in which state the cards are, what’s the cycle time,..
Microsoft Kanban 1.0
Based on those requirements, the ALM Rangers came up with a brand new process template called: Microsoft Kanban 1.0. This is a flexible process template allowing you to easily adapt your Kanban process on Team Foundation Server. You can download the process template here, including all documentation and guidance you need.
In a next post, I will explain how the process template actually works and how you can use it. But first, let’s take a look how you can install this process template. Once you have downloaded the bits (both Team Foundation Server 2010 and 2012 are supported), you need to upload it to Team Foundation Server, so that you can create a new Team Project based on that template.
1. Open Visual Studio (we will use 2012, but it’s quite similar on 2010), go to ‘Team Explorer’, click ‘Settings – Process Template Manager’, there you click ‘Upload’ and locate the folder with the process template. I will use ‘Microsoft Kanban 1.0 – dev11’, because I’m using TFS 2012.
2. After the upload is complete, you should now see ‘Microsoft Kanban 1.0’ in the list of process templates.
3. Now create a new Team Project using this process template. In Team Explorer, go to ‘Projects and My Teams -> New Team Project‘. Complete the wizard and select the Kanban process template:
4. That’s it. You have a Team Project based on the Microsoft Kanban 1.0 process template. If you open your Team Explorer, go to Work Items and you can start creating cards (based on the Card Work Item Type) and model your process (based on the Process Step Work Item Type).
More in-depth information about how to use the process template will follow in a next post. I will also talk about ‘the Global List Synchronizer’, who will be responsible for the synchronization of process steps.
If you have any valuable feedback, just leave a message or start a discussion on the codePlex forum.