ShowTable of Contents
This section describes client-side best practices to ensure quick, effective, optimized name lookup searches.
Introduction
The Sametime Connect client (standalone) and Lotus Notes client are the main generators of name lookup requests. As well, certain server applications such as the Sametime Gateway, Lotus Quickr, WebSphere Portal and Lotus Connections also generate name lookup requests. When the Sametime resolve task is under heavy load, users might be unable to use it or can experience sporadic behavior from certain features as mentioned in the "Symptoms of poor Name Lookup performance" on the
main page of this guide.
One question that is commonly asked is "Why does a name lookup need to be performed if the program already know the full name or email address of the person or group?" The Sametime server works purely by tracking users and groups by an identifier, commonly referred to as a distinguished name (DN). This DN of course can be modified to another attribute such as email address in the case of LDAP environments. Once a user or group has been resolved to its DN, the name lookup does not need to be performed again. The initial name lookup must be performed, however, and there the number of requests can be a factor in performance.
Sources of Name Lookup Requests
The actions below are all sources of name lookup requests that must be handled.
Add people or public groups to the Contact List
When you add a person or public group to the Sametime contact list, the user-provided search string must be compared against one or more directory attributes. Some users might try to search on extremely short strings such as "An*" or common names such as "Smith", which will return a large number of results from the directory. Once the name has been resolved to the distinguished name, the user or group can be added to the contact list permanently.
Sametime Business Card
The Sametime Business Card searches have a very low impact to the overall Sametime environment because a search is performed for the user's DN for specific attributes only.
Sametime quick find
The Sametime "quick find" feature allows users to quickly locate people in their own contact list and in the organization's directory. The strings a user enters in the quick find box is first compared against the user's contact list. If matches are found, these results are displayed without any searches against the directory server. However, the user has the option to search the directory. If the user chooses to search the directory, a name lookup request is generated and sent to the Sametime server for processing.
Lotus Notes inbox and memo awareness
The Lotus Notes client is one of the largest generators of name lookup requests when compared to other clients. Many customers have enabled the Notes inbox awareness feature. This feature works by taking all of the names that appear on the screen in a Sametime-enabled view and sending them in a single request to the Sametime server for resolution. These names can be in the format of Notes hierarchical or canonical names, email addresses, or full names. The client takes what is present on the screen and sends the list to the Sametime server for name resolution; the client does not take every name that appears in the view. Additionally, if a user is scrolling up and down through a view, a new name lookup request is generated for names for which the Notes client does not already have a valid Sametime awareness status. Previous name lookup requests that were sent to the Sametime server for processing are not canceled once a user closes the application or changes views.
Unfortunately, many of these name lookup requests generated from Notes are not necessary. For example, any SMTP emails found in the inbox that do not belong to the customer's own organization (for example, acme.com for organization ibm.com) will never be resolved because Sametime's directory will not contain any entries with email addresses belonging to that domain, acme.com. Furthermore, only certain parts of the organization such as us.acme.com may be setup to use Sametime instant messaging, while other parts of the organization, such as the legal department (law.acme.com), may not.
To improve the performance of Notes instant messaging, the following features have been built into the Notes 6.5.4 CCH4 and later, Notes 6.5.5 FP1 and later, Notes 7.0.2, and Notes 8.x clients:
- Maintaining a "resolve request cache" of every unique name from any view or document that the user looked at throughout the course of the day. This feature avoids redundant resolve requests; however, as noted above, this cache does not persist between Notes instances.
- Maintaining a "watch list" size of 500 users. This feature limits the virtual contact list of Notes to a maximum of 500 most recent unique names, while minimizing memory consumption on the Notes client.
- Bundling name resolve requests to the Sametime server. This feature combines the unique names found in a view or document to a single request, reducing the number of requests that a Notes client will make to the Sametime server.
Optimization Recommendations
The following section contains recommendations that should be applied for the clients. Some or all of the recommendations can be applied. The recommendations are in order by those which have most benefit toward reducing the STResolve load.
Sametime Connect client
The Sametime Connect client sends name lookup requests when people or groups are added to the contact list, when a string is entered in Sametime quick find, or when information is needed to populate a Sametime business card.
There are no recommended changes for the Sametime Connect client at this time.
Lotus Notes client
Index for Notes client section:
Notes 6.x, 7.x and Notes 8.x basic configuration
- Use the latest version
- Disable public group expansion
- Affect what is displayed in views and documents
Template modifications
Disable awareness in views and documents
- Do not log on automatically
- Disable Notes instant messaging
Notes 8.x standard configuration
- Email domain whitelist
- Modify live names resolves process
Lotus Notes 6.x, 7.x and Notes 8.x (basic configuration)
If you are using Lotus Notes 6.x, 7.x clients, or the Notes 8.x basic configuration, review the recommendations below.
Ensure that the Lotus Notes client is the latest possible
Make sure you use the latest Notes client version possible for your environment. Early versions of Notes 6.x and 7.x contained design flaws that could flood the Sametime server with name lookup requests. It is imperative that the clients used in the organization are at a release where this design flaw has been corrected. The list below outlines the versions where the problem has been corrected by applying a client hotfix or fix pack:
- Lotus Notes 6.5.4 CCH6/FP2
- Lotus Notes 6.5.5 CCH1/FP1
The following versions contain the code change that addresses the issue:
- Lotus Notes 6.5.6 and later
- Lotus Notes 7.0.1 and later
- Lotus Notes 8.x and later
Disable public group expansion
By disabling public group expansion, the Notes client does not send resolve requests for public groups. This disabling eliminates the concern that users could send a large public group to the server which, when expanded, could generate thousands of resolve requests. Disabling this feature does not affect the public groups included in the a user's IM contact lists; it affects only public groups listed in the To: or CC: fields of mail documents. If not disabled, public groups would expand and be included in the IM contact list for the time the user is working with that document.
To disable public group expansion, set the following notes.ini variable on each Notes client: IM_WATCH_PUBLIC_GROUPS=0
This setting can also be issued using a desktop policy. For more information, refer to the document
"The desktop policy in the Domino Directory can be designed to set notes.ini and Location parameters" (#1196837).
This option is only available for Notes 6.5.4 CCH4, Notes 7.x, and Notes 8.x basic configuration. For the Notes 8 standard configuration, a change was made so that any public group is not expanded, even without this ini setting. Instead, the group name is submitted for name lookup as a person; because the group does not exist as a person, the name lookup fails, thus minimizing the request load. There is no corresponding parameter in the Notes 8 standard configuration client to the Notes 8 Basic client parameter of IM_WATCH_PUBLIC_GROUP.
Affect what is displayed in views and documents
To prevent Name Lookup requests, you can change whether a user's Sametime status is displayed in views and documents. To accomplish this, you can either
- turn off all status display by changing a user preference as outlined in "Disable awareness within views and documents" below, or
- if you want flexibility to show the status for some Notes applications but not others, you can modify design elements in the Notes templates
Notes Template Modifications
Most of the Sametime Resolve (Name Lookup) load from the Notes clients is generated from the various database views that have been enabled for Sametime awareness. These views in the mail file include Inbox, Sent mail, All Documents and Contacts, to name a few. A majority of users have email from both inside and outside of the organization. Email addresses and full name strings from people outside of the organization will not result in a successful name lookup against the directory server. To prevent these requests from being generated in the first place, a small change can be applied to each view that is Sametime-enabled to prevent these name lookup requests from being generated. In effect, you are placing a whitelist on the server through modifying the Notes mail template.
To implement this strategy, apply the changes described below to all views that are Sametime-enabled. You can make the change Mail templates and distribute using the design task on the Domino server.
First, open Domino Designer, open a mail file or the mail template, and locate the All Documents view. You will be changing the formula for a column called "Availability icon". The "Availability icon" column is a hidden column that is responsible for resolving the address specific to each document in this view. After the modification, external names or addresses are not calculated and not displayed in this column, thus the name lookup is never sent to the Sametime server.
The screen capture below shows the before and after result:
(Note: A "Modified Availability icon" column has been added in this example to show the result of the modifications to the "Availability icon" column).
This is the original formula for the "Availability icon" column:
SentBy := @If(Principal = ""; From; Principal);
Attendees := @Trim(RequiredAttendees : OptionalAttendees);
Who := @If(form="Appointment"; Chair; DeliveredDate != ""; SentBy; @Elements(Attendees) > 0; @Subset(Attendees; 1); SendTo = ""; SentBy; @Subset(SendTo; 1));
CN1 := @Trim(@Name([Abbreviate]; Who));
CN := @If(@Contains(@Right(Who;"@");">") & CN1="";@Trim(Who);CN1);
G := @If(CN = ""; @Trim(@Name([G]; Who)); "");
S := @If(CN = ""; @Trim(@Name([S]; Who)); "");
Person := @If(CN != ""; CN; G != ""; G + " " + S; S != ""; S; @Trim(X400FreeForm));
Person2 := @If(@Left(Person;1)="\"" & @Right(Person;1)="\""; @LeftBack(@RightBack(Person;1);1); Person);
@If(Form = "Delivery Report" : "NonDelivery Report" : "Trace Report":"Quota Report": "Recall Response";"Mail Router"; Person2
This is the modified formula used for the "Modified Availability icon" column (change included between '- - - - - section):
SentBy := @If(Principal = ""; From; Principal);
Attendees := @Trim(RequiredAttendees : OptionalAttendees);
Who := @If(form="Appointment"; Chair; DeliveredDate != ""; SentBy; @Elements(Attendees) > 0; @Subset(Attendees; 1); SendTo = ""; SentBy; @Subset(SendTo; 1));
' ----------------- Start Change -------------------
Who := @If(@Contains(Who; "/"); Who; (@Contains(Who; "us.ibm.com")); Who; "");
' ----------------- End Change ---------------------
CN1 := @Trim(@Name([Abbreviate]; Who));
CN := @If(@Contains(@Right(Who;"@");">") & CN1="";@Trim(Who);CN1);
G := @If(CN = ""; @Trim(@Name([G]; Who)); "");
S := @If(CN = ""; @Trim(@Name([S]; Who)); "");
Person := @If(CN != ""; CN; G != ""; G + " " + S; S != ""; S; @Trim(X400FreeForm));
Person2 := @If(@Left(Person;1)="\"" & @Right(Person;1)="\""; @LeftBack(@RightBack(Person;1);1); Person);
@If(Form = "Delivery Report" : "NonDelivery Report" : "Trace Report":"Quota Report": "Recall Response"; "Mail Router"; Person2)
The code segment below shows the change added to "Modified Availability icon" column formula:
Who := @If(@Contains(Who; "/"); Who; (@Contains(Who; "ibm.com")); Who; "");
This formula filters and allows resolve of hierarchical formats most likely belonging to the internal organization, and SMTP email formats that contain a static string of "ibm.com" domain. Note that any subdomains containing the string ibm.com in the name will be also resolved. It is not necessary to list each subdomain individually. Instead, list only the top level domain of "ibm.com".
Alternatively, you can list additional domains by adding additional "@Contains(Who;"
");Who" entries in the formula like follows:
Who := @If(@Contains(Who; "/"); Who; @Contains(Who; "us.ibm.com"); @Contains(Who; "domain.com"); Who; "");
Modifications similar to those above should be applied to all "Availability Icon" column of all the views containing Sametime Live Name Resolve columns.
For example:
1. Inbox
2. All Documents
3. Drafts
4. Junk mail
5. Sent
6. Follow up
7. Soft deletions
8. Trash
9. IM Transcripts
Notes Template Modifications Summary
- Add additional logic to the "Availability Icon" column formula to filter out domains allowed to be resolved. In this example, a second "Who :=" is added.
- Used in above example, this formula filters and allows resolve names of hierarchical formats and any names containing the string "ibm.com". Any subdomains containing the string "ibm.com" will be also resolved.
Who := @If(@Contains(Who; "/"); Who; (@Contains(Who; "ibm.com")); Who; "");
- This formula shows an example of adding additional domains to be resolved.
Who := @If(@Contains(Who; "/"); Who; @Contains(Who; "us.ibm.com"); @Contains(Who; "domain.com"); Who; "");
- By modifying a master template, you can modify all views that you want to disable name lookups and change the "Availability Icon" column formula to push this change to all users.
- Note that the formula changes outlined here are examples; there are other ways to achieve the same goal.
Known Issues
Unfortunately, it is not possible to completely eliminate all external email addresses to be resolved in the Notes basic version. Notes has a built-in function to resolve a name for awareness. If a user selects a document, the field built into the Notes form (the form called Message for example) has the function built into its property. However, the reduction of the majority of resolve requests stemming from Notes views prevents the Sametime STResolve service from being overloaded by Notes.
Screen capture of built-in awareness field:
Disable awareness within views and documents
You can turn off IM status for names in documents and views for all Notes applications. This setting eliminates resolve requests for those names, while still allowing chat and awareness functionality within a user's IM contact list in the Notes client.
There are three ways to disable this feature. You can select any of the following:
1. From the Notes client, select File -> Preferences -> User Preferences -> Instant Messaging -> Uncheck "Show Instant Messaging Status for Names."
2. Edit the Notes.ini on the client and set the following parameter to 0:
IM_SHOW_STATUS=0
The Notes client must be restarted for this change to take effect.
3. Use Desktop Policies to push down the notes.ini parameter to the client. Refer to Technote "How to enable/disable instant messaging preferences in the Notes client through desktop policies (1211673).
Configure Notes to not log on automatically
You can also configure your Notes client to not log into Sametime automatically. This configuration tends to substantially smooth the server load driven by Notes IM users, by extending the period until the user base achieves a steady state of resolve request caches.
To implement this, edit the user's Location document(s), go to the Instant Messaging tab - Connect: option, select Manually. This setting requires the user to initiate logon to the Sametime server either by using the status bar's IM control or by selecting File -> Instant Messaging -> Log On Instant Messaging. This option can also be configured by using server policies.
Disable Notes Instant Messaging
Note: This option should be used as an absolute last measure if the load from Notes clients cannot be mitigated in other ways.
If the Notes instant messaging (IM) load is too high for the environment, the Notes IM feature can be disabled in the Notes client by using a desktop policy. After this change, the Notes client behaves as if no Sametime server is set in the Location document and the instant messaging features is not enabled.
To implement this option, set the parameter IM_Disabled=1 in the users' notes.ini files. Refer to the technote "Enabling and Disabling Notes instant messaging in the Notes client (1117272) for additional information.
Notes 8.x (standard configuration)
The Lotus Notes 8.x client contains a modified codebase that is used in the Sametime Connect client. With the appropriate Notes level, there are two options that you can apply as follows:
Email Domain Whitelist
The Email domain whitelist allows administrators to specify a list of email domains that are valid in the Sametime community. This whitelist allows the client to filter out which email addresses are valid and should be forwarded to the Sametime server for resolution versus those which are invalid. The Notes client will not generate a name lookup request for email addresses that are deemed invalid.
The email domain whitelist feature is available in the following Notes clients:
- Notes 8.0.2 HHF252 *
- Notes 8.0.2 FP1 CCH2
- Notes 8.0.2 FP2
- Notes 8.5 HHF 99 *
- Notes 8.5 FP1
- Notes 8.5.1
Customers are strongly encouraged to upgrade to one of the client versions above to take advantage of this whitelist feature because it can significantly reduce the volume of STResolve requests generated by the Notes client.
(*Notes client hotfix availability is determined by contract type; these hotfixes are typically for strategic Accelerated Value program customers only.)
The fix in these versions employs a whitelist of domains that can be configured to be acceptable to resolve for the Notes Inbox of users in an enterprise. This whitelist is configured within the plugin_customization.ini located under \framework\rcp\ folder.
Example rules for plugin_customization.ini:
com.ibm.collaboration.realtime.people/liveNameResolverInternetFilter=ibm.com
- Explanation: @ibm.com and @ibm.com will be looked up
- Example: User john.doe@ibm.com and jane.doe@us.ibm.com are allowed to be looked up; john.doe@hotmail.com will not be looked up because the domain hotmail.com is not in the list of domains allowed
com.ibm.collaboration.realtime.people/liveNameResolverInternetFilter=ibm.com, tivoli.com, lotus.com
- Explanation: use comma-separated list of multiple domains allowed to be resolved
- Example: User john.doe@ibm.com and jane.doe@tivoli.com are allowed to be looked up
com.ibm.collaboration.realtime.people/liveNameResolverInternetFilter=non-existant-domain-name
- Explanation: Sametime will not resolve any SMTP domain names. This entry will completely disable Notes Inbox awareness
- Example:
Modify the Live Names Resolver process behavior
When using the Notes versions indicated above, the Sametime awareness within the database views is controlled by a live name resolver process. The behavior of the live names resolver can be modified through the use of the plugin_customization.ini file located under \framework\rcp\plugin_customization.ini. Updates to this file can be made through an update site or by simply overwriting the file using other software management systems.
- Disable live name awareness (does not affect the Sametime embedded client awareness)
com.ibm.collaboration.realtime.people/liveNameResolverDisabled= [true | false (default)]
- Disable checking of names that have not been resolved
com.ibm.collaboration.realtime.people/lookupFailedNames= [true (default)| false]
- To resolve live names against the primary community only
com.ibm.collaboration.realtime.people/liveNameResolvePrimaryOnly= [true (default)| false]
- Do not use the contact list when resolving names
com.ibm.collaboration.realtime.people/liveNameResolveSkipPersonCache= [true (default)| false]
- Override default canonical name lookup behavior
com.ibm.collaboration.realtime.community/useCanonicalNamesOverride= [value]
The allowed values are as follows:
- 0 = "Use canonical names" is unchecked (false) and disabled in the UI for all communities. (Notes 8.0.2 FP2/8.5)
- 1 = "Use canonical names" is checked (true) and disabled in the UI for all communities. (Notes 8.0.2 FP2/8.5)
- 2 = "Use canonical names" is unchecked (false) and disabled in the UI for default community only (Notes 8.5 only)
- 3 = "Use canonical names" is checked (true) and disabled in the UI for default community only (Notes 8.5 only)