Easy Spec Reviews with GitHub & Bots

As a Program Manager, part of my job is to write technical specification documents. Our team recently switched to using our very own system (yes, we use the docs.microsoft.com infrastructure internally too) to write technical specs – content is on GitHub and Markdown-based. As part of that came the question – how do we aggregate comments when people review them?

Continue reading Easy Spec Reviews with GitHub & Bots

Binding Dynamic Build Definitions to GitHub Repos

As part of the project that I am working on, I need to make sure that I allow the user to specify what GitHub repository they want to bind to their Visual Studio Team Services build definitions. I am using the Microsoft.TeamFoundationServer.Client library for that, but no matter what I tried, the repository just did not show up.

Continue reading Binding Dynamic Build Definitions to GitHub Repos

Setting up Vossibility Stack to Track GitHub Community Contributions

One of the key parts of my job as a Program Manager on the docs.microsoft.com team is to assess community contributions across different documentation repositories and areas. That might appear to be a very complicated task, and as we go, I will document more on the process. This post, however, is dedicated to setting up the core environment to make the task somewhat easy.

Continue reading Setting up Vossibility Stack to Track GitHub Community Contributions

Creating a Content Validation Bot for GitHub

As we released the Visual F# documentation as open-source, one thing stood out as a challenge that needed to be tackled – content validation. There could be several things we could do, such as integrating extra validation rules in the build system or building a GitHub bot. I thought that as a learning experience, I will go the bot route. This post explains how I worked this problem.

Continue reading Creating a Content Validation Bot for GitHub

Release of Hummingbird – distribution list converter

With the release of Outlook Groups, I got a lot of questions regarding the possibility of conversion of existing distribution groups to the new model. Instead of having users manually go through the process, I wrote a sample that demonstrates how it’s done with the help of EWS and Active Directory APIs. So how do you set it up?

Clone the repository here: https://github.com/Microsoft/hummingbird. You will get the project file with the associate source files. Open the project file (Hummingbird.csproj) and save the Visual Studio solution. Next, click on Manage NuGet Packages…

Visual Studio Screenshot - Manage NuGet Packagesimage

In the package manager, notice that there is an alert notifying you about the fact that you need to restore missing packages. Click on Restore.

Visual Studio 2015 - Restore NuGet Packagesimage

Once you have the packages restored, you can build the project and run the application:

Hummingbird - Main Screenimage

From here on, you will be able to use the application directly with O365. Click on Settings to configure all application parameters:

Hummingbird - Settings Screenimage

For the username, use the standard O365 email address. The server URL for the main EWS endpoint is https://outlook.office365.com/EWS/Exchange.asmx – make sure that you also select O365 as the target. Once you enter both the credentials and the server information, click on the respective Save buttons.

Moving forward, you will have everything required for migration. On the main page, you can enter the alias of the DL (skip the domain) and click on Create Backup. The output (as long as the alias is resolved) will be an .xmldl file that contains the original alias, DL owner and list of members. Hummingbird will not automatically delete the distribution list for you, so nothing to worry about. You can use this .xmldl file in the next step when you will create the group. If you want to preserve the alias, you will need to manually delete the DL first. Otherwise, the new group will be created with the new alias and a list of members from the original DL. Every member of the new group will receive a welcome email upon completion.

If you run into any issues, open a new bug on GitHub.