Using IBM Rational Performance Tester V7.0.1 to load test IBM Lotus Notes standard client in a Citrix environment

This article describes how the IBM® Lotus® Domino® System Test team used IBM Rational® Performance Tester to test the IBM Lotus Notes® standard client, so that the team can provide you with the answers to your scalability questions on Citrix.


Gary Denner, Reliability Lead, IBM

Gary Denner joined IBM’s Dublin Software Lab in 1998 and is now the Reliability Lead for the Lotus Domino System Test team. He has worked on most Lotus Notes and Domino versions from 4.5.6 to 8.5. You can reach Gary at

Jeremy Flynn, Software Engineer, IBM

Jeremy Flynn joined IBM in 1996 as part of the Lotus software group. Since that time he has worked on a range of products including IBM Lotus Organizer, ccMail, IBM Lotus eSuite, IBM Lotus Domino.Doc, IBM Lotus Workflow, IBM Lotus Learning Management Systems, and, of course, IBM Lotus Notes. He has PCLP certification and is a Sun certified Java Programmer. Currently he works for the Lotus Domino SVT Reliability team focusing on load testing Lotus Notes through Citrix. You can reach Jeremy at

Lee Mosqueda, Software Developer, IBM

Lee Mosqueda started as a support specialist in IBM Lotus Product Support. He then moved into a testing role performing product testing for Lotus 1-2-3. From there, Lee worked as a test engineer on Lotus Discovery Server and then moved into a system test and lead role on the IBM WebSphere Portal SVT and the IBM Workplace SVT teams. Lee is currently a technical lead on the Lotus Domino System Test team. You can reach Lee at

Patrick O'Sulivan, Software Test Specialist, IBM

Patrick O'Sullivan is an Software Test Specialist at IBM's Dublin Software Lab. He completed his BSc in 1991, his MSc in 1997, and his PhD in 2001. Pat has over 17 years of software engineering experience with the latter 12 years at IBM. His research and publications interests include HCI, software engineering, software process and architectural models, software globalization, UIMS, RAS, and test automation. Pat is a Senior Member of the IEEE, a Chartered Engineer with the Institute of Engineers of Ireland, and he also holds the FEANI title of EurIng. You can reach him at

Alan Kelly, Software Engineer, IBM

Alan Kelly is a Domino System Test Reliability Engineer working in the Dublin Software Lab since 2006. He mainly works on testing Lotus Domino scalability under long durations and writes tools to help the team achieve their goals. You can reach Alan at

22 July 2008

IBM Rational Performance Tester Extension for Citrix Presentation Server is used to extend performance and scalability testing of applications that are hosted on the Citrix Presentation Server. Before you record a session with a Citrix application, the behavior of that application must be perfectly reproducible. Specifically, the application must always create windows and graphical user interface (GUI) elements at the same locations and in the same sequence. Mouse or keyboard events must always produce the same output. Citrix performance tests interact with the Citrix Presentation Server client at a low level so that changes that you make to the test after the recording can change the context of the user actions and cause synchronization timeouts.

Installing the Lotus Notes standard client on Citrix

The following steps assume that Citrix Presentation Server 4.5 has been installed and correctly configured, Rational Performance Tester V7.0.1 has been installed, and client systems have been configured.

  • Install Lotus Notes on the same system as one of the Citrix servers in your Citrix server farm.
  • Select multiuser installation, and then select any additional components (composite applications, for example) to be installed.
  • In all other installation windows, accept the default values.
  • Delete C:\[Windows directory]\notes.ini.
  • Create a new notes.ini file in C:\Documents and Settings\All Users\Applications\Lotus\Notes\Data using the lines shown in listing 1.
Listing 1. Creating a new notes.ini file
C:\Documents and Settings\All Users\Application Data\Lotus\Notes\Data\Shared

NOTE: The location of this file can follow this pattern:

C:\Documents and Settings\All Users.WINNT\Applications\Lotus\Notes\Data

You can determine the correct directory by verifying that the \Shared directory contains the Lotus Notes templates installed previously.

Make the following changes to the registry:

  • [HKEY_LOCAL_MACHINE\Software\Lotus\Notes\DataPath]. Remove the value.
  • [HKEY_LOCAL_MACHINE \Software\Lotus\Notes\MultiUser]. Change the value from 0 to 1.
  • [HKEY_LOCAL_MACHINE \Software\Lotus\Notes\8.0\DataPath]. Remove the value, if present.
  • [HKEY_LOCAL_MACHINE \Software\Lotus\Notes\8.0\MultiUser]. Change the value from 0 to 1.

In the Citrix Access Management Console, publish Lotus Notes as an application. These settings are preferred:

  • Advanced, Limits:
    • Select the option Allow only one instance of application for each user.
  • Advanced, Appearance:
    • Session window size: 1024x768
    • Select the option Maximize application at startup.

See an example of a published application in figure 1.

Figure 1. Sample published application
Sample published application

NOTE: It is assumed that local user data is stored on a network device in a production environment. The scope of this document, however, assumes only local user data.

Configuring users

To set up virtual users on Citrix, you need to first set up Microsoft® Windows® users through the Computer Management console. Lotus Notes users are required to be registered on the Lotus Domino server also.

Create users

Users can be created through the Computer Management console in Microsoft Windows. Perform this step on the Citrix server.

  1. To launch the console, click Start - Run and enter compmgmt.msc. Navigate to System Tools - Local Users and Groups.
  2. Right-click Users, and then select New User and enter the details as required. We recommend that you select the option Password never expires for each test user.
  3. Add the users to the existing group named Remote Desktop Users.

A user should be registered in Lotus Notes for each user that exists in Microsoft Windows. This approach is designed to emulate a real-world scenario, where each user first logs on to Microsoft Windows and then logs on to Lotus Notes, so there is a direct one-to-one correlation between any specific Microsoft Windows user and any specific Lotus Notes user. Use the Lotus Domino Administrator to perform this task. When it is complete, detach and copy the ID files for each user to a temporary directory on the Citrix server.

For the purposes of this article, we assume at least three test users, referred to hereafter as Vuser1, Vuser2, and Vuser3.

Log in to Lotus Notes through Citrix as a test user

Create a connection in "Citrix Program Neighborhood - Custom ICA connections" to the Citrix server, which launches the published application. Open the new ICA connection, and then log in as Vuser1.

Initially, the Lotus Notes standard client needs to be configured for each user just as in a single-user installation. You need to specify the following:

  • Lotus Notes user name
  • Lotus Domino server name
  • Lotus Notes user ID file name and location
  • Additional services (optional)

When Lotus Notes is fully configured and launched, you might want to think about other settings as well:

  • Getting Started panel. Do you want this panel to open automatically every time Lotus Notes starts?
  • Home panel. Do you want to specify a customized or default home panel?
  • About page. The about page opens for each database the first time that it is opened. Open and close any databases that you are working with.
  • Sidebar panels. If you are working with an Activities server or IBM Lotus Sametime®, set the connection options now. With Lotus Sametime you can enable automatic login.

Take notes as you go through this initial configuration for Vuser1. To speed up the process of creating multiple users, you can record an initialization script.

Recording your test

For the Lotus Notes standard client, you first record an initialization script to automatically set up Lotus Notes for each user, then you record another script or scripts that log in to Lotus Notes and run the actions that make up the performance test. The initialization script is run just once for each user while the performance script runs repeatedly, as often as is necessary to achieve results.

Create an initialization script to automatically set up Lotus Notes for each user

The initialization script is used to configure the Lotus Notes standard client for each user. It includes actions such as specifying the Lotus Domino server and ID file. This script is run just once for each user. Thereafter a different test script (which also needs to be recorded) is run to perform the actual reliability test. Creating an initialization script is useful only when the scenario involves a large number of users. For a small number of users you might find it quicker to initialize each user manually.

Record the test

To record the test, follow these steps:

  1. In Rational Performance Tester, click File – New – Test from Recording.
  2. Select the Citrix Recording option, and enter a file name (for example, NotesInit.recmodel).
  3. Specify the name and location of your ICA file and begin recording.
  4. Log in as Vuser2, and record the test. Refer to the notes that you made when configuring Vuser1 for guidance.

Create a datapool

A test that uses a datapool replaces a value in the recorded test with variable test data that is stored in the datapool. This substitution allows each virtual user to generate a different request to the server.

For testing the Lotus Notes standard client with Citrix, we used two datapools.

The datapool for logging in users typically contains two or more columns, one containing the Microsoft Windows user account IDs and the other containing the corresponding Lotus Notes user account IDs. Other columns can contain the passwords for these accounts. Vuser1 takes the values from the first row only, Vuser2 takes the values from the second row only, and so on.

When you substitute a text value in the script for a datapool variable for the first time, you specify the access mode of the datapool; that is, you specify how the script uses it.

The following datapool settings are preferred when logging in users to Microsoft Windows and Lotus Notes:

  • Select the option Segmented (per machine). This setting prevents virtual users from selecting duplicate values.
  • Select the option Fetch only once per user. This setting prevents a row from being used more than once.

See figure 2.

Figure 2. Datapool example
Datapool example

Most scripts contain a loop so that the same sequence of actions is repeated throughout the performance test. These actions can include mailing other Lotus Notes users, and the IDs of these users are drawn from a datapool. For performance testing, you are concerned not with which users are being mailed but rather that mails are creating network traffic and increasing the load on the server.

Because the values from a datapool within the script are reused, it is important to select the option Wrap when the last row is reached and to clear the option Fetch only once per user.

In Rational Performance Tester, you first create a datapool with two columns that you can use to log in users. In the first column, specify the Microsoft Windows login of Vuser3; in the second column, specify the Lotus Notes login of Vuser3.

NOTE: You do not specify the Vuser2 details in the datapool because Vuser2 is configured when the script is recorded.

Verify the script

When the script has been generated, modify the recorded actions as needed. Remember to reference the Microsoft Windows account name and the Lotus Notes account name and to substitute these values with the relevant columns from the datapool.

Run the script, and verify that it plays back correctly. Make sure that you have selected the option Show GUI for all Virtual Users for all testing purposes. When the script has played back correctly for one user, replace the values in the datapool with the remaining users (now the datapool has multiple rows instead of just one). Create a performance schedule, add the script, and run it.

On the Citrix Options tab of Rational Performance Tester, the area GUI during execution specifies whether the Citrix Application Server client is displayed or hidden during test execution. Ensure that the option Show GUI for all Virtual Users is selected. This option specifies that all instances of the Citrix Application Server client are displayed during test and allows you to follow the execution of all virtual users at the same time.

When this process completes, all users are initialized.

NOTE: Configure each user in the same way. The test script always assumes that it starts from the same point, and it expects the same results from any actions that are run. Lotus Notes is a feature-rich product with hundreds of configurable settings, so take care that the Lotus Notes workspace remains identical for each test user.

Create a performance test script to test the Lotus Notes standard client

To record the test, follow these steps:

  1. In Rational Performance Tester, click File – New – Test from Recording.
  2. Select the Citrix Recording option, and specify a file name.
  3. Specify the name and location of your ICA file and begin recording.

After the initialization script has been run, verify that the Lotus Notes home page is visible to all users when they have logged in.

To verify the script, follow these steps:

  1. Modify the recorded actions as needed.
  2. Substitute datapool values as needed.

The main body of the script should be moved into a loop so that actions can be run repetitively. Recall that any datapool substitutions outside the loop should come from a login datapool, and any datapool substitutions inside the loop should come from an in-script datapool. Ensure that when the actions inside the loop are completed, they can resume correctly at the start. See the sample script in figure 3.

Figure 3. Sample script
Sample script

Typical actions carried out for a sample Mail script include the following actions:

  • Send a new email with an attachment
  • Reply to an email with an attachment
  • Delete an email
  • Auto-complete an address
  • Search email
  • Switch between views

Keeping scripts short reduces the probability of their going out of sync. The sample performance schedule shown in figure 4 contains six scripts, each dedicated to a main feature in Lotus Notes. Each script has its own user group, which is assigned a percentage of the overall number of virtual users. The distribution of users reflects typical usage of the product under test, in this case the Lotus Notes standard client.

Figure 4. Sample performance schedule
Sample performance schedule

For this particular performance schedule, a separate datapool was created for each script and the Lotus Notes standard client was tuned for each group. For example, the Lotus Sametime group automatically connects to a Lotus Sametime server while all other groups do not try to connect to a Lotus Sametime server. Tuning like this is advisable where possible because it results in a more stable test environment.

Adding a delay between starting each user is advisable. Note how long it takes the slowest script in the performance schedule to reach the main loop, and use this time period as an approximate time for the Delay setting on the General tab.

Other performance schedule element details to note include the following:

  • Think time. Ideally, the script runs with the recorded think time. It can be useful, though, to change the option Modify the duration of think time delays to the option Vary the think time by a random percentage and then set both lower and upper limits to the same value. Set these values to a lower value for debugging or to a higher value for an increased number of virtual users.
  • Statistics. Increase the value in the field Statistics sample interval for better performance. A suggested setting here is one minute, but experiment with values of 30 seconds or two minutes to tweak performance. The User Action Throughput graph is plotted based on the statistics sampled, and it can be viewed at any time during the run.
  • Test log. Set the log level to All for all the options on this tab until the script has been finalized and is running stably. You should analyze the test log after a run to determine the point at which the script failed. When the script has been verified as running stably, the test log becomes less important, and the log level can be reduced. For example, you can change the log level to Primary Test Actions or to None, but remember that the usefulness of the test log is reduced accordingly.

Validating your data

You can enable additional logging and tracing on the Citrix system, which can be useful for troubleshooting Rational Performance Tester script playback issues. Try these approaches:

  • Clients.
    1. Open the Citrix Program Neighborhood.
    2. Select ICA Settings from the Tool menu.
    3. On the Event Logging tab, select the option Append to existing event log in the Event Log File section, and make sure that both the Connections and Disconnections option and the Errors option are selected in the Log Events area.
  • Citrix server. Use the Citrix Diagnostic Facility as follows:
    1. Open the Citrix Access Management Console, and select Diagnostic Facility from the tree in the left pane.
      This window is where you can view trace sessions.
    2. From the same tree, select your Citrix server and select Diagnose problems – Start trace session.
    3. When the Diagnostic Facility window displays, select the option Create a new settings file for this trace, and click Next.
    4. Click Add in the Modules area, and select some modules, (for example, IMA_Runtime_DynamicStore and IMA_Sals_Browser), and then click Next and Finish.
    5. Select Diagnostic Facility again to see the trace session running.
    6. Select the option Stop trace session and click Stop and Copy when ready.

By default, the trace is created in this directory:

<%userprofile%>\Local Settings\Application Data\Citrix\cdfData\<servername>\CitrixTraceLog.et_

Use the Set packaging details option to send the trace to Support personnel.

The test log

When a performance schedule is complete or has been stopped, right-click the schedule name on the Performance Test Runs tab, and then select the option Display Test Log. The test log is most useful for debugging the script, and its effectiveness depends on the log level set on the Test Log tab of the Performance Schedule Element Details.

Select the Events tab to see a tree of completed actions, and expand the tree to see greater detail. Find the last action run before the script stopped, and read any messages that Rational Performance Tester added here. These messages can prove useful for determining the exact point at which the script stopped working.

In practice, it is also useful to observe the script visually as it is running. If a script goes out of synchronization, actions can continue to run in the wrong place; however, they are still recorded as having run (without error) in the test log.


Rational Performance Tester Extension for Citrix Presentation Server can be used to load and test the performance of any application that you want to deploy to your Citrix server. Because the Citrix performance tests interact with the Citrix Presentation Server client at a low level (mouse movements and key presses), it is important that you follow the hints and tips outlined in this article. Be sure to check your response times as you add load to your applications, as response times in your application increase your script think times to ensure that you are clicking and issuing key presses when the windows display.



Get products and technologies



developerWorks: Sign in

Required fields are indicated with an asterisk (*).

Need an IBM ID?
Forgot your IBM ID?

Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.


All information submitted is secure.

Dig deeper into IBM collaboration and social software on developerWorks

Zone=Lotus, Rational
ArticleTitle=Using IBM Rational Performance Tester V7.0.1 to load test IBM Lotus Notes standard client in a Citrix environment