ALM User Group in Toronto meets this Thursday, Nov 8th at 5:30pm

Come out on Thursday to the Toronto ALM User Group (TALMUG) click here to register. TALMUG

Be Loved By Your Development Teams: Using the Team Foundation Server – Project Server Connector

Organizations are investing heavily in building project management competencies through the improvement in processes and use of tools such as Microsoft Office Project Server to ensure the predictable and reliable delivery of projects. At the same time an increasing number of development teams are moving towards agile techniques. Integrating and reconciling development teams and project management has become extremely important. Microsoft’s Application Lifecycle Management strategy includes solutions designed to enable Visual Studio, Team Foundation Server, and Project Server to connect together seamlessly.

This session will explore the Team Foundation Server - Project Server Integration Feature Pack and demonstrate how this enables development teams and project managers to work efficiently and increase productivity.

SmileTesta  

Microsoft–Test Manager Certification Exam & More

Microsoft has just released their new certification exam for Software Testing with Visual Studio 2012. The exam number is 70-497

The skills and/or tasks covered in the exam are:

  1. Create and Configure Test Plans (31%)
  2. Manage Test Cases (34%)
  3. Manage Test Execution (35%)

Check out the details here and see Charles Sterling’s blog for additional information.

If you are interested we have a course on all these items that will help prep you for the exam.

Contact O# at 877-SO-SHARP

Testa Smile

Microsoft Test Manager–links to power tools

Test Scribea tool designed to export your Test Plan to word document. The test scribe template can be customized. Shai Raiten has two articles on how to customize.

How to customize test scribe template

Test Scribe – Developer Guide

Regular Expression Tester ExtensionParses regular expressions from your code, so you can modify and test them and insert the updated versions. Matches and groups are highlighted for an easy overview of exactly what captures your regular expression generates. Also allows you to save your regular expressions.

Silverlight Plugin - Using the Microsoft Visual Studio UI Test plugin for Silverlight, you can create Coded UI Tests or action recordings for Silverlight applications.

TFS Power Tools – blog by Brain Harry

Testa Smile

Keeping your Free Costs Down

If you have an MSDN subscription, then you have access to Windows Azure functionality at no cost. Now the level of functionality (in terms of storage, compute hours, etc) depends on the level of your MSDN subscription. But even at the lowest level, there is still enough to let you thoroughly play with the features that have been made available.

Unless, that is, you’re not careful.

I actually had my free subscription run out of money last month. Not because I was doing anything exceptional with it. But because I hadn’t thoroughly cleaned my toys up after I was done. So let me give you a couple of pointers on what you might need to clear up. Specifically in the area that got me…virtual machines.

The Virtual Machines that are available in Windows Azure are sweet. You can select an image from a gallery that includes Windows Server 2008, Windows Server 2012, SQL Server 2012, BizTalk and a number of Linux distributions. Nice to work with, especially as you’re testing out the new features. But when you’re finished with the machines, deleting them does not completely clean up. Specifically, the creation of a virtual machine already creates an image of that virtual machine (the VHD file) in Azure storage. And this image continues past the deletion of the virtual machine. Taking up storage space, In my case, I had created a 1TB VM, which left 1TB of storage on my blob storage. Which ate through my 45GB/month limit very, very quickly.

To clean up completely after setting up a new VM requires a few steps more than deleting the VM itself. Go into the Windows Azure portal (http://manage.windowsazure.com) and get to the Virtual Machines section. Even though no virtual machines are defined (I had already deleted it), click on the Disks section. Now you’re see the OS disk related to the VM that you had created (and deleted). This is the source of the ‘offending’ storage.

image Once the disk is selected, click on the Delete Disk icon and Delete Associated VHD from the menu. This option removes not only the disk, but also cleans up the item kept in storage. If you hadn’t deleted the VHD, the disk would be removed, but the image would still be maintained in storage. Keeping the meter running, so to speak.

While you have not gotten rid of the ‘costly’ portion of the delete VM, to complete the clean up, go back to the main Windows Azure portal and get into the Storage accounts. Then select the storage account for the VM (for me, it had a name like portalvhds95qxznsn1dlm8) and click on the Delete icon. This will completely clean up the VM.

By the way, if you try to delete the storage (or any of the containers in the storage account or even the blob within the container), you will be unable to do so until the Disk is deleted. The error message if the Disk is still around is “There is currently a lease on the blob and no lease ID was specified in the request”. Not particularly clear what’s happening (as I can tell you from experience). But hopefully by including it here, the next people who run into the same message will have a better idea of how to address it.

Office 365 Lync displays wrong name

Recently we have come across an interesting bug in Office 365. In the scenario where you use ADFS to authenticate your Office 365 users and some of the users have multiple email address aliases assigned using adsiedit.msc, Lync might display a wrong name.

For example, user’s name is Walter and his primary email address is walter@office365-is-awesome.com (not a real email address). Imagine that Walter’s colleague Jesse is leaving the company and they need Walter to take over Jesse’s clients and make sure that all emails that addressed to Jesse are now sent to Walter. At the same time, you don’t want to keep Jesse’s mailbox active because Office 365 charges you per mailbox and that would be a waste of money. So, you archive Jesse’s existing mailbox and add an alias jesse@office365-is-awesome.com to Walter’s mailbox. And, because you use ADFS, you have to add aliases using adsiedit.msc instead going through Office 365 management portal. Make sense, right? Well, this is where it starts being interesting and very-very confusing. Now, when Walter logs into Lync some of the users will see Jesse’s name show up in their Lync client instead of Walter. Weird, isn’t it?

What appears to be happening is that Lync Address Book Service (ABSConfig) queries proxyAddress attribute in user properties and uses whatever entry query returns first. Because proxyAddress field stores data in alphabetical order, in Walter’s user attributes the name “Jesse” entry comes before “Walter.” That’s why we see the wrong name displayed. It’s that simple.

Anyways, if this was an on-premise Lync server then there at least couple of fixes for this problem. Both fixes have to do with making changes on the server side. But this is Office 365, and we do not have access to the server-side. What are those of us living in the cloud supposed to do?! As far as I know, there is no fix, but there is a workaround. Instead of creating email address aliases using adsiedit.msc, you can:

  1. Create a distribution list in Office 365 management portal. Make sure to allow external senders send emails to this distribution list, so that emails don’t bounce back.
  2. Assign any email address aliases to that distribution list right from Office 365 management portal. For example, jesse@office365-is-awesome.com or this-not-really-walter@office365-is-awesome.com
  3. Add an intended recipient(s) to the distribution list. For example, walter@office365-is-awesome.com. Now, when people send email to Jesse every email will be sent to Walter’s mailbox and everyone will see Walter as Walter when he signs into Lync. It’s a win-win.
  4. (Optional) Hide distribution list from Address Book, so your people don’t get confused when they search internal Global Address Book.

Well, it’s not exactly a fix, it’s a workaround and it will do for now. I do hope though that Microsoft will fix this bug in Office 365. Sometime in the next 20 minutes would be great. ;)

Removing Another User's Lock in TFS

One of the joys of distributed development teams is unexpected locks. In this particular case, the file was locked by a very distributed developer. And I needed to get it unlocked, as the lock was preventing a build from running. Oh, and I was using tfspreview.com as the source control repository.

Step 1 – Determine the workspace

In order to perform an unlock/undo, you need to know the workspace and user involved. To find out the workspace for a user, there is a workspaces option for the tf command line prompt. So open up the Visual Studio Command Line window and navigate to your local mapped directory for the project. This navigation is important, as it allows you to minimize some of the command line options that we will be using.

Once you’re in the directory, execute the following command:

tf workspaces /owner;domain\userid

In this case (since we’re using tfspreview.com, the domain\userid is actually the Live ID for the user that currently holds the lock. The output from this command includes the name of the workspace in question.

Step 2 – Undo pending changes (thus releasing the lock)

Another tf command is required for this step. In the same command line window, execute the following command:

tf undo itemspec /workspace:workspace;domain\userid

In this case, the itemspec is the path to the locked item (for example $/MyProject/Directory/fileName.txt), the workspace is the name of the workspace identified in step 2 and domain\userid is the login id (or Live ID in our case) of the person who owns the workspace (and who has the item checked out).

And voila. The lock is undone and I’m now free to wreck havoc…er…check in my code.

How to backup Azure databases

As we start using SQL Azure more and more for storing data, we had to come up with a easy and inexpensive way to backup Azure databases. There is a number of various tools available to backup Azure databases, but they usually require a separate install and they are never free. Although, sometimes, they are fairly inexpensive. I like free ones better though.

So, after a bit of research I have discovered an easy way to backup SQL Azure databases to my on-premise (offsite) SQL Server: SQL Data Sync. D’oh! This is an existing functionality in Azure, and it can be accessed through an “old” Windows Azure portal interface (https://windows.azure.com). I am not going to write step-by-step instructions because, in this case, user interface is actually very intuitive and once you get to Data Sync part of Azure portal, you will know what to do. Good luck!

{ Ping me, if you need any help or have any questions about this article }

A Rose by Any Other Name

I’m just putting the finishing touches on a book (Professional Visual Studio 2012 from Wiley) and as a result, I’ve had to learn precisely what the names of the UI formerly known as Metro would be. And you can find out the ‘answer’ in the table below, just for future reference.

Old Term

New Term

Metro apps Windows Store apps
Metro design language Microsoft design style language
Metro style principles Microsoft design style principles


If Modern UI/design was your thing, any phrase involving “Modern” was also converted to “Microsoft design/style…”

None of these terms roll off the tongue at all (and I’ll still get caught calling it Metro when I’m speaking). But this is the word…at least for now.

How SharePoint farm locates its configuration database

Did you ever wonder how SharePoint farm locates its configuration database. It’s not in a web.config or in any other configuration files. It’s actually a lot simpler than it probably should have been. SharePoint actually stores the connection to the configuration database in the registry (see dsn key). 

SharePoint 2007: HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Secure\ConfigDB

SharePoint 2010: HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Secure\ConfigDB

SharePoint 2013: HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\15.0\Secure\ConfigDB (this one I have not actually checked, but I am betting it’s still there)

Scary, isn’t it?

Duplicate entries in your Office 365 address book

If you’re seeing duplicate entries in your (Office 365) Outlook address book, and you do not see any those duplicates in Office 365 Portal, then try the following:

  1. Download and install the latest copy of the Microsoft Online Service Module for PowerShell from http://onlinehelp.microsoft.com/Office365-enterprises/ff652560.aspx
  2. Start a PowerShell session with Office 365 by running the following 5 commands (you will be prompted for your Office 365 credentials as these commands run):
  3. Import-Module MSOnline
    $O365Cred = Get-Credential
    $O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri
    https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection
    Import-PSSession $O365Session
    Connect-MsolService –Credential $O365Cred

  4. Run the following command to check if you have anything in your Office 365 Recycle Bin:
    Get-MsolUser –ReturnDeletedUsers
  5. If the command above returns any Recycle Bin items, then run the following command to remove all items from Recycle Bin:
    Get-MsolUser –ReturnDeletedUsers | foreach { Remove-MsolUser -ObjectId $_.ObjectId -RemoveFromRecycleBin -Force }
  6. Run the command from step 4 again to make sure that your Office 365 Recycle Bin is empty