Error while migrating from Visual Studio Online to an on premise TFS

As I'm sure we all know, Visual Studio Online has gone to general availability recently, which means that very soon you will have to pay to use Visual Studio Online. We all knew it was coming… and now you might have to make a decision whether you should stay in the cloud or whether you should move your TFS to your internal network. To be fair I think that, in some cases, it could be very well worth it to pay for hosting TFS in the cloud instead of hosting one internally. However, in some cases it might be cheaper for customers to host TFS internally. Those users need to move TFS content from the cloud to on premise server. Kudos to Microsoft for providing an easy to use Data Export tool (see http://msdn.microsoft.com/en-us/library/7cb80f0d-0119-4277-82e8-719a8db1796e for more info) to migrate your Visual Studio Online contents to on premise TFS server. I wish they made that tool available permanently to users, instead of just for a short time… but I'm not complaining.

Anyways, for the most part this is a fairly to use tool and it worked just fine every time I use it. But once I got the following error: "TF400711: Error occurred while executing servicing step download bacpac from azure storage for component cloudimport during cloudimport: the remote server returned an error: (403) forbidden", trying to migrate Visual Studio Online contents to on premise TFS server. In my case, this error was caused by a simple fact that my export package created in Visual Studio Online has simply expired. I forgot that the package is only valid for 10 days, and gets deleted from Microsoft servers once expired. So, simply start export process again in Visual Studio Online, get a new export package, and run TFSCONFIG CLOUDIMPORT command again using new export package.

Mocking and Unit Testing

Last Thursday, I had the opportunity to give a presentation on unit testing in general and mocking using MOQ specifically to the London .NET User Group meeting. Many thanks to Tom Walker for his efforts in organizing the group, as well as to the people who took time out of their evening to attend. For the purpose of preserving the effort for posterity (not that any posterity will actually care), the slide deck is available at http://www.slideshare.net/LACanuck/unit-testing-and-mocking-using-moq, while the source code used for the demos can be found at http://1drv.ms/1kQJWhb.

As always, if you have any questions or comments, you’re welcome to drop me an email or contact me on Twitter (@LACanuck).

Visual Studio Online Data Export

Now that TFS in the cloud or Visual Studio Online has gone to general availability. There are customers out there that might be rethinking the use of Visual Studio Online and would like to move to an on-premise solution.

If you are thinking that way, take advantage of this Data Export tool supplied by Microsoft while it lasts. The excerpt below is part of an article about the General Availability of VSO. There is a link to it from your VSO home page under news.

Data Export Window

Many of our users started out with VS Online before we’d painted much of a picture of what the future would look like. Some group of them may want to take this transition to GA as an opportunity to reconsider their ALM configuration and move to an on-premises TFS server. Starting today, we’re enabling a data export window for any customer that has been on the service and wants to “opt out”. For the next 6 weeks, you have the option to export your data from Visual Studio Online in a format that can be imported to Team Foundation Server 2013 Update 2. In order to get access to the export capability, contact customer support (vsoexportsupport@microsoft.com) and we’ll be sure to get it switched on right away and provide you instructions on what to do.

From what I have read on the ALM email thread. This is the best option, better than the TFS integration tools. It will get all your Data including work items and source control history, and is much higher fidelity than the migration toolkit.

It will only be around for 6 weeks so if you are planning this move get on it.

I am speaking at CTTDNUG this month

The April session of CTTDNUG will be yours truly doing – A Day in the Life of TFS 2013

Here is the announcement:

Join us on Wednesday April 16th for a session on TFS 2013 presented by Dave Lloyd, Microsoft ALM MVP!

Session Info

This will be a complete tour of what TFS 2013 can accomplish when used by a whole team (Dev’s, QA, BA, Product Owner). We will cover the product backlog and task boards, Teams, Storyboarding and Feedback requests. My Work and switching context, Git integration, Code Reviews. Creating Test plans and executing Test Cases, Exploratory Testing and Release Management. Throughout the presentation the floor will be open to any other aspects of TFS that you would like to talk about!

Speaker Bio

Dave Lloyd has 30 years’ experience in the IT industry designing and building software solutions for a large number of clients in varying industries. Dave is a seasoned project manager with a great deal of experience implementing process into development teams, from small and large ISV’s to in house development teams. Dave has also spent time during his career implementing test solutions for clients. Working with the most current automated test tools and implementing successful test environments. Dave brings to the table 25+ years of teaching experience. He has been awarded the ALM MVP designation for the past 4 years in a row

When?
Wednesday, April 16, 2014 from 6:30pm - 8:30pm
Pizza/pop will be served starting at 6pm

Where?
Country Hills Community Library, 1500 Block Line Road, Kitchener, ON

How to register?
Visit CTTDNUG’s site to view more details and to register for this event: http://www.cttdnug.org

Seats are limited so register early to reserve your spot!

Release Management Application Pool is down

If your Release Management application pool keeps crashing and you get the following error: Message: Object reference not set to an instance of an object.: \r\n\r\n at (Object ) … at RM.MonitoringAgent.Services.MonitorService.ProcessScheduledPromotions(), run the following command to fix the issue:

appcmd.exe set config -section:system.webServer/globalModules /[name='SPNativeRequestModule'].preCondition:integratedMode,bitness64

Make sure that you run this command as an administrator.

The Return of At The Movies

Earlier this week, ObjectSharp announced the 2014 version of our annual At The Movies event, to be held on May 8 from 8:30 until noon. For years, ObjectSharp has brought together leading experts in Microsoft technology and presented what’s new and what’s useful. We call it At The Movies because, well, it’s held at the Scotiabank Theatre on John St. in Toronto. And because by doing so, we get to use movie posters as part of the marketing campaign.

Yeah, we have a good time coming up with the various posters. The call for ideas amongst the many ObjectSharp associates is a good indication that spring is coming. And the creativity and execution of the ideas is worth waiting for. But let’s start with what you get out of coming to At the Movies.

The Scrum TeamFirst, the list of topics. As always, we go with things that you want to hear about. Subjects that are on the at the leading edge of technology, but are currently available so that you can go back to your office and start to use them immediately. This year, we’re covering the following.

- Team Foundation Server 2013

- Visual Studio 2013

- Windows 8 (from Tablets to Phones)

- Azure

- SharePoint 2013

 

If you work in the .NET world, these are areas that you need to know about. They can make your life easier and your development process more efficient. And the speakers that we have covering these topics are experts, among the best in the country. They include:

  • Dave Lloyd – Microsoft ALM MVP and Team Foundation Server expert extraordinaire
  • David Totzke and Lori Lalonde – Authors of Windows Phone 8 Recipes: A Problem Solving Approach
  • Colin Bowern – Solutions Architect, former MVP and recent émigré to New Zealand
  • Ali Aliabadi - 10+ year SharePoint developer, architect and training
  • Bruce Johnson – Microsoft MVP and author of a number of Visual Studio and Azure books

In other words, join us for a morning of entertaining speakers talking about relevant topics. There really isn’t another event like it in Toronto. And even better…it’s free!

To sign up, visit http://www.objectsharp.com/atm. Do it now. It’s almost guaranteed that we’ll sell out quickly.

It's on! At The Movies is back!

For those who have attended At The Movies (ATM) event in the past, I'm happy to announce that ATM event is back on. You know it'll be awesome, so make you register at http://objectsharp.com/atm before we run out of space in Scotibank movie theater. 

For those who have not attended At The Movies (ATM) event in the past, well, you have missed out on a lot of fun (and expert knowledge.) So, don't let that happen to you again and register for the event at http://objectsharp.com/atm. You will not be disappointed. Did I mention that this is a free event?!?

To remind you how awesome ATM events are, I have added a few links to old videos from past ATM events:

 

What can I say. Visual Studio, TFS, Azure, SharePoint , Windows 8, etc. Pure geeky fun time. See you there on May 8th, 2014! :)

At the Movies is Back

May 8th is the next At the Movies event from ObjectSharp. Click the poster below to register. You don’t want to miss this. 

clip_image001[6]

TFS 2013 Upgrade - SharePoint 2010 to SharePoint 2013 Upgrade Errors

OK, so I'm upgrading TFS 2008 with SharePoint Foundation 2007 installation to TFS 2013 with SharePoint Foundation 2013. Naturally, you do an upgrade using an intermediary server with TFS 2012 with SharePoint 2010 install, because you cannot upgrade TFS 2008 to TFS 2013 directly (you have to upgrade to TFS 2012 first), just as you cannot upgrade SharePoint 2007 to SharePoint 2013 (you have to upgrade to SharePoint 2010 first). All goes well except for the SharePoint portion of the upgrade.

Running Test-SPContentDatabase against SharePoint content database produces a few weird errors, like:

Category : MissingFeature Error : True UpgradeBlocking : False Message : Database [WSS_Content] has reference(s) to a missing feature: Id = [00bfea71-c796-4402-9f2f-0eb9a6e71b18], Name = [Wiki Page Library], Description = [An interconnected set of easily editable web pages, which can contain text, images and web parts.], Install Location = [WebPageLibrary]. Remedy : The feature with Id 00bfea71-c796-4402-9f2f-0eb9a6e71b18 is referenced in the database [WSS_Content], but is not installed on the current farm. The missing feature may cause upgrade to fail. Please install any solution which contains the feature and restart upgrade if necessary

You would think that Wiki Page Library feature should exist in new SharePoint, and it does, but the error still shows up. Makes no sense, right. Well, if you try to go ahead and proceed with an upgrade anyways, you will see even stranger things. Upgrade completes successfully, but none of the SharePoint pages come up properly. None of the "default" SharePoint web parts come up properly. To make things worse, you cannot get to any of the system pages in SharePoint. When you try to access any system pages, like Site Settings, you get Access Denied errors (strange part is that you are denied access to built-in v4.master master page; how is that possible!). Very strange…

After a bit of digging on the web, I have found a solution. Apparently, the problem was caused by the fact that SharePoint 2013 has two modes (hives), 2010 (v14) and 2013 (v15). Apparently, by default, a new SharePoint 2013 installation mostly only installs v15 features. Using SharePoint Feature Admin Tool, we can tell that v14 features we needed were not installed. Now that we know that we can simply install missing v14 features individually using SharePoint 2013 Management Shell or we can simply install all existing features in both the v14 or v15 hives by running the following cmdlet.

Install-SPFeature -AllExistingFeatures

Second approach was easier, so I run with it. Running that cmdlet fixed all of my SharePoint problems, and that's a good thing.

How to connect Release Management to Team Foundation Server

Release Management for Visual Studio 2013 (formerly known as inRelease client) is tightly integrated with Team Foundation Server (TFS 2010, TFS 2012 and TFS 2013 versions are supported. Visual Studio Online is not supported yet) To connect  Release Management server to Team Foundation Server, you need to use Release Management Client for Visual Studio 2013:

  • Launch Release Management Client for Visual Studio 2013. If you launch it for the first time, you will be prompted with Configure Services dialog window. Just enter Release Management server name and port number, and click on OK.
  • Click Administration tab to connect Release Management server to TFS. Then, click on Manage TFS section.
  • Click New button to add a TFS connection. You can add connections to many project collections hosted on different TFS servers or many separate project collections hosted on the same TFS server.
  • Provide the following connection settings:
    • name or the URL of TFS server
    • name of the project collection
    • service account credentials to connect to TFS
    • HTTP/HTTPs protocol used to connect to TFS
  • Click Verify to validate the settings provided.
  • Click Save and Close to save the connection to TFS

That's all. Now you should be able to start using Release Management server with TFS. Oh, almost forgot, to configure connection to TFS, your account(s) must have the following minimal permissions

  • Collection Level 
    • 'Make requests on behalf of others' permission (required to setup TFS Connection in release management server)
    • 'View collection-level information' permission (to get list of Build Definitions on behalf of current user) 
    • 'View build resources' permission (to set a Build to Release) 
  • Team Project Level – for all projects used in release management 
    • 'View project-level information' permission (to add a TFS Group) 
  • Build Definition Level – for all build definitions used in release management server
    • 'Retain Indefinitely' permission (when starting a Release)


To keep things simple, you can simply make service account used by release management server to connect to TFS a member of the Project Collection Service Accounts group.