Recent posts








    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    OneShare promo video …

    Already did a lot of post about Development and Test on Azure … see small list below. Now a promotional video about our Dev and Test services …


    Make your team cost aware … cost driven development.

    Cost is an interesting thing when developing on and for Azure.

    A team now has direct influence on the run cost of the different environments. Not only development and test but also staging and production is in their influence zone.

    With the right insight in environment cost a team can make architectural decision based on environment billing information.

    For example, within Azure you can put all the code in an Azure VM, which is easy (lazy) and pretty expensive when you have them On all the time. Specially when you have Azure VMs for al stages.
    See graph below, a team before 22 November everything on VM’s and always on, after 22 November with some more awareness the costs went down with almost 70%.


    Project Azure costs, before and after being aware of the environments costs of their environments.

    Other example, moving functionality from VMs to Azure Cloud Services lowers the price a bit (and finally also lower the operational costs). But moving Data from an Azure SQL Server to Table Storages is also a very beneficial move. Or moving a Worker Role to Azure Schedule Jobs or Web Jobs really pays off.

    Below the Azure Billing costs of a project which tightly makes architectural decisions based on costs. For the team it is a challenge to constantly lower the daily cost.

    With the daily updated Azure Costs insight they can see bad decisions (see spike) and good decisions (the big drop) immediately.


    Also the slight rising of daily costs over time is something to pay attention to. Although the teams adds new functionality constantly the costs stays almost the same on a daily base.

    Teams can get with Azure much more cost aware. For this to happen teams need daily updated insight in costs.

    Read more: http://clemensreijnen.nl/post/2015/01/17/Insight-and-Self-Servicing-needs-for-Dev-Test-Teams.aspx

    The DevOps battle field … provision, configure and deploy environments.

    The current battle field in the software industry is among the provisioning and configuring of environments, specially cloud environments.

    To live the DevOps dream one of the skills a team must have is the capability to be fast and flexible in the provisioning, configuring and usages of environments.

    These environments cover not only test environments but also the complete needed ALM infrastructure and the team member workspace. See this post: Cloud usage flavors for Development and Test teams.

    Deployment Technologies

    An interesting part of the battle field gives this survey Deployments in .NET 2014/2015 Report 


    although the list of tools is pretty long it isn’t compete and more are coming almost on a daily base.

    Which deployment tool and technology to choose is really hard and often depends on the experience of a team member or the tools the operations department used to use. 

    Infrastructure as Code

    While Deployment technologies is one part of the battle field and other part and even more important is the provisioning and configuring of environments. The Infrastructure as Code technologies.

    For example this is a small list of tools which automate the provisioning and configuration of environments.  


    Release Management

    To make all these technologies of provisioning, configuring and deploying valuable it must be done in relation to a release, to customer value.

    Release Management tools which support the flow and relate it to functionality, reports and tests are a must for teams. Support of tools which help to integrate the environments and releases in to the complete Application Lifecycle.

    Microsoft Visual Studio Release Manager is one of these tools, another one is HP Codar. And probably there are many more….


    Investing leaning time (and money) in the moving target of Provisioning and Configuring (Cloud) environments is a must for every team. As with all investments, it can be a waste of money. When a technology or tool doesn’t take off, or the capabilities aren’t what you expected.

    It is for teams often hard to get a grip around what to do, which technology, which tools. My advice: start by asking the operations department (the Ops part of DevOps)is a good start to make a decision. Glimlach

    Happy Coding.

    Posted: Jan 20 2015, 13:42 by ClemensReijnen | Comments (2) RSS comment feed |
    Filed under: ALM | Agile | Azure
    Insight and Self Servicing needs for Dev & Test Teams

    Two important aspects must be given to teams who work from and on Azure. Insight and Self Servicing.


    Insight in usages of Azure resources (and money) in relation to the team activities. When you are in the automation business, you are lazy by default. Team members will forget to switch off machines. Team members will leave test environments running, even when there aren’t any test runs going on or planned.

    When you give team members direct insight how they are consuming Azure resource in relation with their activities, they will pay a lot more attention to it.

    With this insight the lower cost, pay per use, scenario will really take off.


    Self servicing and some help with it. Team member who are busy for days to setup their work machine isn't from this age any more, even teams who are busy for days setting up (and configuring) the complete test infrastructure or automate build and test environments isn’t accepted by customers anymore.   

    The creation of machines on Azure is pretty easy, but still additional software installing and configure for example networks takes a lot of specialized knowledge not every team member has.

    Making it easy for every team member to create environments, also the ones without PowerShell knowledge or even Azure services knowledge, is key for the success of using the Cloud for your teams.

    Dev and Test Teams Portal.

    At Sogeti we created the OneShare service and solution for teams. An O365 hosted portal where every team/ project gets a site, a Visual Studio online account and an Azure sub-subscription, all connected with each other. to give insight and self servicing  for every team member.

    For more details watch this video…

    DevOps technical meeting video: Ent DevOps | Cloud Teams | Dutch harbour case | Docker containers for DevOps

    Live streamed on 16 Oct.. 2014

    Welcome to the Live stream of our DevOps technical meeting!

    Program is as follows:
    18.00-18.45u Introduction & Enterprise DevOps (Dave van Herpen, Sogeti NL)
    18.45-19.30u Cloud Team, OneShare (Clemens Reijnen, Patriek van Dorp, Sogeti NL)
    19.45-20.30u DevOps collaboration in the Dutch harbour (Peter Siepel, Schuberg Philis/Loodswezen)
    20.30-21.00u Use of Docker containers for DevOps practices (Benoît Wilcox, Laurent Guerin, Sogeti France, via webcast)

    3 Challenges when Testing from and on the Cloud.

    When adopting the Cloud for your test work it comes with several challenges. Looking at the different usages flavors of the cloud for teams, read: Cloud usage flavors for Development and Test teams, then every flavors has its own challenges.

    Challenge 1: Team Workspace in the Cloud – Test Environment On Premise.


    The scenario is that the team adopted Team Member Workspace on Azure, but the infrastructure (test environments) are staying on-premise.

    The planning, preparation, specification and execution of the test work takes place on the team member workstation which is hosted in the Cloud.

    The challenges is that the execution of test are triggered from the public cloud and the test runs on the private data center. There needs to be a connection between the team member workstation and the test environment. The same counts for automatic test runs.

    Solution: make a network connection between Azure and the On-Premise datacenter. Often a very long discussion with the internal infrastructure people is needed to get this working.

    You can create a Site-to-Site VPN, for connecting datacenters to an Azure site or Point-to-Site VPN, when connecting a single machine to an Azure site.



    Challenge 2: Acceptance Test Infrastructure in the Cloud – Production On Premise.


    the scenario, all environments (development and test) are on Azure except production, this one still lives on-premise. The challenges is to get the test and acceptance (on Azure) environments as equal as possible to the production (on prem) environment.

    Solution: The best solution is the usages of the same installation scripts for production as for acceptance and test. Make PowerShell DSC scripts for and re-use them for every environment.

    there is also a need for stubs to make testers need to focus on writing isolated tests, which will make more systems valid. Still not all tests can run on Azure Test Infrastructure (performance and load tests won’t give valid results).

    the worst case scenario is that an additional pre-production environment needs to be created on-premise for tests which couldn’t be validate in the cloud.

    see: http://blogs.technet.com/b/privatecloud/archive/2013/08/30/introducing-powershell-desired-state-configuration-dsc.aspximage


    Challenge 3: ALM Infrastructure in the Cloud – test, acceptance and production on- premise


    The scenario: The team consumes their ALM infrastructure from the Cloud and use on premise workstations.

    Actually from a technical perspective there isn’t a challenge in this scenario. The only need is reliable https connection between the Test case repository (ALM Infrastructure ) and the test environments.

    Interesting in this scenario can be the test data. There is probably a security reason why the environments (test, acc and prod) are in the local datacenter. When the test cases, test data and test results are stored on Azure, the security regulations probably also count for that data.

    Often production data is used as test data resulting in a no go for this scenario. A solution is to anonemize the test data.


    these where just three challenges for the three different components of Cloud usages for Dev and Test on Azure.

    There are many more challenges, maybe in another post.

    Posted: Oct 15 2014, 02:38 by ClemensReijnen | Comments (8) RSS comment feed |
    Filed under: ALM | Azure | Cloud
    Cloud usage flavors for Development and Test teams.

    The cloud for teams have many forms.

    Teams can simply use a virtual machine on Azure to work from, the team member workspace flavor as I call it.


    Or, they can use the bug tracking database, requirements management, and scrum board from the Cloud. In either a SaaS way, like Visual Studio Online (www.VisualStudio.com) or as an IaaS solution (see Practical guidance for TFVC and TFS on Azure IaaS). Both are the ALM infrastructure in the cloud flavor of Cloud usages by teams.


    Another way teams can use the Cloud for their work is that they use it for their Development and Test Infrastructures. For example, when you develop a system for an On-Premise SharePoint farm team members need to have a SharePoint Farm. Developers need the infrastructure for development, debugging and integration, testers for sure to run tests for the system in development. It is the Development and Test Environments flavor.


    When adopting the cloud for your Development and Test work, all three flavors are interesting to look at. You can consume them separately but when using all together you are really riding the cloud wave.

    Visual Studio Online Rest API introduction and sample on GitHub.

    Visual Studio Online opens its chest with APIs, with this creating an open platform for managing team work and collaboration. An open Application Lifecycle Management platform, for everybody to use, consume and integrate.

    Not only Rest APIs for project artifacts are available, also a notification mechanism via Service Hooks is.

    In this post an overview of the Rest APIs supported by examples and a solution, in the next one an introduction to Service Hooks.

    You can get the source over here on GitHub VSOTeams-Universal-App

    (this small project I created when we moved to Azure AD to get all our VSO users in an Excel file, with license information and mail to add them in bulk to Azure AD. Not complete and a lot of room for improvement. Below a detailed description of the scenario and video)

    Introduction Visual Studio Online Rest API’s

    Visual Studio Online Rest APIs lets you build functionality on top of Visual Studio Online with simple HTTP methods in JSON format. This makes the Visual Studio Online Rest APIs (VSO APIs) an ideal extensibility capability for Mobile and Web Apps.

    The VSO APIs opens up the Visual Studio Online SaaS platform. The Visual Studio Online platform provides functionality for teams like; Agile planning, TFS / GIT version control, test management, bug tracking, team collaboration, build management and more. All these capabilities are accessible via the VSO APIs to leverage applications or integrate with third-party ALM vendor tools.

    Getting started with Visual Studio Online Rest APIs.

    The only prerequisite needed to start building on top of the Visual Studio Online platform is a Visual Studio Online account. A free Visual Studio Online account can easily be created via www.VisualStudio.com with a Microsoft Account.


    Visual Studio Online API organization

    The VSO APIs can be grouped in three levels, with different URL formats.

    Personal Level.

    To get information about your profile as known in VSO and the VSO accounts your account has. The URL format of these calls start with:


    For example to get your profile from VSO the request will be:

    https://app.vssps.visualstudio.com/_apis/profile/profiles/me which gives a JSON response with the current signed in User.


    "displayName": "Clemens Reijnen",

    "publicAlias": "4b128a7c-0e4d-4a75-b36e-1f2151220asdad",

    "emailAddress": "clemens.reijnen@sogeti.nl",

    "coreRevision": 79,

    "timeStamp": "2014-05-05T10:50:49.77+00:00",

    "id": "4b128a7c-0e4d-4a75-b36e-1f2151220asdad",

    "revision": 1613


    For accounts of the current users the URL will look like this:


    Account level.

    VSO APIs on the account level provide information about users and licenses in the account.

    https:// {account}.vssps.visualstudio.com/_apis/…/…

    To get all users in a Visual Studio Online account with corresponding licenses you create a responds like:


    Project collection level.

    The project level APIs are most interesting for leveraging VSO functionality in Apps. These APIs provide information and actions on:

    - Work Item tracking,

    - Builds,

    - GIT,

    - Version Control,

    - Test Management,

    - Team rooms.

    Project collection level APIs have the format of:

    For example a request to get all projects in a project collection can be captured with request like:


    Which give a JSON array response with all projects in the DefaultCollection.

    "value": [


    "id": "810f92d5-cbb2-41e8-9390-08f1fc5c123",

    "name": "WIN8 Store App Development",

    "url": "https://sogeti.visualstudio.com/DefaultCollection/_apis/projects/810f92d5-cbb2-41e8-9390-08f1fc5c123",



    "id": "d62d8b1e-06b9-4132-bb09-c3b45123",

    "name": "DefaultCollection",

    "url": "https://sogeti.visualstudio.com/_apis/projectCollections/d62d8b1e-06b9-4132-bb09-c3b453",

    "collectionUrl": "https://sogeti.visualstudio.com/DefaultCollection"




    "id": "6c831d9a-f061-4bee-bd85-13c4f53d8",

    "name": "WIN8 Store App Development Team",

    "url": "https://sogeti.visualstudio.com/DefaultCollection/_apis/projects/810f92d5-cbb2-41e8-9390-0234fc5cb90d/teams/6c831d9a-f061-4bee-bd85-4f525f3d8"




    VSO Rest APIs URL property.

    The URL property found in most JSON responses gives an easy access to the underlying properties of the requested project artifact.

    For example in the JSON response of the above Projects request you will recognize the URL properties with the already populated Request URL for more details.

    For example to get from the projects array JSON responds to detailed project team information you can use the URL references.


    Note: I’m using Chrome with a JSON formatter app installed, for getting the nice readable JSON responds.

    HTTP Verbs.

    Beside the GET HTTP verb are the others, POST, PATCH and DELETE .

    With POST you can create resource as Work Items and Team Rooms.

    First get a list with Rooms, to get the RoomId.


    And then POST a message to the room with the RoomId


    and the message you want to post:


    "content": "New messages"


    PATCH can be used to update a resource and DELETE for deleting resources.


    While getting the responses in the above example doesn’t require any specific authentication mechanisms, you’re already logged on in Visual Studio Online via the browser. But, when you want to call the VSO APIs from outside the browser you need enable your secondary credentials to make us of Basic Authentication.

    Enabling your secondary credentials can easily be done from within Visual Studio Online via your “My profile”.


    Once enabled Apps can make use of these credentials to request information from the VSO APIs.

    One attention point on the usage of the Basic Authentication credentials, beside that it isn’t the most secure way, when using an automated system to request information you can run in to a block from Visual Studio Online.



    Visual Studio Online also provides a more easier, end user friendly and more secure way of consuming its API’s via OAuth. See http://www.visualstudio.com/en-us/integrate/get-started/get-started-auth-oauth2-vsi 

    Visaul Studio Online authorization page with your company and app information

    Use Visual Studio Online Rest API’s in a Universal Windows App.

    The Visual Studio Online Rest APIs are ideal for mobile apps to extend its capabilities. Scenario’s where Team members want to take a quick look at the team activity of the past day they want to see the latest build results and details, change set. The scenarios for mobile are unlimited.


    For sources used in this example application see: GitHub You can get the source over here on GitHub https://github.com/Clemensreijnen/VSOTeams-Universal-App 

    The example App scenario.

    The example solution is a Universal Windows App which displays the projects in a Visual Studio Online account with the Teams in these projects. For a Team the solution shows its team members and team room messages. For sure the solution also has the capability to post messages to the team room.


    For the team members the solution shows their person details with Visual Studio license, and teams they are member of.

    A video says more than thousand mocks… YouTube: VSO Teams

    VSO Teams

    The Rest APIs necessary are:

    - Get logged in user identity
    https://app.vssps.visualstudio.com/_apis/Profile/profiles/me this results in the JSON respond with the UserID, which is needed for the next call.

    - Get logged in user accounts
    when multiple accounts are return a selection needs to be made in the settings, this setting is used in the call to get all projects.

    - Get all projects in account

    - Get teams per project
    https:// {account}.visualstudio.com/DefaultCollection/_apis/projects/{ProjectID}/teams
    probably multiple projects are returned, so a iteration to the projects collection is needed to get all the Teams.

    - Get activities in team room
    Per Team Room the messages are captured. All the other calls are more stable, they don’t change that often, this one will be called multiple times to get new messages. A filter can be added to this call in the form of timespan.

    - Post activity in team room
    https://{account}.VisualStudio.com/DefaultCollection/_apis/chat/rooms/{roomId}/messages with the message.

    For the users screen a list of all account users with licenses is needed and user details.

    - Get All VSO Users
    https:// {account}.vssps.visualstudio.com/_apis/Licensing/Entitlement

    - Get user details, this one is a bit complex because we only can get the details from team members, so we need to iterate all teams to get a collection of team members.


    - And finally we get all account pictures.

    Very straight forward. But before we can move forward we need to create the project and authenticate the user in the App for Visual Studio Online (with secondary credentials).

    The Universal App.

    The universal app needs a bit different approach as when you’re building separate Apps for the different Windows platforms. Lucky it gets easier.



    Basic Authentication can be implemented with the “Windows.Web.Http” API as shown in the below.


    Basic Authentication is very straight forward, the HTTPClient from Windows.Web.Http can be used for asynchronous operations for various types of content to a HTTP server.

    Call VSO Rest API for projects

    With the authentication in place a call can be made to the VSO Rest API for projects. The asynchronous method “GetAsync” is used. After ensuring that there is a success (200) callback, the response is read in a string and de-serialized to a projects collection.


    The JsonConvert method is used from Newtonsoft JSON. The Project collection is an Observable Collection with Observable objects of the type project.


    The property name value is extracted from the returned JSON string. Where collections in VSO Rest API responses come with a JSON array {"value": [ … ]}

    Pretty easy to use is http://json2csharp.com/ to convert the JSON to C3 objects, although we finally we still have to make the objects observable.

    With the collection of Projects in place we now can bind them to the screens in XAML. But, first the JSON is saved in local storage. Because the projects don’t change that often, not every minute a project is added to VSO accounts, we can make starting up the project faster and we have offline capabilities.

    Now all project are loaded in the Windows 8.1 Store App


    And the Windows 8 Phone App (still some XAML work to do)


    We can repeat this for all the GET operation needed to get the proper information, except for the profile images. For the profile images not a string responds is captured but a buffer is written in a stream to get the image file.


    Also this method saves the images local, you defiantly don’t want to do this every time you load the App.

    See for more detailed implementation the Sources of this Universal App on Codeplex.

    Wrapping Up.

    Using the Visual Studio Online Rest APIs is very straight forward and easy. For the mobile apps scenario, having the data offline is defiantly a must, especially when you are loading lots of content from VSO like this example. Updating content in the Apps with Service Hooks is a very interesting scenario, which will be explained in the next post.

    But not only Mobile is the target platform for the VSO Rest APIs also web solutions can be enriched with VSO functionality or integration with SharePoint and Office 365 are interesting platforms. See the image below, where build information, team activities and member licenses are integrated in an O365 team portal. See this post:Integrate Azure, Visual Studio Online and Office 365 with VSO Rest APIs. 


    Posted: Oct 09 2014, 05:24 by ClemensReijnen | Comments (71) RSS comment feed |
    Filed under:
    Add an existing Office 365 Azure Active Directory to your Azure Subscription.

    Managing your Office 365 users via the Azure management portal works great. (http://msdn.microsoft.com/en-us/library/azure/hh967632.aspx)


    Also connecting applications (web or native) to the Azure Active Directory is perfect for the sign-on experience of the user.



    So, you want to add your existing Office 365 Azure Active Directory to your Azure Subscription. It is ‘add’ because the underlying directory for Office 365 is already an Azure Active Directory. This means that you only can add this directory to your Azure Subscription.

    While most samples / explanations let you create either a new Azure Subscription or Office 365 account.

    all very useful posts , but I wanted to use an existing Azure subscription and an existing Office 365 account. it is fairly simple.


    Be a global administrator in the Office 365 account. This will be done with your organizational ID, the onmicrosoft.com address.



    Log in to your Azure Subscription, with your Microsoft ID.

    Adding the organizational ID as co-administrator won’t work, it must be a a Microsoft account or … a user in a known Azure Active Directory. In the screenshot below I ‘m already connected to the Sogeti Azure AD, but I want to connect the ClemensReijnen Azure AD.

    just move on, forget adding a co-admin.





    This will open the dialog to add an existing Azure AD.


    Selecting the “Use existing directory” asks you if you are already signed in.


    So, don’t have different browsers open and be signed in on one for O365 and one for Azure, or have a private view open… (as I always have with that many accounts to manage)


    Just signed in the same browser on different tabs once in the Azure Management portal with your Microsoft ID and in Office 365 with your organizational ID.

    When you’re signed in to your existing Office 365 account, select OK and you will be redirected to your Office 365 account asking (sorry the screenshot is in Dutch, I accidently selected Dutch when I created the Office 365 account) if you want to map with Azure.


    And now the magic had happens, your Office 365 Azure Active Directory is available in you Azure portal.


    The process added the Microsoft Account which I use to sign in to the Azure portal as a User in the add, actually as a global admin.


    In both environments the users are now available.



    Fairly easy for so much power Glimlach

    Posted: Jul 11 2014, 02:38 by ClemensReijnen | Comments (5) RSS comment feed |
    Filed under: Azure
    Visual Studio Online Team Rooms on WP8, iPhone and Android with Xamarin Forms.

    A small  (Monday evening now, so a bit extended) weekend project, due to the contest announcement from Xamarin.

    A Xamarin 3 Forms project for Visual Studio Online Teams. Stay up to date what happens in your project with build runs, code changes, work item changes and chat with you team members. Available on three mobile platforms, iPhone, Windows Phone 8 and Android.

    You can get the source over here on GitHub VSOTeamsX


    imageThe solution is build on top of the Scott Hanselman example,  together with some examples from Xamarin.

    All logic is in the Shared Project and in the following Nuget packages:

    Microsoft HTTP Client Libraries, http://blogs.msdn.com/b/bclteam/p/httpclient.aspx (for the connectivity)

    PCL Storage, http://pclstorage.codeplex.com/ (for saving the profile images and settings in the App).

    There is still a lot of room for improvement, but I’m pretty happy with it for a weekend project. Would be cool to add notifications.

    Feel free to take a look at the sources and use it for your own solution.



    A small explanation.

    First you have to enable your secondary Visual Studio Online credentials and save them in the App.



    The App shows all your Project in Visual Studio Online and you corresponding team members.



    (on the list for email and phone integration).

    Next all team rooms are shown with messages, events and event details.



    you can also publish messages to the room.


    This is a small video from the windows Phone version:


    This all also works on an Android 


    and iPhone…
    (the text overrun is solved now)

    iOS Simulator Screen shot 16 Jun 2014 13.43.08iOS Simulator Screen shot 16 Jun 2014 13.42.14iOS Simulator Screen shot 16 Jun 2014 13.43.37


    Happy to have one code base for functionality and the UI, but we’re entering an images hell.