Recently I built a brand new XenApp 7.6 environment for one of our customers. During the testing phase I noticed Citrix Director was not showing any information regarding logon performance (Average logon duration).
There are a few posts describing the same problem on the Citrix support forums, but most of them were for older versions (7.1 or 7.5) of XenApp or XenDestkop, and none of them were providing a real solution.
When loking in the SQL database, both the ClientSessionValidateDate and InteractiveEndData colums from the MonitorData.Connection table were empty (NULL value) whilst other columns had correct values. Citrix Director uses the values in these columns to calculate logon duration.
After doing some research I learned that a process from Citrix User Profile Manager, which is installed by default when installing the XenApp/XenDestkop VDA, is responsible for monitoring the end of the logon process, and registration of these values in the database. This process, UpmUsrMsg.exe, is called from the run key (HKLM\Software\Microsoft\Windows\CurrentVersion\Run):
This registry key dates from Windows NT 4.0 and earlier, and was used to create a customized list of programs that the system starts automatically after system start (or user logon, for values in HKCU).
Since the customer environment is restricted, we also restricted running applications from this registry key through the GPO setting ‘Disable legacy run list’ under Computer Configuration\Administrative Templates\System\Logon. (This setting also exists in the same location in User Configuration.)
As soon as I changed the policy setting ‘Disable legacy run list’ from ‘Enabled’ to ‘Not Configured’ and did a computer policy refresh, the XenDesktop VDA started registering the necessary values in the monitoring tables and a few minutes later Citrix Director was showing Logon Performance data!
Speeding up logon times
Since Windows 8, Microsoft introduced a delay of 5 to 10 seconds for starting up applications or executables at startup. Due to this delay the logon process takes longer then it should, and Director also shows longer logon times since the process responsible for measuring the end of the logon process is also started with a delay.
This delay can be removed by setting the registry value StatupDelayInMSec (REG_DWORD) to 0 in HKEY_CURRENT_USER\Software\Microsoft\Windows \CurrentVersion\Explorer\Serialize. If this key does not exist, it can be created manually.