Microsoft Exchange Load Generator 2013
Microsoft Exchange Load Generator 2013
Microsoft Exchange Load Generator 2013
Microsoft Corporation
Published: October 2013
This document provides information about working with the Exchange Load Generator tool. This
tool helps administrators perform benchmarking, pre-deployment validation, and stress testing
tasks that introduce various types of workloads into a test (non-production) Exchange messaging
system.
Comments? Send feedback to [email protected]
1
Contents
Microsoft® Exchange Load Generator............................................................................................ 1
Microsoft Exchange Load Generator........................................................................................... 5
System Requirements for Exchange Load Generator.................................................................6
When to Use Exchange Load Generator.....................................................................................7
Installing Exchange Load Generator on a Client Computer.........................................................8
Creating and Running the Exchange Load Generator Test.........................................................9
How to Start Exchange Load Generator.................................................................................11
How to Set Up the Exchange Load Generator Test Topology................................................12
How to Configure the Test Properties.....................................................................................14
Customizing the Exchange Load Generator Test...................................................................16
Specifying Threshold Detection during Simulation.................................................................36
How to Enable Remote Control.............................................................................................. 41
How to Enable Stress Mode................................................................................................... 43
How to Enable RPC over HTTP............................................................................................. 43
How to Initialize the Exchange Load Generator Test..............................................................44
How to Run the Exchange Load Generator Test....................................................................46
How to Stop the Simulation Process......................................................................................47
How to Repeat the Test.......................................................................................................... 47
Running Exchange Load Generator as a Command-Line Program..........................................48
Running Exchange Load Generator Tasks................................................................................49
Using System Monitor and Exchange Load Generator Data.....................................................51
How to Consolidate System Monitor Data..............................................................................52
Operational Recommendations for Using Exchange Load Generator.......................................53
Specific Features and Behaviors of Exchange Load Generator................................................57
Public Folders........................................................................................................................ 57
Mail Flow and Recipients....................................................................................................... 57
Task Rate, Concurrency Settings, and Stress Mode..............................................................58
Dynamic Mail Generator........................................................................................................ 59
Performance Counters Reference.............................................................................................62
Scripted Load Modules in the Exchange Load Generator Framework......................................70
Exchange Load Generator Configuration XML.......................................................................71
Base Script Verbs................................................................................................................... 72
The POP3 Module.................................................................................................................. 76
The SMTP Module................................................................................................................. 78
The IMAP4 Module................................................................................................................ 79
The Outlook Web Access Module.......................................................................................... 84
Frequently Asked Questions about Exchange Load Generator.................................................96
Copyright................................................................................................................................. 105
3
Microsoft Exchange Load Generator
Microsoft® Exchange Load Generator is a pre-deployment validation, and stress testing tool that
introduces various types of workloads into a test (non-production) Exchange messaging system.
Exchange Load Generator lets you simulate the delivery of multiple MAPI client messaging
requests to an Exchange server. To simulate the delivery of these messaging requests, you run
Exchange Load Generator tests on client computers. These tests send multiple messaging
requests to the Exchange server, which causes a mail load.
After the tests are complete, you can use the results to help do the following:
Verify the overall deployment plan
Identify bottlenecks on the server
Validate Exchange settings and server configurations
Exchange Load Generator tests the effect of client load on a server.
There are general tasks such as logoff, logon, and send mail that are common to most protocols.
Additionally, there are feature tasks that are available only in certain protocols.
4
Component Minimum Recommended
.NET Framework Microsoft .NET Framework 4.5 Microsoft .NET Framework 4.5
Redistributable Package Redistributable Package
Important
Exchange Load Generator should be used only in test environments that have no
connection to the production environment. This tool should not be used in a production
environment, an environment that is mission critical, or one that contains important
information of any kind anywhere in the network.
Exchange Load Generator uses many simulated user mailboxes to create the server
workload. Because mailboxes must be part of a domain user’s account, the Exchange
Load Generator tool therefore creates many domain user accounts to support these user
mailboxes. By design, Exchange Load Generator requires that the password associated
with these domain accounts be the same. Because this most likely does not comply with
your organization's security requirements, to lessen any risk this could present, we
recommend that this tool be used only on isolated test networks that do not have
connectivity to your production network.
Because load simulation works by using system resources, Exchange Load Generator is
unsuitable for use on production networks because it could interfere with production
operations by competing for those resources.
Additionally, Exchange Load Generator does not account for all factors that are required to size
servers completely. The following factors are not simulated by Exchange Load Generator and can
affect server capacity planning:
Loadgen will not replicate the correct IOPs per user. For IOP testing, we recommend you
use Microsoft Exchange Server Jetstress.
5
Exchange Load Generator also does not provide a complete picture of user experience, and its
results should not be interpreted in that manner.
6
Creating and Running the Exchange Load
Generator Test
First, you will need to configure the storage groups and mailbox stores on the Exchange server.
Additionally, since MAPI connectivity to Exchange 2013 occurs via RPC/HTTP (Outlook
Anywhere) it is critical to properly configure the CAS servers that LoadGen will connect to, as well
as any network infrastructure such as load balancers that may exist between LoadGen clients
and the CAS servers. Once server configuration is completed you can create and run the
Exchange Load Generator tests. This topic highlights the steps that are required to create and
run an Exchange Load Generator test on a client computer. Also included is a table that indicates
which method is used to do the various steps.
Each of these steps is described in detail in accompanying topics.
7
Methods used to do Tasks
Configuring the test properties, which involves Command-line program to create file. Edit the
generating and editing a configuration file configuration file.
Running Exchange Load Generator as a
Command-Line Program
Common task: Customizing logon and logoff Edit the configuration file
behavior of users
Customizing the Exchange Load Generator
Test
Verify that users were created in Active Active Directory Users and Computers
Directory
How to Set Up the Exchange Load Generator
Test Topology
8
Steps and sub steps Method(s) used
Deleting database and log files Control Panel > Administrative Tools
How to Repeat the Test
Removing users from Active Directory Active Directory Users and Computers
How to Repeat the Test
Note:
When an Outlook Anywhere external namespace is configured in the test topology, Exchange
Load Generator will detect that value and use it in the ClientAccessServer list. If Exchange Load
9
Generator is unable to obtain information from the test topology during creation of the initial
configuration (this can occur if the Exchange Load Generator clients are not domain-joined), the
namespace must be manually added to the ClientAccessServer list.
Note:
The following steps which configure a shared external namespace can be skipped if there is only
one Exchange 2013 CAS server (or multi-role server) in the test topology, as long as the
authentication method has been configured to NTLM on the server (or both the server and
Exchange Load Generator have been configured to use Basic authentication), and the self-signed
SSL certificate on the CAS server is fully trusted on all Exchange Load Generator client
machines.
Note:
If the Basic authentication method is used, you must manually adjust the
RpcHttpAuthenticationType parameter (set to “Basic”) in the Exchange Load
Generator configuration file. We recommend using NTLM to simplify the test
configuration process.
Note:
The new settings will not take effect immediately. We recommend either restarting
your Exchange 2013 servers or waiting at least 30 minutes after making these
changes before performing any validation steps.
10
Exchange Load Generator client machines fully trust the certificate authority (CA)
which issued the certificate. If the certificate was obtained from a public CA it is likely
that the CA will already be trusted. Otherwise, obtain the CA certificate and import it
into the “Trusted Root Certification Authorities” portion of the Local Computer
certificate store.
To configure name resolution on Exchange Load Generator client machines via the
hosts file
Note:
If the configured namespace is resolvable via DNS in the test topology, this step can
be skipped.
1. On each Exchange Load Generator client machine, open the Notepad tool.
2. Using Notepad, open the %systemroot%\system32\drivers\etc\hosts file
(%systemroot% is typically c:\windows).
3. Add an entry to the end of the file containing the target IP address followed by the
namespace, such as:
192.168.1.50 mail.contoso.com
11
Note:
This procedure starts the graphical user interface version of Exchange Load
Generator.
Important
You must configure Exchange Server 2013 before you create the topology. This could
involve, for example, creating the required databases, pointing databases to the correct
public folders, or changing distribution group settings.
12
You can choose “Skip recipient management and continue with user group
configuration” if your users have already been created. Continue to step 8.
If your users have not been created yet and you wish to do so through Loadgen click
“Continue with recipient management” and continue to step 6.
6. On the User settings page, set up according to your test requirements. For example,
select the user count that corresponds to each mailbox database, and then enter the
number of users that you want to simulate.
7. On the Advanced recipient settings page, configure the options of Distribution List
Settings, Dynamic Distribution List Settings, Contact Settings, and External
Recipient Settings according to your test requirements. Click Continue. The progress
bar for Recipient creation is in progress is displayed.
8. When the recipient creation task is completed, the Specify test user groups page will
be displayed. From here you can configure one or more groups by Name, Client Type,
Action Profile, Mailbox Profile, PreTestLogon or Container. You can edit any of the
fields, and you can add or delete user groups as required. Click Continue.
9. The Remote configurations page lets you configure one or more remote load
generators. This is an optional task. Click Continue.
10. A Configuration summary Review this summary, and then select an action from the
selection in the lower half of the screen. This includes going back and adjusting or re-
doing any items that you choose.
13
How to Configure the Test Properties
The procedure explains how to configure the test properties by generating a configuration file and
then editing it. Tasks include setting up user credentials and specifying parameters such as the
length of time that the test should run.
14
parameters listed in the configuration file.
5. Search for the LdapSearchFilter parameter. This parameter is used to restrict the set of
users who will be included in the test run. By default, it includes all mail-enabled users in
the directory at or below the base domain name that is specified in the LdapBaseDn
parameter, which immediately follows LdapSearchFilter. You will notice that
LdapBaseDn has already been set to the correct value if you are running LoadGenCmd
while logged in with domain credentials. If the LdapBaseDn parameter does not correctly
specify the base location of your test users, you will need to manually adjust this
parameter.
6. Search for the TargetForest parameter. This parameter specifies which forest should be
used to find users and Exchange topology information. The value can be any of the
following: a NetBIOS or fully qualified domain name representing a global catalog server,
domain controller, domain in the forest, or root of the forest. This parameter has already
been set to an acceptable value if you are running LoadGenCmd when logged on with
domain credentials. If the value must be changed for any reason, you can edit it at this
point. An example of the xml script is as follows, with an accompanying discussion of the
parameters.
<TargetForest>E12</TargetForest>
<DirectoryUsername>administrator</DirectoryUsername>
<DirectoryPassword>Manager1</DirectoryPassword>
<DirectoryDomain>E12</DirectoryDomain>
<MasterPassword>Manager1</MasterPassword>
<RunLengthDuration>P0Y0M0DT8H0M0S</RunLengthDuration>
<SimulatedDayLength>P0Y0M0DT8H0M0S</SimulatedDayLength>
The DirectoryUsername, DirectoryPassword, and DirectoryDomain parameters
specify the credentials that will be used to access Active Directory during the test.
You will minimally need to adjust the DirectoryPassword parameter.
The MasterPassword and MasterDomain parameters specify the domain and
password that can be used to authenticate with each test account. You will minimally
need to set the MasterPassword parameter equal to the password that you specified
when you created the test accounts.
The RunLengthDuration parameter specifies how long a test will run before
stopping. By default, this is equal to 1 hour. The parameter is specified by using the
ISO 8601 extended format of PaYbMcDTdHeMfS where a equals the number of
years, b equals the number of months, c equals the number of days, d equals the
number of hours, e equals the number of minutes, and f equals the number of
seconds. A value of P0Y0M0DT1H0M0S means 1 hour, as does PT1H. To change
this to an 8-hour test, you could use P8HS as the value. If you want the test to run
with an infinite duration, specify a duration of 0, for example PT0S.
To define RunLengthDuration at each user group, specify this global
RunLengthDuration as 0.
15
7. Save your configuration file.
Browse Calendar
BrowseCalendar opens the Calendar folder and performs modify or delete actions on content
within the folder. If BrowseCalendarActionCount is 0, no action will be performed on calendar
items.
Parameter Comment
Browse Contacts
BrowseContacts opens the Contacts folder and performs modify actions on content within the
folder.
There are no parameters for this task.
16
Browse Public Folder
BrowsePublicFolder browses Public Folder content. This action can include opening 1 or more
(1-n) public folders, reading new content, reading 0 or more (0-n) previously read messages,
creating or deleting sub folders, and performing the same processing actions that the
ReadAndProcessMessages task performs on mailbox content.
Parameter Comment
17
Parameter Comment
Browse Tasks
BrowseTasks opens the Tasks folder and performs modify or delete actions on content within the
folder. The status of the task must be complete before a deletion is performed.
There are no parameters for this task.
Create Contact
CreateContact adds a contact to the Contacts folder in the user's mailbox.
There are no parameters for this task.
Create Folder
CreateFolder creates a folder in the mailbox folder hierarchy. The CreateFolder task can be
tuned to create at the top level of the hierarchy at a given percentage, and also takes minimum,
maximum, and average parameters for the desired hierarchy depth.
Parameter Comment
Create Tasks
CreateTask adds a task to the Tasks folder in the user's mailbox.
No parameters for this task.
18
Delete Mail
DeleteMail deletes mail from a selected folder, which is controlled by
DeleteFromDeletedItemsPercentage. If you are not deleting from the DeletedItems folder,
Exchange Load Generator randomly selects one from any other folder. The source folder can be
weighted to select the Deleted Items folder.
Parameter Comment
Parameter Comment
Edit Rules
EditRules modifies the rules in a user's mailbox. This can include create, change, and delete
operations.
Parameter Comment
19
Parameter Comment
20
Parameter Comment
Parameter Comment
21
Parameter Comment
Export Mail
ExportMail simulates the effect of exporting the content of a folder from the mailbox. The
ExportMail task can be configured to include subfolders of the selected folder, or the whole
mailbox.
22
Note:
This action does not actually result in content being stored locally on the client as that will
not scale. The task only simulates the effect of the server of performing this action.
Parameter Comment
Logoff
Logoff disconnects from the server in such a way that client and server side resources
associated with the user connection are released.
Parameter Comment
Logon
Logon establishes a user connection to the server. Depending on the type of client being
simulated, this can involve more than one connection being established, and can involve any
processing that is typically run as part of starting the client or performing a user initiated action
within the client to establish a connection to the server. For example: authentication, fetching any
information that is required to build the user interface, and so on.
Parameter Comment
Make Appointment
MakeAppointment adds an appointment to the calendar folder in the user's mailbox.
Parameter Comment
23
Parameter Comment
Move Mail
MoveMail moves messages from a selected folder to another selected folder in the mailbox. The
source folder selection can be weighted to select the Inbox, and the destination folder can be
weighted to select the Deleted Items folder.
Parameter Comment
Note:
This task will not be run if the user's mailbox is running Exchange 2013.
Parameter Comments
24
Public Folder Post
PublicFolderPost post a single item to a Public Folder.
Parameter Comments
Parameter Comment
25
Parameter Comment
Request Meeting
RequestMeeting sends a meeting request message to a set of recipients.
Parameter Comment
26
Parameter Comment
Search
Search performs a content search on a folder or throughout the whole mailbox. This results in the
default search behavior for the client platform. For example, on a cached mode Outlook client,
this would be a no-op. For an online mode Outlook client, this would call into the content index
(CI) on an Exchange 2013 server.
Synchronize Folders
SynchronizeFolders simulates the effect of the server during a synchronize folders operation.
This should simulate the actual effect on the server that would be caused by synchronizing a local
version of mailbox data with the data that is stored on the server that uses whatever method is
appropriate for the given client type and protocol.
MailboxStoreProfile
Parameter Comment
27
Parameter Comment
28
Parameter Comment
PublicStoreProfile
Parameter Comment
29
Parameter Comment
30
To define the wait duration for a user group
1. Open the LoadGenConfig.xml file by using Notepad or a similar editor.
2. Navigate to the user group of your choice.
3. Set the <StartWaitDuration> tag to the duration of your choice. The user group will not
run simulation until the defined duration has passed after the engine has started.
Note:
We recommend that you set global <RunLengthDuration/> to 0 if you are going to
customize durations for individual user groups. If global <RunLengthDuration/> is
defined, individual user groups cannot have a longer duration than the global
duration. Otherwise, the duration for the individual user group will be overwritten by
the global duration.
<SortField>2</SortField>
<TaskConfigList>
<TaskConfig d6p1:type="InitializeMailboxTask"
xmlns:d6p1="http://www.w3.org/2001/XMLSchema-instance">
<TaskCount>1</TaskCount>
<TaskParameters d6p1:type="InitializeMailboxTaskParameters">
<InboxUnreadPercentage>0</InboxUnreadPercentage>
<NewFolderUnreadPercentage>0</NewFolderUnreadPercentage>
31
<BuildInboxRules>true</BuildInboxRules>
<FixUpInboxRules>false</FixUpInboxRules>
<InboxMessageCount>42</InboxMessageCount>
<DeletedMessageCount>6</DeletedMessageCount>
<NewFolderCount>5</NewFolderCount>
<DeepFolderCount>0</DeepFolderCount>
<DeepFolderDepth>0</DeepFolderDepth>
<NewFolderMessageCount>4</NewFolderMessageCount>
<ConversationCount>0</ConversationCount>
<MinConversationSize>2</MinConversationSize>
<MaxConversationSize>2</MaxConversationSize>
<AvgConversationSize>2</AvgConversationSize>
<MinConversationFolderSpan>1</MinConversationFolderSpan>
<MaxConversationFolderSpan>1</MaxConversationFolderSpan>
<AvgConversationFolderSpan>1</AvgConversationFolderSpan>
<SmartFolderCount>3</SmartFolderCount>
<KeepExistingSmartFolders>false</KeepExistingSmartFolders>
<InboxRuleCount>8</InboxRuleCount>
<AppointmentCount>25</AppointmentCount>
<ContactCount>30</ContactCount>
<UseOrdinalFolderName>false</UseOrdinalFolderName>
<InitializeFreeBusy>true</InitializeFreeBusy>
<InitializeIndices>true</InitializeIndices>
<InitializeCachedModeIndices>false</InitializeCachedModeIndices>
<MessagePercentageRecent>0</MessagePercentageRecent>
<MessageRecentContentTimeFrame>-P0Y0M0DT0H0M0S</MessageRecentContentTimeFrame>
<MessageContentTimeFrame>P0Y2M0DT0H0M0S</MessageContentTimeFrame>
<AppointmentPercentageRecent>0</AppointmentPercentageRecent>
<AppointmentRecentContentTimeFrame>-P0Y0M0DT0H0M0S</AppointmentRecentContentTimeFr
ame>
<AppointmentContentTimeFrame>P1Y0M0DT0H0M0S</AppointmentContentTimeFrame>
<NewAppointmentWithReminderSetPercentage>0</NewAppointmentWithReminderSetPercentag
e>
<FixUpCalendarReminders>false</FixUpCalendarReminders>
32
<TaskCount>0</TaskCount>
<MessageFiles />
</TaskParameters>
</TaskConfig>
</TaskConfigList>
<WellKnownProfileType>2 MB</WellKnownProfileType>
</MailboxStoreProfile>
<SortField>2147483626</SortField>
<TaskConfigList>
<TaskConfig d4p1:type="InitializePublicStoreTask"
xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">
<TaskCount>0</TaskCount>
<TaskParameters d4p1:type="InitializePublicStoreParameters">
<MessageFiles/>
<TopLevelFolderCount>1</TopLevelFolderCount>
<NonTopLevelFolderCount>1</NonTopLevelFolderCount>
<MinimumFolderDepth>1</MinimumFolderDepth>
<AverageFolderDepth>2</AverageFolderDepth>
<MaximumFolderDepth>3</MaximumFolderDepth>
<MinimumMessageCount>5</MinimumMessageCount>
<AverageMessageCount>10</AverageMessageCount>
<MaximumMessageCount>15</MaximumMessageCount>
<UseOrdinalFolderName>false</UseOrdinalFolderName>
</TaskParameters>
</TaskConfig>
</TaskConfigList>
<WellKnownProfileType>Default</WellKnownProfileType>
</PublicStoreProfile>
33
To customize the concurrency profile
1. Open the LoadGenConfig.xml file by using Notepad or a similar editor.
2. Customize the concurrency profile by adding, removing, or modifying the
<ConcurrencyListEntry> tag in the configuration file. For example, the following
concurrency profile defines two <ConcurrencyListEntry> tags with different concurrency
percentages for different durations in the day.
<ConcurrencyProfile>
<SortField>2147483623</SortField>
<TaskConfigList>
<TaskConfig d6p1:type="ConcurrencyTask"
xmlns:d6p1="http://www.w3.org/2001/XMLSchema-instance">
<TaskCount>0</TaskCount>
<TaskParameters d6p1:type="ConcurrencyParameters">
<ConcurrencyTimeline>
<ConcurrencyListEntry>
<Duration>P0Y0M0DT2H0M0S</Duration>
<ConcurrencyPercent>100</ConcurrencyPercent>
<UserSessionMinDuration>P0Y0M0DT4H0M0S</UserSessionMinDuration>
<UserSessionAvgDuration>P0Y0M0DT4H0M0S</UserSessionAvgDuration>
<UserSessionMaxDuration>P0Y0M0DT4H0M0S</UserSessionMaxDuration>
</ConcurrencyListEntry>
<ConcurrencyListEntry>
<Duration>P0Y0M0DT8H0M0S</Duration>
<ConcurrencyPercent>80</ConcurrencyPercent>
<UserSessionMinDuration>P0Y0M0DT4H0M0S</UserSessionMinDuration>
<UserSessionAvgDuration>P0Y0M0DT4H0M0S</UserSessionAvgDuration>
<UserSessionMaxDuration>P0Y0M0DT4H0M0S</UserSessionMaxDuration>
</ConcurrencyListEntry>
</ConcurrencyTimeline>
</TaskParameters>
</TaskConfig>
</TaskConfigList>
34
<WellKnownProfileType>Default</WellKnownProfileType>
</ConcurrencyProfile>
Note:
Make sure that you start the Microsoft Exchange Load Generator Remote Agent service
on the remote load generator before you start the simulation.
<EnableRemoteDistribution>false</EnableRemoteDistribution>
<EnablePerUserGroupDistribution>false</EnablePerUserGroupDistribution>
<RemoteLoadGenerators>
<RemoteLoadGenerator Name="RemoteMachine1">
<UserGroups />
</RemoteLoadGenerator>
<RemoteLoadGenerator Name="RemoteMachine2">
<UserGroups />
</RemoteLoadGenerator>
</RemoteLoadGenerators>
<LogLevel>Warning</LogLevel>
<PerfmonCountersRefreshTimeinSeconds>5</PerfmonCountersRefreshTimeinSeconds>
</RemoteProfile>
Note:
Although the master computer can also be configured as a load generator, we do
not recommend that you do this. This is because the Exchange Load Generator
counters will no longer be accurate.
35
To enable remote control in the graphical user interface
1. Open the application.
2. On the Remote configuration page, click Enable task engine to distribute the load to
remote load generators.
3. On the Remote configuration page, click Enable load balancing on remote load
generators to enable or disable load balancing.
4. From the drop-down list in Remote logging level, select the log level that you want.
5. Add or delete load generators using the Remote Load Generators selection box.
36
can either disable the search service if you are not concerned about accuracy. Or if you do, you
have two choices for running the Exchange Load Generator initialization.
Run Exchange Load Generator initialization on the server with search service disabled during
initialization. As soon as the initialization has finished, enable the search service and let it
complete the indexing process all at one time. Be aware that this activity could take a very
long time.
When you initialize the test, Exchange Load Generator adds or deletes messages in the Inbox
and folders of each user in the test so that each mailbox has the number of messages specified
in the <MailboxStoreProfile> tag. Calendar items and Contacts are handled similarly. Therefore
you can re-run initialization to set the mailboxes back to how they were before you ran the test.
Note:
Initialization can take several hours, or even a full day(s), to finish.
The procedure in this topic describes how to initialize the test using the command line and the
configuration file. When you use this method, you must run a separate command for the mailbox
store and for the public store.
If you use the graphical user interface, the mailbox store and public store initialization is
automatically done together. You can step through the user interface until you are at the
Configuration summary page, where you are given two choices:
Start the initialization phase. We recommend that you do this before you run the test.
Skip the initialization phase and run the simulation immediately
Important
To view detailed trace information about the actions that the tool is doing, you can add a trace
listener as a command-line option. Trace listeners can be files. Alternatively, they can be the
console if you want to view the output on screen. To view the output on screen, add the
option /add console. To output the trace.log, add the /add trace.log option at the command
line. For example:
C: \Program Files\Exchange Server Load Generator>LoadGenCmd.exe /i
/add trace.log
Microsoft Exchange Load Generator
Configuring LoadGen task engine…
37
Load settings…
NOTE: There are no trace listeners found. You can add/remove shared
trace listeners.
Starting mailbox initialization…
3. Monitor the progress of initialization tasks by using performance counters. Click Start,
click Run, type perfmon, and then click OK.
4. Add the following performance counters to your view:
Exchange Load Generator(_Total)\Task Queue Length
Exchange Load Generator(_Total)\Tasks Completed
Exchange Load Generator(_Total)\Tasks Dispatched
The Tasks Dispatched counter equals the number of users whom you have
configured for the test. One initialization task is dispatched for each user during the
initialization process. The Tasks Completed counter shows the number of initialization
tasks that have been completed. This value slowly increases to equal the value of the
Tasks Dispatched counter until the initialization process is complete. The Tasks
Queue Length counter displays the number of tasks that remain to be run. This value
goes to zero when the initialization process is finished.
5. To cancel the initialization process, see How to Stop the Simulation Process.
Note:
During initialization, Exchange Load Generator will stop if it encounters errors
such as network errors or errors connecting to the Exchange server or
Active Directory. If you restart the initialization after you resolve the errors,
Exchange Load Generator restarts with the first user. It does not delete and re-
create the messages already in the Inbox and folders. This applies also to
Calendar items and Contacts.
6. If you decide to initialize public folders, run the command LoadGenCmd.exe /p /c
<configuration file>, where configuration file is the name of your configuration file.
Exchange Load Generator randomly determines the number of subfolders and messages
in each folder, based on the minimum, maximum, and average parameters that are set in
<PublicStoreProfile>.
When Exchange Load Generator determines the number of subfolders and messages to
create, it will create them if the number of existing folders is less. Alternatively, Exchange
Load Generator will delete some existing public folders if the number of existing folders is
more. If Exchange Load Generator stops the initialization, when you run it again and
decide to initialize public folders again, the number of subfolders and messages
Exchange Load Generator creates will not necessarily match the numbers from the
previous initialization. We recommend that you delete all existing public folders before
you run initialization again.
38
How to Run the Exchange Load Generator Test
A typical test that has an average number of users is set to take ten hours as the duration of the
simulation. Allow for at least two hours for a sufficient warm-up. After this warm-up period, the
clients and the server operate at a sustained baseline because the intensive startup processes
have completed. After the server starts and code is paged into memory, the server operates in a
consistent pattern. If the mailbox store database is new, more database activity can occur as
index pages split. The server does not reach a sustained baseline for adequate benchmarking
until this activity level decreases.
You should collect test information when the server is in this consistent state. After the server has
reached a sustained baseline, it must run long enough to collect statistically significant data. The
time this takes depends on the complexity of the user model and the cumulative rate at which
user actions are being generated. Perform a long calibration test run before you run your actual
tests. For example, if you perform an eight-hour test run and find variation from hour to hour, but
not between two-hour segments, the results are consistent. This indicates that your test runs
should include at least two hours where the server has reached a sustained baseline of
consistent behavior.
For information about performance counters and running Performance Monitor (Perfmon) so that
you can monitor the progress of the simulation, see Performance Counters Reference.
Important:
To view detailed trace information about the actions that the tool is performing,
you can add a "trace listener" as a command-line option. Trace listeners can be
either files or the console, if you want to view the output on screen. To view the
output on screen, add this option to the command line: /add console. To output
to a file that is named trace log, add this option to the command line: /add
trace.log.
5. For running a test using the graphical user interface, after you have opened the tool,
follow the instructions on the Welcome page to Start a new test.
39
How to Stop the Simulation Process
From the graphical user interface, on the Simulation in Progress screen, click Stop Simulation.
From the command line, to cancel the process from the keyboard, press the keyboard shortcut
Ctrl+C. The task engine will be stopped as soon as possible. To force the task engine to stop
immediately, press Ctrl+C repeatedly until you are returned to a command prompt.
40
Action Argument Example of use Description
Note:
You can edit the XML file by using an editor of your choice. To download XML Notepad
2007, go to the XML Downloads page at http://go.microsoft.com/fwlink/?linkid=8078.
A typical scenario for setting parameters is as follows:
Generate a new configuration file by using LoadGenCmd.exe /g.
Open the configuration file and change parameters as required. Important XML tags include
<ActionProfile> and <ActionCount>.
There is an <ActionProfile> tag for each defined user group. This tag indicates the start
of the XML that is related to tasks and their parameters, for a particular user group.
41
In the XML script, a task is of the format <tasknameActionCount>. Therefore, for the
logon task, this would be <LogonActionCount>.
Additionally, <ActionProfile> has the WellKnownProfileType attribute, which will contain a
value like Outlook_200 or Custom (same as the UI drop down). If you select the Custom
profile, the task parameters can be changed according to the user requirements of the
simulation.
Caution:
We encourage you to use the well-known profiles that are provided by Exchange
Load Generator. Avoid creating a custom profile unless you are very familiar with
Exchange Load Generator parameters, and you understand what type of
difference your customization will make in terms of the load that is generated on
the server.
42
BrowseContacts
BrowsePublicFolder
BrowseTasks
CreateContact
CreateFolder
CreateTask
DeleteFolder
DeleteMail
DownloadOab
EditRules
EditSmartFolders
ExportMail
Logoff
Logon
MailboxStoreProfile
MakeAppointment
MoveMail
PostFreeBusy
PublicFolderPost
PublicStoreProfile
ReadAndProcessMessages
RequestMeeting
SendMail
Search
43
You should log the System Monitor data from both the Exchange server and the Exchange Load
Generator client on a single, separate computer. For more information about consolidating your
log files on a single computer, see How to Consolidate System Monitor Data.
44
To log all Exchange Load Generator counters and Exchange server counters to one
data log
1. Log on to the computer on the domain where you want to log all System Monitor data.
2. Open Services: Click Start, point to Programs, point to Administrative Tools, click
Computer Management, and then click Services.
3. In Services, in the results pane, under Name, right-click Performance Logs and Alerts,
and then click Properties.
4. In Performance Logs and Alerts Properties (Local Computer), click the Log On tab,
and then click This account.
5. Click Browse.
6. In Select User, select the domain administrator account, and then click OK.
7. On the Log On tab, in the Password box, type the password for the domain
administrator account.
8. In the Confirm password box, retype the password for the domain administrator
account.
9. Click OK.
10. Close Services.
11. Click Start, click Run, and then type perfmon.msc to access the Performance dialog
box.
12. In Performance, click System Monitor, and then click the Add (+) icon on the toolbar to
open the Add Counters dialog box.
13. In the Add Counters dialog box, click Select counters from computer, and then type
the server or client name in the corresponding list.
14. In the Performance object list, select the performance object to add. Minimally, you
should add Exchange Load Generator Engine and Exchange Load Generator User
Groups for each client.
15. Click All counters to add all counters for the object, or click Select counters from list to
individually select the counters to be added for the object.
16. Repeat Steps 14 and 15 for each performance object to be monitored for this computer.
17. Repeat Steps 12 to 16 for each additional client or server for which you want to
consolidate the logs.
45
Simulating Cached Mode
Exchange Load Generator simulates the cached mode of Microsoft Office Outlook 2003 and later
versions, through a combination of tasks that are common to online mode. To simulate cached
mode, use the Cached Mode client type as a starting point to increasing and decreasing task
frequencies to match your user profiles.
46
Completed/sec and \Exchange Load Generator Engine\Task Dispatched/sec should also match.
This means that the client is catching up. Usually the out-of-memory problem or MAPI connection
errors occur you hit the CPU bottleneck.
Important:
Although Exchange Load Generator can be used to verify your deployment in various
ways, it should not be used in production environments.
We recommend that Exchange Load Generator be run for verification in separate topologies and
then rolled out on production environments. Also, it is a good idea to run each Exchange Load
Generator test multiple times. This will help make sure of the validity of your results.
Caution:
We encourage you to use the well-known profiles such as "200" that are provided by
Exchange Load Generator. Avoid creating a custom profile unless you are very familiar
with Exchange Load Generator parameters, and you understand what type of difference
your customization will make in terms of the load that is generated on the server.
47
To control the stress load that Exchange Load Generator puts on the Exchange server, you can
change the duration settings of the simulation in the Specify test settings page of the graphical
user interface, and enable or disable tasks. Exchange Load Generator calculates the stress from
the frequencies of the tasks, and then spreads the load homogeneously across the configured
length of the simulation day. For example, if Exchange Load Generator must run a task four times
in an eight-hour daytime period, it will run a task every two hours. By increasing the task
frequency to eight times a day and keeping the length of the simulation day setting the same, a
task will be run every hour, thereby doubling the stress load. Therefore, if the length of the
simulation day increased, the stress is actually diminished, because the same load is spread over
a longer time. To increase the stress load, increase the task frequencies and/or reduce the
simulation day length.
Note:
Backing up and restoring databases to skip repeating the initialization phase makes
sense only if the initialization and topology settings are unchanged between test runs for
the server in question.
48
If there are several messages in the queue, this indicates a server bottleneck. Because the server
must operate at a consistent baseline for sufficient benchmarking, a server bottleneck invalidates
your test results. For example, if the queue is continually growing for the whole duration of the
test, the server is probably overloaded. This indicates a bottleneck.
Public Folders
Exchange Load Generator has two public folder tasks: Public Folder Post and Browse Public
Folder. Both tasks will choose any public folder in the MAPI TLH (the default public folder root),
except for one named Internet Newsgroups.
Exchange Load Generator can choose other folders to browse or post, even if it did not create
them. Therefore, in such an attempt, Exchange Load Generator may not always run some tasks
and indicate it had access denied. We recommend that you have only the public folders that were
created by Exchange Load Generator.
When Exchange Load Generator creates its public folders, it changes the permissions to give
owner rights as default. This means that any user can edit, delete, or add new posts. This is
required for Exchange Load Generator to simulate multiple users when logging on to users using
their respective accounts. If the permissions are changed in any way, Exchange Load Generator
might not always create posts or browse the public folders.
49
The other scenario is with regard to sending a new mail. When sending a new mail, Exchange
Load Generator uses the information in the send mail task for selecting the number of recipients
and whether distribution groups and query-based distribution groups should be added. After this
step, Exchange Load Generator chooses the recipients based on the test group configuration.
For example, if the topology settings are configured so that a server has 1,000 users and the test
targets only 10 users, Exchange Load Generator will only consider 10 users as possible
recipients. Additionally, the distribution groups and query-based distribution groups will be
configured to the 1,000 users. Therefore any mail going to them will end up in users other than
the 10 users.
50
Dynamic Mail Generator
Mail messages are now created dynamically as they are needed. This ensures a more unique
message mix that is closer to a real environment. The word frequency it based on the language of
choice.
The dynamic mail generator has a number of settings that you can specify.
o Min/Max/Avg message size
o Default language (English, French, Spanish, Korean, Turkish)
o Language Variation %
o Default Body Type (html, rtf, text)
o Body Type Variation %
o Attachments (just drop the attachments that you want to use into the folder where
the Dynamic Mail Generator is looking.
The dynamic mail generator is setup by default for initialization as well as sending mail.
We currently do not have a UI for this feature. You will have to customize your Loadgen XML to
change the default settings.
51
In order to use attachments, specify them in the MessageFiles section of the
GeneratedMailProfile.
52
File name Content type Size (in bytes) in DAV
53
File name Content type Size (in bytes) in DAV
Note:
Do not use the Exchange Load Generator latency counters as a measure of acceptable
performance with regard to latency. Instead, use the RPC averaged latency counter on
the server.
54
Counter Purpose
Counter Purpose
Browse Calendar Action Latency (95th The 95th percentile value of the time (in
55
Counter Purpose
Browse Contacts Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Browse
Contacts action
Browse Public Folder Action Latency Average time (in milliseconds) taken to
complete a Browse Public Folder action
Browse Public Folder Actions Total Browse Public Folder actions executed
Browse Public Folder Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Browse
Public Folder action
Browse Tasks Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Browse
Tasks action
Create Contact Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create
Content action
56
Counter Purpose
Create Folder Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create
Folder action
Create Task Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create Task
action
Delete Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Delete Mail
action
Download OAB Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Download
OAB action
57
Counter Purpose
Edit Rules Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete an Edit Rules
action
Edit Smart Folders Action Latency Average time (in milliseconds) taken to
complete an Edit Smart Folders action
Edit Smart Folders Actions Total Edit Smart Folders actions executed
Edit Smart Folders Actions/sec. Count of Edit Smart Folders actions executed
per second
Edit Smart Folders Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete an Edit Smart
Folders action
Export Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete an Export Mail
action
Initialize Mailbox Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete an Initialize
Mailbox action
58
Counter Purpose
Logoff Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Logoff action
Logon Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Logon action
Make Appointment Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Make
Appointment action
Move Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Move Mail
action
Not Implemented Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Not
Implemented action
Post Free Busy Action Latency Average time (in milliseconds) taken to
complete a Post Free Busy action
59
Counter Purpose
Post Free Busy Actions Total Post Free Busy actions executed
Post Free Busy Actions/sec. Count of Post Free Busy actions executed per
second
Post Free Busy Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Post Free
Busy action
Public Folder Post Action Latency Average time (in milliseconds) taken to
complete a Public Folder Post action
Public Folder Post Actions Total Public Folder Post actions executed
Public Folder Post Actions/sec. Count of Public Folder Post actions executed
per second
Public Folder Post Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Public Folder
Post action
Read And Process Messages Action Latency Average time (in milliseconds) taken to
complete a Read And Process Messages
action
Read And Process Messages Actions Total Read And Process Messages actions
executed
Read And Process Messages Actions/sec. Count of Read And Process Messages actions
executed per second
Read and Process Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Read and
Process action
Request Meeting Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Request
Meeting action
60
Counter Purpose
Search Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Search
action
Send Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Send Mail
action
Synchronize Folders Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Synchronize
Folders action
User Init Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a User Init
action
61
Counter Purpose
User Term Action Latency The 95th percentile value of the time (in
milliseconds) taken to complete a User Term
action
Tag Description
62
Tag Description
63
<ClientType>SmtpModule</ClientType>
<Name>UserGroup2</Name>
<LdapBaseDn>OU=FewUsers,DC=XZPVCB,DC=com</LdapBaseDn>
<StartWaitDuration>P0Y0M0DT0H0M0S</StartWaitDuration>
<RunLengthDuration>P0Y0M0DT14H0M00S</RunLengthDuration>
</UserGroup>
<ClientType/>under<UserGroup/> is used to define which scripted module to simulate. Following
is a list of client types supported by Exchange Load Generator.
<ClientType>SmtpModule</ClientType>
<ClientType>PopModule</ClientType>
<ClientType>ImapModule</ClientType>
<ClientType>Owa2013Module</ClientType>
Note:
Instances of variables and verbs are not related. That is, SEQULIST will be sequential for
each script instance.
Table of Verbs
The following table lists the verbs and their functions.
Verb Function
64
Verb Function
Matches "samesequlist\\(([-_:\\\\.#a-z0-9A-Z]
+)\\)"
Example: SEQULIST(C:\temp\myfilelist.txt)
returns “hello0”
Example: SAMESEQULIST(C:\temp\
myfilelist.txt) returns “hello0”
65
Verb Function
time.
Matches "%([0-9]+)"
Example: %40 RCPT TO: [email protected]
66
Verb Function
USER.username
USER.userPassword
USER.domain
Variable Behavior
All script-based modules support simple variables which enable you to store values and do
simple operations. Declaration and initial value is:
The default value is string.empty.
There are 2 types: string and integer.
There are no operators in the SET command.
The reserved patterns are "\$[^\$^ ]+\$" and "~userVar".
SET <$var$> [initial value]
SET $myvar$
SET $myvar1$ 1
SET $myVAR2$ the world
SET $MyVar3$ RANDNUMBER(0,1)
NO SET $MyVar4$ $Myvar3$
NO RANDNUMBER(0,$myVar$)
Integer Operators
All operations return a string: += and -=. Change the value of the left operand. Operations other
than SET on a string variable return the unchanged value of the variable. Precedence is right to
left replacement with the universal variables being replaced first.
+
$myvar$ + 4
$myVar$ + $myvar2$
$myVar$ + RANDNUMBER(0,100)
++
$myvar$++
+=
$myvar$ += 5
$myvar$+=$myvar2$
-
$myvar$ - 4
$myVar$ - $myvar2$
67
$myVar$ - RANDNUMBER(0,100)
--
$myvar$--
-=
$myvar$ -= 5
$myvar$ -= $myvar2$
68
Script verb Function
Sample Script
The following is sample script for running the POP3 module.
REM. Assumes that there are at least 10 items in the Inbox.
CONNECT
STLS
LOGON
STAT
LIST
UIDL RANDNUMBER(1,10)
RETR RANDNUMBER(1,9)
TOP 1 10
DELE 4
SLEEP RANDNUMBER(0,20)
RSET
SLEEP RANDNUMBER(0,20)
NOOP
QUIT
SLEEP RANDNUMBER(1800,2400)
69
Options for how the test executes
Security options
Examples of options are the server that this client is targeting or the port number. Client actions
are simulated by running a script that contains scripted module keywords and SMTP verbs.
This module also implements performance counters for protocol statistics. Additionally, you can
log client actions and server responses during a test run. You cannot configure the events that
are logged.
MAIL FROM <smtp address> Sends the MAIL FROM command. Defaults to
current user.
NOOP Do nothing.
Sample Script
The following is sample script for running the SMTP module.
CONNECT
70
EHLO ADMIN
STARTTLS
EHLO
AUTH NTLM
MAIL FROM: user.emailaddress
RCPT TO: SEQUUSER.emailaddress
RCPT TO: RANDUSER.emailaddress
RCPT TO: NEARBY.emailaddress
RCPT TO:
%40 RCPT TO:
%30 RCPT TO:
BDAT RANDLIST(d:\loadgen\perfbh\Exiser-Perf-BH-Inbound-messages.txt)
NOOP
QUIT
Sleep RANDNUMBER(500,1000)
APPEND <mailbox name> <file name> Appends the contents of <filename> to the
mailbox.
71
Script verb Function
FETCH <num><msg data item string> Returns the item or set of items.
NOOP Do nothing.
72
Script verb Function
value>
UIDFETCH <num><msg data item set> Uses the UID to fetch an object.
Sample Script
The following is sample script for running the IMAP4 module.
REM # This script assumes the presence of at least 10 message currently
in the users INBOX
REM # And will create said structure
REM # This script will leave the INBOX with the first 10 messages of the
INBOX remaining... all others will be purged.
CONNECT
STARTTLS
REM LOGIN
AUTHENTICATE NTLM
SLEEP RANDNUMBER(0,100)
CAPABILITY
SELECT "INBOX"
LOOP 10
APPEND "INBOX" .\scripts\file1.txt
SLEEP RANDNUMBER(0,100)
ENDLOOP
LOGOUT
CONNECT
STARTTLS
LOGIN
SELECT "INBOX"
CREATE "BackMeUp"
COPY 1:10 "BackMeUp"
73
CREATE "Other Mail"
CREATE "Trash"
IDLE
DONE
LIST "" "*"
SELECT "INBOX"
FETCHUID
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
UIDFETCH FIRST 1 (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 2 "Other Mail"
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 2 "Other Mail"
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
CHECK
SLEEP RANDNUMBER(1000,2000)
NOOP
74
FETCH LAST 1 (UID)
UIDCOPY LAST 2 "Other Mail"
UIDSTORE LAST 2 +FLAGS (\Deleted)
CLOSE
SELECT "Other Mail"
FETCHUID
UIDFETCH 1:* (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
UIDFETCH FIRST 1 (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
FETCHUID
UIDCOPY LAST 4 "Trash"
UIDSTORE LAST 4 +FLAGS (\Deleted)
SLEEP RANDNUMBER(1000,2000)
CLOSE
SELECT "INBOX"
FETCHUID
UIDFETCH 1:10 (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
SLEEP RANDNUMBER(1000,2000)
UIDCOPY LAST 5 "Trash"
UIDSTORE UIDALL +FLAGS (\Deleted)
EXPUNGE
CLOSE
SELECT "TRASH"
STORE ALL +FLAGS (\DELETED)
75
EXPUNGE
LIST "TRASH" "*"
DELETE "Other Mail"
DELETE "TRASH"
CLOSE
SELECT "BackMeUp"
COPY 1:10 "INBOX"
DELETE "BackMeUp"
LOGOUT
SKIP(12)
Auth Command
The Auth command sends authentication tokens to the server as part of the logon process. The
command syntax is as follows:
Auth
CreateAppointment Command
The CreateAppointment command creates an appointment on the user’s calendar. The command
syntax is as follows:
CreateAppointment
CreateAttachmentFromForm Command
The CreateAttachmentFromForm command uploads a simulated attachment to the in scope item.
The command syntax is as follows:
76
CreateAttachmentFromForm
CreateFolder Command
The CreateFolder command creates a subfolder beneath a specified folder. The name of the
created folder is generated by the module and cannot be manipulated. The command syntax is
as follows:
CreateFolder <parent folder path>
An example of command usage is as follows:
CreateFolder Inbox
CreateSaveItem Command
The CreateSaveItem command creates a new item to be persisted in the mailbox. The command
syntax is as follows:
CreateSaveItem
CreateSendItem Command
The CreateSendItem command creates a new item to be persisted in the mailbox and sent to
configured recipients. The command syntax is as follows:
CreateSendItem
DeleteConversation Command
The DeleteConversation command deletes items associated with a conversation. The default
behavior of the command with no arguments will delete the active conversation. Alternatively, the
additional parameter “random” will cause the command to delete a random conversation. The
command syntax is as follows:
DeleteConversation
DeleteConversation random
DeleteItem Command
The DeleteItem command deletes an item from the active conversation. The command syntax is
as follows:
DeleteItem
FindAllCachedPeople Command
The FindAllCachedPeople command queries all people in the user’s recipient cache. The
command syntax is as follows:
FindAllCachedPeople
77
FindCalendarItem Command
The FindCalendarItem command finds calendar items within a given view of the calendar relative
to the current date. Acceptable parameters include “day”, “workweek”, “week”, and “month”. The
command syntax is as follows:
FindCalendarItem <calendar view>
An example of command usage is as follows:
FindCalendarItem workweek
FindConversation Command
The FindConversation command finds a conversation. The command syntax is as follows:
FindConversation
FindFolder Command
The FindFolder command finds folders. The command syntax is as follows:
FindFolder
FindItem Command
The FindItem command finds items contained in the specified folder. The command syntax is as
follows:
FindItem <folder path>
An example of command usage is as follows:
FindItem Inbox
FindPeople Command
The FindPeople command finds people using the specified search string. The command syntax is
as follows:
FindPeople <search string>
An example of command usage is as follows:
FindPeople SomeString
FindSenderItself Command
The FindSenderItself command finds the user associated with the OWA session. The command
syntax is as follows:
FindSenderItself
GetAuthenticationPage Command
78
The GetAuthenticationPage command requests the OWA logon page as part of the logon
sequence. The command syntax is as follows:
GetAuthenticationPage
GetCalendarFolders Command
The GetCalendarFolders command retrieves all calendar folders for a user. The command syntax
is as follows:
GetCalendarFolders
GetCalendarItem Command
The GetCalendarItem command retrieves details for a random calendar item in the mailbox. The
command syntax is as follows:
GetCalendarItem
GetConversationItems Command
The GetConversationItems command retrieves details on the items associated with a
conversation. The default behavior of the command with no arguments will use the active
conversation. Alternatively, the additional parameter “random” will cause the command to use a
random conversation. The command syntax is as follows:
GetConversationItems
GetConversationItems random
GetFavorites Command
The GetFavorites command retrives the favorite folder list. The command syntax is as follows:
GetFavorites
GetFolder Command
The GetFolder command simulates opening the folder specified by the folder name and sets this
folder as the active folder.
The command syntax is as follows:
OpenFolder <folder name>
An example of command usage is as follows:
OpenFolder Inbox
GetItem Command
The GetItem command retrieves details associated with the active item. The command syntax is
as follows:
79
GetItem
GetMailTips Command
The GetMailTips command retrieves MailTips for the currently active person. The command
syntax is as follows:
GetMailTips
GetOwaUserConfiguration Command
The GetOwaUserConfiguration command retrieves OWA configuration information for the current
user. The command syntax is as follows:
GetOwaUserConfiguration
GetOwaUserOofSettings Command
The GetOwaUserOofSettings command retrieves OOF settings for the current user. The
command syntax is as follows:
GetOwaUserOofSettings
GetPersonaPhoto Command
The GetPersonaPhoto command retrieves a photo of the currently active person. The command
syntax is as follows:
GetPersonaPhoto
GetReminders Command
The GetReminders command retrieves reminders. The command syntax is as follows:
GetReminders
GetSessionData Command
The GetSessionData command retrieves data from the server to initialize an OWA session. The
command syntax is as follows:
GetSessionData
GetUserAvailability Command
The GetUserAvailability command retrieves availability information for the current user in the
specified timeframe relative to the current time. Acceptable parameters include “day”,
“workweek”, “week”, and “month”. The command syntax is as follows:
GetUserAvailability <timeframe>
An example of command usage is as follows:
80
GetUserAvailability week
Logoff Command
The Logoff command ends the OWA session for the user. The command syntax is as follows:
Logoff
Logon Command
The Logon command completes the logon sequence and typically follows the
GetAuthenticationPage and Auth commands. The command syntax is as follows:
Logon
MarkConversationAsRead Command
The MarkConversationAsRead command marks the currently active conversation as read. The
command syntax is as follows:
MarkConversationAsRead
MoveConversation Command
The MoveConversation command moves the active conversation to a subfolder under the current
folder. The command syntax is as follows:
MoveConversation
Search Command
The Search command searches for a specified sring. The command syntax is as follows:
Search <search string>
An example of command usage is as follows:
Search SomeString
UpdateAppointment Command
The UpdateAppointment command updates the current appointment. The command syntax is as
follows:
UpdateAppointment
UpdateItem Command
The UpdateItem command updates the current item. The command syntax is as follows:
UpdateItem
UserSpecificResourceInjector Command
81
The UserSpecificResourceInjector command submits a request to retrieve appropriate resources
for the OWA session. This is part of the typical process of establishing a new OWA session. The
command syntax is as follows:
UserSpecificResourceInjector
82
Copyright
The information contained in this document represents the current view of Microsoft Corporation
on the issues discussed as of the date of publication. Because Microsoft must respond to
changing market conditions, it should not be interpreted to be a commitment on the part of
Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the
date of publication.
This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES,
EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.
Complying with all applicable copyright laws is the responsibility of the user. Without limiting the
rights under copyright, no part of this document may be reproduced, stored in or introduced into a
retrieval system, or transmitted in any form or by any means (electronic, mechanical,
photocopying, recording, or otherwise), or for any purpose, without the express written permission
of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual
property rights covering subject matter in this document. Except as expressly provided in any
written license agreement from Microsoft, the furnishing of this document does not give you any
license to these patents, trademarks, copyrights, or other intellectual property.
Unless otherwise noted, the companies, organizations, products, domain names, e-mail
addresses, logos, people, places, and events depicted in examples herein are fictitious. No
association with any real company, organization, product, domain name, e-mail address, logo,
person, place, or event is intended or should be inferred.
© 2013 Microsoft Corporation. All rights reserved.
Microsoft, MS-DOS, Windows, Windows Server, Windows Vista, Active Directory, ActiveSync,
ActiveX, Entourage, Excel, FrontPage, Hotmail, JScript, Microsoft Press, MSDN, MSN, Outlook,
SharePoint, Visual Basic, Visual C++, Visual Studio, Win32, Windows Mobile, Windows NT, and
Windows Server System are either registered trademarks or trademarks of Microsoft Corporation
in the United States and/or other countries.
All other trademarks are property of their respective owners.
83