IBM Support

ITCAM for Transactions - Running RPT Citrix tests on RRT/T6 agents

Technical Blog Post


ITCAM for Transactions - Running RPT Citrix tests on RRT/T6 agents


IBM Tivoli Composite Application Manager for Transactions
~ How to do stuff
By Kevin Baldwin -

How to.....How to.....

Avoid "unsupported function" errors when running RPT Citrix tests on RRT/T6 agents

You're most likely to see "unsupported function" errors reported in the TEP as Verification Point Failures. This article explains why these errors happen and the steps you need to take to avoid them.

Your initial view of these errors may look something like this:
Moving the cursor over the "Violated Value" shows the the full message:image
These errors are seen for 2 reasons. Each has it's own fix.

You may need to adopt one or both fixes to overcome the problem.

1. Run the agent as a process

By default the T6 agent is run as a service. For most types of RPT playback this isn't a problem, however, when running Citrix tests you should run the T6 agent as a process.

This recommendation is made on the basis of a combination of the following test results and information found in Rational documentation.

The "ITCAM for Transactions - Robotic Response Time and Citrix compatibility" table shows test results for various Citrix Client versions against different operating systems.

You'll see that the successful "Citrix Receiver" tests marked "Yes*" all point at this note:
* Requires running as a local user on the desktop instead of a service. Run "C:\IBM\ITM\TMAITM6\kt6agent.exe test" manually via command prompt or Start -> Run.

For more information relating to running the T6 agent as a process, take a look at the ITCAM for Transactions - Running the RRT / T6 agent as a process blog.

  • Rational Performance Tester has it's own agent which can be run on a separate machine where RPT isn't installed. This is similar to the way the playbacks are run on the ITCAMfT T6 agent.

    In RPT Knowledge Center documentation you will find the Citrix performance testing guidelines which contain this information:

Rational Performance Tester Agent requirements
When you install Load Generation Agent, by default, the agent starts as a service. To use the Load Generation Agent for Citrix recording, the agent must run as a process. For Windows, open Windows Services. If the MajordomoService is set to Automatic start up, set it to Manual and then stop the MajordomoService. You can now open the Majordomo folder from the Rational Performance Tester Agent installation path and double-click Majordomo.bat.

Changing the T6 agent to run as a process is the ITCAMfT equivalent of this requirement.

This is a slight diversion from the "unsupported function" subject, but it is something that's certainly worth mentioning at this point. In addition to Citrix performance testing guidelines and the links found at the bottom of that page that contain a lot of very useful and valuable information to help record successful Citrix tests, Rational Performance Tester and Citrix troubleshooting and best practices should also be read.

2. Killing the wfcrun32 processes

The Citrix Receiver uses a number of processes. One of these processes can cause the "unsupported function" problem if it is running before the playback starts.

By default, the wfcrun32.exe process is killed every 24 hours.

With effect from this can be changed to kill the process as often as possible after a Citrix playback when the process isn't being used by another playback.

To do this, edit the following file on the T6 agent:

You should find this section at the end of the file::

# if set itcam.rpt.citrix.wfcrun32.restartTimeout=0
# means wfcrun32.exe will be restarted once there is no script running

Modify the last line to read:


If the line doesn't exist and you're running at least, you can add it yourself.

The t6 agent needs to be restarted for this change to take effect.

The wfcrun32 process is then killed as soon as possible after a Citrix playback has completed and no other Citrix playbacks are running.

To confirm that the change is working, look at the pid of a wfcrun32.exe process in Task Manager. It should be different every time a Citrix playback runs.

The "unsupported function" problem can still happen after the T6 agent is started if the wfcrun32 process already exists before the first playback runs. However, subsequent playbacks are ok because the process is being killed after each playback.

To overcome this problem you can kill the wfcrun32 process when the t6 agent is started.

If you're using a batch file to start the t6 agent as described in the ITCAM for Transactions - Running the RRT / T6 agent as a process blog, you could insert the following command into the batch file before the agent starts:

taskkill /F /IM wfcrun32.exe /T



Example log extracts showing the "unsupported function" error:


[2017-06-27T10:40:53.048+00:00] -  MIN  - XYZ1234 - PlaybackThreadPoolWorker-0 - - Sending RT VP event: i=|0|, statusEvent=|SimTestStatusEvent Values: monitorName=|RRT-Profile/citrixtest/|,URL=|null|,eventType=||,eventId=|1.b44|,parentEventId=|1.a2|,ownerId=|A1E6E303112803DDE45FB83861653965|,text=|Connection failed. 10 unsuccessful attempts were made before abandoning.
The last error message was: Unsupported function.

Session options:
Connection mode: Through Web Interface

Horizontal resolution: 1024
Vertical resolution: 768|,name=|Session connection|,actualValue=||,expectedValue=||,eventVerdict=|2|,eventReason=|2|,eventDesc=||, eventProperties = [ [name=|Substitution|,type=|String|,value=|pwd:::customCode:::Password:::0:::8:::hseZ3oP7::::::dcVar_1|]  [name=|Substitution|,type=|String|,value=|user:::customCode:::Username:::0:::8:::TECF1096::::::dcVar_0|]  [name=|Substitution Failed|,type=|String|,value=|LaunchReference:::harvester:::icaContents:::672:::30:::|]  [name=|Substitution Failed|,type=|String|,value=|Domain:::harvester:::icaContents:::527:::17:::|]  [name=|Substitution Failed|,type=|String|,value=|ClearPassword:::harvester:::icaContents:::447:::14:::|]  [name=|Substitution Failed|,type=|String|,value=|LogonTicket:::harvester:::icaContents:::739:::30:::|]  [name=|Substitution Failed|,type=|String|,value=|Address:::harvester:::icaContents:::318:::47:::|]  [name=|Substitution Failed|,type=|String|,value=|SessionsharingKey:::harvester:::icaContents:::907:::32:::|] ]|


<Message Id="None" Severity="ERROR">
 <Time Millis="1498560052409"> 2017-06-27 10:40:52.409+00:00</Time>
 <Server Format="IP"></Server>
 <LogText><![CDATA[Action history event: Type="Verdict Event", Name="Session connection", Text="Connection failed. 10 unsuccessful attempts were made before abandoning.
The last error message was: Unsupported function.

Session options:
Connection mode: Through Web Interface

Horizontal resolution: 1024
Vertical resolution: 768", Verdict="Fail", Reason="See description", Description=""
Event properties:
    Name="Substitution Failed",Value="SessionsharingKey:::harvester:::icaContents:::907:::32:::"
    Name="Substitution Failed",Value="LogonTicket:::harvester:::icaContents:::739:::30:::"
    Name="Substitution Failed",Value="LaunchReference:::harvester:::icaContents:::672:::30:::"
    Name="Substitution Failed",Value="Domain:::harvester:::icaContents:::527:::17:::"
    Name="Substitution Failed",Value="ClearPassword:::harvester:::icaContents:::447:::14:::"
    Name="Substitution Failed",Value="Address:::harvester:::icaContents:::318:::47:::"
 <Source FileName="" Method="logHistoryAction(monitorName,actionLogString,LogLevel)"/>
 <TranslationInfo Type="JAVA" Catalog="null" MsgKey="null"></TranslationInfo>

<CommonBaseEvent creationTime="2015-10-08T13:35:41.750Z" globalInstanceId="A1E56DC17834A560EA19E16439323036" msg="RPXE5103I History.writeEvent()  level: 21  event [&lt;verdictEvent id=&quot;1.a3&quot; ownerId=&quot;A1E55AF290D28790F18FE33737323637&quot; ownerType=&quot;BVRCombinedFragment&quot; text=&quot;Connection failed. 10 unsuccessful attempts were made before abandoning.&amp;#xA;The last error message was: Unsupported function.&amp;#xA;&amp;#xA;Session options:&amp;#xA;Connection mode: On Server&amp;#xA;Server address: server.something.local&amp;#xA;Initial program: #Notepad_RPT&amp;#xA;Farm Settings: &amp;#xA;&amp;#x9;Browser protocol: Auto&amp;#xA;&amp;#x9;Browser address: Auto&amp;#xA;User name: server&amp;#xA;Domain: XXXXXADR&amp;#xA;Color depth: 4&amp;#xA;Horizontal resolution: 1024&amp;#xA;Vertical resolution: 768&quot; parentId=&quot;1.a2&quot; timestamp=&quot;1444311341750&quot; name=&quot;Session connection&quot; eventType=&quot;; sortBy=&quot;id&quot; verdict=&quot;2&quot; reason=&quot;2&quot; causedBy=&quot;&quot;&gt;&lt;/verdictEvent&gt;]" severity="50" version="1.0.1">



Visit the ITCAM for Transactions ~ How to do stuff ~ Homepage for more blogs in this series




Subscribe and follow us for all the latest information directly on your social feeds:












Check out all our other posts and updates:

Academy Blogs:
Academy Videos:
Academy Google+:
Academy Twitter :





[{"Business Unit":{"code":"BU004","label":"Hybrid Cloud"},"Product":{"code":"","label":""},"Component":"","Platform":[{"code":"","label":""}],"Version":"","Edition":""}]