Tag Archives: Best practice

XenApp Best Practice #6: You Will Fail

I love the outdoors. I love being able to completely disconnect from the rest of the digital world.

I want my kids to experience the same thing, which is why I often take them out on hikes. It is why I took my entire family on vacation to the Boundary Waters and Canoe Area in northern Minnesota. If you aren’t familiar with the BWCA, it is over 1,000,000 acres of complete wilderness. By complete wilderness I mean no roads, no electricity, no motors and no cell phone towers!!!

You paddle across a lake, then throw the canoe and your backpack onto your shoulders and portage to the next lake and repeat. As you would expect, you want to limit how much gear you bring in because someone has to carry it.

Taking a trip to the BWCA requires planning. You have to plan your meals. You have to plan your drinking water. You have to plan your shelter.

You also have to plan for potential issues. How will you protect your food from bears? What happens if the weather is bad?

However, no matter how much preparation and planning you do, there is the potential for something unforeseen happening that you didn’t plan for.

What happens if you flip a canoe? What if you can’t find a campsite? What if someone gets injured?

Of course, with enough time you can plan for all of these things and thoroughly prepare by bringing the appropriate gear, but your backpack would weigh hundreds of pounds.

If you plan for every potential issue, you will never succeed because you will spend all of your time planning. And even if you get to actually doing something, all of those contingencies plans will weigh you down and make for a very poor and costly experience, which fits into our latest best practice:

XenApp Best Practice #6: You can’t plan for every potential failure; focus some effort on recovery

Daniel (Follow on Twitter @djfeller)
Citrix XenApp and XenDesktop 7.6 VDI Handbook
XenApp Best Practices
XenApp Video


XenApp Best Practice #4: The Right User Experience

20160216_100707Over the years, I’ve done quite a few wood working projects, like building a coffee table, end table, entertainment center, mudroom lockers, etc. Every project results in leftover pieces of wood. I dislike throwing perfectly good wood away, especially if it is large enough to make something.

Last year, my wife asked me if I could build her a large desk. A desk where she could help the kids with art projects, wrap presents and work on photo albums. Lo and behold, I was able to build the desk with 100% scrap wood. Of course, using scraps meant that this desk was built with at least 5 different types of wood (pine, birch, oak, masonite and medium density fiberboard).

You wouldn’t do something like this if you planned to stain and varnish the finished product as it would look a little Frankenstein-ish, but because I was painting the desk, I was able to reuse without impacting the end product. Even the paint was left over from other projects!

This desk cost me $0.00 instead of over $500. I was able to provide a great product without spending money!

Being able to reuse resources is a great way to save money. In just about everything, you can find ways to reduce costs, but there is a balance between saving money and delivering something that works well and looks good.

Look at XenApp and XenDesktop. Where can we reduce costs through reuse but still provide users with something that works and works well?

What about the Citrix Desktop Lock?

With desktop lock, we can effectively turn a traditional endpoint into a thin client. The user will no longer be able to interact with the local desktop, which is perfectly acceptable if the user will always connect to a virtual desktop. Why throw out a perfectly good piece of hardware if we can reuse it for a particular use case?

What about the different ways XenApp can encode and compress the data stream?  Do we opt for the one that gives us the greatest server density in order to keep costs down?  Or do we focus on user experience? As you saw in the Windows 7 and Windows 10 analysis blogs, there is a significant difference in server density between the different Citrix-based policies.

This leads us to our next XenApp best practice

XenApp Best Practice #4: To manage costs, focus on the right user experience instead of the best user experience.


Daniel (Follow on Twitter @djfeller)
XenApp Best Practices
XenApp Videos


XenApp Best Practice #3: Consistency

Back in my college years, I shared an apartment with a few other people.  One night, sitting in my room, at my PC, staring at the keyboard, trying to figure out how to complete a project for my COBOL class (yes, I’m that old). All of the sudden, I noticed some of the letters on my keyboard have been rearranged to spell something inappropriate 🙂  As I asked my roommates who was messing with my keyboard, they starting laughing because they did that over a month ago and completely forgot about it.

I never look at my keyboard. I know that the letters F and J have little bumps on them so that my fingers are always on the correct letters.  Every keyboard I use is consistent, always the same.

What would happen if the letters were rearranged?  Complete chaos for me.  Instead of typing 85 words a minute, I would be lucky to type 5.

Consistency is critical to productivity and having a good user experience.

When we use our desktop PC with local applications, consistency is a given, because I am the only one who can make changes.  So there is a very good probability that how things function and appear one day will be the same on the next day.

But XenApp is different.

XenApp can send me to a completely different server for Microsoft Visio.  Will my Citrix stencils be there?   If I access Microsoft Outlook, will my signature be there? Will my custom dictionary be correct? Will the app have the right plugins?  Will the screens be configured exactly as I left them?

But let’s say you can guarantee me that all of the XenApp servers hosting the same set of applications are installed and configured identically, what will you do after users start accessing the server?

Everything a user does will slowly add fluctuations into the configuration, until one day, BAM, the app won’t load or a plugin fails.  All of these minor fluctuations adds up much more quickly than when compared to a traditional PC because instead of a single user accessing the PC for months, a XenApp server will host thousands of users in a matter of days.

This is why we require lifetime server consistency for XenApp, which is our next best practice.

XenApp Best Practice #3: Servers delivering the same set of applications must maintain configuration consistency throughout their life.

Daniel ()
XenApp Best Practices
XenApp Videos

XenApp Best Practice #2: Optimize

On many moonless evenings, I will be outside, next to my telescope snapping pictures of clusters, nebula and galaxies for my astrophotography hobby. But there is a balance of creating a great image vs just wasting time. Once it gets past 2am or the temperature drops below 0 Fahrenheit, I’m done. But do I have enough pictures to create an OK photo or a great photo?

You see, in order to take a photo of deep sky objects, you need to let your camera capture a lot of light by keeping the shutter open for many minutes at a time. Of course, at the same time, you also build up noise on the imaging chip.Here is an example of a single, 90 second image of M27 – The Dumbbell Nebula


If you take and stack multiple images together, you increase the signal while reducing the noise. This is a stack of 29 frames, each 2 minutes in length for a total of 58 minutes

M27 - The Dumbbell Nebula

The image got quite a bit clearer. The signal got stronger and the noise was reduced.  Of course, the more images you take and stack, the stronger signal you achieve, but the noise is only reduced by the square root of the number of images. Don’t worry, I’m not going to go into the math for this because this graph makes the concept very clear


As I take more frames, the noise decreases. But in order to have the noise drop by another factor, I have to take many, many, many more pictures. Now I will spend hours of time capturing the extra images, processing the images and all for a minimal improvement in image quality. And while I’m outside using the telescope, I run the risk of getting frost bite (true story), going into hypothermia or get eaten by a bear a wolf or a moose (Yah sure you betcha. don-chya-no I in da Minnesoda)

The same concept holds true for XenApp and XenDesktop deployments. You can optimize and then you can optimize.

There are hundreds of ways you can better optimize XenApp. Some of these are easy, proven and will have a noticeable, positive impact on either the user experience or resource utilization. But there becomes a point of diminishing returns. For example, what benefit will I get if I disable a Windows service? Most likely, not much. And in fact, the more you tweak, the greater the possibility of doing something hazardous to your system’s health. I’ve heard many times that someone turned off some innocuous Windows service only to find out a few months later that a new application or update requires that service.

Does this mean stick with the default configuration? OMG NO.

Start with the big items. Start with those items that are proven and have been shown to improve the experience or reduce utilization without potentially harming the system stability. I’m talking about things like

  1. Provisioning Services RAM Cache: This will not only reduce storage utilization, but it will actually improve the user experience.       In the simplest terms I can provide… Disk is slow, RAM is fast. Use RAM. 🙂
  2. Microsoft Lync/Skype for Business optimization: As we see more people make video calls with Lync and Skype for Business, we see a hit on our processor. Using this XenApp/XenDesktop feature, we are able to drastically reduce resource consumption on our host servers.
  3. Session Prelaunch: Logon complaints might be one of the most common issues for any system, and I’m not even talking about XenApp/XenDesktop. But at least with XenApp, we can overcome the logon delays with Session Prelaunch
  4. Policy Templates: XenApp and XenDesktop have a very powerful policy engine, allowing you to match the user experience with the scenario. If you are external, you get this, if you are external on this device with this configuration, you can do that, if you belong to this group, you can do something else, if you are on this subnet, this desktop group, have this tag, then you get this config, and if your iOS device is jailbroken, you can only do this one thing. It is very powerful, which means many implementations don’t configure anything. Again, a great starting place is to use the latest policy templates in XenApp & XenDesktop 7.6 Feature Pack 3, as they are tailored for a specific use case.

Now don’t get me wrong, you can go and tweak the system as much as your heart’s desire, but at a minimum, you should focus on those items that can have a big impact.

XenApp Best Practice #2: For the best combination of user experience and resource consumption, optimize appropriately

Daniel ()
XenApp Best Practices
XenApp Videos