As technology advances and we, as developers, have so many technologies to choose from when developing a system (SilverLight, Touch based interfaces, MVC, AJAX, SharePoint,etc), enterprises still face an application delivery problem, even with technologies like Citrix or VMWare, users have too many places to go to get their applications! It should be simpler!!
It is with that that I put together this article along with some downloadable content so that you can add the web part to your SharePoint environment and use the application provisioning tool for provisioning applications. This will be the first of a few articles talking about this solution.
We need a single place to get to all of our applications and in addition, a tool that will allow us to provision applications into our new utopia UI :).
So how do we get to a single place for all of our applications you say? Well, lets make a couple of assumptions. The first one is that a corporate portal will be used as the single interface in which all users will go to (They should be going to it already right? :)), and since I'm a SharePoint guy, that will of course be SharePoint :). Second, this new utopia UI will house multiple application types.
What do I mean by multiple application types? In general we can categorize applications into about 4 different buckets.
1) Locally installed applications. These are applications that get pushed out to the users local computer via some distro mechanism, such as SMS or like product. These are traditionally launched from a users start menu or desktop
2) Citrix published applications. These are applications that a hosted on a citrix presentation farm (or now called xenapp).
3) Web based applications. These are typically launched by providing link to the app somewhere on a intranet or like system.
4) Virtualized Desktop (VDI type of systems). This is a new type of applications that is creeping into large organizations, we dont really touch on this too much in this article but it is still a valid application type.
So, now with the application categories out of the way :), lets talk about where the problem lies when it come to user trying to launch applications.
The main problem when having these different categories of applications is each one typically has a different type of launching mechanism. For example, local applications will be launched from the start menu, citrix applications can either be launched through PN Agent/Program Neighborhood or through WI, virtual machines are either launched from an RDP file or from VMWare Infrastructure Client, etc. To many choices, shouldn't they all go to the same place for their applications, it shouldn't matter the type of application right? So now the user has something like the following to launch their apps.
Start Menu Delivered Applications | Web Based Application Delivery (Citrix) |
![]() | ![]() |
Now, being a awesome architect for your company you already have a SharePoint rig installed in your organization.:) You have a good building block to start and address the single application interface issue.
To tackle the Citrix problem, you install Citrix WISP (Web Interface for SharePoint). This gets your Citrix applications in your SharePoint rig, but they are still isolated, especially if you would like to show different applications on different SharePoint pages, but again a good start.
To tackle the web based applications, lets say you add static HTML links on your SharePoint pages, maybe a page for all application links, or maybe you put relevant links on sub category pages, for example, HR application links on the HR department page, Training application on the Training department page, etc.
To tackle the local applications…. Well, there isn't really a good solution to add these links to the site.
So even with the above modifications you can see that we still haven't provided our users a seamless process to users launching their applications. They should be able to launch any application from the same place, no matter what the application type is right? If you want a local application go to the start menu, if its a Citrix or web application link go the internal portal/web site.
Enter the solution!
What if we could give the user user a simpler interface that we could stick on a main portal site someplace, that would give them access to all of their applications (Citrix,Local,Web,etc), and allow for some personalization of that system as well? Maybe a custom web part to help with the application delivery and launching. Something like the following.
So this, is pretty cool, the users can get to all of their application in a single place. Nice clean UI. As a user i don’t have to go to to any other place in the site for applications, they will always be in the same place.
Notice that there is no distinction of the type of application that the user see’s or launches. For example, lets take the following screen shot (lets neglect the image quality for the moment.)
From the above UI, you have no idea what the application type is when you click on it (which is a good thing). If i click on the HEAT link (which is a Citrix application), then the ICA client fires up and all is good. If i click on the Development IDE application under the (which is a locally installed application) then that application launches and again, all is good. My point here, is that why do we force the users to understand what type of application they are trying to launch, it shouldn't matter, it should just work!.
So, from the utopia UI, I think we are getting there. We have a good single, simple UI, with folder categorization and application listing (regardless of the application type).
So, the next question is, how do we get applications into this new utopia UI. Well, why not have a separate provisioning application that is able to provision applications into the new utopia UI.
Enter the provisioning application.
We will need a way to get applications and folders into the front end UI So, a little background on this provisioning application. the purpose of this application is to provide a single application distributable to admins to allow them to publish/provision applications into the UI for consumption by the end users. There where the provisioning tool comes in.
Let me give a little background on this application. When designing it I wanted to initially be able to provision 3 types of applications, Local, Citrix and Web based applications along with ability to categorize those applications into folders. Along with this each application should have a permission set selector so as not to show all applications to every person. Lets break down the application a little with the following screen shots
As you can see, the screen consists of several panes. Below is a general description of each one of the panes from the above screenshot.
Application Folder Pane: | Property Pane: |
![]() | ![]() |
Provisioned Applications Pane: | Provisioning Actions Pane |
![]() | ![]() |
Now that we have described the basic layout of the application lets start to talk about how we provision applications into the new UI web part talked about above.
Remember we said that the provisioning application has the ability to provision 3 types of applications, Local, Citrix and Web.
Lets talk about provisioning a locally installed application into the UI. I think instead of typing all of the instructions out on how to publish a local applications, lets just check out a video.
Publishing Folder Overview: This video goes over how you would using the provision tool to publish a new folder into the application list web part and make it available to the user base.
Publishing Local Application Overview: This video goes over using the provisioning tool to publish a locally installed application into the application list web part.
Publishing Citrix Application Overview: This short video shows how we can use the provisioning tool to publish a citrix based application into our application listing web part.
So, with that I am going to call this Part 1 of this multi part blog post done. I will be posting an a few more articles focusing on the following areas
1) Launching the applications from the web part
2) Defining execution scripts for applications Both global scripts as well as application specific scripts.
3) Setting permissions on the provisioned applications.
4) Deep dive into the Citrix Web Interface SDK integration into the application list web part.
5) ICA override settings per Citrix Application.
5) Deep dive into the MFCOM integration to show how the communication to the Citrix farms/applications happens.
6) Provisioning Application configuration The provisioning application has a deep configuration model where you can define Citrix settings, permission providers etc.
Stay tuned for the upcoming videos and articles. Feel free to comment or contact me through twitter, facebook or my email at john@citrixstuff.com
PS. I am working on cleaning up the code so i can post the binaries up here so you can download and try on your sites.