Citrix Profile Management: VHDX-based Outlook cache and Outlook search index on a user basis.

Citrix Profile Management: VHDX-based Outlook cache and Outlook search index on a user basis.

book

Article ID: CTX235347

calendar_today

Updated On:

Description

Feature Description
To address two Outlook-related performance issues in Profile Management, version 7.18 introduced a new user-based Outlook search index database, stored as a VHDX file. In addition, the Outlook cache (.OST) file can also be stored as a VHDX file.

Note: Profile Management provides a default VHDX capacity of 50 GB. Plan your storage quota accordingly. If the actual usage of your VHDX exceeds the quota you configured earlier, your VHDX file is unmounted.
 
Feature Benefits
  • Having a profile-based Outlook search index database available on a user-by-user basis means that lengthy index rebuilds are no longer required when a user logs onto a machine they haven’t accessed previously.
  • The benefit of using mounted VHDX files is that logon/logoff times are not affected by having to synchronize possibly large search index .EDB and .OST Outlook cache files.
 
Behaviour prior to Profile Management 7.18
There have been two Outlook-related performance challenges with Citrix Profile Management.
To best explain, we’ll take a user that has an existing Profile Management 7.17 profile and launches published Outlook (or opens Outlook in a desktop session). Outlook has been configured to use the Outlook .OST cache. The location of the file is typically:
C:\Users\<user>\AppData\Local\Microsoft\Outlook\<email address>.OST
In Outlook cached mode, the OST file can be very large, so there is a significant overhead if the OST file is part of Profile Management logon/logoff synchronization.
 
Actions in Outlook, such as sending/receiving mail result in changes to the Outlook search index database. This data is stored in the Windows search index database: Windows.edb.
This is a machine-based file, which means it holds search index data for all users logging onto the machine. If a user launches an Outlook session (or opens Outlook in a desktop session) on a VDA machine that they haven’t access previously or haven’t accessed for a while, the Outlook search index has to be rebuilt in Windows.edb. Outlook searches have to wait until re-indexing finishes. The location of the Windows search index database is typically: C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb
We can see this design in the image below:
User-added image

Behavior using VHDX-based Outlook cache and Outlook search index on a user basis
The Profile Management 7.18 release introduced a feature to address these Outlook-related performance challenges.
 
To explain we’ll use the same user as above, but logging on to a 7.18 version VDA for the first time.
During the Profile Management logon, the user’s Outlook-related search index is split out of the Windows search index database (Windows.edb) and written to a VHDX file created at:
PathToUserStore\<User_information>\VHD\<Platform>\OutlookSearchIndex.vhdx
The remote VHDX file is then mounted locally in the user’s local profile at:
C:\Users\<user>\AppData\Roaming\Citrix\Search.vhdx
From this point, the user has their own profile-based version of the Outlook search index database. Within the Search.vhdx mount-point folder, the Outlook search index database is named <userSID>.edb

The Outlook .OST file is converted into a VHDX file and stored at:
PathToUserStore\<User_information>\VHD\<Platform>\ OutlookOST.vhdx
The remote VHDX file is then mounted locally in the user’s local profile at (default):
C:\Users\<user>\AppData\Local\Microsoft\Outlook.vhdx
During the Outlook session, changes to the Outlook search index and Outlook .OST are made directly to their respective VHDX files over SMB.
 
The feature also requires additional registry settings to be created. Read the Registry Changes section for further information.
 
When the user logs off the session, both VHDX files are unmounted from the local profile. Because the VHDX files had been mounted over SMB, no synchronization is required at Profile Management logoff. The additional registry settings are synchronized to the user’s profile store (or before if the Active Writeback Registry feature has been enabled).

Feature Enhancements introduced in Citrix Virtual Apps and Desktops 1808
The Profile Management 1808 release Outlook search index feature supports groups explicitly excluded through the Profile Management Excluded Groups policy as well and groups implicitly excluded through the Profile Management Processed Groups policy (see Feature Limitations for further information).
This release also introduced support for Windows 10 1803.

Feature Limitations
  • The feature is not supported for concurrent sessions on multiple machines.

Profile Management Logon Changes with Outlook cache and Outlook search index feature enabled
Profile Management integrates Microsoft VHDX solution to handle the Outlook user-based search database and Outlook cache as a part of user profile. The flowchart below shows this behavior:
User-added image

Profile Management Logoff Changes with Outlook cache and Outlook search index feature enabled
To roam user based search database among multiple machines, changes are necessary on user logoff:
  • Dismount EDB file before session end.
  • Export Outlook search database related registry settings to VHDX.
  • Dismount VHDX files for both cached Outlook mails and Outlook search database.
The flowchart below shows this behavior:
User-added image

Feature troubleshooting
  • Ensure that the Enable Search index roaming for Outlook Profile Management policy has been enabled. This policy enables both the Outlook search index feature and the Outlook cache (.OST file) feature.
  • Check that the Outlook cache VHDX file and the Outlook search Index VHDX file have been mounted and appear in Windows Explorer as VHDX mount icons. If they show as regular folder icons, the VHDX mount failed.
  • Ensure that the Domain Computers group has NTFS permissions set to Full Control on the User Profile Store \ Profile File server.
User-added image
  • Use the Windows Disk Management utility to confirm that the Outlook cache VHDX file and the Outlook search Index VHDX file have been mounted in the session.
  • Check that the Windows Search service is running. By default, this service is running with a Startup Type of Automatic (Delayed Start).
  • Use Process Explorer (SysInternals) to confirm that the SearchIndexer.exe process has loaded the Profile Management UpmSearchSvcHook.dll component.
User-added image
  • Use Process Explorer to confirm that Outlook.exe has loaded the Profile Management UpmOutlookHook.dll component.
User-added image
 
  • Process Explorer can also be used to confirm that SearchIndexer.exe is accessing the <userSID>.edb file.
User-added image

CDF tracing:
To track the activity of this feature on the VDA, trace on the following providers using CDFControl:
UPM_DLL_OUTLOOK_HOOK
UPM_DLL_SearchSvc_Hook
UPM_Service
When analyzing the CDF traces, add the user’s SID to the filtering criteria.

Registry changes
Modifications have been made to the HKLM to accommodate the new feature:
  • Hook dll: upmoutlookhook.dll and upmsearchsvc.dll
  • Registry settings to inject upmoutlookhook.dll into outlook.exe by APC hook framework:
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_DLLs\upmOutlookHook]
"FilePathName"="C:\\Program Files\\Citrix\\User Profile Manager\\upmoutlookhook.dll"
"Flag"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_DLLs\upmOutlookHook\outlook.exe]
"HookProcess"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_DLLs\upmOutlookHook]
"FilePathName"="C:\\Program Files\\Citrix\\User Profile Manager\\upmoutlookhook.dll"
"Flag"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_DLLs\upmOutlookHook\outlook.exe]
"HookProcess"=dword:00000001
 
Registry settings to inject upmsearchsvchook.dll into Windows Search Service:
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_DLLs\upmsearchsvchook]
"FilePathName"="C:\\Program Files\\Citrix\\User Profile Manager\\upmsearchsvchook.dll"
"Flag"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_DLLs\upmsearchsvchook\SearchIndexer.exe]
"HookProcess"=dword:00000001
 
CDF trace registry settings for upmoutlookhook.dll and upmsearchsvchook.dll
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\Tracing\Modules\UPM_DLL_OUTLOOK_HOOK]
"GUID"="4FE563BE-76FA-4b3c-83F3-72B6EE62AC11"
"Classes"=""
"Enabled"=dword:00000000
"Level"=dword:00000000
"Flags"=dword:00000007
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\Tracing\Modules\UPM_DLL_SEARCHSVC_HOOK]
"GUID"="8DA214E6-E1A0-4E90-B2A7-B799E6B76C0A"
"Classes"=""
"Enabled"=dword:00000000
"Level"=dword:00000000
"Flags"=dword:00000007

Additional Information


Enable native Outlook search experience:

https://docs.citrix.com/en-us/profile-management/current-release/configure/enable-native-outlook-search-experience.html