Convert OmniGraffle Package Format to Flat Format

Hey all, I wanted to share a useful script if you have a bunch of OmniGraffle files that are saved as Automatic/Package format and want to convert them all to Flat. This makes them more Windows friendly especially if you are storing the files on OneDrive. Execute this script using Mac’s Script Editor. Select a folder that contains the OmniGraffle Documents or Stencils. This script will go through each document, open it, convert it, save it, close it. This script will also go into any subdirectories from the root folder you select. Special thanks to Christian Y. from the OmniGroup team for its initial creation.

# Original script created by Christian Y. (Support Human) in the OmniGroup
# for the VMware Design Team. - 2019
# Version 1.0

property errorList : "" -- This is needed so that the sub-routine can build a list of files should  there be any errors

on run
set errorList to "" -- Needed to reset the list from the last time the script was run 

tell application "Finder"
set sourceFolder to choose folder with prompt "Please select a folder containing OmniGraffle files:"
set foundItems to (items of sourceFolder) as alias list

my getFilesToProcess(foundItems)
end tell

if errorList is not "" then
display alert "An error occured trying to process the following files:" message errorList
return errorList
end if

end run

on getFilesToProcess(foundItems)
tell application "Finder"
set filesToProcess to {}

repeat with anItem in foundItems
set fileExt to name extension of anItem

if kind of anItem is "folder" then
set folderContents to (items of anItem) as alias list
my getFilesToProcess(folderContents)

else if fileExt is "graffle" or fileExt is "gstencil" or fileExt is "gtemplate" then
copy anItem to end of filesToProcess

end if

end repeat

my processFiles(filesToProcess)

end tell
end getFilesToProcess

on processFiles(graffleFiles)

repeat with aFile in graffleFiles

tell application "OmniGraffle"

open aFile
delay 0.6

tell application "System Events" to tell process "OmniGraffle"
set frontmost to true

delay 0.5

try -- Click OK if you get a prompt about missing fonts or similar messages
click button "OK" of sheet 1 of window 1
delay 0.5
end try

try -- Click "Edit in Place" documnet in the prompt that appears when opening stencil or template files outside of the sandbox
click button "Edit in Place" of sheet 1 of window 1
delay 0.5
end try

click menu item "Document" of menu "Inspectors" of menu bar item "Inspectors" of menu bar 1

try -- First attempt, which works if the left-hand sidebar is hidden

tell pop up button 1 of scroll area 2 of splitter group 1 of window 1
delay 0.5
click menu item "Save as flat file" of menu 1
end tell

on error -- Alternate attempt, which works if the left-hand sidebar is showing

tell pop up button 1 of scroll area 3 of splitter group 1 of window 1
delay 0.5
click menu item "Save as flat file" of menu 1
end tell

end try

end tell

tell front document
delay 0.5
end tell

on error
tell application "Finder"

set filename to name of aFile
set parentFolder to name of container of aFile

set errorList to errorList & "- " & parentFolder & "/" & filename & return

end tell
end try

end tell

end repeat

end processFiles

VMware User Environment Manager and Sysinternals BGinfo

If you want to use VMware User Environment Manager in combination with BGinfo, follow these three steps to allow users to choose their own wallpaper, while still allowing the BGinfo information to appear on the wallpaper.

Step 1: Capture the BGinfo wallpaper

Step 2: Start BGinfo at login to add the info to the wallpaper

Step 3: Undo the BGinfo at logoff to prevent ‘ghosting’ of old information.

These three steps are explained in detail in this article:

Step 1.

BGinfo changes the wallpaper (adds the BGinfo information/text) and stores the wallpaper in a different location: %LocalAppData%\Temp\BGInfo.bmp

Therefore the default UEM template to capture the wallpaper no longer works successfully. First, we have to fix this by adding the following two lines to the UEM Wallpaper config file:



The UEM config file for the Wallpaper then looks like picture 1:

Picture 1. UEM Config File to capture the Wallpaper

Step 2.

Automatically start BGinfo at login to write the correct information to the wallpaper.

We want to call BGinfo with the following parameters to silently start BGinfo at login:

“C:\Program Files\BGInfo\Bginfo.exe” “%ProgramFiles%\BGInfo\bginfo.bgi” /timer:0 /silent /nolicprompt

To accomplish this, create a shortcut in the ‘Start Menu – Startup’ folder to call BGinfo. This can be accomplished very simply with UEM. See picture 2 for an example configuration of this shortcut.

Step 3.

Undo the BGinfo at logoff to remove the BGinfo information from the wallpaper. This is to prevent ‘ghosting’ of old information.

To do this, we first have to create a ‘BGundo.bgi’ file that is empty, so that BGinfo replaces the text on the wallpaper with an empty configuration, effectively removing all text from the wallpaper.

To create this file, start BGinfo, remove all information and only type a space. You must type a space otherwise you cannot save the .bgi file. Safe this empty BGinfo configuration to a file called BGundo.bgi.

We want to call BGinfo with the following parameters to silently run BGinfo at logoff:

“C:\Program Files\BGInfo\Bginfo.exe” “%ProgramFiles%\BGInfo\bgundo.bgi” /timer:0 /silent /nolicprompt

This can be accomplished very simply by creating a Logoff task with UEM. Make sure to change the logoff task to run ‘Before profile archive export’.

See picture 3 for an example configuration of this logoff task.

Picture 3. UEM Logoff task

Picture 2: UEM Startup shortcut

VMware EUC Win10 Compatibility Components

Updated: 1/4/2019



Semi-Annual Channel


Supported Fresh Install Only


Broad Deployment


Supported, reference KB


Not Supported


Windows 10 OS Version: 1607
(Ent, Pro)
1703 CBB
Semi-Annual Channel
(broad deployment)
(Ent, Pro, Edu)
Semi-Annual Channel
(broad deployment)
(Ent, Pro, Edu)
Full support 
Horizon 7            
Horizon Agent 7 NS NS NS NS NS NS
Horizon Agent 7.0.1 NS NS NS NS NS NS
Horizon Agent 7.0.2 SF SF NS NS NS NS
Horizon Agent 7.0.3 S S NS NS NS NS
Horizon Agent 7.1 S S S NS NS NS
Horizon Agent 7.2 S S S S-KB NS NS
Horizon Agent 7.3.2 S S S S-KB S NS
Horizon Agent 7.4 S S S S-KB S NS
Horizon Agent 7.5 S NS S S S NS
Horizon Agent 7.5.1 S NS S S S NS
Horizon Agent 7.6 S NS S S S S
Horizon Agent 7.7 S NS S S S S
App Volumes            
App Volumes 2.12 S S NS NS NS NS
App Volumes 2.13 S S S NS NS NS
App Volumes 2.14 S S S S S NS
App Volumes 2.15 S S S S S S
User Environment Manager            
User Environment Manager 9.2 S S S NS NS NS
User Environment Manager 9.3 S S S S NS NS
User Environment Manager 9.4 S S S S S NS
User Environment Manager 9.5 S S S S S NS
User Environment Manager 9.6 S S S S S S

Download this chart in Excel format!


UEM Supported Version with Windows 10

 Horizon Supported Version with Windows 10

 App Volumes Release Notes generally has Windows 10 support information

Interop Matrix (VMware components)

Special thanks to Steven Hajny ( for gathering this information

Instant Clones and GPO Enforcement

One challenge a few of my customers have had lately is being able to leverage Instant Clones while keeping current GPOs enforced. The issue might happen when using Instant Clones. Horizon will create the final copy of the original VM, called a parent, which will be used to fork the running VMs. When a new Instant Clone is provisioned from a logoff operation, no reboot is done at the parent level; thus any new GPOs are not applied. To enforce new GPOs the following steps will resolve this problem:

1. Power-on the Gold Image
2. Create a DOS Batch file and place it in an accesable area, example C:\TEMP\enforce.bat

Example batch file:

echo N | gpupdate /force

3. After creating the batch file, shut-down the Gold Image
4. Create a new snapshot
5. In the Horizon View Administrator console, when creating a pool or modifying a pool, you will need to specify the batch file that is located in the Gold Image.


That’s it! From this point going forward when an Instant Clone is created in this pool the script is executed during the provisioning process and will enforce GPOs.



Design Posts

Hey everyone, going forward, I will be posting various tips and tricks on creating designs leveraging OmniGraffle and also Excel. I am the creator of the internal VMware Horizon Suite Sizing Estimator, and my nose is buried in excel sheets, daily. When it comes to the creation of designs, that is all I work in now is OmniGraffle. I figure it might help those who also do the same. 


Excel Tip:

To subtract 15%, add a negative sign in front of the percentage, and subtract the percentage from 1, using the formula =1-n%, in which n is the percentage. To subtract 15%, use =1-15% as the formula. Example:

Cell A1 Contains 100, Cell B1 Contains 15%

=A1-(A1*B1) = 85

Format your formula like this:

=A1-(1-B1) = 85



OmniGraffle Tip:

You might have multiple text boxes after a Visio Import, for example:






To merge these two text boxes into a single text box:

– Select all the text boxes you want to be grouped

– Two Options

    1) From the Menu select ‘Edit > Objects > Unite Shapes’

    2) Right-click on the selected group, select ‘Unite Shapes’

This will form a complete text box that you still can edit.





Note: After ‘Unite Shapes’ is selected the text will vanish and it will populate off the canvas. Just drag it back in-place. I have informed OmniGraffle of this odd behavior, and their feedback was “There could be a peculiarity in the object geometry of those text objects in the original Visio file, which made OmniGraffle think that the united object needed to be in an entirely different place on the canvas.”

vIDM and Horizon Blast/Client Oddity

Hey all, I thought I should share a recent fix one of my coworkers discovered. This oddity was discovered when attempting to launch a VDI desktop from the vIDM portal. When selecting your entitled desktop and attempting to connect via PCoIP or Blast this is when the error might happen if vIDM isn’t configured correctly. If your connecting via a PC and are able to launch your desktop but NOT able to connect via a Mac it could be an issue in your ‘ranges’ section on vIDM.

Specifically, in the vIDM Admin Console select the following:

Catalog > Virtual App > Virtual Apps Settings > Select a Network Range

Verify that you do not have HTTPS:// in front of your VIPs under all ranges.















This will cause Mac platforms to fail when attempting to connect to VDI through the vIDM portal. A symptom of this misconfiguration is seeing ‘https://https://’ in your browser after clicking on your VDI desktop from the vIDM portal. Make sure also that your Launch URL doesn’t begin with https://.

Catalog > Virtual Apps > Virtual App Configuration > (Custom App> Launch URL

Horizon Install Order and Silent Installs

This blog post is regarding the correct order of installing/Uninstalling Horizon Agents, Silent Installs/Uninstalls, and enabling FIPS.


VMware Horizon Install Sequence Order 



Installation of various user experience, environment and VDI agents can cause unexpected issues of fail completely if installed in the incorrect order.
If you need to upgrade the Horizon View Agent you will need to reverse this process from the bottom-up.


1.     Hypervisor Tools


2.     VDI Agent


3.     VMware vRealize Operations Manager Agent

  • If you have a View 5.0 or 5.1 environment, you must manually install the desktop agent on your desktops. The vROPs Agent is included with the Horizon View agent 5.2 or later.


4.     VMware vRealize Log Insight Agent

  • If Log Insight is not deployed in the environment, skip this step.


4.     VMware User Environment Manager (UEM) Agent (formerly Immidio Flex+)

  • If VMware UEM is not deployed in the environment, skip this step.


5.     VMware App Volumes Agent

  • If VMware App Volumes is not deployed in the environment, skip this step.


Horizon View, Silent Install Instructions:


Paul Grevink has a good blog that walks through the View Agent components:


1.     In the View desktop, go to Start > Run, type regedit, and click OK. The Registry Editor window opens.

2.     Navigate to:


3.     Find the value that corresponds to the version of View Agent software that is installed. For example:

View 4.5 – {6F862EF7-F25E-4B3B-8345-FA005F12F668}
View 4.6 – {EFF57BA4-5BF2-403E-84BC-3469F9DAAACD}
View 5.0 – {5DD04237-3DCD-4735-BF8F-3BEEC0F61A6E}
View 5.1 – {CDA7820C-4849-4E55-A7B1-38E175B5F61C}
View 5.2 – {58D47F5C-618E-11E2-8D25-74C36188709B}
View 5.3 – {E3AD16CE-E5D6-4844-98FF-75E96EF7377F}
View 6.0 – {1230DF2B-7BA0-4AAD-80EA-527A3C3614D4}
View 6.1 – {A2E9FEAC-6D18-4890-9428-A6F53D600E01}

4.     To silently uninstall the View Agent, go to Start > Run, type cmd, and click OK.

5.     The command prompt opens launch a command prompt and run this command:

MsiExec.exe /X {AGENT_VALUE} /forcerestart /qn


Where the AGENT_VALUE is the value noted in Step 3.


VMware Horizon View, Silent Uninstall Instructions:


VMware vRealize Log Insight Manager, Silent Install Instructions:

  1. Log in to the Windows machine on which to install or update the vRealize Log Insight Windows agent.
  2. Open a Command Prompt window.
  3. Change to the directory where you have the vRealize Log Insight Windows agent .msi file.
  4. Run the following command to install or update with default values. Replace Version-Build_Number with your version and build number.

The /quiet option runs the command silently, and the /lxv option creates a log file in the current directory.

Drive:\path-to-msi_file>VMware-Log-Insight-Agent-Version-Build_Number.msi /quiet /lxv* li_install.log


(Optional) : Specify a user service account for the vRealize Log Insight Windows agent service to run under.

Drive:\path-to-msi_file>VMware-Log-Insight-Agent-*.msi SERVICEACCOUNT=domain\user SERVICEPASSWORD=user_password


VMware User Environment Manager, Silent Install Instructions:



msiexec.exe /i “VMware User Environment Manager 9.2 x64.msi” /qn INSTALLDIR=”C:\Program Files\Immidio” ADDLOCAL=”FlexProfilesSelfSupport” LICENSEFILE=”\\filesrv1\share\VMware UEM.lic” /l* InstallUEM.log



msiexec.exe /i “VMware User Environment Manager 9.2 x64.msi” /qn INSTALLDIR=”D:\Apps\VMware UEM” ADDLOCAL=”FlexProfilesSelfSupport” LICENSEFILE=”\\filesrv1\share\VMware UEM.lic” /l* InstallUEM.log

msiexec.exe /i “VMware User Environment Manager 9.2 x64.msi” /qn INSTALLDIR=”D:\Apps\VMware UEM” ADDLOCAL=”FlexProfilesSelfSupport” LICENSEFILE=”\\filesrv1\share\VMware UEM.lic” /l* InstallUEM.log\Flex Profiles\FlexEngine.exe


VMware App Volumes, Silent Install Instructions:



msiexec.exe /i “App Volumes Agent.msi” /qn MANAGER_ADDR=<Manager_FQDN/IP> MANAGER_PORT=<port>



msiexec.exe /i “App Volumes Agent.msi” /qn MANAGER_PORT=443


VMware App Volumes, Silent Upgrade Instructions:

  1. Open a Windows command prompt on your machine.
  2. Type the following command to upgrade the agent:

msiexec.exe /i “App Volumes Agent.msi” /qn REINSTALLMODE=vomus REINSTALL=ALL


Disabling EnforceSSLCertificateValidation with REGKEY

















You can disable SSL certificate validation after you have installed the App Volumes agent. To do this manually make the modification to registry to create your own .reg file to import. You will need to disable EnforceSSLCertificateValidation if you have FIPS enabled in your environment.

Registry location, set value to ‘00000000’ to disable:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\svservice\Parameters] “EnforceSSLCertificateValidation”=dword:00000000


Registry file import command: regedit.exe /s path of .reg file


Example of importing a registry file:


reg import c:\location\regfile.reg



Rarely needed, unless your organization has a hard security requirement, you may need to enable FIPS mode. Please keep in mind, enabling FIPS mode, can break a lot of things if not properly setup. You can Enable or disable the FIPS setting via a registry setting, GPO, or Local Policy. To check whether FIPS is enabled or disabled in the registry, follow the following steps:

  1. Press Windows Key+R to open the Run dialog.
  2. Type “regedit” into the Run dialog box (without the quotes) and press Enter.
  3. Navigate to “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\”.
  4. Look at the “Enabled” value in the right pane.
  5. If it’s set to “0”, FIPS mode is disabled. If it’s set to “1”, FIPS mode is enabled.
  6. To change the setting, double-click the “Enabled” value and set it to either “0” or “1”.
  7. Restart the computer.

FIPS mode needs to be enable on the Windows servers and on the golden image. 

For more information on FIPS mode, visit

vRealize Operation Troubleshooting

I decided to share some common troubleshooting steps I’ve had to do with vRealize Operations at customers.

Troubleshooting steps Enabling SSH on the appliance:

  1. Log in to the vRealize Operations Manager (formerly known as VMware vCenter Operations Manager (vApp)) virtual machine console as root using ALT-F1.Note: By default there is no root password configured.
  2. Start the SSH service by running the command:service sshd start
  3. To configure SSH to start automatically run this command:chkconfig sshd on

Troubleshooting tip #1: Pairing the vRealize Operations Management for Horizon Agent fails.

  1. Uninstall V4H agent on connection broker
  2. Delete/Rename ‘C:\Programdata\vmware\vRealize Operations for Horizon’
  3. Delete registry key:

Follow the following KB and install the hotfix on the broker. Horizon 6.4 Hot Fix Download: Additionally, check the following KB 2140844 ‘VMware vRealize Operations Manager for Horizon 6.2 Broker Agent fails to pair with the Horizon adapter’ link: Troubleshooting tip #2:

  • On the Connection Server on which the V4H Agent is installed, move this file to another directory:install_directory\VMware\VMware View\Server\sslgateway\conf\   
  • Restart the View Connection Server service or security server service for the changes to take effect.
  • Restart the V4H Broker Agent service.

Troubleshooting tip #3: There is a rare chance the appliance log partition filled up. To see if the log partition is filled execute ‘df -h’ at the command-line Before executing this next step, verify no historical data needs to be saved because this will wipe it. On the appliances in question execute: find /storage/log/ -mount -type f -iname “*log*” -exec truncate -cs 0 {} \; This will empty the log partition.