Good afternoon everyone! My name is Sam Jacobs, and I am the director of TechDev Services at IPM. I am honored to once again host a breakout session at Citrix Synergy. During last year&apos;s session, we did a comparison of Web Interface to StoreFront - features, limitations, ease of customizations, etc. As Web Interface is going end-of-life next year, comparisons are no longer relevant. It&apos;s no longer a question of *if* you migrate, but how soon can you get there. While Web Interface may be mentioned in passing, the main purpose of this session is to share with you some of the StoreFront best practices our team has developed over the past 2 years since StoreFront was introduced. Of course, I wouldn&apos;t be leading a session if code wasn&apos;t involved, and I hope you&apos;ll be as excited with the hands-on demos as I am in showing them to you. First, a bit of background into qualifications.
IPM is the longest standing Citrix Platinum Partner in the NE. We are also a Microsoft Gold Certified Partner, and have established a number of other key partnerships. We focus on 6 main practice areas – all with the end-user in mind. While I doubt that we are the largest Platinum Partner, we are a lean and mean organization that our clients look to as Trusted Advisors. If you are looking to join a firm that always has our clients&apos; best interests in mind, please feel free to touch base with any of us after the session. If you are a client is need of professional consulting services, we won&apos;t turn you away, either! :)
As far as my personal qualifications … I am currently in my 13th year with IPM, and have way over a decade of customization experience with all forms of Citrix gateway products - including NFuse/Project Columbia, Advanced Access Control, Web Interface for SharePoint (commonly known as WISP) - which is no longer provided by Citrix (whisper: but we can help you with that!), NetScaler, custom EdgeSight reporting, and for the past 2 years, with StoreFront. You can probably catch me on the Citrix forums late at night, and some of you may already be using some of our customizations. Anyone out there using any of our customizations? Nice … about xx% I have presented Advanced Customization sessions at BriForum for both Web Interface and NetScaler, and of course, I presented a breakout session on Customizing StoreFront last year right here at Synergy. Anyone at either of the sessions last year? About XX%. For those that did not attend, did anyone view it on SynergyTV? Or download any of the materials? You can also check out the IPM blog – TechDev corner – for additional customizations.
We have a lot to cover, so let&apos;s review our agenda for this session. We will *very* briefly talk about how to properly install Web Interface. While the StoreFront installation has come a long way since Web Interface, and instead of stopping in its tracks, will install pre-requisites for you, the process is still missing a step. The brain of Web Interface - WebInterface.conf, which we&apos;ve all come to know and love, has been replaced! We will talk about its successor (or more accurately, successors), as well as some other suggested best practices we&apos;ve gleaned along the way. We will *briefly* talk about some of the reasons for customization. And then we get to the main focus of the session - the demos. We&apos;ll talk about some of the new features in StoreFront 2.5 - and yes! We will demo the new Store Customization SDK. Being that it was first released barely 4 weeks ago, I was afraid that there wouldn&apos;t be time to come up with a proper demo. I am happy to report, ... well, you have to decide for yourselves ... We will also reserve some time for questions at the end of the session. If you would like to get a copy of all of the code used, leave a business card at the end of the presentation, and we’ll get the code out to you.
Last year we coined the phrase WIBNI ... WIBNI stands for ... Wouldn&apos;t it be nice if ... Our clients help drive the direction of the TechDev group. We simply ask them to complete the following sentence … “Wouldn’t it be nice if ….” (WIBNI) WIBNI our customer information system interfaced with our Help Desk system so that we could automatically generate a Help Desk ticket when a user has a problem logging on … ? WIBNI you received an alert from you system when users are having trouble logging on, and you were able to fix it *before* getting calls from users. WIBNI if we could customize StoreFront to have more of the functionality of Web Interface? You&apos;ll see what I mean when we get to the hands-on demos.
Why am I making such a big deal about installation? Well, unless you start mucking with the registry, you need to run HTTPS to StoreFront, and, as you can see in this snapshot, StoreFront will tell you if it&apos;s *not*. But wait … it seems to be saying that it IS running over SSL.
... and if we take a look at the bindings for the site, we see that there IS an SSL certificate bound ... what&apos;s going on?
As you can see, the StoreFront installer detected that IIS was not present, so it installed IIS and then StoreFront. What happens next? Well, just like Web Interface, the admin console is launched, and you then create a &quot;store&quot; where you define your Delivery Controllers - the XML servers and DDCs for your farms, and your AppController, if you are integrating with XenMobile. The problem arises because you can&apos;t install the SSL certificate before you begin, because you don&apos;t have IIS installed. If you wait to install the SSL certificate until after you create your store, StoreFront will give you the warning message we saw earlier.
What you need to do is interrupt the process midway. When you install StoreFront, imagine that you get the following screen before you click Finish on the preceding page. Once you&apos;ve finished importing and binding your certificate, then you may continue to create your store.
The entire configuration of Web Interface used to be contained in a single file – WebInterface.conf. The StoreFront configuration has been split up into various .NET web.config files. Just about all changes to the Authentication web.config are made through the Management Console, so you will probably not be making any changes there. Most of the changes that you would need to make would most likely be to your Store Web config. BTW, you can create multiple web sites based off of the same store, and could brand them differently. Maybe, a different website for each major department within the company. Therefore, any change configured on a site-by-site basis (as opposed to the entire store) would go in the store web config.
So, for example, the Workspace Control features would be controlled in the StoreWeb config.
… and so would the interval before your StoreFront web page times out.
Remember where you used to specify single or multiple tabs? Yup, that’s in the StoreWeb config.
The third main configuration file is in the Store directory. For example you only define one set of Delivery Controllers per store, so they would be defined here. Delivery Controllers were called “farms” in Web Interface. In fact, the StoreFront configuration actually stores them in an XML hierarchy called a farm. The highlighted options, e.g. whether to round-robin the XML servers, are not done via the Management Console, and must be made manually to the file. Make sure that you have the Management Console closed and you back up the config file before making any changes. Notice that I did *not* say that you need to make changes to the *StoreWeb* configuration file manually. I *was* planning on saying that, however …
Barely 2 weeks ago, Citrix released a StoreFront Web GUI Assistant. Not a full-blown MMC snap-in, mind you, but enough to help you with making changes to the options you would most likely need to modify, like Workspace Control, tabs, etc. Please keep in mind that it has not yet been vetted over time, so do the prudent thing and back up your config before using.
Some additional best practices - if you have more than a handful of apps, use the client application folder field when you publish the app to assign the app to a folder. Use the KEYWORDS field in the description of the app. You can specify that an application appear by default in the user&apos;s subscription list (auto). The user CAN remove it, if they choose to do so. A *mandatory* app, by contrast, cannot be removed by the user. The &quot;mandatory&quot; keyword was just added in StoreFront 2.5. Featured means to place the app in a folder of the same name - Featured. :) One of my complaints with Web Interface 5.4 was that all desktops were dumped together in one tab, and you COULD NOT arrange them into folders. StoreFront has added the keyword TreatAsApp which, when placed into the description field of published desktops, will allow you to work with desktops the way you work with apps - they may be placed into folders and put on the same screen as apps. Assuming you do that for all your desktops, you can then remove the desktop view, and simply default to the app view (and use the new Web Gui Assistant to do so!).
Let’s briefly review some of the advantages of customization... First, there’s speed, as we shall see in a moment. Next, we have corporate branding. I love green bubbles as much as the next person, but I would much rather help a client get their own corporate branding front and center for their customers, as well as for their end-users.
We can also use customizations for generating reports for management, as well as to satisfy compliance requirements. Customizations can also be used to track users, and also to assist the help desk with any issues that may crop up before and during a user’s session. The data from these customizations can be written out to SQL Server, and then you can write customized queries to analyze the data. Finally, customizations can make for a more pleasant user experience-both by adding additional functionality, as well as making it a more personal experience.
How many of you are disabling CRL-checking? About XX% This is something I mentioned last year, but is so important, it is worth repeating. If you are not disabling CRL-checking, *especially* if your server cannot access the internet, you are adding unnecessary fetch time for some of your users.
… and all you need to add is a single line into the appropriate ASPNET.CONFIG file!
Let’s take a look at a short demo that illustrates the power of jQuery.
We are creating an extremely simple catalog of sessions - there are 4 different tracks, and let&apos;s assume 20 or so sessions in each track. The requirements are simple - when the user clicks on a track, display the sessions available in the track. Extra points are awarded for simple animation. Let&apos;s first take a look at the HTML source ... The &lt;dt&gt; elements are the tracks, and the &lt;dd&gt; elements are the session descriptions.
On the left we have the default, out of the box logon screen, and on the right is the skin that I presented at last year&apos;s session. After playing with this skin a bit, I have decided that, while it looks quite a lot better than the default (in my humble opinion) it is not ideal. First of all, it seems to be a bit ethereal … Every time I look at it, I sort of expect to hear heavenly voices ... pause ... … you see. But, that&apos;s not all ...
I realized that the background is way too busy, and unpredictable contrast-wise. Meaning, that depending where a resource ends up on the screen, it might be readable, or it might *not* be. Also, since it&apos;s the *entire* background, if you have a screen with a larger resolution, it may not look so great. Check out the seams on the right when I access the site from my phone.
There is one other issue - size. That background is 237K in size! So, what can you do? You can use a ... pause ... seamless tile. A seamless tile is a pattern that can be repeated horizontally and vertically, without seam lines. Think of a design you might have made out of seamless flooring tiles in your house. Same thing. And best of all, how big is this tile? 8K! This free background is from: 1-background.com. Quite a difference, no? That should load considerably faster than our 237K bloat. So, how do the screens look with a tiled background? Decide for yourself...pause ...
Here&apos;s the logon screen - nice and clean ...
... and here is the application screen. Nice, soft color, yet the text can be read no matter where it falls out on the screen. The desktop on the right was published with the keyword TreatAsApp, so it appears on the same screen as applications. Any desktops without that keyword could only be seen on the desktops view.
We are now going to have 3 back-to-back customization demos, with each one building on the preceding demo, and each one increasing in complexity. For our first demo, we will simply add a new skin to StoreFront, and modify the disclaimer.
Next, this HTML code was added to support a disclaimer on the logon page. Speaking of disclaimers – remember how easy it was to change a disclaimer in WI5.4? You simply changed … A key called HorizonTagLine in a .properties file. Has anyone tried changing the disclaimer in StoreFront? …not that easy, is it? It took some time, but I finally got the syntax down. The first jQuery statement adds text to the logon page, and the second modifies the disclaimer on the applications page. To change text strings, we first need to search for the text in the appropriate language file in the /scripts directory… Then need to copy the line to our string text override file, and modify as needed. We overwrite the old default.html file with our new one. We copy our logos and other graphics to the /contrib directory. Let’s copy over our CSS overrides … Let’s open the new CSS file to check out our overrides … Here’s our new background … new color for our logon labels … make the font easier to read … Here’s the logo for the logon page … change color of the disclaimer … here’s the application page logo … Let’s logoff and then back on … Here is the new logon page … here is the logon disclaimer … the new favicon and the updated title … … and here is the new applications page … the logo, the text has been changed, plus sign, and disclaimer.
For our second demo, we will get a bit more complex and use jQuery’s AJAX capability to pull information from the server. As seen at the top of the screen, we would like to add the user’s IP address, whether the user is connecting internally or externally, and the StoreFront server, since we would like to know which server in the server group the user has connected to. We could, if desired, create an audit log to say, SQL Server, and then pull reports on user activity.
To get this information, we will invoke a bit of ASP.NET. We write one routine to get the user’s IP address, and to determine whether the user is internal or external, and we write a second routine to retrieve the server name. We then have the option of returning either piece of information – or both. We save this as an .aspx file, and place it in the /contrib directory. We then call this .aspx file, telling it what information we want returned. We are creating a new &lt;div&gt; called “server-info” and placing the returned information in this area. We then tell jQuery to insert the information just before the &lt;div&gt; marked “header-userinfo”, which already exists in the default.html file. We also need to add CSS information, so the browser knows how to display the information (color, font-size, spacing, etc.).
Our next demo will take customization to the next level. Web Interface had the ability to display resources in a number of different views – icon view, list view, etc. A number of clients have asked why that capability was removed from StoreFront. I can’t say that I know the reason it was removed, but I can show you how to get it back.
What makes this more difficult is that for the two prior customizations we were able to view the source of the page and see where we needed to insert or modify HTML. However, since for this modification we need to be able to manipulate the dynamically generated document, looking at the HTML source does not suffice. In this case, we will need to leverage something a bit more powerful that can intercept the dynamically generated HTML. I like to use FireFox’s FireBug. You simply log on as usual, then dropdown FireBug, Web Developer, and then Inspector. You can now see all of the dynamically generated HTML, and you can search for the correct CSS to modify. There’s quite a bit we need to do here. We need to generate the code to place the buttons on the page. We need to add CSS to format them. We need to add click routines to each button, and we need to add CSS to reformat the look of the applications and desktops. Here we add the CSS for the buttons, and here we add the button content itself. Here we add a click routine to each button which will remove the highlight from a previously selected button, add the highlight to the currently selected button, unload the CSS from the prior button, and then load the CSS for the current button. Let’s copy over the CSS and jQuery code and see what happens. Let’s log on… we start out in icon view … then we switch to list view … then back to icon view … and then to plain text view.
Let’s talk about some of the new features of StoreFront 2.5. Barely a month ago, Citrix announced the Store Customization SDK. Up until that point, all customizations needed to be performed on the client side, and there were certain limitations as to just how far you could take those. With the SDK, you now have the ability to modify data as it is being processed on the server. Extremely powerful. Will talk more about the SDK in just a moment. With StoreFront 2.5, you now can pass your desktop credentials to Receiver for Web when using IE. Prior to that, you could only pass your credentials to the Windows Receiver. You now have out-of-the-box filtering by keywords (in the app description), or by type (Applications, Desktops, Documents), and they will work both for Windows Receiver, as well as Receiver for Web. As we mentioned earlier, the “mandatory” keyword will not let users remove an app from their subscription list. Check out the link here for the full list of StoreFront 2.5 enhancements.
What exactly *is* the Store Customization SDK? It is an API which allows you to apply your own custom logic to control the flow of data within StoreFront. There are specific pre-defined customization points where you can apply your logic. The customization point to select depends on what exactly you are trying to accomplish. Clockwise from left: You use the Device Information customization point to modify client information sent to the server (for example, the client name). You use the Access Conditions customization point to modify the conditions that users are allowed to see and launch resources. The Post Enumeration customization point allows you to modify the resource list returned from the delivery controllers. The Provider List customization point allows you to dynamically add or remove XML servers from your delivery controllers. The Post Launch ICA File customization point allows you to modify the generated .ICA file before it’s sent to the user. Finally, the Post Session Enumeration customization point allows you modify the list of sessions returned for the user. Is anyone interested in seeing the SDK in action?
Here is how the SDK looks in Visual Studio … Our first check is whether the user is connecting during a restricted time. The restricted applications are those applications in the XenApp 6 farm beginning with the word “Finance”. If it is not 9 to 5, those applications should be disabled. You compile your customization into a DLL – in our case, into StoreCustomization_Enumeration.dll. You then copy the files into the /bin directory of your Store (*not* StoreWeb) … and restart the IIS service, and the Citrix Subscriptions Store service. Let’s see if we can access those applications now… Log on … and … yes, we can! Now, what happens if we simulate restricted hours by changing the clock on the StoreFront server (to, say, 3AM). Applications are disabled! Yes!
Your users are demanding support for ALL of their devices, and in order to do so, you need to be running StoreFront. Some customizations are merely CSS overrides and additional graphics in the /contrib directory, while some others require development experience with the new Store Customization SDK. Citrix has just created a set of Developer forums, and here is the Store Customization SDK forum. Thomas Koetzing has a comparison of WI 5.4 to StoreFront 2.5 on his site. Finally, if you haven’t yet seen last year’s customization video, it is still on SynergyTV.
I would like to thank those at IPM who assisted me in preparing for this presentation, Simon and Feng in answering my questions about the new SDK, even though they needed to prepare for their own sessions. Simon/Feng, are either of you here? I’m about to open up the floor for questions, and you will probably be better able to answer questions regarding timelines, etc. I would also like to thank my good friend Mary, who always has time to listen to another run-through, and to Thomas Koetzing, who still hosts my original customizations on his web site.
While I need to make room for the next presenter, I will be available outside for a while if you have any questions about anything discussed. If you would like to get a copy of all of the code used for the presentation, leave a business card, and I’ll get the code out to you. Thank you for joining me for this session!
SYN247 - Migrating Web Interface Customizations to StoreFront
Migrating Web Interface
Director, TechDev Services, IPM
Tweet about this session:
May 7, 2014
Who we are …
IPM is a technology consulting firm focused
on enriching the end user experience
–Longest standing Citrix
Platinum in the NE
–Microsoft Gold Partner
Who I am…
• Over a decade of customization experience
– NFuse / Web Interface / WISP
– Custom EdgeSight Reporting
• Industry contributor
– Synergy / BriForum Speaker
– Citrix Forums Contributor
– IPM blog – TechDev Corner
• Correct configuration
– The proper way to install StoreFront (100+)
– Where is WebInterface.conf?
– Migration best practices
– Why customize?
– Customization demos
• New features in StoreFront 2.5
W I B N IW I B N I
“Wouldn’t … it … be … nice … if … “
Installation (missing screen)
Before continuing with the StoreFront
configuration, import your SSL certificate
and bind it to the default IIS web site.
Where is WebInterface.conf?
3 main locations:
Where is WebInterface.conf?
Where is WebInterface.conf?
<sessionState timeout="20" />
Where is WebInterface.conf?
<uiViews showDesktopsView="true" showAppsView="true"
Where is WebInterface.conf?
<farmset name="Default" enableFileTypeAssociation="on" useIntegratedAuthentication="off"
serverCommunicationAttempts="2" communicationTimeout="30" connectionTimeout="6"
<farm name="XD7" xmlPort="80" transport="HTTP" sslRelayPort="443"
allFailedBypassDuration="5" loadBalance="on" farmType="XenDesktop">
<add server="DDC01" />
<add server="DDC02" />
<farm name="XA6" xmlPort="80" transport="HTTP" sslRelayPort="443"
allFailedBypassDuration="5" loadBalance="on" farmType="XenApp">
<add server="XENAPP01" />
<add server="XENAPP02" />
Most Delivery Controller options are handled by the
Management Console, but some are not:
Modifications must be
Modifications must be
StoreFront Web GUI Assistant
Migration Best Practices
• Use application folders
– Default location is All Applications
• Use KEYWORDS:Auto Featured
– Auto: automatically subscribe to apps
– Mandatory: cannot be removed by user (NEW!)
– Featured: place app into Featured category
– TreatAsApp: allows desktops to be placed in folders!
• Remove desktops screen
•Help desk assistance
•More pleasant user experience
With CRL Checking CRL Checking Disabled
Just one line!
Find ASPNET.CONFIG in the appropriate directory:
<?xml version="1.0" encoding="UTF-8" ?>
<legacyUnhandledExceptionPolicy enabled="false" />
<legacyImpersonationPolicy enabled="true“ />
<alwaysFlowImpersonationPolicy enabled="false“ />
<generatePublisherEvidence enabled="false“ />
–Compiled .NET code
Unless otherwise specified, references are to all StoreFront 2.x versions
(2.0, 2.1 and 2.5).
– Store customization SDK now available! (coming: WebProxy!)
– Customizing Receiver for Web 2.5
– Pass-through authentication – Receiver for Web
– Filter applications by keyword or type
– Mandatory applications (KEYWORDS:mandatory)
– Full list of enhancements:
StoreFront 2.5 – New Features
–Disable CRL checking
–You need to embrace StoreFront now!
–While some customizations may be tricky, they
CAN be done
–Store Customization SDK Forum:
–WI 5.4 to StoreFront 2.5 Comparison:
–Synergy 2013 Video:
Special thanks to:
–The IPM Management Team
–The IPM Marketing Dept
–Simon Frost, Citrix
–Feng Huang, Citrix
–Jay Tomlin, Citrix
Before you leave…
• Hands-on Learning Labs:
ᵒ SYN602: Enterprise-class StoreFront 2.5 deployment, ACC Room 204A, May 8
• Conference surveys are available online at www.citrixsynergy.com starting
Thursday, May 8 at 9:00 a.m.
ᵒ Provide your feedback by 6:00 p.m. that day to be entered to win one of many prizes
• Download presentations starting Monday, May 19, from your My Event