Horizon Applications and strange icon – Horizon client

I have encountered an anomaly from a customer regarding the icons displayed for applications published by an RDS farm via Horizon. Specifically SAP LOGON.

The situation was as follows:

A screenshot of a computer

AI-generated content may be incorrect.

Where the SAP LOGON icon was grayed out and not well defined, the same situation was present with access via WEB.

After various analyses and attempts to solve it, I identified in the Horizon ADAM LDAP DB the presence of a mapping between the published application and the icons used

To access the ADAM LDAP DB, follow the instructions in this KB

Connecting to the Horizon Connection Server Local ADAM Database (2012377)

Once connected to the DB, we will be able to find our published application under Applications and check the associated icon or icons in the properties.

A screenshot of a computer

AI-generated content may be incorrect.

In my case, the pae-IconDN field was populated by 10 entries. In the image below, I show the status of the field

A screenshot of a computer

AI-generated content may be incorrect.

By removing the first 8 Entries (by trial and error), I was able to restore the correct situation

A screenshot of a computer

AI-generated content may be incorrect.

Some points of attention:

  • The icons in question (for example, the 10 of SAP LOGON) are all downloaded to the Horizon client cache located in C:\Users\%USERNAME%\AppData\Local\Omnissa\Omnissa Horizon Client\Icon Cache, but there is no link between the file name with the icon image and the ADAM LDAP DB (at least, I didn’t find it)
  • If we publish another SAP GUI or remove and republish the current one, the problem may recur, and it is necessary to intervene in the same way

Horizon Applications and strange icon – Horizon client

vCenter Server Preupgrade check result error: “VMDir Replication between partners is not working”

vCenter upgrade Pre-Check fail with “VMDir replication is not working correctly”

When I tried to upgrade my vCenter to the last version of 8u3 on the pre-check command, I found this error

A screenshot of a computer error message

AI-generated content may be incorrect.

Because I attached another vCenter at the same PSC, it is now broken.

For deleting the missed vCenter:

Take a vCenter snapshot

Check the vCenter name:

The name is vcenter02.pollaio.lan

Remove the old vCenter:

A computer screen with white text

AI-generated content may be incorrect.

After automatic service restart

Now the upgrade pre-check does not have an alert message

A screenshot of a computer

AI-generated content may be incorrect.

Reference

vCenter Server Preupgrade check result error: “VMDir Replication between partners is not working”

vCenter Server Preupgrade check result error: “VMDir Replication between partners is not working”

Horizon Published Applications and Office 365 – Error TAG [4ruy5]

After public Office 365 App with Horizon 8 (the backend is a RDS FARM and we used this indication for the installation Deploy Microsoft 365 Apps by using Remote Desktop Services – Microsoft 365 Apps | Microsoft Learn) we have this issue when the users start the Office 365 remote apps

I found this info:

O365 via Horizon : r/sysadmin

To resolve this problem, we started an additional program (shellapptunime.exe added a Scripts logon) when the user’s access to the RDS infrastructure.

A screenshot of a computer

AI-generated content may be incorrect.

Horizon Published Applications and Office 365 – Error TAG [4ruy5]

Horizon – Publish Apps and IDLE sessions

Following a migration of published applications from the Citrix platform to the Omnissa environment, the customer realized that the sessions to the unused applications (IDLE) were never closed. The application is still open (but the application is not used) and the session on the RDSHost server remained active.

In order to meet the customer’s needs, it is necessary to operate on Active Directory GPOs and on RDS Farm configurations created on Horizon.

GPO Active Directory

There is a setting to configure to enable the Session Time Limits.

Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits

A screenshot of a computer

AI-generated content may be incorrect.

Setting up on the FARM

There is a special parameter to set form disconnect RDS Empty Session on the RDS Farm Configuration

A screenshot of a computer

AI-generated content may be incorrect.

The user experience is as follows:

  • The user starts an application published by horizon (e.g. the SAP GUI) and works on it.

A screenshot of a computer screen

AI-generated content may be incorrect.

  • The session is left in IDLE (because the user went to home after work, and locked the PC) and from RDSHost side I can see that the session goes into IDLE:

A screen shot of a black background

AI-generated content may be incorrect.

  • When the time set in the GPO expires, the user will receive the following message

A screenshot of a computer screen

AI-generated content may be incorrect.

If the user does not do anything within 2 minutes, the session is marked as disconnected and the application (user side) is closed. RDSHost session state change from Active to Disconnect.

The Disconnected state is what allows Horizon to trigger.

Once the time set on the Horizon side FARM has expired, in the Empty Session timeout parameter, the session is removed.

A screenshot of a computer

AI-generated content may be incorrect.

As you can see, it is no longer present.

Horizon – Publish Apps and IDLE sessions

Where are FSMO roles on my Horizon Connection Servers?

When we upgrade the Horizon Connection Servers or install Windows Patches on Guest OS where we have the Connection Server role, there is information that we can “save live”

This information is about the location of FSMO roles.

Normally the FSMO roles are located in the last installed Connection Server with a replica function.

We can check this location with some simple steps, I can try to explain:

  • Create an RDP session with a Connection Server Guest OS
  • Start a Command Prompt
  • Run the LDP command

A screen shot of a computer

Description automatically generated

  • We connect to LDAP

A screenshot of a computer

Description automatically generated

  • We Bind as a currently logged user

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

  • Insert the BASE DN to show the tree(CN=Schema,CN=Configuration,CN{ID})

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

  • Now on the right form of LDP we can see the connection server hostname owner FSMO role.

A screenshot of a computer

Description automatically generated

In this case, the FSMO is located on the CS2209B connection server.

The FSMO role is possible to move to another Connection Server with this simple command:

vdmadmin -X -seizeSchemaMaster

To launch the previous command from the Connection Server we want to take the FSMO role

Where are FSMO roles on my Horizon Connection Servers?

EUC Omnissa components are changing look and design…

Omnissa engineers worked very hard at last end of 2024 year-end in 2025 start year to rebrand the application (Connection Server, Dynamic Environment Manager, App Volumes … ) to remove all VMware logo and info (It is necessary to Broadcom request for Copyright. .)

Now we have the first effect with the new look and design for App Volumes Manager (Version 2412) and

Dynamic Environment  Manager (2412)

Immagine che contiene testo, schermata, Sistema operativo, software

Descrizione generata automaticamente

Immagine che contiene testo, numero, Carattere, software

Descrizione generata automaticamente

Immagine che contiene testo, schermata, Blu elettrico, Carattere

Descrizione generata automaticamente

Immagine che contiene testo, software, Icona del computer, Pagina Web

Descrizione generata automaticamente

EUC Omnissa components are changing look and design…

Horizon Edge Gateway Appliance – URL Checker

Horizon Edge Gateway Appliance is required to entitle your environment to Horizon subscription licenses, services and management features hosted in the Horizon Control Plane Services. To enable subscription license entitlement, Horizon Edge Gateway Appliance must be deployed in each Horizon Pod.

The Horizon Edge Gateway Appliance is deployed as a virtual appliance from vSphere® Web Client and paired to one of the Connection Servers in the pod. As part of the pairing process, the Horizon Edge Gateway Appliance virtual appliance connects the Connection Server to the Horizon Cloud Service to manage the subscription license. With a subscription license for Horizon, you do not need to retrieve or manually enter a license key for Horizon product activation.

One of the first checks to do before deploying the Horizon Edge Gateway Appliance is to verify the correct communication with the Omnissa cloud services to which it must connect.

To perform this operation there is a specific tool that “Horizon Cloud Service – next-gen Edge Subnet URL Checker tool”, it can also be used to perform post-installation checks when there are communication problems like this:

A screenshot of a computer error

Description automatically generated

We can download the tool from this link:

Utilities | Omnissa

Select the correct tool and download the file zip:

We will copy the file on windows os locate it on the same network subnet where we will locate the Horizon Edge Gateway Appliance

We will extract the compressed file:

A screenshot of a computer

Description automatically generated

We will need lunch the file EXE to start the test

A screenshot of a computer error

Description automatically generated

At the end of the execution of the test, the tool will create a folder (c:\WMwareUrlChekerOutput)

A screenshot of a computer

Description automatically generated

Where we will find the tool output, a file for a region

A screenshot of a computer

Description automatically generated

In my case, I checked the EMEA file (EU) and I saw that it is all OK (all URLs are Reachable).

A screen shot of a computer

Description automatically generated

Horizon Edge Gateway Appliance – URL Checker

Upgrade/Install Horizon Edge Gateway

 

The Horizon Edge Gateway allows Omnissa Horizon 8 environments to connect to the Omnissa Horizon® Cloud Service™. Deploying a Horizon Edge Gateway Appliance for Horizon 8 deployments on vSphere is accomplished by accessing the Horizon Universal Console, which is the administrative interface for the Horizon Cloud Service.

Horizon Edge Gateway Appliance is required to entitle your environment to Horizon subscription licenses, services, and management features hosted in the Horizon Control Plane Services. To enable subscription license entitlement, Horizon Edge Gateway Appliance must be deployed in each Horizon Pod.

(https://techzone.omnissa.com/resource/deploying-horizon-edge-gateway)

How any virtual appliance it is necessary to upgrade to a new version.

In my situation, I had a customer with an old version of Horizon Edge Gateway (2.3.4.1) and on the Horizon Cloud portal we saw info that said a new version of Edge

The procedure to upgrade is very simple and is like to the procedure for the first install

After click to view

A screenshot of a computer

Description automatically generated

We are redirected to the maintenance tab where it is displayed some information.

After selecting “Upgrade” we can start with the activity.

First, we need to download the last Horizon Edge Gateway Appliance.

A screen shot of a computer

Description automatically generated

We had collected the information of actual Edge deploy like

Network Configuration (such as IP Address, Gateway, NetMask and PortGroup)

Now we are ready to log in to Virtual Center where we want to deploy the Appliance with insert some information, including the fundamental paring code that we can find on this screen:

A screenshot of a computer

Description automatically generated

Shut down the old Edge Gateway.

Deploy the OVA appliance:

A screenshot of a computer

Description automatically generated

We need to insert the standard information for ova deploy and insert the paring code and the network information

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

After deploying, on the Horizon Cloud portal under Resources and Capacity, we found that the Horizon Edge is Disconnected.

A screenshot of a computer

Description automatically generated

Now it is only a question of time…. or we can force with re-validate the info by clicking on edit configuration.

The last step is to insert the information to connect the Horizon Edge to the Connection Server (on-prem deployment)

Enter on the actual Horizon Edge

A screenshot of a computer error

Description automatically generated

We need to edit the Horizon Connection Server information because it is necessary to validate the trust with the Connection Server SSL certificate and insert the password for the service User.

A screenshot of a computer

Description automatically generated

Confirm the certificate trust

A screenshot of a computer

Description automatically generated

We are waiting or forcing a refresh.

A screenshot of a computer

Description automatically generated

Upgrade/Install Horizon Edge Gateway

Using the Omnissa Horizon Agent Upgrade Feature from the Omnissa Connection Server Console

Horizon Agent Upgrade

If you have a Horizon Enterprise Plus or Horizon Universal subscription license, the last Horizon versions have a function to manage the Horizon Agent Update.

You have two scenarios:

  • Automatic map the upgrade to your Connection server infrastructure
  • Manually add the Agent upgrade package

I tested this feature in my Home Lab

Enable Automatic upgrade to your Connection server infrastructure

Enable Omnissa Horizon Cloud Portal form of Horizon Agent Auto Upgrade feature

https://cloud.horizon.omnissa.com/

With enabling the Agent Auto Upgrade you can see, without any action, the Horizon package to use for upgrade (this new package is directly downloaded from the Omnissa Site)

A screenshot of a computer

Description automatically generated

If you use this method you can skip the next paragraph and go to Schedule Agent upgrade

Manually loaded the JSON and agent file

Otherwise, you can manually download the JSON file from the customer portal by Omnissa

Omnissa Horizon Standard and Enterprise Plus Subscriptions

A screenshot of a computer

Description automatically generated

Download the files you need

A white background with a black and white object

Description automatically generated

Upload them to a WEB site (Local/Internal or Public), in my case I use an Azure storage account

A screenshot of a computer

Description automatically generated

As blob containers

A screenshot of a computer

Description automatically generated

Which are accessible via WEB (obviously I recommend putting special restrictions)

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

Let’s configure our POD by entering the appropriate section of the interface via WEB of the connection servers

A screenshot of a computer

Description automatically generated

Enter the URL of our storage account with the name of the JSON file indicated

https://agenthorizon.blob.core.windows.net/agent2312/VMware-Horizon-Agent-x86_64-2312.1-8.12.1-23507832.exe-metadata.json

A screenshot of a computer

Description automatically generated

Schedule Agent upgrade

Let’s proceed with updating the Agent of a VDI by going to the list of our VDI.

We select the VDI or VDI on which we want to update the agent

A screenshot of a computer

Description automatically generated

Then select Update Agent

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

We select the update package (we can also have multiple versions of agents) and proceed with the planning

There are some safety rules if you do massive updates

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

Now schedule when will start the upgrade

A screenshot of a computer

Description automatically generated

From the Horizon agent update section, we see the Scheduled task

A screenshot of a computer

Description automatically generated

When the time is coming the job will start and the task state is “in Progress”

A screenshot of a computer

Description automatically generated

Now from the list of VDI machines, we can check the upgrade process.

The user is currently logged in to the machine and waiting for the user logoff or reboot

A screenshot of a phone

Description automatically generated

Now the VDI machine is ready for the upgrade

A screenshot of a computer

Description automatically generated

A white rectangular object with black text

Description automatically generated

Agent unknown…. Removed and installed the new one

A white rectangular object with a white background

Description automatically generated

Installed the new

The VDI is restarted the process is completed and we have the VDI with the updated agent

A screenshot of a computer

Description automatically generated

And the scheduled update task is completed

Using the Omnissa Horizon Agent Upgrade Feature from the Omnissa Connection Server Console

Use NSX Advanced Load Balancer for Omnissa Unified Access Gateway (Omnissa Horizon VDI)

In the various activities carried out in the year that is ending, load balancing and the other availability of Horizon solutions for both access from the Internet and from the company LAN were among the activities that required multi-handed work between the teams that deal with IT technologies within the company (Security, Network, EUC, Servers …).

While these synergies are easy to manage in the context of small companies, when working with large companies, timely planning and design become very important to avoid infrastructural changes (even minimal) that can convert into delays in the delivery of the infrastructure due to the need to re-engage a different team.

One of solutions used to balance access to Omnissa Horizon services is NSX Advanced Load Balancer.

Normally, the publication of Omnissa VDI solutions is carried out using the virtual appliances Unified Access Gateway (UAG) where “Omnissa Unified Access Gateway enables secure remote access from an external network to a variety of internal resources provided by Omnissa Workspace ONE and Horizon deployments.”

Natively UAGs have their own HA solution, but it has the requirement of having 3 Public IP Addresses and creating three public FQDNs.

The use of NSX Advanced Load balancer allows various UAG balancing solutions:

Single VIP with Two Virtual Services

Single L4 Virtual Service

(n+1) VIP

In my HomeLab I have tested the various solutions indicated above,

the most interesting is the one that I propose you try for the following reasons:

• Robust enough to handle the persistence issues

• Works well in environments where users come behind the NAT

• Ease of configuration

• Better visibility and logs

Additionally, the standard ports of the Blast and PCo protocols will not be used, as this can easily expose the solutions to potentially malicious individuals.

The infrastructure that I will propose also requires a change to the “classic” UAG configurations on the URLs used for the Blast and PCOIP protocols.

In the implementation that we will do, we will take as an example only the part of the Blast protocol

The following flow explains the step when a user tries to access Omnissa VDI, the flow has two ports opened for primary and secondary traffic:

    • Port 443 – This is for XML API traffic
    • Ports 5001 to 5002 – Horizon internal ports opened for L7 primary XML traffic to handle redirected traffic
    • Ports 30001 to 30002 – Blast

Where:

  1. Client L7 request comes to AVI LB
    https://horizon.pollaio.site/ 
  2. AVI LB chooses 1 pool member (say UAG1) and send back to client a 307 redirect Location
    https://horizon.pollaio.site:5001 
  3. Client sends request on redirected port
    https:// horizon.pollaio.site:5001 
  4. AVI LB (L7) sends requests to UAG1
    https:// horizon.pollaio.site:5001
    (Port Traslation)*
  5. UAG1 responds back with XML payload
  6. AVI LB parses the XML response and replace the L4 ports (to client)
    https:// horizon.pollaio.site:30001 (blast) 
  7. Client sends L4 request for Blast to AVI LB
  8. AVI LB sends request to UAG
    https:// horizon.pollaio.site:30001*
  9. UAG1 responds back to AVI LB
  10. AVI LB responds back to client

The main aspect is the correct configuration of TCP and UDP ports between the various corporate network segments:

Source

Destination

Protocol

Port

Unified Access Gateway

Horizon Agent

UDP

22443

Unified Access Gateway

Horizon Agent

TCP

22443

Unified Access Gateway

Horizon Connection Server

TCP

443

Horizon Client

Virtual Service AVI

TCP

443

Horizon Client

Virtual Service AVI

UDP

443

Horizon Client

Virtual Service AVI

TCP

5001

Horizon Client

Virtual Service AVI

UDP

5001

Horizon Client

Virtual Service AVI

TCP

5002

Horizon Client

Virtual Service AVI

UDP

5002

Horizon Client

Virtual Service AVI

TCP

30001

Horizon Client

Virtual Service AVI

UDP

30001

Horizon Client

Virtual Service AVI

TCP

30002

Horizon Client

Virtual Service AVI

UDP

30002

Configurazione NSX ALB

  1. Create a Virtual IP
  2. Create a Custom Health Monitor for UAG
  3. Create a UAG Pool
  4. Install the SSL certificate Required for L7 VIP
  5. Create a Virtual Service for UAG
  6. Binding DataScripts to the Virtual Service

Create a Virtual IP

  1. To create a custom health monitor, navigate to Applications > VS VIPs.
  2. Click Create.

Create a Custome Health Monitor

  1. To create a custom health monitor, navigate to Templates > Profiles > Health Monitors.
  2. Click Create.
  3. Select the VMware Cloud that was created for Horizon.

Enter the following details in the New Health Monitor screen

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

Create UAG Pool

  1. Navigate to Applications > Pools.
  2. Select the cloud from the Select Cloud window.
  3. Click Next.
  4. Click Create Pool.
  5. In the CREATE POOL screen, update the details as shown below:
A screenshot of a computer

Description automatically generated

  1. In the Servers tab, add the Server IP Address of the UAG servers.
A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

  1. In Health Monitor tab, select the appropriate Health profile as shown below:
A screenshot of a computer

Description automatically generated

Installing the SSL certificate Required for L7 VIP

The public certificate must be imported into AVI LB it need the same imported in to UAG.

The certificate to be imported must be in PEM format.

Once imported, ensure that the CA certificate is properly linked.

Here are the steps to import the certificate

  1. To import a CA Certificate, navigate to Templates > Security > SSL/TLS Certificates.
  2. Click Create.
  3. Select Root/Intermediate CA Certificate.
  4. Provide a name to identify the certificate later
  5. Upload or Paste Certificate File

VALIDATE and SAVE

A screenshot of a certificate

Description automatically generated

A screenshot of a computer

Description automatically generated

A screenshot of a computer screen

Description automatically generated

Creating Virtual Service for UAG

To create the new virtual service,

  1. Navigate to Applications > Virtual Services.
  2. Click CREATE VIRTUAL SERVICE > Advanced Setup.
  3. Bind the virtual service VIP.
  4. Use the System-HTTP-Horizon-UAG as the Application Profile.
  5. Configure the virtual service as shown below:
A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

  1. In the Service Port section, click Switch to Advanced and configure the service ports.
A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

  1. Bind the pool and the SSL certificate added,
  2. Click Next.

Click Next and Save the configuration.

NOTE:

Two ports are opened for primary and secondary traffic:

    • Port 443 – This is for XML API traffic
    • Ports 5001 to 5002 – Horizon internal ports opened for L7 primary XML traffic to handle redirected traffic
    • Ports 30001 to 30002 – Blast

Configure DataScript

  • Binding the Horizon DataScript on the Virtual Service
  • From the UI, navigate to Applications > Virtual Services.
  • Edit the virtual service that was created.
  • Go to Policies > DataScripts.
  • Click Add DataScripts.
  • Under Script To Execute, select System-Standard-Horizon-UAG.
  • Click Save DataScript and click Save.

System-Standard-Horizon-UAG is embedded AVI Load Balancer Datascript

A screenshot of a computer

Description automatically generated

UAG Configuration

Modify each UAG’s Blast and PCoIP external URL fields to use the custom ports added in the NSX Advanced Load Balancer port map (From the UI, Edit Pool > Servers tab under New Pool or Edit Pool page).

A screenshot of a computer

Description automatically generated

Modify the Blast external URL to include the custom port for UDP.

For example, https://<ENAV_PUBLIC_FQDN>.com:<BLAST-CUSTOM-PORT>/?UDPPort=<BLAST-CUSTOM-PORT>.

https://horizon.pollaio.site/:30001?udpport=30001

https://horizon.pollaio.site/:30002?udpport=30002

A green check mark and a green box

Description automatically generated

Verify the Tunnel External URL

A green check mark and a green box

Description automatically generated

Now we are ready to test and verify the access flow to my VDI.

    • Port 443 – This is for XML API traffic
    • Ports 5001 to 5002 – Horizon internal ports opened for L7 primary XML traffic to handle redirected traffic
    • Ports 30001 to 30002 – Blast

Where:

    • Port 443 – This is for XML API traffic
    • Ports 5001 to 5002 – Horizon internal ports opened for L7 primary XML traffic to handle redirected traffic
    • Ports 30001 to 30002 – Blast
A screenshot of a login screen

Description automatically generated

A screenshot of a computer

Description automatically generated

A screenshot of a computer

Description automatically generated

A computer screen shot of a black screen

Description automatically generated

A screenshot of a computer

Description automatically generated

Refer:

NSX Advanced Load Balancer for Load Balancing UAG Servers

Use NSX Advanced Load Balancer for Omnissa Unified Access Gateway (Omnissa Horizon VDI)