Alexander Vanwynsberghe

"There is nothing impossible to him who will try"

Debugging TFS Web Access Extensions

Last week I was working on some TFS Web Access extensions. For those who don’t know what this extensions are all about, just try the ‘Task Board Enhancer‘ by Tiago Pascoal and be amazed by the power of it. In short:

In Team Foundation Server 2012 (and 2013) you can develop extensions for the web interface, the extensions are Javascripts that can easily be installed using the TFS Web Access Control Panel. You can create plugins using the Javascript Object Model of TFS. An example can be a custom Work Item Control that can be visualized on the Web Access. More info and some how-to’s here.

Read More

Using Project Online OData with Excel Web App

Project online has some great reporting features. One of the features that I really like is the OData service. This OData service is not only available for Project online, but also for on-premise deployments. To access this feed, all you have to do is browse to the following url: “/pwa/_api/ProjectData”.

One of the tools to “explore” this Odata feed is Excel. You can open one of the existing Project Online reports with Excel. Go to “Reports – English – Project Overview Dashboard” and click on the 3 dots, select “Edit“.

01

The report will open in Excel, and you can now select the ‘DATA‘ tab, and press ‘Refresh All‘. This should load all your data and show you a list of all projects with some additional information. This is pretty cool, but can we also use this within the Excel Web App? Well, let’s try it straight. Go back to the “Reports” folder, and instead of clicking on the 3 dots, just click on the name of the file. Excel Web App should open, and you will see an empty list of projects. Now click on the Data tab and select “Refresh All Connections“.

02

So, that’s not what we were expecting. It looks like Excel Web App cannot access the Odata feed. The explanation is quite simple:

When Excel workbooks are refreshed in Office 365, the BI Azure Service retrieves updated data from Project Online and recalculates the internal workbook model. If the workbook has data connections pointing to Project Online OData feeds, the BI Azure Service must have permission to the SharePoint Online tenant to retrieve that data.

What we have to do is giving the BI Azure service the required permissions to access our Project Online tenant. Browse to your PWA instance, and add “/_layouts/15/appinv.aspx” to the URL. For example “http://yourtenant.sharepoint.com/sites/pwa/_layouts/15/appinv.aspx“. You will now see the application permission screen. In the App ID field, add 00000009-0000-0000-c000-000000000000 and click Lookup. The title and App domain should tell you we’re working with the Azure AnalyisisServices. Copy and paste the following in the Permission Request XML Field

03

Click create and Trust the App.

04

To be sure that the App has been granted with the correct permissions, go to “Admin (on top) – SharePoint – Apps – Permissions“. There you should see the App “Microsoft.Azure.AnalysisServices

05

That’s it. Now we can open the report using Excel Web App, and click on “Data – Refresh All Connections“. Have fun!

06

Note: Be sure that you first refresh and save your report using the Excel (desktop) application. This will update the internal model of the workbook so it is supported by Excel Web App.

Building SharePoint 2013 Apps with TFS 2012

In this post, I want to talk a little bit more about how you can build those shiny new SharePoint 2013 Apps using a TFS 2012 build server, but especially: without installing Visual Studio! To start, I will shortly guide you trough the process of setting up a TFS Build Server (with 1 controller and 1 agent).

You might be wondering, why do you setup a separate TFS Build Server? Why don’t you just use the Hosted TFS Build Server? Well, that was also my intake, but it just doesn’t work (yet). The Hosted Build Server does not have the “Office 2013 and SharePoint 2013 Developer Tools” on it, so it’s not able to build SharePoint 2013 apps. So for now, a separate server will do the trick.

TFS 2012 Build Server

Let me start with a quick overview of how to setup a TFS 2012 build server. In my scenario, I’m using a fresh Azure-hosted Windows Server 2012 VM. Fast and easy setup. Download the TFS 2012.1 installer and start the ‘Build Service Configuration Wizard’:

01The next step is connecting to your TFS Team Project Collection, which is a TFS Service (VisualStudio.com) instance.

02The next few steps are just a ‘next-next-next‘ experience, use the default settings as they are provided. Once you’re ready, you should see that it has one controller and one agent connected to your TFS Server.

08

CI Build Definition

Now comes the tricky part, how can be build SharePoint 2013 Apps without installing a full-blown Visual Studio 2013? Which components do you need? Well, we’ll start by creating a Windows Azure Auto Provisioned App like I’ve described in another post. Once you have this app, add it to Source Control, and perform a check-in.

Next step is to create a build definition which will perform a continuous integration build of our app. Using Visual Studio, go the the ‘Builds‘ section of Team Explorer, and click ‘Create New Build Definition‘. Give it a name and select ‘Continuous Integration‘ as trigger.

ci1

On the ‘Build Defaults‘ section, select the Build Controller we’ve just created, and define where you want the drop output  to be stored. I will just use a drop folder in Source Control (which is a new feature in TFS 2012).

ci2On the process section, select the solution file, and leave the other settings by default. That’s it for the build. To try, just queue the build manually, and you should see a nice failing build. That’s completely normal of course, as we didn’t install any build-related things on the build server yet:

error

Required components

Now that we have the build, we need to make the necessary changes on the build server (where the actual Build Agent service is running). Install the following components in the right order:

That’s a tricky one. It will start the web platform installer, and it will give you this error:

10

That’s correct, we don’t have Visual Studio installed, and that’s exactly what I don’t want! But when you click OK two times, you will a nice overview of all components required:

11

We can now use the Direct Download links provided to install the required components:

When installing this, you’ll get another nice warning about the ‘Microsoft Web Developer Tools’. Just click ‘Continue

13

There we go, another nice screen telling me that I need the Windows Identity Foundation Runtime.

16

My build server is a Windows Server 2012 machine, and there you can ‘enable’ the WIF runtime as a feature on that machine. When you enabled this, just retry the setup of the WIF SDK.

17

Almost there! If you queue a build now, you will see the following nice error:

error2Correct, that piece is missing on the build server. To solve this, all you can do is ‘copy‘ the folder ‘C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications‘ from your development machine to the Build Server (on the exact same location). That should do the trick! If you now queue your build, you will get:

buildokThat’s it, you have your SharePoint 2013 building on clean, fresh Build Server without installing a full-blown Visual Studio 2012. It was quite a challenge, but thanks to Xavier Decoster and some research I managed to get this thing working!

In a next post, I will explain you how to build an APP package with the TFS Build Server. It’s not that simple as just adding “/p:IsPackaging=True” as extra ms build argument unfortunately.

Thanks!

Some extra information: In case you are wondering why I install the Windows Identity Foundation SDK (Dependency)? You can just use the .NET 4.5 Framework, and WIF is already in there. But you need to have the WIF SDK 4.0 to be able to install the WIF extensions. So… You just have to know..

Connecting SharePoint 2013 to TFS 2012 RC

The actual goal of my previous post  was the installation of SharePoint (Foundation) 2013 to be connected with TFS 2012 RC. By default, TFS 2012 RC ships with SharePoint Foundation 2010, but I wanted to use the newest 2013 version of SharePoint.

The installation of TFS 2012 on my Windows Server 2012 was quite straight forward, no special things, no errors, just great! I used the “Advanced” option so I could select my SSRS and SSAS instances, and also select my SharePoint instance. All 3 of them were automatically recognized by the TFS installation wizard, which is really a great experience! Well done Microsoft!

After the installation it was time to create a new Team Project using Visual Studio 2012 RC. I followed the creation wizard, but then I had a strange error when the Team Project was being created:

Exception Message: TF249033: The site template is not available for the locale identifier (LCID). The site template name is: Team Foundation Server Project Portal. The LCID is: 1033.

Hmm that’s strange. The template is not available for the locale ID. But I did an installation of  Windows Server, SQL Server, SharePoint, in English (that’s what the 1033 means). That’s the point that I posted an issue on the MSDN forum, and there I got this answer from Kelly McBride from the TFS Team:

TFS RC Dashboards do not support latest mode site collections. For the RC dashboards, please use a legacy (2010) mode site collection. RTM Dashboards will support latest mode site collections.

And indeed, that solved the issue. SharePoint 2013 has the possibility to select in which ‘mode’ your Site Collection has to run in. As for now, until TFS 2012 RTM is there, we need to have a 2010-version of our Site Collection. To resolve the error, I performed those steps:

First step is to delete your ‘old’ site collection. Go to your SharePoint Central Administration and click on ‘Delete Site Collection’:

Select your site collection. This is the one that has been created by TFS (when your Team Project Collection was created). And click ‘Delete

After you Site Collection has been deleted, create a new one with the same name. Otherwise you have to change the SharePoint site settings in the TFS Administration console to point to this new Site Collection. In my case, I just used the same name. To create a new one, go back to the Application Management section, and select ‘Create Site Collections’. Provide a title, description and an address. The most important thing is the ‘experience version‘. You have to select 2010 instead of 2013. If you select 2010, you will see the option to select the TFS Project Portal template. And that’s what we are looking for. Don’t forget to select the collection administrator too.

Click on the ‘OK‘ button, and your Site Collection should be created. Now let’s create a new Team Project again, et voila, no error this time. SharePoint 2013 is succesfully connected to TFS 2012 RC.

Thanks for reading!

Off we go

Hooray,

 

After ignoring the blog-rage for several years, I’ve finally succumbed!

 

First of all, let me introduce myself to you. My name is Alexander Vanwynsberghe, born in 1985 and living in a small town called Houthulst, located in west-flanders, Belgium. In short: i’m into social media, digital, ALM, software QA and team management.

 

I’m working as a development team manger at CogniStreamer.com for some years now. Fyi, Cognistreamer is a collaborative framework mostly used in applications to drive collaboration into innovation. This by using the ‘wisdom of the crowds’ concept. The most common technologies used to create our framework are ASP.NET C#, IronPython, OO Javascript.. (more details will follow in later blogposts)

 

The reason for me to start blogging is that I want a little place on the web to share things that I find interesting, problems that I struggle with and how I experience things around me. All that mostly related to my daytime job. I think that blogging will allow me to be creative, and express myself to the outside world.

 

I hope you will enjoy my posts. Feel free to post a comment at any time! You can always follow me on twitter by using @vanwynsberghea

 

Oh and btw, the views expressed here may not reflect those of my employer.. just in case..

 

4351730264_0728bbc2a5_o