IBM Lotus Notes 8 Recent Contacts and Type-ahead
features: FAQs and more
Robert Ransdell
Software Developer
IBM Software Group
Westford, MA
May 2009
Abstract: This article provides answers
to frequently asked questions about the IBM® Lotus® Notes® 8 Recent Contacts
feature and the Type-ahead drop-down list in Local Contacts and the Search
directory.
1 FAQ's
Q. How does Lotus Notes determine who goes
into Recent Contacts?
A.
Your Recent Contacts are the people you communicate with the most.
Lotus Notes determines this by keeping track of the number of times you
send and receive mail from each person. After you send an email or close
an email after reading it, Lotus Notes stores the contacts' information
and uses it to determine your Recent Contacts.
NOTE: If you read an email only in
the preview pane, Lotus Notes will not process the contacts' information
unless you have selected to “Mark documents as read when opened in preview
pane” in your Basic Notes Client Configuration preferences.
Q. Are integrated IBM Lotus Sametime chats
added to my Recent Contacts?
A.
If you choose in Notes preferences to save your chat
to the Notes mail file, the participants of the chat are used to determine
your Recent Contacts as well. Their information is added when the chat
is saved.
Q. How does Lotus Notes determine the
order in my type-ahead list?
A. Lotus Notes does this the same
way that it determines who goes in your Recent Contacts. After you send
an email, or close an email after reading it, Lotus Notes stores the sender's
or recipients' information and uses it to determine the order for your
type-ahead drop-down. Contacts that you send or receive e-mail from more
frequently will appear higher on the type-ahead drop-down list.
Q. How long do people's names stay in
my Recent Contacts list?
A. There is a maximum number of people
who can be in your Recent Contacts; the default is approximately 3000.
(You or your administrator can change the maximum number of contacts allowed
with the Notes.ini parameter DPAB_MAX_DIP_TABLE_SIZE=3000.)
If you have more than the maximum number
of contacts, the people you communicate with the least will be deleted
from your Recent Contacts whenever your Recent Contacts are updated, which
happens approximately every seven days. If you do not have more
than the maximum number of contacts, no contacts will be deleted.
Q. How do you add people to your Recent
Contacts?
A. You cannot add or edit your Recent
Contacts. However, if you would like to edit a Recent Contact's information,
or if you are worried someone might drop off of your Recent Contacts, you
can add that person to your My Contacts list. You cannot, however, manually
make someone appear higher in your type-ahead list.
Q. How do you delete people from your
Recent Contacts?
A. If you have a bad email address
in Recent Contacts, you can remove it, but the procedure is a bit tedious:
NOTE: You can delete a Recent Contact only
in Notes 8.0.1 and later.
1. If
you have not already, open your Contacts database; select Recent Contacts
in the left-hand navigation pane.
2. Right-click
on the contact you would like to delete, and select Delete from the context
menu.
3. Select
Trash in the navigation pane at left , and click Empty Trash in the action
bar above the message list.
4. Send
an email to yourself.
5. Restart
Notes.
Q. How do you turn off Recent Contacts?
A. To do this, follow these steps:
1. Delete
all Recent Contacts by following the steps in the “How do you delete people
from your Recent Contacts? Answer above.
Tip: You can select all recent contacts by clicking the first contact
on the list and then holding down the Shift key as you click the last contact
on the list. You can then right-click on any contact in between.
2. Select
File > Preferences, and click on the Contacts section.
3. Select
the check box next to “Do not automatically add contacts to the Recent
Contacts view.”
To do this for all users, use the Notes.ini
parameter DisableDPABProcessing=1 .
Q. How do you turn off type-ahead?
A. To do this, use these steps:
1. Select
File > Preferences, and click on the Basic Notes Client Configuration
section.
2. Check
the option “Disable type-ahead for all name fields and use the Notes Basic
type-ahead.”
To do this for all users, use the Notes.ini
$DISABLE_TYPEDOWN=1.
Q. Can you synchronize your Recent
Contacts with your BlackBerry?
A. Although you can choose to synchronize
your contacts with your BlackBerry, your Recent Contacts are not included
in this.
2 Technical details
This section explains key terms that are relevant
to Recent Contacts and type-ahead:
DPAB,or “Dynamic Personal Address Book”.
DPAB is a repository of recently seen high-value contacts. It is represented
in the user's Personal Contacts as Recent Contacts.
DIP,or “Dynamic Interest Profiler”.
DIP controls the weighting that determines the order of the type-ahead
drop-down list in Local Contacts and the Search Directory.
This weighting represents the user's relationship
to a person. It is based on the number of times the user sends and receives
mail from that person, either as a To or CopyTo recipient. The DIP weighting
is not visible to the user.
User Summary. The DPAB/DIP starts
processing the names on unread mail when the Note is closed. The
DPAB/DIP does not process mail from the preview pane, unless the user has
selected to mark documents viewed in preview as READ.
Processing is also done when the user sends
mail. It's done in background queues so as to not disrupt the user, collecting
the list of names and queueing up that list for DIP weighting.
Next, the names that are new to the DIP list
are queued up to be added to the user's Recent Contacts. For each new recent
contact, a new Recent Contact record is created. This record is created
from the server contact when that can be found. If it cannot be found,
the Recent Contact record is still created, but it contains only the information
that was available from the mail.
A special case is made for Groups. The Group
Recent Contact contains only a stub record with no members. It was assumed
that information in the Recent Contact group record was more likely to
be obsolete than the content of a Person record. The members of the group
are retrieved from the server copy of the group record when they
are needed.
The information in Recent Contacts is updated
from the server contact information once every seven days.
The Recent Contacts and their weighting value
are used when creating the type-ahead drop-down list. The names
displayed in both the Local Contact type-ahead drop-down and the Search
Directory drop-down are sorted by “weight”, not alphabetically, either
by first or last name. Weight is defined as how often a person or group
has appeared in message address fields.
For the Local Contacts drop-down,
names are obtained from local Contact records, which include Recent Contacts,
My Contacts, and any additional local address books the user has set up
in user preferences.
For the Search Directory, results are obtained
from the server directories and are limited to fifty matches. The drop-down
displays a maximum of twenty names sorted by weight. Weight values are
not displayed.
With a common name such as “John,” it's possible that a search might
not return the person you are searching for. In that case, it might be
better to use part or all of the surname.
DPAB/DIP Aging. The DIP table does
not purge any entries; however, it's possible for the user to manually
delete a Recent Contacts record. This feature is available in releases
8.01 and higher.
Recent Contacts does, however, have a maximum
record count. The default maximum record count is approximately 3000, which
can be changed via the Notes.ini parameter DPAB_MAX_DIP_TABLE_SIZE=1.
When the recent contacts are being updated,
any low-weight records exceeding the maximum count will be deleted from
Recent Contacts. The number of Recent Contact records can temporarily exceed
the maximum number as the low-weight records are not purged until the weekly
update.
3 Other functionality
Moving Recent Contact records to My
Contacts
Recent Contacts are not editable. If you want
to modify the information on a Recent Contact or are concerned that an
occasionally used contact might “age off” the Recent Contacts, you should
move the contact to My Contacts, using the Move to My Contacts button at
the top of the view (see figure 1).
Figure 1. Move to My Contacts button
Removing Recent Contacts
If you happen to get a bad email address into
Recent Contacts, you need to fix the problem in both the Recent Contacts
and in the weighting table, as follows:
1. Delete
Recent Contact entries.
2. Delete
Contacts Trash.
3. Send
mail to yourself to cause DIP to clear recent history flags. This is important
because the code will not re-add a recent history name.
4. Restart
Notes.
Ambiguous Names dialog box
The Ambiguous Names dialog box comes up when
the code finds multiple hits when trying to resolve mail addressing (see
figure 2). This can occur whenever there are multiple Jill Smiths or, more
likely, when the name is slightly different due to formatting, for example,
in the case of John T. Doe and John T Doe.
If the Ambiguous Names dialog is coming up
where you do not expect it, check Recent Contacts and My Contacts for entries
that can be removed.
Figure 2. Ambiguous Names dialog box
Managed users
Recent Contact records are stored in the same
file as the Local Contacts. The Recent Contacts for an Admin Assistant
will be combined with the Recent Contacts that were created from the Mail
files they are managing.
Roaming users
Because the Recent Contacts are stored with
the Local Contacts, that information roams with the user. Starting in Notes
8.5 the user's DIP information is roamed so that the type-ahead drop-down
list order is consistent.
BlackBerry synchronization
You can synchronize Notes contacts with BlackBerry
contacts if you choose the option to store a copy of the local contacts
in the mail file. However, Recent Contact records are not currently replicated
as part of this copy, so the BlackBerry cannot use this information.
Template developer information
The type-ahead drop-down list is presented
whenever the template form creates a native OS-style “Names”- type field
with the attribute “Look up names as each character is entered”.
Disabling DPAB/DIB and Standard Type-ahead
If you want to disable DPAB/DIP/RecentContacts,
you should probably first follow the “Removing Recent Contacts” steps
to remove all the Recent Contacts. Then select the check box in User Contacts
Preferences for “Do not automatically add names to the Recent Contacts
view”, before restarting Notes (see figure 3).
Enabling the “Do not automatically add names
to the Recent Contacts view” preference sets DisableDPABProcessing=1
in the Notes.ini.
Figure 3. Contacts Preferences dialog
Notes Standard Type-ahead can be disabled
via Preferences > Basic Notes Client Configuration. Select “Disable
type-ahead for all name fields and use the Notes Basic type-ahead” from
Basic Notes Client Configuration (see figure 4). This action sets
$DISABLE_TYPEDOWN=1 in the Notes.ini.
Figure 4. Basic Notes Client Configuration
dialog
DPAB/DIP Flow
The flow of DPAB/DIP is diagrammed in figure
5.
Figure 5. DPAB/DIP Flow (high
level)
Documents Opened or Created
Edit
NEM
SameTime
Recent Contacts
d/dsave.c
nem/nemsub.cpp
?? |
(DPAB
entries)
|
NEMAddRLToHistory
|
Created
|
NEMAddRLToHistoryEx
|
|
|
CSubprogram::AddToHistory
|
|
|
|
|
dpabBackgroundThread
|
|
|
CManageDPAB
class
|
|
|
|
|
|
_ |__
|
Create\Put MQ & Thread
|
THREAD_GROUP
"ProcessDpab"
|
THREAD_MQ
"ProcessDpabQueue"
|
|
DESK
|
desk\deskwct.cpp
DBmisc\ManageDPAB.cpp
DeskWCT_ProcessDIPnRCusers
CManageDPAB class
DBmisc\ManageDPAB.cpp
desk\ProcessDPABRequest.cpp
__
CManageDIP class
all
|
|
|
|
|
|
Others:
Create/Put MQ & Thread
desk\deskmsg.cpp
|
THREAD_GROUP "PostToDip"
Main MQ
Recent
THREAD_MQ "PostToDipQueue"
Collaborators
|
Total Recall
|
dipBackgroundThread
Main MQ
|_
CManageDIP class
XML command
XML command
|
|
|
|_
(Java) DIP handler |
|
|
|
Weighted
List
Queue
|
|_
DIP |
Processing
The name information is captured whenever
you send or receive mail or calendar invitations. The hook routine for
this capture is:
DeskWCT_ProcessDIPnRCusers
edit\d\dsavq.c\DocMailAndSave
– Mail Only
edit\d\dsave.c\DocSave – Save Mail
nem\nemsub.cpp\FindDuplicateHistory
– New Mail/Sametime Chats
The DIP weighting uses a count value and
an importance value. The count value is constructed from:
• Sent
To [one per contact] - Stores the number of emails sent by the user to
each given person (as identified by email address).
• Received
From [one per contact] – Stores the number of emails received from each
person (as identified by their email address).
• Cc
To [one per contact] – Stores the number of times a person (as identified
by their email address) is carbon copied on e-mails received or sent by
the user.
The importance value represents the relationship
between the user and the person, as identified by their email address.
Type-ahead flow
edit\t\tvalue.c ProcessTextValue processes
the key strokes from the user. When the user pauses in his/her entry, these
key strokes (token) are sent through the IPC to the Java™ side.
The Java side packages up the token as an
IPC name lookup request against either local or server contacts.
Wct\notes.process\tonotes\namelookuprequest.cpp
does the lookup and sends the results back to the Java side. A maximum
of fifty names are retrieved.
The Java code gets the weight from the DIP
table and displays the drop-down widget in weighted order. A maximum of
twenty names are displayed. When the user makes a selection, the address
from the item of focus is returned to the editor through the IPC, and the
editor replaces the user keystrokes with the selected item:
(Ccode)Editor gets token->(Java)Format
lookup request against local or server->(C code)Lookup request done->(Java)DIP
weighting applied->(Java)List trimmed and sorted on weight->(C code)User
selection replaces token
Resources
• How
many type-ahead recent contacts can display in Lotus Notes?:
http://www-01.ibm.com/support/docview.wss?uid=swg21320717
• Can
you disable the Recent Contacts feature using a policy?:
http://www-01.ibm.com/support/docview.wss?uid=swg21368098
• IBM
Lotus Notes and Domino 8 Deployment Guide
http://www.redbooks.ibm.com/abstracts/sg247506.html?Open
• Lotus
Notes documentation (incl. the InfoCenter):
http://www.ibm.com/developerworks/lotus/documentation/notes/
• Lotus
Notes and Domino wiki:
http://www-10.lotus.com/ldd/dominowiki.nsf
• IBM
Software Support site:
http://www-01.ibm.com/software/support/index.html?ibmsst=allSupport
About the author
Robert Ransdell lives in Massachusetts and
has been working for IBM for thirteen years, eight of which he's worked
on the Notes client.