<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>SteveWH Tracker</title>
    <link>https://communities.vmware.com/wbsdv95928/tracker</link>
    <description>SteveWH Tracker</description>
    <pubDate>Sat, 11 Nov 2023 00:39:18 GMT</pubDate>
    <dc:date>2023-11-11T00:39:18Z</dc:date>
    <item>
      <title>Re: Is there a log file on the Connection Broker showing who's logged onto the VDI's system externaly?</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Is-there-a-log-file-on-the-Connection-Broker-showing-who-s/m-p/2259912#M88452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are files on the servers you can review however they are meant for diagnostic purposes and not reporting. The verbosity is also configurable to log greater detail but will have a performance/storage impact if adjusted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Security servers: If you are on Server 2008+ the location is DriveLetter:ProgramData\VMware\VDM\logs . (&lt;A href="https://kb.vmware.com/s/article/1027744" title="https://kb.vmware.com/s/article/1027744"&gt;&lt;/A&gt;&lt;A href="https://kb.vmware.com/s/article/1027744)" target="test_blank"&gt;https://kb.vmware.com/s/article/1027744)&lt;/A&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;For UAG: &lt;A href="https://docs.vmware.com/en/Unified-Access-Gateway/3.3.1/com.vmware.uag-331-deploy-config.doc/GUID-C16913E1-7984-4072-B1E8-7EBAE385A831.html" title="https://docs.vmware.com/en/Unified-Access-Gateway/3.3.1/com.vmware.uag-331-deploy-config.doc/GUID-C16913E1-7984-4072-B1E8-7EBAE385A831.html"&gt;Collecting Logs from the Unified Access Gateway Appliance&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As techguy129 pointed out this data is also recorded in the Events Database if you have it configured under Horizon Admin Event Configuration. (&lt;A href="https://docs.vmware.com/en/VMware-Horizon-7/7.8/horizon-installation/GUID-1E63A836-7B3D-4876-AD9A-4553955E3834.html" title="https://docs.vmware.com/en/VMware-Horizon-7/7.8/horizon-installation/GUID-1E63A836-7B3D-4876-AD9A-4553955E3834.html"&gt;Configuring Event Reporting&lt;/A&gt; ). Additional information on connection related events that are logged: (&lt;A href="https://docs.vmware.com/en/VMware-Horizon-7/7.8/horizon-integration/GUID-2E8E6344-7EB8-44D2-B58A-4B7545000716.html" title="https://docs.vmware.com/en/VMware-Horizon-7/7.8/horizon-integration/GUID-2E8E6344-7EB8-44D2-B58A-4B7545000716.html"&gt;Horizon Connection Server Events&lt;/A&gt; )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If it's an active session you will see them under Horizon Admin 'Monitoring -&amp;gt; Sessions' and there is a column for 'security gateway' that shows which broker they connected through.&lt;/P&gt;&lt;P&gt;If it's a historical session you can go to Horizon Admin 'Monitoring -&amp;gt; Events' (if configured) and search the most recent 2000 events. Anything beyond 2000 events you will need to query the database directly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can reference these community threads regarding querying the database directly:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://communities.vmware.com/thread/595631"&gt;VMWare Horizon View Events (User Login History) how to source from (sql) database&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://communities.vmware.com/thread/572038"&gt;View DB SQL how to extract Client's IP address&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BenFB also pointed out the ability to send events to a syslog server as well which may be easier if you have an existing solution that parses out the data instead of querying SQL directly.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Apr 2019 16:32:46 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Is-there-a-log-file-on-the-Connection-Broker-showing-who-s/m-p/2259912#M88452</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2019-04-02T16:32:46Z</dc:date>
    </item>
    <item>
      <title>Re: Issue authenticating users via Identity Manager when a DC in domain is unreachable</title>
      <link>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489594#M582</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Appears vIDM does authentication based on DNS SRV entries for the domain. In order to set which DC is used for authentication we needed to update the krb5.conf file in-line with this KB article: &lt;A href="https://kb.vmware.com/s/article/2144953" title="https://kb.vmware.com/s/article/2144953"&gt;VMware Knowledge Base&lt;/A&gt; . We have adjusted as described and will be taking a DC offline tomorrow to see if we are able to reproduce the issue after these changes were made. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 Jan 2019 22:12:15 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489594#M582</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2019-01-30T22:12:15Z</dc:date>
    </item>
    <item>
      <title>Re: Issue authenticating users via Identity Manager when a DC in domain is unreachable</title>
      <link>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489593#M581</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;While I'm glad I'm not the only one experiencing the issue I'm sorry you are too. I parsed out every file in the support bundle and no files reference the hostname or IP of the DC that was offline. The connector logs do reference the DCs that are in the domain file under 'java.naming.provider.url' and those are the correct two based on AD Sites + Services. Not sure if I need to enable more verbosity somehow or if the logs fail to show which DC is really being contacted. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 Jan 2019 14:27:24 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489593#M581</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2019-01-29T14:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Issue authenticating users via Identity Manager when a DC in domain is unreachable</title>
      <link>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489591#M579</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for the suggestion! Unfortunately I'm not sure it will help - we don't have the vIDM appliance configured to use the DC that went down. Based on what I can tell in the configuration and debug logs it's using a DC that is online and reachable in a site unrelated to the DC that was offline. Not sure a load balancer would help this situation since it would still be sending traffic to these DCs that are online and capable of authenticating.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 Jan 2019 14:03:43 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489591#M579</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2019-01-29T14:03:43Z</dc:date>
    </item>
    <item>
      <title>Issue authenticating users via Identity Manager when a DC in domain is unreachable</title>
      <link>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489589#M577</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We are experiencing an issue where logon times take 10+ minutes (or possibly fail to authenticate) when a DC on the domain is offline. It's important to note the DC doesn't belong to the AD Site that the Identity Manager appliance is serviced by based on subnet mapping so we are unsure why having the DC go down is impacting authentication via the Identity Manager portal. We have two DCs that service the site and both are online and able to authenticate clients (all other domain workstations in the site are able to authenticate successfully and I can authenticate directly to each of the DCs manually using LDP.exe as a test). When I check 'domain_krb.properties' I see the two correct DCs for the site the appliance is serviced by and neither of these DCs are the ones that are offline. Even if one were offline it is my understanding the solution would simply use the other, the whole point of having multiple - for redundancy. I enabled debug logging, gathered a log bundle from when the issue occured, and uploaded to case 19057761301. Not sure if anyone else has experienced this issue before so reaching out to the community for suggestions. It's been a week since the case was opened and I still don't even have an initial log analysis so trying to find the answer elsewhere. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 Jan 2019 13:40:06 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Workspace-ONE-Discussions/Issue-authenticating-users-via-Identity-Manager-when-a-DC-in/m-p/489589#M577</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2019-01-29T13:40:06Z</dc:date>
    </item>
    <item>
      <title>Re: VDI user is assigned a desktop logged in by another user</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/VDI-user-is-assigned-a-desktop-logged-in-by-another-user/m-p/1385915#M37381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Everything everyone has stated should be investigated as they could be the root cause. Out of curiosity what does your environment look like? Are you using zero clients or are these windows clients made into kiosks with the Horizon Client auto connecting at boot? There is a bug with the Horizon client that causes the behavior you are experiencing but not sure if applicable here without knowing more information. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Nov 2018 19:39:49 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/VDI-user-is-assigned-a-desktop-logged-in-by-another-user/m-p/1385915#M37381</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-11-27T19:39:49Z</dc:date>
    </item>
    <item>
      <title>Re: Horizon F5 tcp Reset using UAG</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-F5-tcp-Reset-using-UAG/m-p/464121#M77244</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To know for sure you would need to setup packet captures to see what is happening on the wire. If you can recreate the issue with a client you would ideally want to run a capture on the client, the F5, and the server but most likely just the F5 and remote server is needed. This will give you insight into why the RST packets are being sent from the F5 to the client causing the disconnection. If you can't reproduce the issue on-demand you would need to connect and run a rotating tcpdump on the F5 until the issue occurs. In the log excerpt you provided it shows the RST reason as '&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"&gt;Flow expired (sweeper)' &lt;/SPAN&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"&gt;The BIG-IP system will reap a connection from the connection table and send a TCP RST packet to the client when one of the following two conditions is met: 1) a&lt;/SPAN&gt;n idle timeout for the connection expired. This may be impacted by the &lt;SPAN style="font-weight: bold;"&gt;Idle Timeout&lt;/SPAN&gt; setting in the assigned TCP profile of the affected virtual server. 2) Memory usage on the BIG-IP system increased beyond the reaper high-water mark and triggered adaptive reaping.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;K13223: Configuring the BIG-IP system to log TCP RST packets&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://support.f5.com/csp/article/K13223" rel="nofollow"&gt;https://support.f5.com/csp/article/K13223&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;K411: Overview of packet tracing with the tcpdump utility&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://support.f5.com/csp/article/K411" rel="nofollow"&gt;https://support.f5.com/csp/article/K411&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;K13637: Capturing internal TMM information with tcpdump&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://support.f5.com/csp/article/K13637" rel="nofollow"&gt;https://support.f5.com/csp/article/K13637&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The vendor you are working with can then analyze the capture files to see the communications leading up to the RST packet being sent. For example we had an issue where connections were intermittently being reset resulting in clients displaying a generic 'network error'. The client logs and server logs didn't show anything meaningful beyond the client being disconnected with a generic error. The F5 qkview's were clean and we were on latest versions and iRules in-line with the version of Horizon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We connected to the F5 and checked the connections in real-time to monitor idle timers and session information (tmsh show sys connection) (tmsh show sys connection cs-client-addr x.x.x.x all-properties) but the timers weren't being reached and the system resources were in the green. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The traces ended up showing us TCP SYNS being sent but the server wasn't sending corresponding ACKs. Ultimately the F5 gave up and sent the RST to the client since the server wasn't responding. Not sure what you will see on your trace but you can feel free to post the results. For us the problem ended up being a mismatch between the default TIME_WAIT timer created in the TCP profile created in the Horizon iAPP vs. the default Windows Server TIME_WAIT timer. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your issue sounds like it has a different root cause than us but I'll share the details of ours to show how the logs aren't always clear and the packet capture is needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default the iAPP creates virtual server profiles that use SNAT automap with preserve source port. What this means is that the horizon client’s src port used to make the initial connection to the F5 is then used to make the second connection from the F5 to the connection server. For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;CLIENT:50493 – F5:443 – F5:50493 – CONNECTIONSERVER1:443&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The client uses a temporary ephemeral port to make the 443 connection to the F5. The F5 then uses that same ephemeral port to make the server side connection. This usually isn’t a problem but it could become a problem if you have many connections in a short period of time and the probability of a ports being re-used is increased. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem occurs when we increased the Horizon Global Setting for SSO timeout. We changed it from the default 15 minutes to the lowest available value of 1 minute. When we change the SSO setting to 1 minute it then has the client send a heartbeat every 20 seconds instead of every 5 minutes. This increases the amount of connections to the connection servers by 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This becomes a problem because clients are now communicating more frequently so the chance of re-using an ephemeral port in a short period of time is possible. This isn’t a problem for clients in a non-load balanced environment because they all have unique client IP addresses but in a load balanced environment the connection servers see all incoming requests from the same IPs (the IP of the F5 (depending on how many floating F5 IPs you have in the pool). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In accordance with RFC 793 windows has a bunch of TCP connection transition states. The one we are concerned about in this issue is the TIMEWAIT state. TIMEWAIT is supposed to be twice the maximum segment lifetime (2MSL). By default windows has this set to 4 minutes. So if you run ‘netstat’ you will see all connections in all the possible states: established, syn_sent, syn_recv, fin_wait1, fin_wait2, time_wait, close, close_wait, last_ack, listen, closing, unknown, etc. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When a connection is closed by the application the underlying TCP stack keeps the source IP address/source port combination in a TIME_WAIT state until the 2MSL timer is up. From the local end-point point of view the connection is closed but we’re still waiting before accepting a new connection in order to prevent delayed duplicate packets from the previous connection being accepted by a new connection. TCP blocks any second connections from the srcip/srcport pair until the TIME_WAIT state is finished. Any new connections coming in from that SRCIP/SRCPRT combo will be ignored and no ACKs will be sent for incoming SYNS. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is a problem for load balancers like the F5 because it may re-use an ephemeral port if another client chooses to use it. The F5 also has a TIME_WAIT timer to prevent this from happening that should match the destination devices TIME_WAIT timer but it does not. By default the F5 timer is only 2 seconds whereas Windows is 4 minutes. This means a new srcip/srcport combo can be re-used after only 2 seconds on the F5 and it will try to proxy the connection to the server when that has the same srcip/srcport combo still blocked for another 4 minutes. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is what was happening to us – we did a TCPDUMP on the F5 and we were sending SYNs to the connection server and not getting a response. It then tries retransmission 3 times and when it eventually fails it sends a RST back to the client telling it to disconnect thus the ‘Network Error’ our end users were receiving. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The windows server TIME_WAIT can be adjusted using the registry key: TcpTimedWaitDelay and accepts values from 30 seconds to 300 seconds with default being 240 (4 minutes). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I adjusted the connection servers to have 30 second TIME_WAIT and adjusted the F5 iAPP TCP profiles to be custom and use 30 seconds instead of 2 as well as disabling the TIME WAIT recycle option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This issue would most likely not be seen by anyone in smaller networks because having different clients connecting using the same ephemeral port is unlikely. Depending on their configurations they may have many F5 floating IPs that connections go across which will also help mitigate the occurrence due to having more SRCIP/SRCPRT combinations. They may also change the source port settings to be changed sequentially instead of preserved so instead of the F5 using the same source port the client used it keeps its own table and just sequences it itself. All of these options can mask the underlying problem but the real fix is ensuring the timeout values are the same to limit port re-use during a time_wait period. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Nov 2018 16:36:11 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-F5-tcp-Reset-using-UAG/m-p/464121#M77244</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-11-14T16:36:11Z</dc:date>
    </item>
    <item>
      <title>Re: User had two VM sessions.</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/User-had-two-VM-sessions/m-p/1827556#M82980</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just checking in to see if &lt;STRONG style="font-size: 12.6px; font-family: proxima-nova, Arial, sans-serif; color: #666666;"&gt;jzumwalt&lt;/STRONG&gt; 's recommendation helped or if you are still having issues.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Apr 2018 18:06:31 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/User-had-two-VM-sessions/m-p/1827556#M82980</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-04-13T18:06:31Z</dc:date>
    </item>
    <item>
      <title>Re: Force protocol</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Force-protocol/m-p/1379421#M80081</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Under the Desktop Pool Settings tab in the 'Remote Display Protocol' section you have the ability to set the 'Default Display Protocol' to PCoIP. There should also be another option 'allow users to choose protocol' which controls whether users can override the default display protocol you selected. Simply change that value to No and it will force them to use the default protocol which you set to PCoIP. There is also a Group Policy setting you can set called 'AllowDirectRDP' which will prevent devices that are not running Horizon Client from connecting directly to Horizon Desktops through RDP:&amp;nbsp;&amp;nbsp; (Computer Configuration &amp;gt; Policies &amp;gt; Administrative Templates &amp;gt; Classic Administrative Templates &amp;gt; VMware Horizon Agent Configuration) and disable 'AllowDirectRDP'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://communities.vmware.com/t5/image/serverpage/image-id/81078i87BFB5392A87B983/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additional information:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://docs.vmware.com/en/VMware-Horizon-7/7.4/horizon-virtual-desktops/GUID-0359DB4C-4517-4535-8EBC-BD4F27C764F3.html" title="https://docs.vmware.com/en/VMware-Horizon-7/7.4/horizon-virtual-desktops/GUID-0359DB4C-4517-4535-8EBC-BD4F27C764F3.html"&gt;Desktop Pool Settings for All Desktop Pool Types&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://docs.vmware.com/en/VMware-Horizon-7/7.4/horizon-virtual-desktops/GUID-E9B84CCB-F0D5-4198-B986-2B46AD589452.html" title="https://docs.vmware.com/en/VMware-Horizon-7/7.4/horizon-virtual-desktops/GUID-E9B84CCB-F0D5-4198-B986-2B46AD589452.html"&gt;Prevent Access to Horizon 7 Desktops Through RDP&lt;/A&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Apr 2018 17:35:03 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Force-protocol/m-p/1379421#M80081</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-04-13T17:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: View DB SQL how to extract Client's IP address</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/View-DB-SQL-how-to-extract-Client-s-IP-address/m-p/1758384#M82499</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If a client connects directly to the connection server then that client's IP address will show under 'ClientIPAddress'. If a client connects through a load balancer then one of the floating IPs will show under 'ClientIPAddress' and the actual client IP address will show under 'ForwardedClientIPAddress' as long as the load balancer is configured to insert the 'X-Forwarded-For' header. If 'X-Forwarded-For' isn't configured then the value will be NULL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If 'X-Forwarded-For' is enabled then the connection server will see something similar to this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 DEBUG (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) Request from /10.205.1.82: POST /broker/xml&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) Content-Type: application/x-www-form-urlencoded&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: host: [virtual.example.org]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: user-agent: [VMware-client]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: accept: [*/*]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: cookie: []&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: content-length: [179]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: content-type: [application/x-www-form-urlencoded]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: x-forwarded-for: [10.95.2.59]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) Forcing content type for XML API request to: text/xml&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: content-type: [text/xml]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: vdmconnectionsource: [VkRJQ09OTkkwMS53aHJzZC5uZXQ=]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: gateway-type: [SG-cohosted]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [r] (ajp:broker:Request5712720) Header: gateway-location: [Internal]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 DEBUG (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) Gateway headers sent to the broker:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 DEBUG (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) gateway-type = [SG-cohosted]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 DEBUG (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) gateway-location = [Internal]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;2018-03-23T05:22:33.365-05:00 TRACE (0D88-1148) &amp;lt;Thread-35&amp;gt; [SimpleAJPService] (ajp:broker:Request5712720) Request task queued.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;The POST to the connection server will be from an IP address belonging to the load balancer. In the data being posted, the load balancer will add the additional 'x-forwarded-for' header containing the source client ip address. In this example the load balancer is 10.205.1.82 and the client is 10.95.2.59. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;You mentioned you are using an F5 in your environment. Are you using the F5 Horizon iApp template? Did you configure SSL bridging or SSL offloading? If you go to your http service profiles under 'Local Traffic' -&amp;gt; 'Profiles' is 'X-Forwarded-For' enabled?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Mar 2018 21:02:46 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/View-DB-SQL-how-to-extract-Client-s-IP-address/m-p/1758384#M82499</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-03-23T21:02:46Z</dc:date>
    </item>
    <item>
      <title>Re: Horizon View doubles assignment of linked-Clone desktops 7.3.2</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-View-doubles-assignment-of-linked-Clone-desktops-7-3-2/m-p/2231883#M88001</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That is correct - option would only be available in floating not dedicated. Original poster only mentioned linked clones - I should have asked which type of user assignment was being used.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Mar 2018 00:29:23 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-View-doubles-assignment-of-linked-Clone-desktops-7-3-2/m-p/2231883#M88001</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-03-15T00:29:23Z</dc:date>
    </item>
    <item>
      <title>Re: Horizon View doubles assignment of linked-Clone desktops 7.3.2</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-View-doubles-assignment-of-linked-Clone-desktops-7-3-2/m-p/2231879#M87997</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In your Horizon desktop pool settings can you confirm 'Allow user to initiate separate sessions from different client devices' is set to 'No'. If this is set to 'Yes' then any additional connections from the same user will result in new available VMs being assigned. If this is set to 'No' then the user will be be connected to their existing session and the original client will be disconnected.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Mar 2018 15:42:20 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/Horizon-View-doubles-assignment-of-linked-Clone-desktops-7-3-2/m-p/2231879#M87997</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-03-14T15:42:20Z</dc:date>
    </item>
    <item>
      <title>Re: View DB SQL how to extract Client's IP address</title>
      <link>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/View-DB-SQL-how-to-extract-Client-s-IP-address/m-p/1758382#M82497</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The client IP address is recorded in the Horizon Event database. You need to select records from the 'event' table that have 'EventType' of 'BROKER_USERLOGGEDIN'. You then inner join the 'event_data' table on 'EventID'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;select&amp;nbsp; *&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;from event e&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;inner join event_data ed&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;on e.eventid = ed.eventid&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;where e.eventtype = 'BROKER_USERLOGGEDIN'&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;order by e.time desc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you execute the query you will notice multiple rows are returned for each login event. Each row contains a different attribute related to the login: 'ForwardedClientIpAddress', 'UserSID', 'ClientIpAddress', 'BrokerSessionId', 'UserDisplayName', and 'TotalUsers'. If you want to transpose rows to columns so data is returned in one row per login event you will need to pivot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;select *&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;from (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.time as "Time",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.node as "Connection Server",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ed.name,&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ed.strvalue&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from event e&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join event_data ed&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on e.eventID = ed.eventID&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where e.eventtype = 'BROKER_USERLOGGEDIN'&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) t&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PIVOT&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAX(strvalue)&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR name in ("ClientIPaddress", "ForwardedClientIPaddress", "UserDisplayname")&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) p&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;order by time desc&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;It's important to note that the 'event' and 'event_data' tables only contain recent data. If you want to include older data in your query you need to union the historical event data.&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;Example:&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left;"&gt;&lt;/P&gt;&lt;P style="text-align: left; padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;select *&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;from (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.time as "Time",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.node as "Connection Server",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ed.name,&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ed.strvalue&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from event e&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join event_data ed&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on e.eventID = ed.eventID&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where e.eventtype = 'BROKER_USERLOGGEDIN'&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) t&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PIVOT&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAX(strvalue)&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR name in ("ClientIPaddress", "ForwardedClientIPaddress", "UserDisplayname")&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) p&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;union&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;select *&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;from (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eh.time as "Time",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eh.node as "Connection Server",&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edh.name,&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edh.strvalue&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from event_historical eh&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join event_data_historical edh&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on eh.eventID = edh.eventID&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where eh.eventtype = 'BROKER_USERLOGGEDIN'&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) t&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PIVOT&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAX(strvalue)&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR name in ("ClientIPaddress", "ForwardedClientIPaddress", "UserDisplayname")&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) p&lt;/P&gt;&lt;P style="padding-left: 90px;"&gt;order by time desc&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Feb 2018 15:12:45 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Horizon-Desktops-and-Apps/View-DB-SQL-how-to-extract-Client-s-IP-address/m-p/1758382#M82497</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2018-02-24T15:12:45Z</dc:date>
    </item>
    <item>
      <title>Re: Manually modifying appstack</title>
      <link>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459867#M1959</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;I did find a site &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://appvolume.readthedocs.io/en/latest/" rel="nofollow"&gt;http://appvolume.readthedocs.io/en/latest/&lt;/A&gt;&lt;SPAN&gt; that appears to be from the App Volumes dev team.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;It has information written by Principal Engineer Matt Conover and Staff Engineer Art Rothstein.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the guide it clarifies that "SvDriver is a policy-driven driver file responsible for the virtualization of volume contents into the desktop OS. The policy file snapvol.cfg controls the files, directories, registry keys, and processes that are virtualized during application capture on each volume. The log svdriver.log tracks this activity."&lt;/P&gt;&lt;P&gt;This explains how snapvol.cfg is used for both appstack and writable volumes - it is the policy file that svdriver uses for all virtualized volumes used in App Volumes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another area discussed that may be helpful in determining what is being captured:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"The SvCapture service performs provisioning and editing functions during application capture, such as generating policy files and metadata. The SvCapture reports this information to the App Volumes Agent and App Volumes Manager. svcapture.log tracks this activity and is available only on the capture machine.&lt;/P&gt;&lt;P&gt;For information to increase the logging level to debug, see Increasing Logging Level for AppVolumes Manager (2101668)."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I haven't reviewed the svcapture log file to see what information is contained but it's nice to know it may provide a summary of what was captured so the person doing the appstack provisioning has better insight. I still believe mounting the vmdk is the best method to review the files/folders/registry keys and policies related to the appstack. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Nov 2017 12:50:45 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459867#M1959</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-11-10T12:50:45Z</dc:date>
    </item>
    <item>
      <title>Re: Manually modifying appstack</title>
      <link>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459866#M1958</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I did see talks about snapvol.cfg during my research but it was always mentioned in regards to writable volumes and not appstacks. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Both&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://blogs.vmware.com/euc/2016/03/app-volumes-snapvol-cfg-writable-volume-customize-configure.html" rel="nofollow"&gt;https://blogs.vmware.com/euc/2016/03/app-volumes-snapvol-cfg-writable-volume-customize-configure.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;and &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://docs.vmware.com/en/VMware-App-Volumes/2.12.1/App-Volumes-User-Guide-212-1.pdf" rel="nofollow"&gt;https://docs.vmware.com/en/VMware-App-Volumes/2.12.1/App-Volumes-User-Guide-212-1.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;mention&amp;nbsp; snapvol.cfg for writable volumes and not appstacks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;To make it more confusing there was a KB article: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://kb.vmware.com/s/article/2146963" rel="nofollow"&gt;https://kb.vmware.com/s/article/2146963&lt;/A&gt;&lt;SPAN&gt; that talked about an appstack snapvol.cfg and a writable volume snapvol.cfg which hints to what you mentioned - that the snapvol.cfg does infact work for normal appstacks and not just writable volumes despite not being listed in the user guide or blog websites that describe snapvol.cfg . &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will take a look at snapvol.cfg as well to see how it works in our environment. Thank you for the additional info on the svdeleted keys as well as modifying the scripts to perform actions like licensing.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Nov 2017 11:46:57 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459866#M1958</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-11-10T11:46:57Z</dc:date>
    </item>
    <item>
      <title>Re: Manually modifying appstack</title>
      <link>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459864#M1956</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is all great information thank you guys! I wasn't sure I would hear from anyone so I didn't elaborate. I did preliminary research prior to asking this question on the community and found one site: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://blogs.vmware.com/consulting/2015/08/cloning-appstacks-and-modifying-scripts.html" rel="nofollow"&gt;https://blogs.vmware.com/consulting/2015/08/cloning-appstacks-and-modifying-scripts.html&lt;/A&gt;&lt;SPAN&gt; . &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It mentions the same steps of adding the vmdk to a VM that doesn't have app volumes installed. The problem is it didn't offer any additional information beyond that. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I followed the steps in the article and realized I needed to add a drive letter to access the 'CVApps' volume. As previously mentioned it appears the volume includes other items related to the operational aspects of app volumes and not just the captured data. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The two items I found during review that seems relavent were the SVROOT folder which appears to be the files/folders that were captured and snapvol.dat which appears to be the captured registry data in addition to metadata related to objects in SVROOT. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The snapvol.dat contains three hives - MACHINE, METADATA, and USER. It seems simple enough - MACHINE is HKEY_LOCAL_MACHINE, USER is HKEY_USERS, and METADATA is the metadata related to the SVROOT contents. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am wondering how sensitive the app volumes solution is. If I remove a file/folder from SVROOT do I also remove the corresponding entry in the METADATA ? Did I miss anything else beyond SVROOT and snapvol.dat that needs to be taken into consideration to ensure the appstack will work or are these the only two areas in CVApps we care about? Is there any fling or 3rd party tool I am missing that helps with this process or is it really all manual?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see responses mentioning a concern about the appstack being readonly and not being able to modify the contents unless you click 'update' and then mount the new non provisioned copy. It was suggested the workflow would be to update an existing appstack in the manager to create a copy and then to manually modify the copy, provision it, and then save it and assign to end users. My concern is this contradicts the reasoning for manually editing the appstack. I want to clean the image once it is already provisioning but unassigned. If I were to manually remove entries, and then go into provisioning it may just add the irrelevant data back when it attaches to the reference PC in order to finish the appstack update. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can someone explain the deleteable flag? It was my understanding if the appstack isn't currently attached to a user I could manually edit it because it wouldn't be referenced. To that end I would remove assignments to the appstack to ensure noone had handles to it, and then manually modify, then rescan in manager and add assignments. Alternatively if it's one actively being used in production environment I would copy it finalize it, and then manually edit it before assigning it to users/groups. Where would the deletable flag come into play in all of this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Nov 2017 10:55:39 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459864#M1956</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-11-10T10:55:39Z</dc:date>
    </item>
    <item>
      <title>Manually modifying appstack</title>
      <link>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459859#M1951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The Appstack capture process seems too simplified in that you hit start, make a change, hit finish, and it bundles everything up into a vmdk. I am use to tweaking packages and permissions as well as trimming the erroneous data that was captured and not needed. Is there a way to open an appstack and see the data it captured? For example mount the vmdk and see the registry keys, files/folders, etc. and then remove data that shouldn't have been captures as well as adjust ACLs etc? &lt;/P&gt;&lt;P&gt;I ask because our helpdesk is receiving reports of odd behavior with an application and I'm wondering if there is conflicting registry keys in an appstack being overlayed. Being able to see what's in the appstack would prove this is happening and being able to then delete the conflicting keys from the appstack would resolve the problem. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Nov 2017 21:27:11 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/App-Volumes/Manually-modifying-appstack/m-p/459859#M1951</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-11-09T21:27:11Z</dc:date>
    </item>
    <item>
      <title>Re: Leveraging UEM to maintain a user activity log of logon, logoff, disconnect, reconnect, lock, unlock</title>
      <link>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976385#M1819</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;During troubleshooting I did find that to be the problem. I was able to get this working by creating a custom app and setting flexengine to look for 'explorer.exe' and run a pre-import task of the logon VBS script. This is a workaround to sync vs. async environments. It appears the script would never finish (or would timeout) preventing/delaying explorer.exe from launching which is when the volatile registry keys and environmental variables are available. I can't change sync in this environment so I set the script to execute at explorer.exe launch instead of as a startup script and it is working. thank you for your help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Apr 2017 21:16:53 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976385#M1819</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-04-18T21:16:53Z</dc:date>
    </item>
    <item>
      <title>Re: Leveraging UEM to maintain a user activity log of logon, logoff, disconnect, reconnect, lock, unlock</title>
      <link>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976383#M1817</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I changed cscript to wscript and noticed the VBS script is erroring on the initial regread since the key doesn't exist. this then stops the script from continuing because of the error. I am looking into how to check the existence of the key by using regread and monitoring the err.level and looping until the condition is met. This may still be a timing issue and we just need to continue the loop on error&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Apr 2017 16:42:13 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976383#M1817</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-04-18T16:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: Leveraging UEM to maintain a user activity log of logon, logoff, disconnect, reconnect, lock, unlock</title>
      <link>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976382#M1816</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I added a 'whoami' to the routine and saved it to an output file and confirmed it is running as the user and not another context. I can't explain why the script isn't getting the values at logon but it can if you manually run the script after you are logged in.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Apr 2017 15:56:24 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/Dynamic-Environment-Manager/Leveraging-UEM-to-maintain-a-user-activity-log-of-logon-logoff/m-p/976382#M1816</guid>
      <dc:creator>SteveWH</dc:creator>
      <dc:date>2017-04-18T15:56:24Z</dc:date>
    </item>
  </channel>
</rss>

