Alexander Vanwynsberghe

"There is nothing impossible to him who will try"

A single Project Site for both TFS and Project Server

I got a question from a friend of mine (Pieter Turcq) today, who asked me if it’s possible to use one single Project Site (in SharePoint) for both TFS and Project Server? Well, actually you can. In this post, I will show you what the requirements are and how you can easily achieve this. But first let me start with a brief ‘overview’ of how it looks like out of the box.

One of the nice things about Team Foundation Server is that it creates a SharePoint “Project Site or Portal” when you create a new Team Project. This is a place where you can add project documents, view some dashboards and whatever SharePoint magic you want to use. On the other hand, you have Project Server. In some cases, you can have a nice integration between both systems using the Team Foundation Server Extensions for Project Server. This way, you can manage the data flow between TFS and Project Server (but this is not the scope of this blog post). The thing is, if you create a new Project in Project Server, it also creates a Project Site. The total picture will look like this:

01Note that this is a situation where the Project Portals from TFS are hosted on another SharePoint environment as the Project Sites of Project Server. (If they are hosted on the same environment, it will of course use a different Site Collection, but you will have less work to get to the end solution. I’ll explain this a bit later). Now, how can we get one Project Site for both systems? We have 2 options: A quick-and-dirty solution, or a decent solution.

The quick-and-dirty solution

The first solution is really simple. What you do is pointing the Project Site from your TFS Team Project to the URL of your Project site of Project Server. You can do this using Visual Studio using Team Explorer. If you go to “Settings -> Portal Settings“. There you can set an option “Use a website“.

02

It will now redirect to your Project Server’s Project Site. That’s all. Nothing more, nothing less. It will have no interactivity with TFS or what-so-ever, you will not see the Project Site documents in your Visual Studio, you will not have any dashboards on your Project site,.. So this is not an option. Let’s move on.

The better solution

A better solution is to make it possible to let the Project Server’s Project Site behave like it would have been a “standard” TFS Project Portal.

If your are in the same situation like the one I’ve illustrated, you must install and configure the Team Foundation Server extensions for SharePoint Products on the remote portal. If not, you can skip this step, and no actions related to this need to be executed! This is a step that has to be executed for ALL SharePoint application servers. It contains the necessary Web Parts and some dashboards. You have some excellent guides for this, but it really is a straight forward process. Just make sure that you have the right permissions, and especially that the TFSService account that needs to a Farm Administrator.

Great, now our SharePoint instance who’s hosting the Project Server’s Project sites is able to do “TFS related” things. Next, assigning this SharePoint instance to TFS. Open the administration console and click on “SharePoint Web Applications -> Add

03

Note: It is import to know that when creating a new Team Project in TFS, we will NOT allow the wizard to create a Project Portal. Because if you don’t watch out, it will create one on your PWA instance directly. This is not the behavior that we want. We want Project Server to create Project site, and link our TFS Team Project to that site manually. So be careful!

Alright, so now that the SharePoint instance of Project Server is known by TFS, we can configure our Team Project to use an existing Project Site from Project Server. Open Visual Studio, go to Team Explorer and select “Settings -> Portal Settings”. Enter the correct settings:

04

In this example, I use the TailspinToys Project Site from Project Server, to be used as TFS Project Portal from TFS. Be sure to select the check box “Reports and dashboards refer to data for this team project“. Click Ok. If you now go back to Team Explorer and select the “Documents” node, you will see the content of the documents library from you Project Server’s Project site.

05

Mission accomplished.. or not? Well, it’s great to have the documents library available from your Project Site. But wouldn’t it be cool if you could also use this Project Site to add your TFS Dashboards, and some TFS Related Web Parts? Well, actually you can! If you open your project’s Project Site (in Project Server), and go to “Site Settings -> Site Features“. And activate the dashboard you need. In my case, it’s a TFS Team Project based on the Agile Process Template, so I selected “Agile Dashboard“. If you click activate, you will see some new items in the menu on the left side. That’s exactly what we need. This way, we can also change whatever we want, and we can even add the TFS specific Web Parts like a Work Item Query list.

06

That’s pretty cool! So there you have it, one single Project Site/Project portal for both TFS and Project Server. Have fun!

Note, when Project Server was not on the same SharePoint instance as TFS, and you followed the previous steps using the TFS Administration Console, and you don’t see the dashboards listed in the features list, be sure that it’s enabled in the Web Application of your PWA! You can check this using the “Central Administration -> Application Management -> Web Applications -> Web Application -> Manage Features“. It should be enabled by default, but you never know! Next to that, if you don’t see any web parts related to TFS, look at the Site Collection Features, and be sure that “Visual Studio Team Foundation Server Web Part Collection” is activated. That’s all!

07

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!

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!

Basic ideation with SharePoint and Project Online

One of the exciting things I saw in the “Get Started with Project Online” video of Christophe Fiessinger was the possibility to use a custom ideation list to capture ideas and ‘convert’ this into a project in Project Online. Managing your companies innovation and ideation solutions with SharePoint and Project Online/Server is really an interesting approach. Both products are well-proven and it can give your company a boost to get the most creative ideas out of your employees. In this post, I will show you how to get started and how to create/design a custom list to capture ideas.

1. Create a SharePoint site

First step is to create a SharePoint site. This will be your ‘community’ site, where ideas will be gathered. One thing to note is that the site needs to be a ‘subsite’ of your PWA (Project Web Access). (see additional information at the bottom of this post) To create a new site, go to the Projects section of Office 365. On the left side, click ‘Site Contents’ and then the ‘new subsite‘ button.

On this new screen, provide a title of your subsite, add a description and the URL. Notice that the URL is a child of your PWA (and that’s what we need for our integration later on). As the template of my site, I used a ‘Community site‘, just because I like the way you can use it for discussions etc. But you can select whatever template you want.

When your site has been created, your browser will automatically redirect you to this new site. You will see a new, empty site based on the template that you selected. In my case, it looks like this:

What you can do now is customize your site, make it attractive, change the colors, do whatever you want (although it looks quite sexy already with the out-of-the-box template).

2. Create an ideation list

What we want to do now is create a new ‘Custom list‘ to capture our ideas. On the left side, click on ‘Site Contents’. This will now list you all ‘apps’ that are available on your site. Click on the ‘Add an item‘ button, and select ‘Custom List‘. Enter a new, and click ‘Create‘:

The list has now been created, time to add some ‘columns‘ where our users can add ideas. Basically, we just want a title field, a description field and a date field where users can add a date of when the idea could possibly be integrated. On your list-page, click the ‘Edit‘ link. You’re now working in the SharePoint editing mode. What you can do is adding columns by clicking on the ‘plus‘ sign. This will give you the option to create a new column based on a the type of information that you want to enter:

3. Rating

Now we have a list with some columns. Off course, we need a way to get our ‘best’ ideas. The easiest way to get the top ideas is by using a voting mechanism. We will let users vote for the best ideas. We will not take voting limits into consideration, and will not use any other advanced techniques, just simple voting.

By default, SharePoint has this possibility built-in. We only have to ‘activate’ this in our custom list. To do this, click on the ‘List‘ item in the ribbon. There you have an option ‘List Settings‘ on the right side.

In the ‘General Settings‘ of your list, you have the option ‘Rating Settings‘. Click this link to show the current Rating Settings. We want to enable Rating, so just select ‘Allow items to be rated?: Yes’.  We will also use ‘Star Ratings‘ because it looks nice.

What this will do is automatically add a column to our custom list. Now let’s add an entry in our list, give it a title, a description, a date and give it a rating. It should look like this:

4. Create a project

Now we have the interesting part: ‘upgrading‘ an idea to a Project in Project Online. Assuming that you are still editing the custom list, click on ‘Stop‘ editing this list. Now you have your list with your one idea. Select this idea by clicking on the first column. This will mark your idea as ‘selected’.

When you click on the ‘Items‘ ribbon item on top, you will see all the possible actions that you can perform on your selected item. And look what we see there: an option to ‘Create Projects‘.

You will now see a dialog with 2 options: The field mappings and the Enterprise Project Type. In the field mappings, you can easily map your list ‘column’ with a ‘Project Web App Field’. Like our title is equal to the Project name, the description equals the Project Description and so on. Do this form each column. Because we’re using a really basic custom list, we can map everything to the ‘standard‘ fields from the Project Web App. But off course, it’s also possible to create Enterprise Custom Fields in PWA, and those fields will automatically become available in this dialog.

The second part of the dialog is where you can select which Enterprise Project Type you want to use. You can select (by default) either an Enterprise Project, or use a SharePoint task list. I’ve already made a comparison between the two in a previous post.

All you have to do now is click on ‘Create Project’. This will do all the necessary things in the background. In my case, it will automatically create a new Enterprise Project containing the mapped information (like the title and description). It will also create a SharePoint Project site. Once everything is setup, you will get the following message:

 Great, so my project has been created. Let’s take a look at it. Go back to the PWA Project Center, and you should see your idea in the list of Projects:

Now to be sure that my field mappings were correct, click on the Project Name. On the left side, click on ‘Project Details‘. There you have a basic overview of your Project information. As you can see, everything is mapped correctly. My title, description, date,.. everything is perfectly mapped. Perfect!

Well, that’s it for today. We’ve created a subsite, added a custom SharePoint list, enabled rating and created a project from an idea. That’s an extremely simplified scenario, but it shows you how easy it is to use the built-in component and capture ideas from your employees. Further extensions could be using Infopath forms, adding some kind of a workflow, treat your ideas in different stages/phases, use collaborative intelligence,… Use your creativity!

Thanks for reading.

A note from John Thoni, part of the engineering team: “One thing to note is that the site needs to be a ‘subsite’ of your PWA (Project Web Access).” This is not entirely correct. The list from which you want to promote items to projects can exist anywhere in the Site Collection where the Project Server Service is enabled. If your PWA, http://myserver/pwa, is not also the Site Collection root, but rather the root ishttp://myserver, then the list could be in the parent, sibling or subweb of PWA (or even PWA itself).

Getting started with Project Online, the power of Project Server 2013 on Office 365

Yesterday, as many of you will already know, Microsoft revealed some nice upcoming stuff like Office 2013, SharePoint 2013, Project Server 2013, Office 365 Preview (including all the new products I just mentioned). One particular thing I was really interested in was Project Server 2013. Lately, I did a lot of experimental work and did some research on Project Server 2010 and particularly the integration ALM and EPM. Therefore, Project Server 2013 is also in my ‘focus’ area right know.

That being said, I was really excited when I saw the new Project Server 2013. I was even more excited when I heard the news about Project Online . As Microsoft describes on their site, they position Project Online as:

”The flexible solution for project portfolio management (PPM) and everyday work, delivered through Office 365″

In fact, Project Online is a full blown Project Server 2013 as you can use on-premise, combined with the power and easiness of the Cloud aka Office 365. So no setup, no SharePoint installation (problems) etc.

What I want to show in this post is how to get started and get your first project up and running.

1. Create your account

First thing you have to do is create your account for Project Online. You can visit this link. You will see a new screen where you can enter your personal information. One thing to notice is that you have an overview of ‘what‘ you will get, on the right side of the screen (you also have other preview programs that you can subscribe)

Once your registration is completed, you will receive an email with some guidance. To start, you can point your browser to “https://portal.microsoftonline.com/admin/default.aspx” and sign in with your credentials (name@domain.onmicrosoft.com). You will now be redirected to the administration page of your subscription.

On this area, you can perform any administrative action that you want. This can be creating users, change service settings, change some options,.. But the most important area is the one on the top-right. That’s the place to be for now.

2. Start with Project Online

If you click on the little arrow next to ‘Admin’, you will see the parts where you can perform the administration. By default, we are now on the ‘Office 365 Preview’ administration part. In the blue part, you have the ‘options/products’ available for your subscription. Let’s click on ‘Projects‘ to open our Project Online.

What you see now is the ‘start‘ page of Project Online. Comparing to Project Server 2010, this is definitely way more attractive. The central space is split in two parts, on top some interesting links to get started, and on the bottom some tiles. There you can see for example your tasks, your pending approvals and some quick access tiles.

On the left side, you have your menu, as you also had in Project Server 2010. This first thing I noticed is the small number of menu items. Project Server 2010 has a more than a dozen by default. But as you can see, there is a button/link called ‘EDIT LINKS‘. Use this menu you can easily modify the menu items on the left. One thing that is important for me (as an administrator), a direct access link to the ‘Server Settings‘ and (as a project manager) the Project Portfolio option. So I selected those items to be set by default:

3. Create a new project by using a SharePoint 2013 site

Now that we are all set, let’s create a new Project. On the ‘Home’ of Project Online, click on the green tile with the label “Create or import project“. You will now see a new popup window asking you for a name of your new project. One thing that you really have to know is that creating a Project using this way, will NOT create an enterprise project. What it will actually do is create a SharePoint site with a task list, and show this in your project list. Let’s illustrate this. I created a new project called ‘My great project’:

When you click on the ‘Create‘ button, it will create a SharePoint site linked to PWA (you can see this in the URL). This SharePoint 2013 site will contain a ‘Task List‘, and this task list will be used for tracking the progress of your project. When the Project is created, Project Online will automatically show the SharePoint site with the possibility to add tasks. On the left side, you also have some other options like adding risks, adding notes (using the OneNote web application, which is really awesome btw!). This is how it looks like:

People using Project Server 2010 will know this type as the regular ‘Project Site’. Only, there is no actual ‘Enterprise project’ now. When you go back to the Project Online place (by clicking on ‘Projects’ on top of the page), and then click on ‘Projects‘ on the left side, you will see the Project Center. As you will notice, you project will be available there. If you click on on the project name (as a link), it will open your brand new SharePoint 2013 Project Site where you can add your tasks.

One thing that you might have noticed is that it’s also possible to import existing SharePoint sites to be used for Project Creation. You can see this on the bottom of the dialog when you click on the green tile ‘Create or import project’. Really nice!

4. Create a new project by using an Enterprise Project Type

Another option to create a new Project is by using an Enterprise Project Type like you know in Project Server 2010. You can create your own EPT’s, modify it, add a workflow, add Project Detail Pages, … You can change and manage everything related to Enterprise Project Types in the ‘Server Settings’ section of your Project Online admin panel.

To create a new project based on your EPT, go to the project center (click on the left side ‘Projects’). In your project center, click on the ‘Project Ribbon’ on top of the page, and click on the ‘New’ button. There you will see the possible options to create a Project based on an EPT.

By default, you have 2 options:

1. Enterprise Project: This is actually based on an Enterprise Project Type. By default, there is no workflow attached to it. It’s just a basic starting point.

2. SharePoint Task List: This is the option that I just described. If you create a project by using the link on the Dashboard, it will use this option.

Let’s create a new Enterprise Project by clicking on ‘Enterprise Project‘.

You will see that by default, you have ‘more’ fields to complete that our basis project we just created (well, just Description field, but hey, you can customize the Project Detail Page). On the top left, click on ‘Save’.

As you can see, comparing with the previous project, it’s not opening a SharePoint Project Site, but it uses the Project Web App instead. There you can do everything with your project that you want, and that you used to do with Project Server 2010 PWA. Note that there is also a Project Site available (on the left side). When you open this, it will look quite similar as the previous one. Except there is one extra link on the menu bar: Project Details. When you click that link you return the Project Web App where all information related to your project is stored (split into several Customizable Project Detail Pages).

5. Conclusion

Now you have an overview of how to get started with Project Online and how to create your first project. I showed you the difference between a SharePoint Project site and an Enterprise Project and how you can create both of them.

Have fun! I’m really excited with this new release! Great job Microsoft!

Thanks for reading,
Alexander