Subscribe to the RSS feed

Updates in AppSense EM 8.5: Mid-Session Config Changes

Written on Wednesday 23 July 2014 by Geert De Keyser in category Default

Over a year ago I wrote an article with title “AppSense Environment Manager Policy Configurations Lost”. With the upcoming new release of AppSense Environment Manager, this article will be obsolete, ‘cause they solved it! #HipHipHooray

Profile Migration with AppSense

Written on Thursday 10 July 2014 by Geert De Keyser in category AppSense

I was implementing Citrix XenApp and AppSense DesktopNow at a customer, and they wanted a part of the profile to be migrated from an existing roaming profile to the new DesktopNow environment. There are a few options to do that, but which one to choose?

  • I knew from previous projects that AppSenseSpecial is an interesting tool, but complicated to use. (I wrote a blog article about it here
  • I also knew the “Migrate Existing Profiles” switch in the personalization group properties. But then migration only happens when the user actually launches the application, and uses every part of the application. For example, the outlook signature will not be migrated if the user does not edit that signature.
  • I recently attended the AppSense University and there Richard Thompson from AppSense gave an interesting session on how to migrate profiles with a new tool called ImportData. This opened up some new perspectives.

AppSense Personalization Best Practices - Grouping

Written on Thursday 27 June 2013 by Geert De Keyser in category AppSense

In this blog we describe the best practices on the two types of grouping AppSense Personalization has:

  • Personalization Groups
  • Application Groups

AppSense Environment Manager Policy Configurations Lost

Written on Thursday 18 April 2013 by Geert De Keyser in category AppSense

Have you ever seen AppSense items disappearing while users are logged on? Typically this can be a user that misses mapped drives, shortcuts or GPO settings. This is out-of-the-box behavior of AppSense. To understand why this happens and how you can prevent it from happening, please read this post.

SCCM 2012 and Citrix Provisioning Services

Written on Wednesday 27 March 2013 by Frank Vandebergh in category Citrix

When using SCCM together with an imaging solution such as Citrix provisioning server, care must be taken regarding the SCCM agent unique ID information. This information is normally stored in the C:\windows\SMSCFG.INI file. The problem is that this file will be the same in every pooled instance and therefore causing duplicate resources within SCCM or re-registrations of the SCCM agent. In the past, the problem was solved using a computer startup and shutdown script that copied this ini file to a persistent location and back, and as such preserving the unique ID of each machine.

When ConfigMgr 2012 was released, Microsoft built in some generic WMI namespace in which different vendors could populate certain fields in order to tell the SCCM Agent which location to use for storing it's persistent configuration. When the SCCM agent is starting it detects it is running on a non-persistent machine and used WMI to determine the location of the Citrix Identity Store (in order for this to work, PVS write cache should be set to Device Hard Disk).

When SCCM determines the location of the persistent drive (ex. D:\ ) it restores its unique information from this location.

There is no documentation from Citrix regarding this configuration other than that it should just work. However we have found that some additional steps are needed in order to make this work:

  1. When finishing the "master" image, prior to shutdown. Stop the CCMEXEC service. (or SMS Agent Host)
  2. Delete the C:\Windows\SMSCFG.INI file
  3. Delete the current certificates in the "SMS" certificate store.
  4. Close the master image

    When the image is next booted using PVS standard mode, the SCCM agent will create a new SMSCFG.INI file based on the contents of the Citrix Identity Store and will create new certificates to be used for communication with the configmgr management points. The agent will now use the existing resource records within ConfigMgr instead of creating a new resource.

AppSense Personalization Archiving

Written on Tuesday 26 March 2013 by Geert De Keyser in category AppSense

One of our clients had errors with the automatic archiving job. To solve this I had to dive into all the settings, but could not find documentation of it in one place. So I wrote an article to share with you.

Archiving enables application and desktop settings to be rolled back to previous states in event of profile inconsistencies. The great thing about the AppSense way of working is that, in contrast to the standard Windows profile, EM Personalization is split into small pieces, allowing you to restore only the erroneous settings.

Manipulate the AppSense virtual bubble

Written on Tuesday 5 March 2013 by Geert De Keyser in category AppSense

AppSenseSPECIAL is a command-line tool to work in the bubble of the application.  With this “switch” you can trick AppSense into thinking that you are starting an application, while in real you are not, you are accessing the bubble and can manipulate it.

We created an import/export process to migrate data from the virtual AppSense registry to the physical registry of the computer. But the same process can be used to import/export files between the physical filesystem and the virtual AppSense filesystem.

Virtualizing SQL Server 2012 with Hyper-V

Written on Sunday 24 June 2012 by Bob Deleeck in category Default

This report presents the results of ESG Lab testing of the performance and scalability of Microsoft’s Windows Server 2008 R2 SP1 with Hyper-V server virtualization technology. Testing with a tier-1 virtualized Microsoft SQL Server 2012 application workload was used to confirm that Hyper-V can be used to lower total cost of ownership, increase scalability, and maintain performance.

Citrix Updates Citrix Receiver to Support CloudGateway and Substantially Improve End User Performance

Written on Wednesday 22 February 2012 by Bob Deleeck in category Default

Citrix will be releasing updates to Receiver to broaden and enrich the end user experience on a variety of endpoints. Updates will include Receiver mobile clients for Android and iOS as well as Receiver for Windows (3.1).

STOP error 0x0000DEAD on XenServer 6

Written on Sunday 19 February 2012 by Erik Janssens in category Default

Since we upgraded our LAB environment from XenServer 5.6 to XenServer 6, all our Windows Server 2008 R2 virtual machines are regulary crashing, and showing BSOD's with stop error 0x0000DEAD. Also, the event viewers on all servers were showing events similar to the one below:

When going through the memory dumps I noticed the issue was related to the network Citrix PV Ethernet driver, more specifically xenvif.sys, installed by XenServer Tools from XenServer 6. When an interface using this driver receives a rogue TCP packet, where the TCP header contains options but the IP packet length is too short to accommodate them, the system crashes. The fact that these packages exist suggest something else on the network is misbehaving.

Citrix recognizes this problem, but it will only be fixed in the next version of XenServer, 6.0.2, which will be released somewhere in March. Luckily there are two workarounds for this problem:

  • Install XenServer Tools from XenServer 5.6
  • Disable 'Large Receive Offload' on the driver properties for all interfaces using the Citrix PV Ethernet driver

Update: This powershell script disables Large Receive Offload for all interfaces using the Citrix PV Ethernet driver:

$root = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}'
$items = Get-ChildItem -Path Registry::$Root -Name

Foreach ($item in $items) {
    if ($item -ne "Properties") {
        $path = $root + "\" + $item
        $DriverDesc = Get-ItemProperty -Path Registry::$path | Select-Object -expandproperty DriverDesc
        if ($DriverDesc -eq "Citrix PV Ethernet Adapter") {
            Set-ItemProperty -path Registry::$path -Name LROIPv4 -Value 0