StoreFront attempts to cover the most customer use cases with standard product features and with configuration. Previously in WI it was common to deploy a code customisation to provide some of this type of functionality (e.g. optimal NetScaler Gateway routing). However, it’s not possible to capture every business requirement customers have and so the 2.5 release of StoreFront introduces the ‘Store Customization SDK’. This can be used to alter the sets of resources presented to Receivers, details of launch requests etc.

StoreFront is written in .Net and the SDK requires some C# coding. The general model used in the SDK is: StoreFront hands an appropriate ‘document’ to the customization point. The code there edits the document to implement whatever logic is required and hands it back to the system. The use of the ‘document’ form hopefully gives the maximum flexibility in how the data is manipulated programatically.  It is also possible to enable optional checks that will perform basic validation on the form of the returned document and, if not suitable, reject it and pass on the original to the Receivers, making the system more robust. To help the customization logic determine whether to apply changes, a full context is also supplied to these functions: user, device, launch params and full HTTP headers from the request are available.

The customisation points available are:

  • Post Resource Enumeration: the XML document containing details of all resources available to the user is made available. This doc can be tweaked to, say, remove some resource, making it unavailable in a particular user context, such as when accessed remotely from a tablet device. Note: basic resource filtering is available via config, see: Hiding Applications in Citrix StoreFront
  • Post Session Enumeration: the XML document containing the details of current sessions for the user is passed to the customization point. This would normally be edited in a complementary manner to the resource enumeration. e.g. if you wish to remove a resource from view in a particular context, then you probably also want to remove access to any existing sessions accessing that resource.
  • Pre Launch: StoreFront will generate an ICA file with the parameters that a Receiver will use to access a resource. If you wish to tweak these parameters, this customization point hands you the ICA file that will be sent to the client to be edited as required.
  • Input Context alteration: change some of the variables which will be used in session preparation. Want to encode some information in the client name or add an Access Condition? This customization point is for you.
  • Delivery Controller List alteration: StoreFront will have been configured with Delivery Controller (XML service) addresses for XenApp farms and XenDesktop sites. Some advanced customers manage which of these are appropriate for current use by some external service. The output of such services can be applied to affect back end communications here. Note the implementation of this customization is combined with the input context alteration point above
    The StoreFront services and association customisation points exposed by the SDK


Download the SDK from here (requires MyCitrix login). It contains full documentation, sample customization and customization template files to which to add your own logic.