Migrate your Citrix Storefront to another Server

In this article I would like to explain how you can migrate your Citrix Storefront Cluster to a newer operating system. Normally, if you have a Citrix storefront cluster, you can simply add a Server 2016 storefront server to an existing Server 2012 cluster and remove the older server.

In my example I move the Citrix Storefront Server from Windows Server 2008R2 to Windows Server 2016. Here the workaround with the cluster doesn’t work because too much has changed on the Microsoft IIS.

It is important to note that the same language must always be used on the Windows servers. So you cannot migrate your Citrix Storefront Server from a server with German language to a server with English language.

Why should you migrate your Citrix Storefront at all instead of simply setting up a new server or cluster?

Well, the Citrix storefront / cluster gets a storefront cluster ID in during the first configuration. The client (Citrix Workspace or Citrix Receiver) remembers this ID. If you simply install a new Citrix storefront cluster or server now, you have the problem that the apps are duplicated or no longer updated correctly. The client then configured 2 stores with the same address but different storefront IDs. This can be quite annoying…

Let’s get started.

First we want to export the Citrix Storefront Config from the old Storefront Server.

Go to your Citrix Storefront Server or one of your Citrix Storefront Cluster Servers. There you have to run Powershell. Run the Powershell as administrator.

Now execute the following command:

$SDKModules = 'C:\Program Files\Citrix\Receiver StoreFront\PowerShellSDK\Modules\Citrix.StoreFront' Import-Module "$SDKModules\Citrix.StoreFront.psd1" -verbose Import-Module "$SDKModules.Authentication\Citrix.StoreFront.Authentication.psd1" -verbose Import-Module "$SDKModules.Roaming\Citrix.StoreFront.Roaming.psd1" -verbose Import-Module "$SDKModules.Stores\Citrix.StoreFront.Stores.psd1" -verbose Import-Module "$SDKModules.WebReceiver\Citrix.StoreFront.WebReceiver.psd1" -verbose Import-Module "$SDKModules.SubscriptionsStore\Citrix.StoreFront.SubscriptionsStore.psd1" -verbose

Now the necessary Citrix Storefront SDK modules are loaded.

In the next step we want to export the existing Citrix Storefront configuration. Of course we need this if we want to move the Citrix storefront to a new operating system.

Export-STFConfiguration -targetFolder "$env:%%PATH%%" -zipFileName "backup" -NoEncryption

# %%PATH%% should be replaced with your target path

Import settings to the new server

Now we want to import the Citrix Storefront settings on our future server. To do this we execute the first command in Powershell again to load the SDK. Before we can do this on the new server, Citrix Storefront has to be installed. The command only needs to be executed on a server if it is a cluster. The additional cluster node will then be added to the cluster as the second storefront server.

$SDKModules = 'C:\Program Files\Citrix\Receiver StoreFront\PowerShellSDK\Modules\Citrix.StoreFront' Import-Module "$SDKModules\Citrix.StoreFront.psd1" -verbose Import-Module "$SDKModules.Authentication\Citrix.StoreFront.Authentication.psd1" -verbose Import-Module "$SDKModules.Roaming\Citrix.StoreFront.Roaming.psd1" -verbose Import-Module "$SDKModules.Stores\Citrix.StoreFront.Stores.psd1" -verbose Import-Module "$SDKModules.WebReceiver\Citrix.StoreFront.WebReceiver.psd1" -verbose Import-Module "$SDKModules.SubscriptionsStore\Citrix.StoreFront.SubscriptionsStore.psd1" -verbose

If the SDK was loaded successfully, we can import our configuration. We do this with the following command:

Import-STFConfiguration -configurationZip "$env:%%PATH%%\backup.zip" -HostBaseURL "https://YOUR BASE URL FROM STOREFRONT"

# %%PATH%% should be replaced with your path with the export zip file

Ready for testing!

Now you can check your configuration on your new storefront server and test it.

Check your Storefront Cluster ID

With this command you can display the Storefront Cluster ID (enter the command in Powershell run as administrator):

$WebConfigPath = "C:\Program Files\Citrix\Receiver StoreFront\Framework\FrameworkData\Framework.xml"
$XMLObject = (Get-Content $WebConfigPath) -as [Xml]
$XMLObject.framework.properties.property

If the storefront cluster ID could be read, the output looks something like this:

name value
---- -----
ClusterId 8fa83c8-4b23a-23f4-87f0-2df8cf2341322
HostBaseUrl https://storefront.thomaspreischl.de/
SelectedIISWebSiteId 1
AdminConsoleOperationMode Full

More useful links and information

Enclosed I have collected some useful information and I hope this can also help you with the further installation or configuration of the Storefront Server.

Here you can find the first Citrix website with the installation guide for Citrix Storefront: https://docs.citrix.com/en-us/storefront/current-release/install-standard.html

Important is to know the following (text is copied from the Citrix Storefront instructions):

  • Upgrading the operating system version on a server running StoreFront is not supported. Citrix recommends that you install StoreFront on a new installation of the operating system.
  • Upgrading to the latest StoreFront current release from an older current release that is now End of Life is not supported. For more information see CTX200356.
  • StoreFront does not support multiple server deployments containing different product versions, so all servers in a server group must be upgraded to the same version before you grant access to the deployment.
  • StoreFront does not support multiple server deployments containing different server OSs, so all servers in a server group must be on the same Windows Server OS.
  • Concurrent upgrade is not supported for multiple server deployments, servers must be upgraded sequentially.

I would like to take this opportunity to thank my colleague Christian Jöns, who has given me further information on this subject.

I hope as always that you liked the article and that it will help you. If you have any questions or suggestions, please write me a comment. Also read my other articles about Citrix ADC here.

Otherwise I am happy about a Like on Facebook, Xing or if you follow me on Twitter. You will find the social media buttons on top and on bottom of my page. You can also share my article if you like.

8 thoughts on “Migrate your Citrix Storefront to another Server”

  1. Hi

    Thanks for the article – so after installing on the new server what do you do with the old store front server do you just uninstall storefront or shut down?

    1. Hi Andy,
      After you have done the migration, you can change the loadbalancer or DNS to your new storefront/ cluster. After that shutdown your old Servers, check the Environment and delete the old servers after a few days.
      If you have more roles e.g. controller, you have to migrate this also.

  2. Hi – thanks for this brilliant article, I am bit confused under you section for

    I am migrating storefront servers from server 2008R2 to new created server 2016.

    ‘Import settings to the new server’ you say “The command only needs to be executed on a server if it is a cluster.” do you mean one of the new server 2016 server needs to be a member to the existing storefront store group ?

  3. Wow I didn’t realise you couldn’t add an additional server to a cluster running a later OS, I had planned on decommissions servers and then re-adding a new server with the same Hostname and IP (to gradual upgrade the OS) but I guess I’m not doing that now

  4. Thanks for the article and support. I have exported the configuration from the old store front server. We only have 1 that is running 3.12 StoreFront on a Windows 2012 server. I’m transitioning over to Windows 2019 server; we will still only have 1 StoreFront server after the transition. Is it safe to keep running on the old StoreFront server, after importing the configuration into the new StoreFront server? The reason I ask is due to the delivery controllers now being in both the old StoreFront server and the New StoreFront server. I would like to test the new StoreFront server for a couple of weeks before flipping over to it. We plan on just updating the base URL DNS to point to the new StoreFront server. Thanks for the help.

  5. Thanks for the article and support. I have exported the configuration from the old store front server. We only have 1 that is running 3.12 StoreFront on a Windows 2012 server. I’m transitioning over to Windows 2019 server; we will still only have 1 StoreFront server after the transition. Is it safe to keep running on the old StoreFront server, after importing the configuration into the new StoreFront server? The reason I ask is due to the delivery controllers now being in both the old StoreFront server and the New StoreFront server. I would like to test the new StoreFront server for a couple of weeks before flipping over to it. We plan on just updating the base URL DNS to point to the new StoreFront server. Thanks for the help.

    1. Hi, yes of course, no Problem. You can do it this way. If you don‘t want to use a second base url name, you also could edit the hosts file on the test clients and test the connections, so you can test in „real“ conditions. In the end the base url is not beeing changed as I Unterstand.

Leave a Comment

Your email address will not be published. Required fields are marked *