Feature request: Citrix Database configuration tool

I think we’ve all been there once, we need to upgrade a user environment and time is limited. The customer is a 24/7 organisation and has office all around the world. How can you make sure that you are in control of the upgrade and create a maintenance window they can accept? 
The answer of course is by doing a dry-run on the production database and test the whole sequence. So that was my plan for today, setup a dry-run/test environment with a backup of the production database. I worked for a software company a few year back (6+ already) and we had SQL scripts to do the upgrade to do testing. We had databases running at Shell and large banks, so failure was not an option. So that was my plan also for this Citrix environment.
So let me show you the setup and you soon understand my feature request.


The environment is a Citrix XenDesktop 7.1 environment, it’s still 7.1 because when we started about a year ago 7.1 was the new kid on the block. We have a policy to no change versions during project because of new bugs introduced everytime. We want the project to finish in time if possible.
We have two Controllers, two Storefront server and two Provisioning servers. End users work on XenApp or XenDesktop machines depending on their job description. Designers work on desktops and standard office users work on XenApp.


There are some issues right now with BSOD and disconnects with remote users, Citrix has been looking into it but despite a private hotfix we haven’t been able to solve that one. 7.0 and 7.1 are perhaps not the most table versions so I suggested to go to 7.5 or 7.6.
BSOD happen too often and when we debug the dump file we see 1A and 3B occur frequently. 1A is memory management so that could be almost anything. 3B is related to PICADM, a Citrix process. For the 3B issue Citrix has provided us with a fix that didn’t solve it so far.
Citrix has told us they can’t find the reason after the fix so upgrading to the latest version is I think the best solution.


So I set off  to build a test environment to test the upgrade.
Rolled out a new virtual machine to be used as Citrix Controller, it’s just a virtual machine, 8GB of RAM and a standard disk.
Took a backup of the production database and restored it to a new database, simple as that.
If you never done that please mind the files , edit the file location or the file name if you don’t want to run into issues.
Next step is the add the SAM account of the new controller to the database and apply the  database role membership correctly.

So now we have the database setup and the SAM account connected. My admin account is dbo of the database so what could go wrong.

Setup Citrix

On the new virtual machine I deployed XenDesktop 7.1 to connect to the database. I tried 7.6 and hoped that Studio would suggest the upgrade but when it didn’t I reverted to 7.1.
So after setting up Citrix Studio started and there it starts to go wrong, you can create a site, setup remote PC access or add the controller to a existing site. What you can’t do is connect to a existing database.

The next screenshot is even more explaining, when you choose that want to setup a new site you get the following selection. so you create a full site or just an empty container, I don’t want either.

The wizard route ends here, there is no option to connect the server to the database. I tried with Powershell to edit the connection strings to connect to the database but that didn’t work. I went on to search why that was an issue and came across this in the database.
The production controllers are in the database and you can’t connect a new server to the database for it’s not there yet. The only way to do that would be to either first add the controller to the site and remove it later on or setup a isolated environment and reuse the server names of the production environment. Both options seem a bit like a workaround.
If only we could add a record in the correct places in the database to change the servers.

Feature Request

So I think you have a good idea about the feature I’m requesting.  There are two features I’d like to see added;
  1. Within the Studio console, while setting it up, an option to connect to an Existing database without a controller being present.
  2. A tool to change the database entries for the controllers, remove all current entries and add a new one.
  3. euh.. and a third one…A third option would be to provide us with SQL database upgrade scripts, that would be the most awesome thing but I’d be happy with number #1 and #2.
Of course both #1 and #2 could be combined, that would make it possible to create a test environment in which you could do a test upgrade and get knowledge about the production upgrade.
I’ve been thinking why Citrix would not want to enable this but I can’t find a reason. There is no license information other than the license server address in the database so if you connect to the database with a new server it will only work if you have enough licenses.

Why is it a good idea?

With this feature added you can do a dry run before upgrading, thus providing in more up-time for Citrix environments. Database upgrade issues can be solved on forehand thus again leading to a more robust upgrade plan.
So Citrix please add this to version 7.7 or next week when I would need it 🙂
Not sure how to add Feature requests to the list at Citrix so I hope twitter works.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.