Alexander Vanwynsberghe

"There is nothing impossible to him who will try"

MCSD Application Lifecycle Management, check!

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:

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!

Upgrading TFS 2012.1 to 2012.2 CTP

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:

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!

Coded UI problem: QTAgent32 Playback Warning

Last week, I ran into a Coded UI issue at a customer. The problem occurred when I tried to execute my Coded UI tests on a remote test-agent machine (using the 2010 version) The execution of the test was just fine, the (WinForms) application started and waited for initialization (because the application takes quite some time to start). But just on the moment when the first Coded UI test wants to start, the application closed. Quite strange..

The exception I got in the test run result was the following:

I had no I idea what the problem was, but after some Bing’ing, I found that it was related to the QTAgent Process not being killed successfully after a test run.


Unfortunately, the remedy for this error message Error calling Initialization method for test class xxx: System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. calls for killing the QTagent Process.

The issue from my side was about the application that has been killed while my tests were running. I didn’t foresee a catch for that, resulting in a QTAgent Process that was not quite behaving like it should have.

To avoid situations like this, you can make use of the ‘Playback.PlaybackError‘ event. This event is raised when an exception occurs during playback.

Just a quick share :-)

Microsoft Project Server 2010 Certified Professional

Since last week, I am a Microsoft Project Server 2010 Certified professional. I took the 70-177 exam (Microsoft Project Server 2010, Configuring) and passed it with a score of 892/1000.

About the exam, well firstly, there is not that many study material. The company I’m working for (RealDolmen) was able to get me a copy of the book “Implementing and Administering Microsoft Project Server 2010” by Chefetz and Howard. It’s a big one with about 900 pages to read, but it’s really worth it! If you study the book and have some experience with a few implementations/setups, you will definitely pass.

The Exam structure

There were 75 questions in the exam and you have about 4 hours to complete it. The exam results are broken down into four sections.

  1. Installing Project Server 2010
  2. Managing Resources and Security
  3. Configuring Project Server 2010
  4. Administering Project Server 2010

Focus points

All questions were spread across the 4 sections.

  • Be sure that you know what the prerequisites are for a project server environment and the various upgrade options from both Project Server 2007 and Project Server 2003 to 2010.
  • One important thing is that you need to understand the difference between Categories and Groups in project server and how these are used to control the permissions of your users. It’s all about who can do what and who can access what. Also important is the part about controlling the access to project sites for users through project server and for users that you don’t have access to project server.
  • Also be sure that you have some basic SharePoint Server 2010 knowledge. As Project Server 2010 is built on top of SharePoint, it uses lots of SharePoint features

Take your time!

If you take the exam, just be sure that you read the question for what it says. Nothing more, nothing less. For example if there is a question with something like “A Project Manager saves his project” don’t assume he has saved AND published the project. Just take the time to read the question, reread it and then refer back to it when looking at the answers.

Good luck!

Project Server 2013 On-premises Workflow

I’ve already spent a lot of time using Project Online. You can find some information on my previous blog posts here and here. As Project Online is really awesome, there are off course some cases where you need to install Project Server on-premises. The installation process is quite easy to do (even with PowerShell).

If you want to use Workflows with your Project Server instance (in fact with SharePoint 2013 in general), you need an additional component called “Workflow Manager 1.0“. Let me quote the definition of this:

Workflow Manager 1.0 allows you to host and manage long-running Windows Workflow Foundation (WF) applications.  Workflow Manager was designed to meet the scale and multi-tenant needs of your modern enterprise applications while also increasing developer and administrator productivity.  Workflow Manager is the backing technology for SharePoint Workflows in SharePoint Server 2013 and the next version of Office 365, and SharePoint support has been a key focus for this first release of Workflow Manager.

The goal of this blog post is to guide you trough the process of installing the Workflow Manager 1.0. The process is quite straight forward, but there are some things that you need to know.

First step is to download the bits. You can download “WorkflowManager.exe” here. After the download, simply run the installer, and you should see Web Platform Installer popping up. Be sure that you log in with an Administrator account, otherwise, you will get some nice errors!

Note: You can install this on the SharePoint server, or you could use a separate server to host your workflows. In this example, I used my SharePoint 2013 server. Click next to install and follow the wizard:

Click “Continue” to start the configuration

Enter your SQL Server instance and a service account. I created a “WF_Service” account on my AD. Be sure that you also enter a Certificate Generation Key. You also may not forget to select “Allow Workflow management over HTTP on this computer“.

That’s it for the installation. Next step is the “Configuration“. In my case, I want to be able to create workflows on my Project Server 2013 instance, which is a Site Collection located at the url “http://ps2013lab/PWA“. I need to link this to the Workflow Host (which I’ve just installed). In my case, I want to use it with HTTP (instead of HTTPS), so the port of my workflow host is located at 12291 (you can see this on the summary screen of the installation).

You can also open the Workflow (or SharePoint) PowerShell console and type “Get-WFFarm“. This will show you all settings, including the ports that are being used.

So, we have all our settings. We now need to execute a PowerShell command “Register-SPWorkflowService” on the SharePoint server. You need to add the argument “SPSite” and “WorkflowHostUri“. In my case:

Note 1: This command will return nothing. It’s a silent command meaning that you have no process of whether the command worked, or when the process has been finished.
Note 2: If you installed the workflow manager on another server than the SharePoint server, you need to download and install the Workflow Client on the SharePoint server. You can download this here.

To check if your “Register” action is completed, you can go to the “Central Administration -> Service applications -> Workflow Service Application Proxy“. You should see:

Now the final test, just open SharePoint designer, connect to your Site Collection, and you should be able to create a new Workflow (Project Server 2013 in my case)

That’s it! Good luck with your Workflows!

Debugging Apps for SharePoint Online on a non-development site collection

In a previous post, I was talking about how you can use Project Server Online data in a SharePoint 2013 App using CSOM. One thing I was talking about was the fact that you cannot debug an application when you’re not using a development site collection. You will see this nice error:

Eli Sheldon (Program Manager at Microsoft) gave me this explanation (Thanks!):

SharePoint added a site collection level feature near RTM that, once enabled, will allow you to F5 deploy from VisualStudio, no matter what type of site collection you are targeting. Until the new bits roll online and this is documented, your best option here is to F5 debug on-prem and publish an app package and use the corporate catalog to test online.

Well, good news, SharePoint (online) is RTM (since a few weeks). Let’s find out how we can debug our SharePoint app on a non-development site. The reason why I really want to this, is because I have a Project Online App which requires a site collection where PWA (Project Web Access) is activated. Development sites cannot be created with an Active PWA.
I was hoping to see an option in the O365 SharePoint admin center where I could activate this ‘feature’. But unfortunately, there isn’t, or at least I couldn’t find it. So, the next thing I did was opening the solution of my previously created app, and hit F5 debug it. Note: be sure to install the latest version of the Office tools for Visual Studio 2012. As a result F5’ing my solution, I had this error:
So that’s a no-go, because “sideloading of apps is not enabled on this site“. After some research on the MSDN forums, I found a PowerShell script allowing you to enable Sideloading.  Because it’s not available in the interface, the only option you have is to run the PowerShell script to enable this feature. (There is not quite much information about this Sideloading thing yet though).
The first thing you have to do is download the SharePoint Online management Shell (link). The PowerShell script you can use is:
All you need to do is enter you site name, your username and your password. You will get:
That’s it. Now you can F5 your App, and it will be deployed and will also be debuggable on a non-development site, or in my case a PWA site collection. A small app that will load all Projects from my Project Site collection. Nothing fancy, just an example. Have fun!

Visual Studio 2012 Launch Event: Slides

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:

  1. Getting your database development under control using the new SQL Server Database Tools (SSDT)
  2. 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!

And remember:

Solved: SkyDrive Pro does not sync anymore

In July, Sharepoint 2013 was announce together with some other great things like Office 2013, Project Server 2013, Lync 2013, … But there was also a (beta) release of a small tool called ‘SkyDrive Pro’. Let me first introduce you to this tool.

SkyDrive Pro is a document storage service that organizations provision and manage for their users. It will be available as a service together with many Office 365 plans, and on-premises with the new version of SharePoint.

Like its consumer counterpart, SkyDrive Pro enables people to synchronize their work documents from SharePoint to the cloud, and also take documents offline when they’re on the go. People can access or edit their documents across devices; files are automatically synchronized with SkyDrive Pro when connected online.

After SkyDrive Pro is set up, you can save documents directly to SkyDrive Pro from Office desktop applications, or synchronize them directly from SharePoint.

In fact, SkyDrive pro is the replacement of the SharePoint 2010 ‘Workspace’ and it also integrates very well with Windows Explorer. That being said, SkyDrive Pro should also be able to sync SharePoint 2010 Document Libraries.  But for one or another reason, the current build of SkyDrive Pro had some problems to keep my SharePoint 2010 content synced.

I did a rename of my SharePoint folder located in my user directory, but that’s something SkyDrive Pro doesn’t really like (at least on my machine). The error I got was “An error occurred while attempting to synchronize this tool.”

I did some bing’ing and found some similar issues like mine. It seems like it is indeed a bug with the current build of SkyDrive Pro. As for now, the only solution is to clear the SkyDrive Pro cache, and re-sync your library. So you will lose all settings. To clear your cache, close all your Office processes like groove.exe (which is SkyDrive Pro), msouc.exe,  msosync.exe, office library sync,…

Browse to “C:\Users\%username%\AppData\Local\Microsoft\Office\Spw” and delete all the content. (you will see that this is all related to groove and spw = SharePoint Workspace). Next, go to “C:\Users\%username%\AppData\Local\Microsoft\Office\15.0\OfficeFileCache” and also delete all content from this folder. This is where all the caching from your files are stored.

After you deleted everything,  you should be able to start SkyDrive Pro again (using “C:\Program Files\Microsoft Office\Office15\GROOVE.EXE“). You can now start configuring your clean environment. Good luck!

How to use Project Server Online data in a SharePoint 2013 App using CSOM

This week I was attending the 3 day Project Ignite training. This is a technical training offered directly from Microsoft and was presented by Christophe Fiessinger and Jan Kalis at Warsaw (but I followed the training on Lync, which was really cool using the 360-video). I learned lots of new and interesting things about Project Server 2013 and Project Online. Thanks Christophe and Jan!

Of Course, that’s not the topic of this blog post. During the last day of the training, we got some information about the extensibility options for Project Server 2013. One of the topics was about CSOM, which is an abbreviation for Client-Side Object Model, and also about JSOM, which stands for Javascript Object Model. Let me use the slide from Project Ignite explaining what it is all about:

As you can see, an interesting topic to do some deep diving and (as Christophe told us to) doing our homework. I’ll guide you through the process of creating:

  1. A console application, connecting to my local Project Server 2013 lab machine and create a project.
  2. A SharePoint Autohosted app (based on my previous blogpost: Windows Azure auto-provisioned apps for SharePoint 2013), connecting my Project Online PWA instance using OAuth 2.0 and retrieving a list of projects.

1. Local Console Application

To start, I will create a small piece of code to create a project on my local Project Server 2013 lab machine. So no SharePoint app, no authentication, just creating a project using CSOM. To start, open your Visual Studio 2012 and create a new Console Application. The first thing you have to do with this empty console project is referencing 3 DLL’s. If you’re developing on a machine with Project Server 2013 installed, you can add a reference directly, otherwise you need to copy the 3 DLL’s to your development machine (create an ‘Assemblies’ folder in your project) and reference them this way. The 3 DLL’s you need can be found in the folder “%ProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\ “. Copy those items:
  1. Microsoft.ProjectServer.Client.dll
  2. Microsoft.SharePoint.Client.dll
  3. Microsoft.SharePoint.Client.Runtime.dll

Reference them in your project and open ‘Program.cs’. Add the code, listed here, to your application. I’m not going to repeat every piece of code, as it’s explained very well on that link. But what I want to mention is ‘security’. If you run your SharePoint/Project Server 2013 dev environment, and you develop your application on another machine, you need to provide credentials to connect to SharePoint/Project Server, in fact, you need to initialize the ProjectContext with those credentials. The ProjectContext contains the client-side context for development with a Project Web App instance, and contains the enterprise-wide collections of Project Server objects that exist in Project Web App. You can get the ProjectContext using your credentials with the following quick and dirty solution:

If you run the application (after you added the following command to the start-options of your project: -n “Test Project using CSOM 01” -t 20) , you should see:
In general, it’s all about the ProjectContext. Using this context, you can do/get whatever information you want. In this case, a new Project is created using the object ‘ProjectCreationInformation’, this object is added to the ‘projContext.Projects‘ and finally you tell the context to update with this new project. This will create a queue job and will perform the required action. That was easy to do!


2. SharePoint Autohosted App

In this part, I will create a SharePoint Autohosted App where I will use the CSOM to retrieve a list of all projects. You can find a step-by-step guide in one of my previous posts. What you will need  is a subscription of Project Online Preview  (of course). If you haven’t got a  subscription yet, you should really try it out (more info can be found in this post). The first step is to create a new “App for SharePoint 2013” project using Visual Studio:
On the next screen, you should enter the URL of development site (note: when you want to debug Apps on SharePoint Online, you need to have a site collection created as ‘Development site’ type. Otherwise, you will receive an error while publishing in debug mode). This option does have an impact when you want to try debug apps for Project Server (using PWA), but more about that later.
No you have an empty SharePoint App. In our case, we want to use this app to get a list of projects stored on our online PWA. If you look at the files in your project, you will see a file called ‘TokenHelper.cs‘. This is a file responsible for the OAuth 2.0 authentication of your application with SharePoint. It includes the code to handle OAuth 2.0 authentication and how to perform callbacks to SharePoint using CSOM. More information about SharePoint 2013 authentication can be found here.
This TokenHelper class is used to get a SharePoint ClientContext, like you can see in the code below. The TokenHelper returns an authenticated instance of the ClientContext, which is the CSOM you can use to create some cool things.
This is great for SharePoint, but we need something different, we need a ProjectContext. This ProjectContext object inherits from ClientContext in SharePoint,  so you can also access the SharePoint CSOM through this ProjectContext object. To get this context, we need to change some small things to the TokenHelper class. Create the following 2 new functions in TokenHelper.cs
Now we have can get our ProjectContext using the “GetProjectContextWithContextToken” function. We can use the following code just to output the list of Projects:
What it basically does is loading the Projects into the ProjectContext and execute the query to get the results. Ok, now that you have the code, you should manage the permissions of the App. Because will we ‘read’ data from Project Server, we will need this permission to be able to actually read the data. The permission configuration settings can be found in the AppManifest.XML. You can find this file in your Solution Explorer. When you open this file, Visual Studio will show you an editor where one of the option is about permissions. Add the permission ‘Projects Read’ to this list and save the file:
Allright, we have the code and the permissions for our App are set. The next thing is, how can we debug this app? Well, remember when you created the project. We’ve added the URL to our Development site on SharePoint online environment. This development site is a seperate Site Collection. The first problem with that is the fact that this Site Collection does not contain a PWA instance. So if we debug our current application, we will never get data. The second problem is about the permissions. When you try to debug the application, it will check the permission settings. Because we created a permission ‘Projects Read’, we will always get an access denied error, simply because there is no PWA there. So, debugging the application on a Development Site Collection will give you:
You could also try to debug it directly on the PWA site (by changing the debug URL), but then you get this error when debugging:
I passed the question about this to Christophe, and he forwared my question to Eli Sheldon (Program Manager at Microsoft). He gave me this explanation (Thanks!):

SharePoint added a site collection level feature near RTM that, once enabled, will allow you to F5 deploy from VisualStudio, no matter what type of site collection you are targeting. Until the new bits roll online and this is documented, your best option here is to F5 debug on-prem and publish an app package and use the corporate catalog to test online.

So as you can see, currently no F5 debug with this release. But the RTM is coming really soon! (Should be there around mid November for MSDN subscribers). So for now, just publish the App and install it on our Project Server Online environment.  Right-click on your project containing the AppManifest file and select ‘Publish‘. You will get this dialog:
Click finish, and the output folder of your .APP file should open. Now we should ‘upload‘ it to our SharePoint Online environment, and make it available for the users. The place where App’s are managed is called the “App Catalog“. This app catalog is a separate Site Collection, and can be created using the SharePoint Administration Center. There you can click on ‘Apps – App Catalog‘. If you haven’t created one yet, it will create one for your, and otherwise, you will be redirected to the App Catalog itself. On your App Catalog site, click on ‘Apps for SharePoint‘ (on the left side). You will see an overview of all installed apps, including an indication of the licenses you still have available. To add your App, click ‘New Item‘ or drag and drop your .app file to the top area of this page.

Now you have your new Application available in the App Catalog. To use it, just go to Project Server Online PWA. Go to ‘Site Contents‘ on the left side, and click on ‘Add an App‘. There you should see the application we’ve just uploaded. Click the App, and you should get a question to confirm the required permissions. In our case, reading Project data. Trust this and continue. When the process is ready, your application is installed on your site, and you’re ready to use it. Click on the App, and you should see:

That’s a list of your projects, retrieved by the ProjectContext (CSOM). Nothing fancy, no HTML, just plain text. Cool! Now it’s up to you to use the CSOM and create some great apps! I’m really excited about this way creating apps, the way CSOM works, the flexibility, the (future) debugging.


3. The things we learned 

  1. You can do lots of things with the ProjectContext
  2. Don’t forget to setup your Permissions in the AppManifest file
  3. You can’t debug until RTM

Thanks to my colleague Koen Callens for the fun experience of creating our first App together! Thanks for reading, and enjoy creating your Project Server apps!

Upgrading the TFS 2010 and Project Server 2010 Integration Virtual Machine to TFS 2012

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!