In Web Interface and earlier releases of StoreFront, if you configure a Web Interface site or a store to deliver resources from multiple XenApp farms and/or XenDesktop sites, these farms/sites are communicated sequentially to enumerate all resources available for users. When you have a large number of farms/sites or high latency network connections for some farms/sites, resource enumeration would take a long time and the clients may time out before the enumeration completes.

StoreFront 2.5 supports parallel resource enumeration. When enabled, StoreFront sends out enumeration requests to all farms/sites at the same time and aggregates responses when all farms/sites have responded. This should provide faster responses to user queries when aggregating multiple farms/sites. If explicit Active Directory credentials are used to authenticate users, StoreFront sends user credentials to the XenApp farms/XenDesktop sites. To minimize the risk of user accounts being locked out as a result of parallel enumeration, StoreFront validates user credentials with Active Directory immediately before sending out enumeration requests.

Out of the box, parallel resource enumeration kicks in when more than one farms/sites are being aggregated. This article shows you how to change the configuration of this feature using PowerShell commands.

Before you can run the cmdlets in the following sections, you have to import the necessary PowerShell modules. Here is the code snippet that does it for you:

$dsInstallProp = Get-ItemProperty `
 -Path HKLM:\SOFTWARE\Citrix\DeliveryServicesManagement -Name InstallDir 
$dsInstallDir = $dsInstallProp.InstallDir 
& $dsInstallDir\..\Scripts\ImportModules.ps1 

Alternatively, you can navigate to the scripts folder of you StoreFront installation (typically C:\Program Files\Citrix\Receiver StoreFront\Scripts) and import the modules:
cd "C:\Program Files\Citrix\Receiver StoreFront\Scripts"
. .\ImportModules.ps1

Turn off parallel resource enumeration

The command to turn off parallel resource enumeration is Set-EnhancedEnumerationOff, which syntax is:

Set-EnhancedEnumerationOff [[-storeVirtualPath] <Object>] `
    [[-siteId] <Object>]

where storeVirtualPath is the virtual path for the store (typically /Citrix/Store) and siteId is the IIS WebSite ID for the store (typically 1). For example, the following command turns off parallel resource enumeration for the store at /Citrix/Store:
Set-EnhancedEnumerationOff "/Citrix/Store"

Reset parallel resource enumeration

The command to reset parallel resource enumeration to the default values is Reset-EnhancedEnumerationOptions, which syntax is:

Reset-EnhancedEnumerationOptions [[-storeVirtualPath] <Object>] `
    [[-siteId] <Object>]

where storeVirtualPath is the virtual path for the store (typically /Citrix/Store) and siteId is the IIS WebSite ID for the store (typically 1). For example, you can use the following command to reset parallel resource enumeration to its default configuration for the store at /Citrix/Store:
Reset-EnhancedEnumerationOptions "/Citrix/Store"

Advanced options

The command to configure advanced options for parallel resource enumeration is
Set-EnhancedEnumerationOptions. The syntax is:

Set-EnhancedEnumerationOptions [[-storeVirtualPath] <Object>] `
    [[-siteId] <Object>] [[-enabled] <Object>] `
    [[-maxConcurrentEnumerations] <Object>] `
    [[-minimumFarmsRequired] <Object>]

where

  • storeVirtualPath is the virtual path for the store (typically /Citrix/Store).
  • siteId is the IIS WebSite ID for the store (typically 1).
  • enabled is a boolean value to enable/disable parallel resource enumeration.
  • maxConcurrentEnumerations is the maximum number of farms/sites that can be contacted at once to reduce simultaneous http requests. A value of zero results in requests being sent to all farms/sites in one go.
  • minimumFarmsRequired is the minimum number of farms/sites being aggregated before the parallel enumeration occurs.

Please note that StoreFront treats Citrix Online (e.g. GoToMeeting, GoToWebinar and GoToTraining) as a resource provider. Therefore, when you specify a value for maxConcurrentEnumerations or minimumFarmsRequired, you have to bump up your desired number by 1. For example, if you want to configure the store at /Citrix/Store to start parallel resources enumeration when there are 4 or more farms/sites are involved and sends requests to no more than 5 farms/sites at a time, you should use the following command:

Set-EnhancedEnumerationOptions "/Citrix/Store" -enabled $true `
    -maxConcurrentEnumerations 6 -minimumFarmsRequired 5