Liquidware Profile Unity & Office 365 Caching

As per my Office 365 in Non-Persistent environment – Product Comparison Matrix article .There has been some interest in the Liquidware solution and although the original article was comparing the full ProfileDisk configuration (all profile data is stored) , there is an alternative way to be selective of what is stored in the VHD for the user and therefore the below article will cover this setup/configuration and testing.

At time of writing only Outlook Caching has been included, other components will be added in due course as they have been proved.

NOTE: The template was released by liquidware on 8th February 2018, after the original product comparison matrix was released.

Liquidware Architectural Overview




Management Server System Requirements

Operating System Windows Server 2008 R2 + (64bit Only)
Software Microsoft .NET Framework 4.5.2, Erlang OTP, RabbitMQ Server, and MongoDB Server

All Installed during management software setup.

Memory 4GB
Storage 20GB (minimum)

FileShare for Storage of VHD Disks

UNC Path to Store VHD (in my case i have used “\\LAB-DC1\ProfileUnity”) Share.

Share Permission

User Account/Group Permission
Everyone Full Control

NTFS Permission

User Account/Group Permission Folder
Administrator Full Control This folder, subfolders and files
Authentication User Modify This folder only
Creator/Owner Modify Subfolder and Files only

Install ProfileUnity Management Software

Step 1: Launch “ProfileUnity-Net_6.7.0gab3.exe” (downloaded from and then Choose English (United States). Click OK


Step 2: Click Next at Welcome to the Pre-requisites wizard.


Step 3: Click Next at Prerequisites to begin installing them.


Step 4: Installation will begin and take several minutes to complete.


Step 5: After all prerequisites have completed and installed successfully. Click Finish


Step 6: At Welcome to the ProfileUnity Setup wizard, Click Next


Step 7: At Select Installation folder, Leave as default. Click Next


Step 8: At logon information, provide a password for the service account required db/fabric services. Click Next


Step 9: At FlexDisk Broker Mode, Select Citrix , Click Next


Step 10: At End-User License Agreement , Select i accept the terms in the License Agreement. Click Next


Step 11: At Read to install , Click Install


Step 12: Installation will proceed and take several minutes to install.


Step 13: At Completing the ProfileUnity Setup wizard, Click Finish to Launch the Profile Unity Web Console.


Configuring ProfileUnity for Office365

Step 1: Login to ProfileUnity with username (admin) , password (leave blank) and Click the Arrow to begin login.


Step 2: At first login the password must be changed. Please change the password to secure password of your choice. Click Arrowpu17NG

Step 3: After login, select Administrator , Select Administration


Step 4: Scroll down to ProfileUnity Tools, Click Deploy Client tools to deploy client tools to the Netlogon folder.(%DOMAIN%\NETLOGIN\ProfileUnity)


Step 5: Browse to the %DOMAIN%\Netlogon\ProfileUnity and copy the ADM/ADMX into the Central GPO Store


  • ProfileUnity.adm to C:\Windows\PolicyDefinition\en-US (Local) or %logonserver%\sysvol\%userdnsdomain%\policies\PolicyDefinitions\en-US for (Central GPO Store)
  • ProfileUnity.adm.admx to C:\Windows\PolicyDefinition (Local) or %logonserver%\sysvol\%userdnsdomain%\policies\PolicyDefinitions (Central GPO Store)

Step 6: Create a GPO that will be assigned to Computer that will need the Profile Unity Client installed. Computer Setting\Policies\Administrative Templates\Classic Administrative Template\Liquidware Labs\ProfileUnity (32bit or 64-bit)


Step 7 – Browse to Auto-Install.Net Setting, Select Enabled 


Step 8 – Browse to System INI File Path setting and Specify the %DOMAIN%\NETLOGIN\ProfileUnity location where INI files will be deployed.


Step 9: Browse to Computer Setting\Policies\Windows Settings\Scripts\Startup and Add the following script “\\%DOMAIN%\NETLOGON\ProfileUnity\LwL.ProfileUnity.Client.Startup.exe”


Step 10: Create a separate GPO/or use Loopback processing on the Computer Objects to apply user settings. User Setting\Policies\Administrative Templates\Classic Administrative Template\Liquidware Labs\ProfileUnity (32bit or 64-bit)


Step 11 – Browse to System INI File Path setting and Specify the %DOMAIN%\NETLOGIN\ProfileUnity location where INI files will be deployed.


Step 12 – Browse to User Setting\Policies\Windows Settings\Scripts\Logoff and Add the following script \\%DOMAIN%\NETLOGON\ProfileUnity\LwL.ProfileUnity.Client.Logoff.exe:-


Step 13: Ensure that License file has been placed on %DOMAINNAME%\ProfileUnity folder as this the default locaiton otherwise any other location needs to be specified via License File path GPO.


Importing O365 template

Step 1 :- Download the JSON file from this article

Step 2 :- Browse Administrator/Administration/Templates and Click Add Template


Step 3 :- Select Template downloaded to Upload.pu22NG

Step 4 :- Confirmation of Import will show as successful.


Step 5 :- Select Configuration Management from Left Menu. Click Create Configuration.


Step 6 :- Select Guided Configuration


Step 7 :- Specify Active Directory Group that Configuration will apply (I.e WILKYIT\grp-puO365users), Click Add. Deployment path by default will be the ProfileUnity in NETLOGON. Then Click Next


Step 8 :- Select the recently created template (Office365 Outlook OST Storage Virtual Disk – Imported) . Click Next


Step 9 :- Specify path where the VHD will be stored. In my case \\LAB-DC1\ProfileUnity\%USERNAME%. Then Click Next


Step 10 :- At Deployment Path, Click Update to deploy the INI file into the default INI location (%DOMAIN%\NETLOGON\PROFILEUNITY)


Additionally the following steps need to be completed to ensure the user can write/own the permission on the VHD volume:-

Step 1: Create a VHDACL.ps1 with the following content

$varUsername = $env:USERNAME
$varUserdomain = $env:USERDOMAIN
$filesystemlabel = "ProfileUnity Virtual Disk 1"
$vol = Get-WMIObject -Class Win32_Volume -Filter "Label='$filesystemlabel'"
$link = $vol.DeviceID
icacls.exe "$link" /grant "$varUserdomain\${varUsername}:(OI)(CI)(F)"


Step 3: Log into Profile Unity, Under Configuration Management and open the existing Configuration in earlier steps:-


Step 4: Click User Defined Scripts


Step 5: Add a new User Defined Script settings with the following:-

  • Description = VHD Permission Reset
  • Execute: After ProfileUnity at Logon (Post-Logon)
  • Type: Powershell
  • File : \\%DOMAINNAME%\NETLOGON\ProfileUnity\VHDCAL.ps1


Testing Configuration

Step 1: Log in as ctxuser1 (which is a member of the grp-puO365users)


Step 2: Profile Unity Splash screen will appear showing initialising


Step 3: The splash screen will show execution of O365 OST Virtual Disk, confirming INI file has been detected and is running for the user.


Step 4: Browsing to the Location specified in Configuration Section – Step 9


Step 5: Browsing to %LocalAppData%\Microsoft , the Outlook Folder is mounted to the VHD file and previous folder has been renamed Outlook.old.


Step 6: Open Microsoft Outlook , Click Next to begin setup of profile


Step 7: Select Yes to setup Outlook e-mail account. Click Next


Step 8: Enter the appropriate details to setup the Office 365 account in outlook. Then click Next

  • Your Name: in my case WilkyIT
  • e-mail address:
  • Password: password for the account.


Step 9: Establishing Connection, Search for the Outlook setting and logging on to the mail server will begin


Step 10: After successful setup, ensure “change account settings” is ticked and click Next


Step 11: Ensure that “Use cached exchange mode” is ticked and click Finish


Step 12 : Looking at the %LocalAppData%\Microsoft\Outlook the folder is populated with the outlook cache.


This will allow the profileUnity product run without depending on the profileDisk to capture all setting this making it profile agnostic.

There is additional templates which allow Indexing/Caching to added to configuration for users. Here is a my view

  • Cache does not roam between computers but created in each one.
  • If multiple servers in a pool are used the user search index must be created in each one thus it could be hit/miss if an existing cache exists on that server and may require update to bring to latest.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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