Novell Home

Object API Defect Fixes

From Developer Community

This document gives a brief description of most of the GroupWise Object API related defects submitted to GroupWise Engineering by Developer Services during the past several years. The list includes both resolved and unresolved defects. It also includes numerous notes about individual methods and properties found in the Object API.

The list is arranged alphabetically according to Object name. Within each Object is another alphabetically arranged list of the Object's properties and methods. If there have been any submitted defect descriptions or notes that relate to a particular method or property, these descriptions or notes will be listed immediately below the method or property (in no particular order).

The list will always be a work in progress. The intent is to keep it informative and current with input from both Novell and third parties wishing to contribute information.

On Novell's part, information may be periodically inserted regarding any new recently discovered issues. When fixes become available for any unresolved defects in this list, the defect may be updated to inform developers of the fix. Notes may be added from time to time.

Third parties wishing to contribute to this document are encouraged to do so. There is a vast wealth of information regarding the use of the Object API that developers have learned over the years. This information needs to be collected and identified. Hence, any developer wishing to contribute information can click the "Post Comment" button at the bottom of this document and add his/her comment. The contributor should include the object(s) and method(s) that the comment relates to. The comment will then be reviewed by Novell. If accepted, the comment will be inserted into the document. These comments will be labeled "CUSTOMER COMMENT" and dated. Note, however, that there is NO guarantee that these comments will be independently verified by Novell.

Finally, note that this document may not include information about when interface enhancements were made. Developers wishing to find out this information can do so by reviewing the progression of gwoapi.h header files, or look through an Object Browser for the GroupWise Object API type library.

Novell hopes the publication of this document will help all developers quickly determine if there are any known Object API issues in the area of their interest.

WARRANTY DISCLAIMER. This information is provided "AS IS" without any warranties or representations. Novell expressly disclaims any warranties or representations as to the accuracy, currency, or completeness of the contents and disclaims any implied warranties of merchantability or fitness for a particular purpose.

LIABILITY DISCLAIMER. Novell will not be liable for any indirect, special, or consequential damages (including loss of profits, business, or data) which may arise out of or result from the services or use of this information.

Trademarks. Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information. Internal Use. This information may only be used internally within your organization. The contents are not suitable for use in all situations, and any use by you of the contents is at your own risk. You are responsible for verifying the validity of any information that you use. This information may be updated or modified by Novell at any time, including to correct errors.

Copyright Novell, 2005. All rights reserved.

Contents

OBJECT API - GENERAL NOTES

.NET Access:  

  Defects # 330941 and # 339132:  The Object API did not work with .NET.
  The cause of the problem was a GroupWise issue with the DocumentType2
  interface.  Fixed in GW 6.0.4 and GW 6.5.1.

COM+:

   NOTE:  The Object API has never supported distributed COM, nor are there
   any plans to support it.

Date Data Type:

   NOTE:  If you use Visual Basic, several DATE forms are available.  For 
   example, 12/25/2004 8:00:00 AM will work.  You can also use 24 hour
   time.  You can invert the date order, as 2004/12/25 8:00:00 AM.  You
   can put # signs around the string.   If you are using C++, one way to
   use dates is to fill out a C SYSTEMTIME structure for the desired date.
   Then make a call to the SystemTimeToVariantTime C function.  This system
   takes as input a pointer to the SYSTEMTIME structure you created, and
   returns a pointer to the DATE structure that you can use for the Object
   API.

Drag and Drop:

   NOTE:  There is no drag and drop capability in the Object API.

Error Codes:

   NOTE:  There is no document that lists the error codes for the Object API.
   Those error codes would not be easily gathered.

Java Access:

   The Object API can be accessed by any computer language that supports COM.
   That does not generally include Java.  To use Java you would probably have
   to use your own COM wrappers, or use some Microsoft flavor of Java.
   
Netware Client Not Required:

   NOTE:  The Object API makes no NDS calls, and hence does not need the
   Netware Client.

Rules:

   NOTE:  The Object API does not include any rules making or reading
   capability

Server usage:

   NOTE:  The Object API cannot run where the POA is running on a Netware
   server.  It can run where the POA is on an NT server (because it requires
   COM).  If you have the POA running on a Netware server, you would need an
   NT server somewhere to run any ASP server pages.  The Object API can run
   anywhere the ASP server pages can run.

Threading:

   NOTE:  The GroupWise Object API should be thread-safe except when going
   through MAPI providers.  It is as Thread Safe as COM/OLE allows.  That is
   why GroupWise exposes the ability to bypass the MAPI address books.

   NOTE:  The GroupWise Object API follows the "Single Threaded Apartment"
   model.  In general, the 3rd party calls CoInitialize in a thread it uses
   to access the Object API.  Any object it receives within this thread must
   be used only in this thread.  Object API objects cannot be passed between
   different threads.

   NOTE:  A 3rd party can use as many threads as it wants when talking to
   the Object API.  However, there are several gotchas in doing this.
   First, the Object API was built as a Client side application.  It
   contains many Semaphores and Locks to prevent multiple threads from
   accessing the GroupWise engine at the same time.  These threads can't
   access the same Object at the same time.  Each thread may be locked out
   as other threads access the GroupWise Engine.  Second, updates in
   one thread will NOT be automatically made in other threads.  So, if you
   open multiple threads with the same user in it, and then add messages
   using one thread, the other threads will not see the new message until
   you either call Refresh on the collection, or completely release the
   objects and reread them.

Type Library For Delphi:

   NOTE:  The GroupWise Development team has never published a type library
   for Delphi.  You must load the Object API into Delphi and then build your
   own type library.

Unicode Support:

   GroupWise does not yet have full Unicode support.  The GW 7.0 release has
   support for Unicode in the following fields: Message body, subject,
   attachement file names and folder names.  Other fields are still limited
   to the same set of characters that are supported in the GW 6.5 releases.
   Plans are being made to incorporate full Unicode support in the future.

Visual Basic Packager:

   NOTE:  You should not put the gwcma1.dll (Object API DLL) as a dependency.
   The VB packager only adds gwcma1.dll.  It doesn't add the dependencies of
   gwcma1.dll.  It doesn't allow for gwcma1.dll to be put where gwcma1.dll
   is normally installed.  The installation of the Object API needs to be
   separate from the install of the VB application.

ACCOUNT OBJECT

AccountRights:

   NOTE:  The AccountRights collection lets a user know of all users that
   have proxy rights into a particular account.  To find the opposite, to 
   find all of the accounts that I could proxy into, that have given me
   rights, there is no way to do it.  Even the GW client does not alert you
   when someone grants you proxy rights.  The reason is security.  (If it
   happened by accident, you shouldn't be allowed to take advantage of it).
   The Object API shouldn't give you more rights than the client allows.

   Defect # 254466:  Assume User A granted proxy rights to User B, and User B 
   then proxied into User A's account with the Object API, the value of
   Account.Proxied = TRUE.  If User B then used the Account.AccountRights to
   see what proxy rights User A had granted him, instead of seeing his own
   proxy rights User B would see a collection of the rights of all users to
   whom User A had granted proxy rights.  This was an error in the way the
   Account.AccountRights property had been implemented.  The implementation
   error was corrected by reducing the size of the Account.AccountRights
   collection for proxy cases so that the collection would only show User B's
   proxy rights.  The correction was made in GW 5.5.5, in GW 6.0, and in GW 5.5
   EP SP3 (GW 5.5.5.1).

   Defects # 294535 and 100293977:  If you granted someone specific proxy
   rights through the GroupWise client, when you used the Object API to view
   the AccountRights of the other account by proxying to that account, the 
   AccountRights granted were incorrect.  Fixed in GW 5.5 EP SP5 (GW 5.5.7.1),
   GW 6.0.2 and GW 6.5.

AddressBookDefaultDisplayNameSort:

   Defect # 393370, #393371, #393373:  You could not add a new address book
   entry based on display name because there was no way to tell whether the
   address book accepted first.last or last.first type display names.  This
   property was therefore added to GW 6.5.3, GW 6.5.4, and GW 7.0 
   Nov, 2004.

AllFolders:

   Defect # 376448, #376524.  The Folders collection object lacked a way to
   refresh the contents. That meant that any changes to the Folders -
   especially by other programs - were not reflected in the collection. The
   only way to refresh the collection was to completely exit the program,
   then relogin.  To duplicate: Inside VB .NET, login to the Object API.
   Loop until the user stopped the test or closed the program on the next 
   instructions. Retrieve the AllFolders collection. Display the Count of
   the collection. Then delay for a short time. While this program is
   running, go to another computer and run the GW Client against this same
   account. Add a new folder to the Cabinet. The All Folders::Count() in the
   loop never changed.  Fixed (9/10/2004) in GW 6.5.3, and in GW 7.0 in 
   July, 2004.

AllMessages:  

   NOTE:  The AllMessages collection includes all messages that are in the
   box EXCEPT the trash. This method has always worked this way, and will
   not change.  If someone wants to search the trash, they can retrieve the
   TrashEntries collection, then use the Find method inside there.

ConvertEmailAddress:  

   NOTE:  Used to force the correct form of the email address.  You can
   return a user-postoffice-domain form (UPD), and DPU form, or a form 
   after all the addressing rules and other parsing has occurred.  However,
   there isn't a quick way to guarantee a "userID@Internet.Domain style of
   address is always returned.  The Object API doesn't offer a style
   without a post office.

DefaultAccountRights:

   NOTE:  This property corresponds with a user's minimum proxy rights.  The 
   property is not accessible for a proxy user.  

DistinguishedName:

   NOTE:  You cannot access the Account.DistinguishedName property in caching
   or remote modes.  Since the Remote (or caching) database has no connection
   to the Domain or Post Office databases, there is no way to get the
   Distinguished Name.

FieldDefinitions:

   NOTE:  You cannot creating new field definitions in an Archive account
   without causing mismatched tags. 

   NOTE:  Some customers have mistakenly concluded that you cannot delete
   field definitions of an Account object.  You can delete field definitions
   of an Account object, but the definitions are deleted in a deferred
   fashion, and only then when the deleted FieldDefinition object and the
   entire FieldDefinition collection are released.  Make sure these 
   conditions are met.

GetArchiveAccount:

   NOTE:  If UserA archives data, and later UserB proxies into UserA's
   account, UserB cannot access the archived data (either with the APIs or
   the GW client).  Presumably against GroupWise policy.

GetSystemAddressBook:

   Defect # 384831.  Fixes for Defects # 383681, 383682 made it so you cannot
   see hidden address book entries.  Defect # 384831 modified this fix so
   that you "can" see hidden system address book entries, but only by using
   a trusted application.  You have to use set GetSystemAddressBook(TRUE),
   and you also have to set the MultiLoginAddressBookSupport flag to TRUE.
   Both fixes made in GW 6.5.3 around Sep, 2004.

LastBackupDate:  (See LastRetentionDate also)
 
   Defect # 358943:  Accessing or setting the Account.LastBackupDate property
   in Online mode caused an error.  Fixed in GW 6.5.2 (as long as POA is also
   upgraded).  This property always worked in Caching and Remote modes as well
   as Path-To-Host mode.

   NOTE:  The LastBackupDate represents the last time someone backed up this
   account.  It was originally set by the GroupWise TSA.  The
   LastRetentionDate is similar, except that it refers to the last time a
   3rd party product archived or digested the account.  Only 3rd party
   programs can set this date; the GroupWise TSA knows nothing about
   retention policies.

   NOTE:  The LastBackupDate and LastRetentionDate values are used to prevent
   a user from deleting items in their trash folder.  A GroupWise
   administrator may require that a user's data be backed up before they
   can purge the trash.  Once the GW admin has set this flag, the GW engine
   will not remove items in the trash that were created after the last
   backup.  On the other hand, a GW admin may buy a third party archive
   solution.  The third party product then sets the LastRetentionDate.
   Similar to the LastBackupDate, an item can not be purged from the trash
   until it passes the LastRetentionDate.
   
LastRetentionDate:  (see LastBackupDate)

MergeArchive:

   Defects # 289845, # 289848 and # 320658:  If you merged two archives
   together that contained messages that were linked to additional folders,
   those linked messages were duplicated (and hence the count doubled).  Fixed
   in GW 6.5 and GW 6.0 SP3. 

PathToArchive:

   Defects # 384912, # 394388 and # 395670:  If UserA proxied into UserB's
   account, and then examined the Account.PathToArchive value expecting to see
   the path to UserB's archive, he would see the path to his own archive
   instead.  Fixed in GW 6.5.4 (Dec, 04).

   NOTE:  When you use the SetArchiveTo method to reset the archive path to 
   something else, and then read the PathToArchive property, it will show the
   new value you just set.  However, in the GW client, (tools | options | 
   environment), it will still show the old value.  Archive paths are not
   written out and saved.

PeekMode:

   Defect # 387735, #387736.  Originally, the PeekMode flag was used only in
   trusted applications to prevent the Message.Read and Message.Opened flags
   from being set.  This procedure was modified in GW 6.5.3 beginning in Oct.
   of 2004.  Since then, normal accounts (regular Login or MultiLogin) can
   turn PeekMode on - not just trusted apps.  In that mode, the
   USER_STATUS_DOWNLOADED flag will be set on a message instead of 
   automatically marking the USER_STATUS_OPENED and USER_STATUS_READ flags.
   By default, Trusted Applications in Peek Mode will also only set the 
   USER_STATUS_DOWNLOADED flag.  However, a Trusted Application can specify
   which flags (or no flags) should be set when they access a message using
   PeekMode.  Fixed in Oct, 2004, in GW 6.5.3.

PeekModeFlag:  (See PeekMode also)

   NOTE:  This flag was created in GW 6.5 as a result of the change in the
   behavior of the PeekMode flag described immediately above.  It is used
   within trusted applications.  If you use it within a non-trusted
   application, it will have no effect.  (PeekMode controls non-trusted
   applications).  See the NDK documentation for details.

ProxyAccounts:

   NOTE:  This collection is simply a list of all the accounts you have
   proxied into at the same time.  If User A logs into his account, and in
   addition proxies into User B's account and User C's account, then the
   ProxyAccounts.Count value will be "2".

QuickMessages:

   Defect # 390253.   When you attempted to get the QuickMessages collection
   for Tasks, setting the StartDate to some value and using the
   egwNewMessages value, you got all the tasks and not just the tasks since
   the StartDate.   Fixed in the GW 6.5.3 version dated Oct. 28, 2004.

Refresh:

   Defect # 401166:  Accessing QuickMessages and Account::Refresh from
   multiple users, each user running in a different thread, causes a hang or
   crash.  Fixed in GW 7.0, Feb. 2005.

SetArchiveTo: 

   NOTE:  When you use the SetArchiveTo method to reset the archive path to 
   something else, and then read the PathToArchive property, it will show the
   new value you just set.  However, in the GW client, (tools | options | 
   environment), it will still show the old value.  Archive paths are not
   written out and saved.

SetPassword:

   Defect # 281570:  The Account.SetPassword method was originally added to
   GW 6.0 SP1.  It was added later to GW 5.5.5 and GW 5.5 EP SP4 (GW 5.5.6.1).

SystemAddressBook:

   Defect # 384831.  Fixes for Defects # 383681, 383682 made it so you cannot
   see hidden address book entries.  Defect # 384831 modified this fix so
   that you "can" see hidden system address book entries, but only by using
   a trusted application.  You have to use set GetSystemAddressBook(TRUE),
   and you also have to set the MultiLoginAddressBookSupport flag to TRUE.
   Both fixes made in GW 6.5.3 around Sep, 2004.

   Defect # 388857:  When using ASP.NET, and when the 
   MultiLoginAddressBookSupport flag is set to FALSE, or when you use a
   normal login (not MultiLogin), you cannot access the SystemAddressBook.
   You get an error.  If you set the flag to TRUE, then after doing the FIND
   operation in the attached application, it will get an execution error
   when you use the MyAddBookEntries.Item(MyAddress) call.  Defect submitted
   to GroupWise Development.

ACCOUNTRIGHTS OBJECT

Defect # 254466:  

   Assume User A granted proxy rights to User B, and User B then proxied into
   User A's account with the Object API, the value of Account.Proxied = TRUE.
   If User B then used the Account.AccountRights to see what proxy rights
   User A had granted him, instead of seeing his own proxy rights User B
   would see a collection of the rights of all users to whom User A had
   granted proxy rights.  This was an error in the way the
   Account.AccountRights property had been implemented.  The implementation
   error was corrected by reducing the size of the Account.AccountRights
   collection for proxy cases so that the collection would only show User B's
   proxy rights.  The correction was made in GW 5.5.5, in GW 6.0, and in
   GW 5.5 EP SP3 (GW 5.5.5.1).

BitMask:

   Defects # 294535 and 100293977:  If you granted someone specific proxy
   rights through the GroupWise client, when you used the Object API to view
   the AccountRights of the other account by proxying to that account, the
   AccountRights granted were incorrect.  Fixed in GW 5.5 EP SP5 (GW 5.5.7.1),
   GW 6.0.2 and GW 6.5.

ACCOUNTRIGHTSCOLLECTION OBJECT

NOTE:  The AccountRightsCollection lets a user know of all users that have
proxy rights into a particular account.  To find the opposite, to find all of
the accounts that I could proxy into, that have given me rights, there is no
way to do it.  Even the GW client does not alert you when someone grants you
proxy rights.  The reason is security.  (If it happened by accident, you
shouldn't be allowed to take advantage of it).  The Object API shouldn't give
you more rights than the client allows.

Add:

   NOTE:  You must be the owner of the account in order to use this method

   NOTE:  The first argument in the argument list is a VARIANT address.  It
   will not take a string object.

ADDRESS OBJECT

DisplayName:

   Defect # 356483:  In some cases, the Address.DisplayName was returning an
   email address instead of a display name.  This was fixed in GW 6.5.2.

EmailAddress:

   NOTE:  Different forms of the EmailAddress property may be returned
   depending upon how the EmailAddress was accessed.  For example,
   Account.Owner.EmailAddress returns an address of the form
   User@InternetDomain.com.  However, the form of Account.Cabinet.Folder(i).
   FolderRights(k).Address.EmailAddress is
   User.DOMAIN.POSTOFFICE@InternetDomain.com.  If you need to change forms,
   use the Account.ConvertEmailAddress method.

ADDRESSBOOK OBJECT

NOTE:  There is no way to determine who owns a shared address book through
the Object API.

NOTE:  You cannot sort a GroupWise "System" Address Book by domain.  You can
only sort name, email address, and department.  However, you can sort a
personal address book by domain, or most anything else.

NOTE:  The GroupWise engine maintains a small set of items that it will use to notify clients of changes.  Currently, Address Books and Categories are not included in those notifications.  So, until the GW client is rebooted, the
items will not be refreshed.  An enhancement request has been submitted to
GroupWise Development.

FieldDefinition: FieldID

   NOTE:  Field IDs are only valid on Address Book fields.  No other field
   collection or field definitions will return a non-zero field ID.  The
   Address Book field IDs that are returned are the system MAPI property tags
   associated with each field.  If the property is NOT defined by MAPI, then
   it will not have a value.

FieldDefinitions: (See also, FieldDefinitions and Fields objects)

   Defects # 264621 and # 100271062:  Accessing the
   AddressBook.FieldDefinitions property caused an access violation.
   Although it appeared to work in GW 5.5 and GW 5.5 EP versions prior to the
   development of GW 6, it mainly caused a problem in GW 6 Beta 3.  This was
   fixed in GW 6.0, GW 5.5.5, and in GW 5.5 EP SP4 (GW 5.5.6.1).

   NOTE:  There is no limit to the number of fields that can be added to a
   personal address book.    

   NOTE:  CreateDate, LastModificationDate, and PABGuid field definitions
   were added to the Address Book fields collection in January, 2002 (GW 6.0
   SP1).  The PABGuid field provides a unique and persistent way of
   identifying each particular address book entry.  In order to use these
   values, the Account.MultiLoginAddressBookSupport flag must be set to TRUE
   to eliminate the MAPI layer normally used to access an address book.

   NOTE:  The PABGuid is a unique ID assigned to each entry. There is no
   guarantee that it will be 128 bytes long. And there is no way to parse
   that ID. (At least there is no way to parse it for a 3rd party. It is a
   unique string of bytes that is never duplicated inside this users
   database.)

   NOTE:  There are restrictions for accessing any Date field, such as the
   Birthday field.  The user must be logged in using the MultLogin call.  The
   user must also set the Account.MultiLoginAddressBookSupport flag to TRUE.
   If these restrictions are not followed, the Object API can only display the
   String fields given by the MAPI address book providers.

   NOTE:  If someone is running under MAPI, the Object API will ask the MAPI 
   provider for Field Definitions. Mismatches could occur (with what is seen
   in the GW client) because the GW client doesn't use the AB Provider to get
   these fields. In non-MAPI mode the Object API tried to match an earlier
   version of the System Address Book. However, GroupWise has not updated
   those fields (as of April, 2005).

Fields:

   Defect # 258800.  The organization field in an address book was displaying
   as blank.  Fixed in GW 5.5 EP in Feb, 2001.

   Defect # 403362.  Create a couple of organizational type entries into a
   personal address book, using the GW client.  Give the entries the same
   name.  Then use the Object API to create a new user entry, and attempt to
   set the field value of the organization field equal to the same name as
   the other names used previously.  The new entry never shows up in the
   address book.  Fixed in Feb, 05, in GW 7.0.

   Defect # 403192.  The Japanese to English conversion of address book fields
   appeared to be faulty using UNICODE.  The relevent GroupWise code was fixed
   to use unicode functions in Feb, 2005, in GW 7.0.
.

SortOrder:

   NOTE:  There are restrictions in sorting the entries in a system address
   book (as opposed to sorting the entries in a personal address book).  You
   can only sort name, email address, and department, and not by other
   categories such as domain.

ADDRESSBOOKENTRIES OBJECT

Add:

   Defects # 262754 and 276324:  It was possible in some situations to get a
   GPF after adding an address book entry.  This problem was fixed in GW 6.0
   SP1, GW 5.5.5, and GW 5.5 EP SP4 (GW 5.5.6.1).

   Defects # 288185 and # 288306:  This code did not act the same way as the
   Windows Address Book Client namely that when a Company (Organization)
   is added, the Windows Address Book Client automatically checked to see if
   an organization by that name existed, and linked the current entry to that
   organization.  If the organization did not exist, then an entry was made
   for that company.  Fixed in GW 6.5 and GW 6.0 SP2.

   Defect # 393370:  You could not add a new address book entry based on
   display name because there was no way to tell whether the address book
   accepted first.last or last.first type display names.  Therefore, the
   Account.AddressBookDefaultDisplayNameSort property was added to GW 6.5.3 
  (11/19/2004).

   NOTE:  When adding large numbers of entries to a personal address book,
   there will be a slowdown in performance.

   Defect # 406719:  Crash if Delete and Add of ABEntries occurs too fast.
   To duplicate, add 10 Address Book Entries to the Frequent Contacts
   address book, then delete those 10 entries. After several iterations
  (with no chance to refresh), the system will crash with a NULL Pointer
   exception.  Fixed in GW 7.0, March, 2005.

Count:

   NOTE:  If you are iterating through all the address book entries in a 
   collection, the AddressBookEntries.Count value may not match the number
   valid items in the collection.  The Count property includes entries where
   the visibility for the entry is none.  However, during the iteration of all
   entries, non-visible entries are skipped.  Hence, always check for empty
   items when looping through an addressbook entry collection.  Another reason
   is that GroupWise relies on what MAPI reports that may not reflect the
   true number of entries in the collection. 

   Defect # 384830, #384831.  Fixes for Defects # 383681, 383682 made it so
   you cannot see hidden address book entries.  Defect # 384831 modified this
   fix so that you "can" see hidden system address book entries, but only by
   using a trusted application.  You have to use set
   GetSystemAddressBook(TRUE), and you also have to set the 
   MultiLoginAddressBookSupport flag to TRUE.  Both fixes made in GW 6.5.3
   around Sep, 2004.  Also fixed in GW 7.0 in Sep, 2004.

Find:

   Defect # 314321:  The AddressBookEntries.Find method was returning everyone
   in the address book, instead of the desired subgroup, when the normal MAPI
   access layer was eliminated.  Fixed in GW 6.0.3 and GW 6.5.

   Defect # 340028, #351662:  If you search for an <E-Mail Address> with the
   form of "John.Doe@XYZ.Com", with the MATCHES keyword, while in caching
   mode, no addresses will be found (even though the Online mode works fine,
   and even though other forms of addresses are found fine in both Online
   and Caching modes).  There may also be additional problems when searching
   for email addresses if the MultiLoginAddressBookSupport flag is set to
   TRUE to get rid of the MAPI layer.  Defect has been submitted to
   Development.

   Defect # 315807:  Using the OR keyword in a filter expression did not
   work.  Hence, something like (<First Name> MATCHES John) OR (<Last Name> 
   MATCHES Doe) did not work.   Fixed in GW 6.5.

   Defect # 283915.  The AddressBookEntries.Find method worked fine in GW 6
   with the August 2001 code, but did not work with the October code for the
   system address book.  Fixed in October (GW 6 SP1).

   NOTE:  The Find method uses a <MyField> MATCHES ... syntax rather than a
   <MyField, STRING> MATCHES ... syntax like messages use.

   NOTE:  <UserID> only works for Frequent Contacts Book, and not for the
   System Address Book.

   NOTE:  In the GroupWise client, select Address Book | View | Define Custom 
   Filter | Drop down box to see list of possible fields for each address book.

   NOTE:  Fields are case sensitive.

   NOTE:  The only special characters that can be found  through the FIND
   method are * and ?.  Note also that the FIND method can find whole
   words, but not subsets of words e.g. message but not message.

   NOTE:  To access any date field, like birthday, you must log in with the
   MultiLogin command, and then set the Account.MultiLoginAddressBookSupport
   flag to TRUE to eliminate the MAPI layer usually necessary to access the
   Address Book.  If you don't do this, the Object API can only display the
   String fields given by the MAPI Address Book providers.

   NOTE:  The BEGINSWITH keyword does not function

   NOTE:  To search for a birthday, three birthday fields were added in 2003.
   Use BIRTHDAY_DAY, BIRTHDAY_MONTH, and BIRTHDAY_YEAR. These statements 
   take the form of a numeric filter expression.  For example, 
   (BIRTHDAY_MONTH=4) would find all AddressBook entries with a birthday in
   the month of April.

   NOTE:  The AddressBookEntries.Find method doesn't work with the "Name"
   field in the system address book.

   Defect # 390952, #390953:  The Find method did not hide hidden entries.
   Call to get the new System Address Book Entries collection, which hides
   the non-visible entries by default. Then call the Find() method. Hidden
   entries are now visible.  Fixed in GW 6.5.3 and GW 7.0, Nov. 2004.

   Defect #376571.  When calling the AddressBookEntries.Find method with a
   search filter using the PABGuid field, any PABGuid value with "*" or "?" 
   characters would use wildcard searches, which may return one or more hits.
   Since the PABGuid field contains a variety of unusual characters including
   * and ?, this was undesirable to find the unique AddressBookEntry that
   had the PABGuid field. Hence, the Find method was changed in GW 7.0 to
   return only the one unique entry.  

Item:

   Defect # 208771:  Prior to GW 6.5, using this method with an Address object
   argument would cause the method to fail if the email part of the Address
   object was not in the old UserID.PostOffice.Domain format.  After the fix
   in GW 6.5, the problem was taken care of except for one known case where the
   Address argument is found initially by using the Account.Owner property
   (that returns an Address object).  In that case, since the Account.Owner
   property retrieves the Owner display name format (firstname, lastname or
   lastname, firstname) from the administratively defined ConsoleOne setting,
   and not from the user defined address book setting in the GW client, the
   two settings must agree if the AddressBookEntries.Item method is going to
   work.    

   To work around this limitation if you only have an Account.Owner address
   object available, get the individual parts of the Address object (email
   address, display name) to build a filter expression, and then use the
   AddressBookEntries.Find method.

   NOTE:  If you are iterating through all the address book entries in a
   collection, the AddressBookEntries.Count value may not match the number
   valid items in the collection.  For example, non-visible entries are
   skipped.  Another reason is the GroupWise relies on what MAPI reports ? 
   which may not reflect the true number of entries in the collection.  Hence,
   when iterating through a collection, and accessing the 
   AddressBookEntries.Item property, check for empty items first.  

   Defect # 383682.  Any System Address Book Entry marked with "Visibility
   None" could still be seen in the Object API.  Fixed in GW 6.5.3
   (10/1/2004).

   Defect # 351184, # 380191:  The AddressBookEntries.Item method would not
   take an Address Object argument (even though it is suppose to) IF the
   initial account login is made using MultiLogin, and the
   MultiLoginAddressBookSupport flag has been set to TRUE.  Fixed in GW
   6.5.3, Sep. 2004.  Fixed in GW 7.0.

   Defect # 388857:  The AddressBookEntries.Item method will not accept an
   Address argument using ASP.NET.  Submitted to GroupWise Development.

   Defect # 406108:  Calling AddressBookEntries::Item() with an address that
   contains Name Parts with spaces causes GPF.  To duplicate, add an entry
   to the System Address Book with a First Name or Last Name that has
   multiple parts. For example, a First Name of :"Tom M" or a Last Name of
   "Van Horn." Fixed in GW 7.0, March, 2005.

   Defect # 404005:  Calling the AddressBookEntries::Item() method with a 
   valid display name occasionally returns a NULL pointer, but no error.
   To duplicate: Login to the Object API, turn off MAPI Access to the
   Address Books, then call to retrieve an Address Book Entry from the Item
   call using a Display Name. Some entries return a NULL pointer, but no
   error.  Fixed in GW 7.0, Feb. 2005

   Defect # 380501:  The ABEntries::Item() method failed when called with
   an Address that has 3 names in the Display Name. For example, in the GW
   System Address book at Novell, Jay Don Gray will not succeed when passed
   in as a Display Name.  Fixed in GW 6.5.3 and GW 7.0, Dec. 2004.

   Defect #410259:  There was a problem with looking up names if there were
   spaces in the first or last name and the sort order was by last name.
   Fixed in GW 7.0 in May, 2005.


ItemByGuid:

   Defect # 376432, #376571.  This method was added in GW 6.5.3 (Oct, 04) to
   search for PabGuid values that contain ? or * marks.  If a PabGuid
   contained one of these marks, and you attempted to search for it using
   Find, it would do a wildcard search instead.  The new method doesn't do
   that.  Also added to GW 7.0

ADDRESSBOOKENTRY OBJECT

Categories:

   Defect # 390492, # 395001:  There was a crash when you tried to access the
   AddressBookEntry.Categories object, at least using C.  Fixed in GW 6.5.4
   (12/2/2004)

Delete:

   Defect # 406719:  Crash if Delete and Add of ABEntries occurs too fast.
   To duplicate, add 10 Address Book Entries to the Frequent Contacts
   address book, then delete those 10 entries. After several iterations
  (with no chance to refresh), the system will crash with a NULL Pointer
   exception.  Fixed in GW 7.0, March, 2005.

EmailAddresses:

   NOTE:  There is only 1 item in the collection if using the system address
   book.

   Defect # 393291:  Adding Multiple EMail Addresses to ABEntry loses one
   address in the collection.  Defect submitted to GroupWise Development

Fields: (see also Fields object)

   Defect # 360264, #100353575:  The Middle Name and Suffix fields were not
   available if you had set the Account.MultiLoginAddressBookSupport flag to
   TRUE. Fixed in GW 6.5.2 and GW 7.0.

   Defect # 368964:  The GUID value returned for a System Address Book entry
   was 1 byte short.  Most GUIDs should be 36 bytes in length.  The ones
   returned from non-MAPI mode were 35 bytes in length.  Fix made in GW
   6.5.2.  

   Defect # 384856, #378164, #387547:  If you logged in using MultiLogin,
   as opposed to a normal Login, and you accessed certain address book
   fields, you could not change their values.  These fields included, for
   regular users, the Display Name, Office Web Site, Personal Address,
   Personal City, Personal State, Personal Zip Code, Personal Country, and
   Personal Web Site do not update. For an Organization, the Display Name,
   Web site, and Primary Contact fields can not be changed. For a Resource,
   the Display Name, Owner, and Type can not be modified.  Fixed in October,
   2004, in GW 6.5.3, and in GW 7.0.

   Defects # 400976 and # 402359.  A customer read the address field from an 
   address book entry, and then wrote it right back.  It was a multiline
   address.  When it was written back, it had an extra CR/LF in it, and hence
   there was an extra line inserted in the address in the GW client.  It only
   happens when using MultiLogin with the MultiLoginAddressBookSupport flag
   set to TRUE to eliminate the MAPI layer.  Fixed 2/10/2005 in GW 6.5.5.

   Defect # 403362.  Create a new organizational type entry in a personal
   address book.  Create another organizational type entry with the same
   name.  If the Object API is used to access the personal address book,
   create a brand new entry, and then attempt to set its organization field
   equal to the same name you called the other two new entries - i.e. "MyOrg". 
   It would cause an error when the attempt was made to Add the new field.  
   Fixed in GW 7.0 on 2/22/2005. 

   Defect # 376049 and # 376050.  If using VB.NET to access an Address Book
   Entries Fields collection, every Field object returned after the 1st AB
   Entry is accessed has the same values as that 1st AB Entry.  Fixed in GW
   6.5.3 and GW 7.0 - June 29, 2004.

   NOTE:  The "CreateDate", "LastModificationDate", and "PABGuid" fields were
   added to the Address Book Fields collection in January, 2002.  The PABGuid
   field provides a unique and persistent way of identifying a particular
   address book entry.

   NOTE:  The PabGuid is a unique ID assigned to each entry. There is no
   guarantee that it will be 128 bytes long. And there is no way to parse
   that ID. (At least there is no way to parse it for a 3rd party). The
   PABGuid is a unique string of bytes that is never duplicated inside the
   user's database.)

   Defect # 380580.  Retrieving the Address Book Field "Last Modification
   Date" resulted in a string that contained the "MM/DD/YYYY HH:MM am" value.
   This string was missing the Seconds from the time value. This string
   should read "MM/DD/YYYY HH:MM:SS am".  Fixed in GW 6.5.3 in October, 2004.

   Defect # 378172:  The Last Modification Date was only good to the minute.
   Changed to add seconds in GW 7.0 (Aug, 2004).  

   Defects # 387115, 387116:  Using MultiLogin with the 
   MultiLoginAddressBookSupport flag set to TRUE,  you could not add an
   Organization field value to a new address book entry fields list.  Fixed
   in GW 6.5.3 (Oct, 2004).

   Defect # 376837, #376838.  Adding an EMail Address using an ABEntries
   Fields collection returns an error if the EMail address is "a"; however if
   it is an "a@" all works.  Fixed in GW 6.5.3 (9/10/2004), and in GW 7.0
   in July, 2004.

   NOTE:  The Object API added support for the birthday field, and other date
   fields.  However, the user must be logged in using the MultiLogin call.
   The MultiLoginAddressBookSupport flag must be set to TRUE - although if
   you don't set it at all it may still be TRUE, depending upon what was last 
   done.

   Defect # 389876.  The Prefix field of a personal address book could not
   be updated when you used MultiLogin and set the
   MultiLoginAddressBookSupport flag to TRUE.  Fixed in GW 6.5.3 (10/28/04)

   NOTE:  The ObjType values for a group always returned 0.  Fixed in
   GW 5.5.3.

   Defect #401880.  The phone number field didn't show up for organizations.
   Fixed in Feb, 05 in GW 7.0.

   NOTE:  In non-MAPI mode (i.e. the MultiAddressBookSupport flag is TRUE),
   a 3rd party is never allowed to modify the Last Modification Time field.

   Defect # 377164 and # 377175.  Unable to find the Birthday field in an
   address book.  Fixed in GW 6.5.3 and GW 7.0

   NOTE:  When accessing address book entry fields, there is always memory
   cached by the MAPI address book provider. There are object dependencies
   also which require that memory for some objects be kept until other
   objects are released.  The loss of memory has been confused at times by
   some customers as a memory leak.  It is not.  The memory will be returned
   when all address book objects are released.

   Defect # 376522, #376523.  Adding an Organization to any Address Book
   Entry was too slow.  Access an AddressBookEntries collection. Add a new
   ABEntry or edit an existing one. Retrieve the ABEntry Fields collection
   object. Add an Organization field to this entry.  Fixed in Sep, 2004, in
   GW 6.5.3.  Fixed in July, 2004.

   Defect # 387547:  In non-MAPI mode (i.e. the MultiAddressBookSupport flag
   is TRUE), a 3rd party can not modify or update the Last Modification Time
   or Primary Contact fields of an Address Book Record.  To duplicate: Call 
   MultiLogin to access a GW Account. Set the MultiLoginAddressBookSupport
   flag to TRUE. Access a Personal Address Book. Read the Address Book
   Entries collection, then select one Address Book Entry. Now access the
   Fields collection for this entry. Although the Last Modification Time and
   (if an Organization or Company Record) Primary Contact fields are
   present, calling Field->put_Value() to change the field will NOT return
   an error, but will also not update the field in the database.  Fixed in
   March, 2005, in GW 7.0.

   Defect # 404367.  There was a memory leak of about 200 bytes
   every time the Fields.Item method is called.  This may only occur when
   the field value is empty.  Fixed in GW 7.0 in June, 2005.

   Defect #387268, #387269:  When accessing an Address Book Entry objects
   Fields collection, certain fields will not update. For Contacts (i.e.
   individual people), the Display Name, Office Web Site, Personal Address, 
   Personal City, Personal State, Personal Zip Code, Personal Country, and
   Personal Web Site do not update. For an Organization, the Display Name,
   Web site, and Primary Contact fields can not be changed. For a Resource,
   the Display Name, Owner, and Type can not be modified.  Fixed in GW
   6.5.3 and GW 7.0, Oct. 2004.

MAPIEntryID:

   NOTE:  This variable is the unique identifier that a MAPI Address Book
   provider gives for any entry.  You need to use SafeArrayAccessData in C
   to unlock the VARIANT.  

ObjType:

   The ObjType values for a group in an address book always returned 0.
   This problem was fixed in GW 5.5.3.

RevisionNumber:

   Defects # 291986 and # 291995:  When using late binding instead of early
   binding, the AddressBookEntry.RevisionNumber property was using the
   earliest intrface version of AddressBookEntry instead of the latest
   interface (AddressBookEntry3).  Since the RevisionNumber property was not 
   introduced until the AddressBookEntry2 interface, using
   AddressBookEntry.RevisionNumber was resulting in an error.  Fixed in
   GW 6.0.3 and in GW 6.5.

   Defects # 291992 and # 291996:  The AddressBookEntry.RevisionNumber
   property was not being refreshed properly from within an application.
   Fixed in GW 6.0.3 and in GW 6.5.

ADDRESSBOOKS OBJECT

AddEx:

   Defects # 281327 and # 100273550:  When trying to accept a shared personal
   address book as specified in the first parameter, there was an error
   message popup indicating a mismatched data type.  Fixed in GW 6.0 SP1 and
   GW 5.5 EP SP4 (GW 5.5.6.1).  Note that this method only ACCEPTS shared
   notifications; it does not allow you to create your own shared notification
   message.  It takes a shared notification from someone else and allows you
   to accept it and specify a different name if you'd like.

NOTE:

   The memory associated with the address book associated objects, such as
   AddressBooks, AddressBook, AddressBookEntries, AddressBookEntry, etc., is
   interconnected with each other.  The memory held by one object can
   sometimes not be released until the memory held by others address book
   related objects is released.  Do not confuse this property with a memory
   leak.

ALLMESSAGES OBJECT

NOTE:  The AllMessages collection has an advantage over Messages collections.
It can return more than 5000 messages.  The Messages collection is limited to around 5000 (as of 2004).

NOTE:  This message can be slow when there are large numbers of messages.

NOTE:  The AllMessages collection includes all messages that are in the box
EXCEPT the trash. This method has always worked this way, and will not
change.  If someone wants to search the trash, they can retrieve the
TrashEntries collection, then use the Find method inside there.

NOTE:  To search for a custom field, use angle brackets.  For example, to
search for a custom field in a message, use <MyCustomField, STRING> MATCHES whatever.

Find:

   Defect # 405404:  If you search for messages with more than a certain 
   number of recipients, using the TOTAL_RECIPIENTS key, and then access
   these messages and look at the number of recipients in each message,
   there is a discrepancy.  The number of recipients
   (Message.Recipients.Count) includes the TO and CC recipients, and not
   the BC recipients.  However, when the AllMessages.Find operation is used
   with a TOTAL_RECIPIENTS >= X filter, it finds TO, CC, and BC recipients.
   Hence, you can find messages that show more than X recipients, and when
   it is printed out using Recipients.Count, it shows less than X.   It
   appears that the filter is not working properly.  Defect has been 
   submitted to GroupWise Development.

   Defect #373436:  Using the TOTAL_RECIPIENTS keyword in a filter gives
   an error.  The fix is to be made in GW 7 SP1.  

   NOTE:  When you search on GW.MESSAGE.MAIL classes, such as
   using GW.MESSAGE.MAIL.MYTYPE in a filter, note from the NDK documentation
   that you can only search on the custom part of the message class (MYTYPE).

APPLICATION OBJECT

NOTE:  In Visual Basic, CreateObject(NovellGroupWareSession) will always
create an Application object, not an Application2, Application3, etc. object.
The code underneath will not automatically convert the Application object to
one of these later objects.  You need to do this yourself.  For example, in
Visual Basic, if MyApp is dimensioned as an Application object, and MyApp3 is dimensioned as an Application3 object, then after setting MyApp = new
Application, you can set MyApp3 = MyApp and access the properties of the Application3 object.

Login:

   Defect # 303693:  When either the Application.MultiLogin or
   Application.Login methods were called, a spinning world or splash screen
   was briefly displayed.  Fixed in GW 6.5.  The splash screen no longer
   appears.  Note that the /bl switch for disabling the splash screen,
   documented in the GroupWise help under command line switches, is only
   valid for the GroupWise Windows Client, and not valid for the API.

   NOTE:  To set the password using the second argument, use /pwd =
   mypassword

   NOTE:  It is better to use the Application.MultiLogin command when you are
   using an NT service.  The MultiLogin command has no interfaces.  If you use
   an NT service with either the Login or MultiLogin commands, use the
   /ntservice switch in the second argument.

   NOTE:  If GroupWise is up and running, you can use the Login method without
   any arguments.  Even if arguments are supplied, they will be ignored. If
   GroupWise is not up, you can still often use this method without arguments
   if you have logged into GroupWise previously.  In this case, GroupWise will
   search in other places for any information not found in the login command.
   It will search first in eDirectory (assuming you have the the Netware
   Client installed), then the registry, and finally an DNS lookup of the IP
   address. If you want to login to GroupWise as a second user (or use the
   MultiLogin command), you must at least supply the UserID.  The necessity of
   a password depends upon the default security level set for the post office,
   and upon the password options set for each user.  Once the user sets a
   password, the mailbox is high security regardless of the security settings
   of the post office.  

   NOTE:  It is possible to log into the wrong account if some background
   process is running such as Notify, GWSync, HotSync, Outlook, or some
   other process.

   You can't log into GroupWise with the Object API using only the wphost.db
   post office database.  The WPHost database is only used by the MTA and
   POA as a list of authorized users. To login using the Object API, you also
   need the user's database (USERFID.DB), the guardian, and a possible host
   of other databases.

   Defect # 394054, #394587.  The Object API Login method was expanded to
   return the UserID and Mode (Online, Caching, etc) when these values were
   not supplied to the Login procedure.  Fixed Jan. 24, 2005 in GW 6.5.4, 
   and in GW 7.0.

   NOTE:  The Application.MajorVersion and Application.MinorVersion refer to
   the Object API version, and not the GroupWise version.  The Object API
   versions are updated independently of the GroupWise version updates.

   Defect # 404303.  GroupWise Development changed the version numbers so
   that they now reflect current GW shipping status with Major and Minor
   version numbers.  Effective March 1, 2005, in GW 7.0.

   NOTE:  There is no equivalent "Logout" method.  In VB, set any objects 
   to Nothing to release memory.  

   Defect # 309168:  The Login was too slow due to accessing SSL certificate.  
   Fixed in GW 6.5, Oct. 2002.  SSL access performance improved.

MajorVersion:

   NOTE:  The Application.MajorVersion and Application.MinorVersion refer to
   the Object API version, and not the GroupWise version.  The Object API
   versions are updated independently of the GroupWise version updates.

   Defect # 404303.  GroupWise Development changed the version numbers so
   that they now reflect current GW shipping status with Major and Minor
   version numbers.  Effective March 1, 2005, in GW 7.0.  There are also
   new BuildNumber and VersionRevision properties of the Application 
   object.

MinorVersion: (see MajorVersion)

MultiLogin:

   Defect # 303693:  When the Application.MultiLogin method was called, a
   spinning world or splash screen was briefly displayed.  Fixed in GW 6.5.
   The splash screen no longer appears.  Note that the /bl switch for disabling
   the splash screen, documented in the GroupWise help under command line
   switches, is only valid for the GroupWise Windows Client, and not valid for
   the API.

   NOTE:  Use of the MultiLogin command can lead to problems when multiple
   users try to access address books through the normally present MAPI layer.
   The problem exists because MAPI can only access one address book at a time.
   If you wish to access more than one address book, get rid of the MAPI layer
   by setting the Account.MultiLoginAddressBookSupport flag to TRUE.

   NOTE:  This command has no interfaces, and hence is preferred over the
   Login command when used with an NT service.  If you use an NT service, use
   the /ntservice switch in the second argument.

   NOTE:  The MultiLogin command may fail if not used properly with trusted
   applications.  A possible reason includes inappropriate setting of the
   Requires SLL flag when creating the trusted application key and
   restricting the trusted application to one machine.

   NOTE:  If you use MultiLogin without an IP address (as the second argument),
   it will error if the account you are logging into is not using the same
   TCP/IP address as the last account you logged into using the GW client.
   In addition, when you supply no IP address, would happens in your
   application may depend on what is in the registry.   Look at
   HKEY_CURRENT_USERSoftwareNovellGroupWiseLogin Parameters.  There are
   multiple entries that determine where GroupWise / OAPI application logs
   in (online, cache, etc).

   NOTE:  If you are calling MultiLogin in a loop using the C language, make
   sure that CoCreateInstance and CoInitialize are called outside the loop.
   Otherwise, a few handles may not be deallocated from memory on each loop.

   Defect # 394054.  The Object API MultiLogin method was expanded to return
   the UserID and Mode (Online, Caching, etc) when these values were not
   supplied to the Login procedure.  Fixed Jan. 24, 2005 in GW 6.5.4.

   NOTE:  A couple of main reasons for a MultiLogin failure, after setting
   the SetTrustedApplicationCredentials item for a Trusted Application, 
   includes setting the Requires SLL flag, and then not using SSL
   encryption for the connection between application and POA.  Also, an
   administrator can restrict a Trusted Application to one Client machine
   using the TCP/IP address. 

Proxy:

   Defect # 100257123:  You could not proxy into a mailbox on another post
   office.  Fixed in GW 5.5.5, GW 5.5 EP SP3 (GW 5.5.5.1) and GW 6.0

   NOTE:  If User A archives data, and User B proxies into User A's account,
   User B cannot access the archived data.   This is by design.

   NOTE:  In order to proxy to another account, make sure a POA is running
   for every post office involved, and the GroupWise client or Object API
   must be running against that post office.  Direct mode (path-to-host)
   won't work.

   NOTE:  You can't proxy into someone's account unless you have first logged
   into the main account using Login.  If you use MultiLogin, and then try
   and proxy into someone's account, it won't work.  Proxies are allowed only
   from the Main user - not from a MutliLogin user. 

   Defect # 342745:  There may be problems when trying to proxy into an
   account with over 5000 records.  Defect submittted to GroupWise
   Development.

ProxyHistory:

   NOTE:  This collection is similar to the list you see when you click on
   the proxy button at the bottom left of the GroupWise client. It is a list
   of accounts that you have proxied into at one time.  To be included in the
   list, an account must have granted you proxy rights at one time, you must
   have actually used those proxy rights, and then refreshed the GroupWise
   client.

   NOTE:  Since the ProxyHistory is a property of the Application object and
   not the Account object, you cannot log into various accounts using a
   trusted application and expect to see a unique ProxyHistory for each
   account.  Instead, the ProxyHistory will remain the same, and will be equal
   to the proxy history of the account you originally logged into using the
   Login command.

APPOINTMENT OBJECT

Accept:

   Defect # 371847, 412668, 412669:  If UserA has the client options set
   to receive notifications when an appointment is accepted, and he sends
   out an appointment to UserB, and UserB accepts the appointment via the
   Object API - then UserA will receive back "2" notifications rather than 1
   when the appointment was accepted.  If UserB had accepted the appointment
   via the GW client, only 1 notification would have been sent to UserA.
   Defect fixed in GW 7.0 and GW 6.5.5 in May, 2005.

AlarmTime:

   NOTE:  The AlarmTime property in the Object API actually reads a time
   after midnight.  Thus, if you use the GroupWise Client to set an alarm time
   of 15 minutes before an appointment, the Appointment.AlarmTime property
   will read 12:15 a.m.  The user must adjust accordingly.

   Defects # 346982, #348573 and # 365350:  When an appointment alarm was
   disabled in the GroupWise 6.5 Client, the Object API
   Appointment.AlarmTime value did not change.  Thus, in the note above, the
   AlarmTime value would remain at 12:15 a.m.  (This was not a problem with
   GW 6.0.4)  Fixed in GW 6.5.2 and GW 7.0 in Nov, 2004.

AutoDate:

   Defects # 391293, # 391278.  You could not create a personal autodate
   appointment.  You can now do so.   To do this, do not create any
   recipients.  Fill in the StartDate value, and then use the
   DraftAutoDates.Add method to add any other dates for the appointment.
   Fixed in GW 6.5.3 and GW 7.0.

AutoDateMessages:

   Defects # 391296, # 391297, #391226.  If you located a single
   Appointment object, and asked for the AutoDateMessages collection, the
   pointer would be returned as NULL, meaning no Autodates existed for the
   object.  No error message was returned; not even a warning was given.
   The fix was to return an S_FALSE warning along with the NULL pointer.
   Fixed in GW 6.5.3 (11/5/2004), GW 6.5.4 (11/5/2004), and in GW 7.0.
 
BusySearchResult:

   Defect # 322286:  A memory leak occurred when accessing the Busy Search
   elements of a draft Appointment.  Fixed in GW 6.5.

CommonMessageID:

   NOTE:  The CommonMessageID property was added in November of 2002 to GW
   6.5.  This Message ID will have the same value across all Post Offices.  
   However, this property was never added to the Query or Find parser.  Hence,
   it cannot be searched on across post offices.  The property can be used
   for all the message types (see individual message types in documentation) 
   - but not for the parent Message object.

StartDate:

   NOTE:  If the Appointment object came as a return value from the
   Messages.Add method, dimension the object as an Appointment2 or
   Appointment3 object, and not as an Appointment object.

ATTACHMENT OBJECT

NOTE:  To get the size of a file attachment, you must first save the attachment
to disk.

NOTE:  A 3rd party can not change anything about an attachment. For example,
you must get the original message to set the Read flag. 

NOTE:  Messages sent with an attachment but no text in the message body caused a problem if sent through GWIA.  The attachment may be truncated )missing).  Fixed in GW 6.0.3.: Source# = 497

Message:

   NOTE:  You cannot access the text of a MIME attachment message via the
   Object API.

Save:

   Defect # 377638:  When downloading attachments to a Caching or Remote
   system, the GW code can be set to limit the pieces that are downloaded, 
   including not downloading any attachments above a certain size. If the
   attachment is not downloaded, the GW client will show the attachment as a
   grey icon. In such cases, the Object API reads this attachment record,
   then outputs only the size of the greyed out (ghosted) attachment (one
   byte).  To save the attachment properly, it must be downloaded first.
   Defect submitted to GroupWise Development to change this behavior.

ATTACHMENTS OBJECT

Defect # 100266876:  If you accessed a message type attachment from a
non-GroupWise user, there was an error.  Fixed in GW 6.0.1 and GW 5.5 EP SP4
(GW 5.5.6.1)

Add:

   Defect # 350712, #351101:  A user was able to add an attachment to a
   received message using the Attachments.Add method.  This was contrary to
   GroupWise policy.  Fixed in GW 6.5.2.  A user can no longer add an
   attachment to a received message.  Fixed also in GW 7.0.

   Defect # 363447, #363449:  You could not add a message type attachment to
   a new draft message if the message type attachment was currently attached
   to some other message.  Fixed in GW 6.5.2 and GW 7.0.

   Defects # 250082 and # 100267093:  You could not add a Message object as an
   attachment to a message.  Fixed in GW 5.5.5, GW 5.5 EP SP4 (GW 5.5.6.1) and
   GW 6.0.1.  

   Defect # 325705:  The Attachments.Add method can take a Message object as
   an argument.  When the message object is found through the Object API, the 
   Attachments.Add(MsgObject) seems to work fine.  However, when the message
   object is found through the client state of a C3PO, it does not work.  You
   get an error message saying the "Description Class does not support
   Automation or does not support excepted interface."  Defect submitted to
   GroupWise Development.

   NOTE:  If you add an attachment called text.htm, GW 6.5 will recognize it
   as the HTML part of the message and display it properly.  This gives the
   capability to send HTML formatted messages with the Object API.

   NOTE:  You cannot use the Attachments.Add property to add a message object
   if the message object has been archived.  You can probably use the
   Message.Archived = FALSE method to unarchive the message first.

   Defect #325705:  When you use a C3PO to get the 
   ClientState.SelectedMessages collection, a then get a specific message in
   that collection, and then try to add that message to a collection
   of attachments using the Attachments.Add(Message) function of the Object
   API, an error resulted saying the "Description Class does not support
   Automation or does not support excepted interface." - Fixed in GW 7.0,
   May, 2005.

Count:

   Defect # 281451:  In some circumstances, the Attachments.Count value was
   being returned as zero even though there was an embedded attachment.  Fixed
   in GW 6.0 SP1.

BUSYSEARCH CAPABILITY

NOTE:  As long as a program can log into GroupWise, using the Object API, it
should be able to use the BusySearch capability.  It should work across post offices and domains.  

NOTE:  It will not work if you are trying to search someone's schedule over
the internet, unless their MTA is outside their firewall and they are using
the GroupWise Enhancement Pack or above (like GW 6 and GW 6.5), or unless a
small hole is poked in the firewall.  A GroupWise user (or a third party 
application using the Object API) is given a specific TCP/IP address to use
during the GW login.  This TCP/IP address is visible outside the firewall.  
When this TCP/IP address is hit, it redirects the request to the proper POA
inside the firewall.  When the POA responds, it responds to the internal
TCP/IP address, which then redirects the traffic to the original user.

NOTE:  There is no way to determine what a person's "regular" work schedule
is. The GroupWise Windows Client does have settings to determine those hours. However, the Object API has never given out settings.

BUSYSEARCHELEMENT OBJECT

Completed:

   Defect # 351423, #351431:  The BusySearchElement.Completed flag only
   returned FALSE.  Fixed in GW 6.5.2 and GW 7.0 (Ooct, 2003).

CATEGORIES OBJECT

NOTE:  Category changes are seen only after refreshing the GroupWise client.

Defect # 353542:  Problem reported that if an application is accessing the
Categories collection for an address book entry, and then when finished
the application uses the same Categories collection variable name to access
a Categories collection of a second address book entry, without first setting
the Categories collection to nothing (in VB, to get rid of memory used for
the first collection), the application may not reset the Categories collection object to the new values.  It may still be using the old ones.  Whether or not
this problem is seen may depend on the order that the entries are accessed. It
may also depend on the workstation.  Defect closed by engineering since the
correct approach, and workaround, is to set the Categories collection object
to nothing after each use. 

Item:

   Defect # 344748:  Using the Categories.Item method resulted in a runtime 
   error if the category was a predefined category (like Personal, Urgent,
   etc.).  Fixed in GW 6.5.2

   Defect # 405939, #407397. After deleting all the categories of an address
   book entry, when you add one of these back in, you can no longer access
   the categories.item value, or set the category.primary value.  Fixed in
   GW 7.0 on March 15, 2005, and GW 6.5.5 in April, 2005.

Release:

   Defect # 390487, Defect # 394830:  Calling the Categories.Release method
   caused a crash if you deleted a customer category first.  Fixed in GW 6.5.4
   (12/1/04)

CATEGORY OBJECT

Defect # 374267, #380259.  Category information was being left out when you
cloned a message using the Message.Clone method.  It was added in GW 6.5.3,
Aug. 19, 2004.  Fixed in GW 7.0, Dec. 2004.

NOTE:  The GroupWise engine maintains a small set of items that it will use to notify clients of changes.  Currently, Address Books and Categories are not included in those notifications.  So, until the GW client is rebooted, the
items will not be refreshed.  An enhancement request has been submitted to
GroupWise Development.

CATEGORYDEFINITION OBJECT

Defect #335734:  Refresh problem with creating new Category Definition objects through the Object API.  If you create a new Category Definition object
through the Object API, and assign it a color, you will not be able to see any color changes in mailbox items until you refresh the GroupWise client. 
Submitted to GroupWise Development.

CATEGORYDEFINITIONS OBJECT

Defect # 405895:  Program locks up when accessing Category Definitions from multiple threads.  Fixed in GW 7.0, March, 2005.

Count:

   Defect # 358762:  On some accounts, even though all the Category Definitions
   were deleted in an account, the CategoryDefinitions.Count value was still
   greater than 0.  If you tried to access one of them in a loop by finding its
   name, the application would crash.  Fixed in GW 6.5.2 and GW 7.0.

   Defect # 362909:  The CategoryDefinitions object did not list all the pre-
   defined categories in the Feb 26 version of GW 6.5 SP2.  Fixed in the March
   11 version of GW 6.5.2.

DOCUMENT OBJECT

Additional Rights:

   Defects # 265559, #265779.  There was a memory allocation error
   (overwriting the memory buffer) when using this property.  Fixed in
   GW 6.0 SP1 (April, 2001).  Also fixed in GW 5.5 EP SP4 and in GW 5.5.5.

DOCUMENTACCESSRIGHTS OBJECT

Defects # 265559 and # 265779:  There was a memory allocation error when using Object API applications dealing with the DocumentAccessRights object.  This
error was corrected in GW 6.0 SP1, GW 5.5 EP SP4 (GW 5.5.6.1) and in GW 5.5.5.

Delete:

   NOTE:  You need to set the DocumentAccessRights.RevokeAllRights to FALSE
   before you can use the Delete method.

DOCUMENTITERATOR OBJECT

Next:

   Defect # 374971:  Under certain conditions, the DocumentIterator.Next
   property may sometimes say that no document exists, even if it does.  It
   always seems to work fine if you do something unrelated first, like call
   DocumentLibrary.GetDocument.  Submitted to GroupWise Development.

DOCUMENTLIBRARY OBJECT

NOTE:  A document library can reside on any post office.  The Object API makes calls to the Document Management engine, and then the Document Management
engine calls the POA responsible for the library to fulfill certain requests.
If the POA goes down for a certain PO, an error will result when you try to
access a property of a particular document in the library where it resides.
It doesn't matter if you log in using TCP/IP or Path-To-Host.

NOTE:  If the GW client is operating in caching mode and a document is requested, the GW client actually goes online to retrieve the document. Once the GW client has retrieved the document, the Object API can probably also get at that document. But if the document has not been retrieved by the GW client, the Object API has no way to go get it from the online system.

DOCUMENTREFERENCE OBJECT

Document:

   NOTE:  If someone else shares a folder with you, and you access a document 
   reference in that folder, beware that you have rights to the associated 
   document.  You may not be able to access it otherwise.

DOCUMENTS OBJECT

Add:

   Defects # 215091:  If you created a new document of some unidentified
   document type, even though that document type did not exist, and then used
   the Documents.Add method to add the document, it would accept the document
   fine.  It should have only accepted valid document types.  Fixed  - early
   version of GW 5.5.

DOCUMENTTYPE OBJECT

Defects # 330939, # 330941 and # 339132:  The DocumentType2 interface was not installed in the registry.  This prevented proper access to the Object API using .NET.  Fixed in GW 6.0.4 and GW 6.5.1.

DOCUMENTVERSION OBJECT

Defects # 278092 and #100272898.  The Object API was used to copy the Query.Expression filter from one Query Folder, and use the same filter on
another folder.  It included a reference to the Official Document Version.
After doing so, an extraneous 65536 was introduced into the expression
syntax for the Document Version.  It also unchecked the "Find only official document versions" check box in the client, which it should not have done.
Fixed in GW 5.5 EP SP4 and in GW 6 in Sep, 2001.

DOWNLOADSTATUS OBJECT

BodyTextState:

   Defect # 271003:  Suppose you used Hit the Road in the GW client to
   download only the subject line of messages.  The Object API would report 
   incorrectly that for some messages, the body text was downloaded.  This
   error was fixed in GW 5.5.5, GW 5.5 EP SP4 (GW 5.5.6.1) and in GW 6.0.

FIELD OBJECT

Value:

   Defects # 287066, # 287084, and # 100276179:  Custom message field values,
   when accessed through a C3PO, were not refreshed properly.  You had to shut
   down GroupWise before the values were refreshed.  Fixed in GW 6.0.2 and
   GW 6.5.

   Defect # 387547.  In non-MAPI mode (i.e. the MultiAddressBookSupport flag
   is TRUE), a 3rd party could not modify or update the Primary Contact fields
   of an Address Book Record. Fixed in GW 7.0 (March, 2005).

   NOTE:  In non-MAPI mode (i.e. the MultiAddressBookSupport flag is TRUE),
   a 3rd party is never allowed to modify the Last Modification Time field.
   (Using Field.Value)

   Defect # 258800.  The organization field in an address book was displaying
   as blank.  Fixed in GW 5.5 EP in Feb, 2001.

   Defect # 380580.  Retrieving the Address Book Field "Last Modification Date"
   resulted in a string that contained the "MM/DD/YYYY HH:MM am" value. This
   string is missing the Seconds from the time value. This string should read 
   MM/DD/YYYY HH:MM:SS am".  Fixed in GW 6.5.3 in October, 2004.

   Defect # 389876.  The Prefix field of a personal address book could not be 
   updated when you used MultiLogin and set the MultiLoginAddressBookSupport
   flag to TRUE.  Fixed in Oct, 2004, in GW 6.5.3.

   Defect # 400976, # 402359.  A customer read the address field from an
   address book entry, and then wrote it right back.  It was a multiline
   address.  When it was written back, it had an extra CR/LF in it, and hence
   there was an extra line inserted in the address in the GW client.  It only
   happens when using MultiLogin with the MultiLoginAddressBookSupport flag
   set to TRUE to eliminate the MAPI layer.  Fixed in GW 6.5.5 in Feb, 2005,
   and in GW 7.0 in March, 2004.

FIELDDEFINITION OBJECT

Delete:

   NOTE:  This method was designed to work for field definitions of messages
   and documents, but not for address books.  Do not use it for deleting
   address book field definitions.  Address book field definitions cannot be
   deleted.

   NOTE:  Some customers have mistakenly concluded that you cannot delete
   field definitions of an Account object.  You can delete field definitions
   of an Account object, but the definitions are deleted in a deferred
   fashion, and only then when the deleted FieldDefinition object and the
   entire FieldDefinition collection are released.  Make sure these 
   conditions are met.

FieldID:

   NOTE:  Field Ids are only valid on Address Book fields.  No other field
   collection or field definitions will return a non-zero field ID.  The
   Address Book field Ids that are returned are the system MAPI property tags
   associated with each field.  If the property is NOT defined by MAPI, then
   it will not have a value.

FIELDDEFINITIONS OBJECT

Add:

   Defects # 284447 and # 287188:  A problem would occur if you did the
   following:  1)  create a new custom field definition for an archive account
   of a numeric or date type, and 2) add some field values with the
   appropriate data for some record.  If you then go into the GroupWise client
   and try to unarchive the record, you got a C00C error.  Fixed in GW 6.5.
   The fix was not put into GW 6, GW 5.5 EP, or GW 5.5.

   NOTE:  Adding a field definition to one personal address book adds it to all
   personal address books.  This is by design.  You cannot add a field
   definition to the system address book using this method.

   NOTE:  You cannot create a field definition for a document library.

   NOTE:  There is no limit to the number of field definitions that can be
   added to a personal address book.

   NOTE:  You cannot creating new field definitions in an Archive account
   without causing mismatched tags.

   NOTE:  CreateDate, LastModificationDate, and PABGuid field definitions
   were added to the Address Book fields collection in January, 2002 (GW 6.0
   SP1).  The PABGuid field provides a unique and persistent way of
   identifying each particular address book entry.  In order to use these
   values, the Account.MultiLoginAddressBookSupport flag must be set to TRUE
   to eliminate the MAPI layer normally used to access an address book.

   NOTE:  The PABGuid is a unique ID assigned to each entry. There is no
   guarantee that it will be 128 bytes long. And there is no way to parse
   that ID. (At least there is no way to parse it for a 3rd party. It is a
   unique string of bytes that is never duplicated inside this users
   database.)

   NOTE:  There are restrictions for accessing any Date field, such as the
   Birthday field.  The user must be logged in using the MultLogin call.  The
   user must also set the Account.MultiLoginAddressBookSupport flag to TRUE.
   If these restrictions are not followed, the Object API can only display the
   String fields given by the MAPI address book providers.

   NOTE:  If someone is running under MAPI, the Object API will ask the MAPI 
   provider for Field Definitions. Mismatches could occur (with what is seen
   in the GW client) because the GW client doesn't use the AB Provider to get
   these fields. In non-MAPI mode the Object API tried to match an earlier
   version of the System Address Book. However, GroupWise has not updated
   those fields (as of April, 2005).

FIELDS OBJECT

Defects # 258800 and # 100256023:  The Organization field of an address book
was not displaying correctly.  If you set it to a new value using the Object
API, the GW client would not show the new setting.  It would either display a
blank, or the old value.  The defect was fixed in GW 5.5 EP SP3 (GW 5.5.5.1)
and in GW 6.0 SP1.

Defect # 360264, #100353575:  The Middle Name and Suffix fields were not
available if you had set the Account.MultiLoginAddressBookSupport flag to
TRUE. Fixed in GW 6.5.2 and GW 7.0.

NOTE:  When dealing with message, address book, and document fields, the
Fields.Count value will be 0 for all system defined field definitions.
For custom fields, you must fill out a field value in order for it to be
included in the count or collection.  

Defect # 384856, # 378164, # 387547:  If you logged in using MultiLogin, as
opposed to a normal Login, and you accessed certain address book fields, you
could not change their values.  These fields included, for regular users,
the Display Name, Office Web Site, Personal Address, Personal City, Personal
State, Personal Zip Code, Personal Country, and Personal Web Site do not
update. For an Organization, the Display Name, Web site, and Primary Contact
fields can not be changed. For a Resource, the Display Name, Owner, and Type
can not be modified.  Fixed in October, 2004, in GW 6.5.3, and GW 7.0.

Defects # 400976 and # 402359.  A customer read the address field from an 
address book entry, and then wrote it right back.  It was a multiline
address.  When it was written back, it had an extra CR/LF in it, and hence
there was an extra line inserted in the address in the GW client.  It only
happens when using MultiLogin with the MultiLoginAddressBookSupport flag set
to TRUE to eliminate the MAPI layer.  Fixed 2/10/2005 in GW 6.5.5.

Defect # 403362.  Create a new organizational type entry in a personal
address book.  Create another organizational type entry with the same name.
If the Object API is used to access the personal address book, create a
brand new entry, and then attempt to set its organization field equal to
the same name you called the other two new entries - i.e. "MyOrg".  It
would cause an error when the attempt is made to Add the new field.  Fixed
in GW 7.0 2/22/2005.

Defect # 376049 and # 376050.  If using VB .NET to access an Address Book
Entries Fields collection, every Field object returned after the 1st AB Entry
is accessed has the same values as that 1st AB Entry.  Fixed in GW 6.5.3 and GW 7.0 - June 29, 2004.

NOTE:  The LastModificationDate (non-MAPI mode) is created based on a string
in the GroupWise Language Resource file.  The format of that string can
change, based on the country you are in.  For the United States, the format
is MM/DD/YYYY HH:MM:SS am/pm.  It will be given in the timezone of the
machine running the Object API.  It is not in the timezone of the POA. The
3rd party does not have to worry about adjusting it to GMT.  The answers do
not change based on whether you are running in direct mode or TCP/IP.

Defect # 378172:  The Last Modification Date was only good to the minute.
Changed to add seconds in GW 7.0 (Aug, 2004).  

NOTE:  There are restrictions for accessing any Date field, such as the
Birthday field.  The user must be logged in using the MultLogin call.  The
user must also set the Account.MultiLoginAddressBookSupport flag to TRUE.
If these restrictions are not followed, the Object API can only display the
String fields given by the MAPI address book providers.

NOTE:  To search for a birthday, three birthday fields were added in 2003,
BIRTHDAY_DAY, BIRTHDAY_MONTH, and BIRTHDAY_YEAR.

Defect # 401880.  For an organizational type address book entry, the phone
number may be blank or it may show up as an office phone number, depending
upon how it was entered.  Fixed in GW 7.0 in Feb., 2005.

Add:

   NOTE:  You are allowed to add a custom field to a received message.  This
   will allow third parties to determine if they have processed the message.
   It would also allow third parties to add new features to the product.

   Defects # 287066, 100276179:  This method failed to permanently reset
   custom field values.  When used within the Execute function of the Open
   Command of a C3PO, immediately after calling the Fields.Add method it
   would appear to set the new field value, but the value of the field would
   revert back to the original value after the application had run.  Fixed
   in GW 6.0.2 (2/13/2002) and GW 6.5 (9/17/2002).

   Defects # 387115, 387116:  Using MultiLogin with the 
   MultiLoginAddressBookSupport flag set to TRUE,  you could not add an
   Organization field value to a new address book entry fields list.  Fixed
   in GW 6.5.3 (Oct, 2004).

   Defect # 376522, #376523:  Using MultiLogin with the
   MultiLoginAddressBookSupport flag set to TRUE,  it took too long to add
   an Organization field value to the field collection of any existing or
   new address book entry.  Fixed in GW 6.5.3 and GW 7.0 (Jul, 2004).

   Defect # 403362.  Create a couple of organizational type entries into a
   personal address book, using the GW client.  Give the entries the same
   name.  Then use the Object API to create a new user entry, and attempt to
   set the field value of the organization field equal to the same name as
   the other names used previously.  The new entry never shows up in the
   address book.  Fixed in Feb, 05, in GW 7.0.

   Defect # 353456:  If you try to add a field value to a message that is a
   string, and that string contains a CR/LF pair, it doesn't show up in the
   GW client for GW 6.5.1 and afterward.  It used to show up for GW 6.0.
   Defect submitted to GroupWise Development.

   NOTE:  Users may notice a memory loss that occurs when using the
   Fields.Add method with various arguments.  For example, if you start out
   with a brand new personal address book, with no entries in the book, and
   start adding entries, the apparent memory loss per entry gets larger the
   more entries you add.  The time it takes to add an entry also slows down.
   The reason is that in the Object API, GroupWise has dependencies where
   it needs to hold on to all dependent objects until all of the
   dependencies are released.  Hence, there is no memory leak, but rather a 
   temporary holding of memory until all dependent objects can be released.
   Much of this memory dependency is caused by MAPI.  The MAPI address books
   need to hold on to the data until they are released. (Because of some
   architecture dependencies, the Account object holds on to the MAPI
   provider until the Account object can be released.  The Account object
   can't be released until the Session/Application object can be released.
   As a workaround, use the non-MAPI (internal / GroupWise) address books.
   Or, logout and login in occasionally to free the objects.

   Defect # 376837, #376838:  Adding an EMail Address using an ABEntries
   Fields collection returns an error if the EMail address is "a"; however if
   it is an "a@" all works.  Fixed in Sep, 2004, in GW 6.5.3.  Fixed in GW
   7.0 in July, 2004

   Defect #387268, #387269:  When accessing an Address Book Entry objects
   Fields collection, certain fields will not update. For Contacts (i.e.
   individual people), the Display Name, Office Web Site, Personal Address, 
   Personal City, Personal State, Personal Zip Code, Personal Country, and
   Personal Web Site do not update. For an Organization, the Display Name,
   Web site, and Primary Contact fields can not be changed. For a Resource,
   the Display Name, Owner, and Type can not be modified.  Fixed in GW
   6.5.3 and GW 7.0, Oct. 2004.

Count:

   NOTE:  For messages, the count value will be "0" for all system defined
   field definitions, such as "from", "subject", etc.  For custom defined
   field definitions, you have to fill out a field entry before count will
   be incremented.  The message object has no field definition because these
   field definitions are accessed through the Account object.   For Address
   Books, the count property only includes those custom fields that have a
   value.

Item:

   Defect # 404367.  There was a memory leak of about 200 bytes
   every time the Fields.Item method is called.  This may only occur when
   the field value is empty.  Fixed in GW 7.0 in June, 2005.  Fixed in
   GW 6.5.5 in July, 2005.

   Defect # 377164 and # 377175.  Unable to find the Birthday field in an
   address book.  This was done using MultiLogin and setting the
   MultiLoginAddressBookSupport flag to TRUE. Fixed in GW 6.5.3 and GW 7.0

FILTER OBJECT

Expression: (covers Filter Syntax used in a variety of places, such as
Query: Expression, Messages.Find, MessageList.Find, AddressBookEntries.Find,
etc)

   Defect # 313546:  There was no ability to search on task priority or
   category.  Added in GW 6.5.

   NOTE:  Even though the CATEGORY keyword is a string keyword, it can only be
   used with the MATCHES operator.  It cannot be used with the CONTAINS,
   BEGINSWITH, or DOESNOTCONTAIN operators.   

   NOTE:  To search for text within documents, use ANY_FIELD in the filter
   expression.  The type of document can make a difference in the success of
   the search.

   NOTE:  There is no ability to search on special characters, such as
   punctuation characters.  For GroupWise, this is working as designed.  Also,
   you cannot search on partial words.

   NOTE:  The only date field in any database index is the StartDate for a
   task, appointment, or reminder note.  All other dates have not been included
   in the GroupWise database indexes.  That means that searches on other dates,
   such as LastModificationDate, will be slower.  So issuing a Query or Find or
   a normal Messages or MessageList collection must also read every record in
   the database, looking for a match.

   Defects # 269413 and # 269800 (CPR).  Use the Object API to acess a Find
   Results folder, and check on its Query.Expression syntax.  There was a
   double "AND".  Fixed in GW 6 (7/10/01) and in GW 5.5 EP SP4 and in
   GW 5.5.5.

   Defect # 270633 and Defect # 100272515:  The Query.Expression of the
   Object API was not being parsed correctly.  Some parentheses were taken
   out.  Fixed in GW 6 by Aug 31, 2001.  Fixed in GW 5.5 EP SP4.

   Defect # 278092.  The Object API was used to copy the Query.Expression
   filter from one Query Folder, and use the same filter on another folder.
   It included a reference to the Official Document Version.  After doing so,
   an extraneous 65536 was introduced into the expression syntax for the
   Document Version.  It also unchecked the "Find only official document
   versions" check box in the client, which it should not have done.  Fixed
   in GW 5.5 EP SP4.  Fixed in GW 6 in Sep, 2001. 

   Defect # 278524.  When you set librarian rights in the client for a Query   
   Folder, this filter is not reflected in the Query.Expression (doesn't see
   SEARCH_AS_LIBRARIAN added to existing Query string.).  Fixed in GW 5.5 EP
   SP4.  Fixed in GW 6 in Sep, 2001.

   NOTE:  The AddressBookEntries.Find method does not allow the use of the
   BEGINSWITH keyword.

   NOTE:  The <> syntax works for both system defined fields and custom
   defined fields.  The AddressBookEntries.Find syntax uses only string
   fields (<MyStringField> whereas for messages you must supply the type
   also <MyStringField, STRING>.  To search for a custom field, use angle 
   brackets.  For example, to search for a custom field in a message, use 
   <MyCustomField, STRING> MATCHES whatever.

   NOTE:  When you use DOESNOTCONTAIN in a filter for use in the Query
   object, to search on a custom field for messages, it will return
   everything.  This functionality has never been implemented for custom
   fields.

   NOTE:  You should only use the NOT operator for UNARY keywords, and not
   for strings, enumerations, etc.  

   NOTE:  The only Date field in any database index is the Start Date for a
   Task, Appointment, or Reminder Note. All other dates have not been
   included in the GroupWise database indexes. That means that searches on
   LastModificationDate or other dates will be slower.  So issuing a Query
   or Find on a normal Messages or MessageList collection must also read
   every record in the database, looking for a match.

   NOTE:  When you create a filter with a date, like CREATE_DATE =
   something, you can't specify hours and minutes and not seconds.  You
   must specific the entire time.

   NOTE:  Field names are language specific.  You need to identify the local
   name correctly for a specific language version of GroupWise.

   NOTE:  To search for a custom field, use angle brackets.  For example,
   to search for a custom field in a message, use <MyCustomField, STRING>
   MATCHES whatever.

   Defect # 340028.  If you use the AddressBookEntries.Find method in
   caching mode with a syntax of <E-MailAddress> MATCHES
   "first.last@roadkill.com" (with first name, period, last name), it will
   not work.  It will work in Online mode, or with first.last exchanged for
   first, or last, or UserID.  If the Account.MultiLoginAddressBookSupport
   property is set to TRUE, to get rid of the MAPI layer for accessing
   address books, you cannot search on Email Addresses in either caching or
   online mode.  Defect submitted to GroupWise Development.

   Defect #353083:  The DOESNOTCONTAIN operator didn't work.  This was fixed
   in GW 7.0.

FOLDER OBJECT

FindMessages:

   NOTE:  For the Calendar Folder, which is a special type of folder, the 
   Folder.FindMessages, unlike the Folder.Messages.Find method, will only
   return accepted appointments, tasks, and notes and not unaccepted ones.
   (It also returns unaccepted appointments sent to yourself).  These
   unaccepted mail items still belong to the mailbox folder.  On the other
   hand, the Folder.Messages.Find method for the Calendar folder actually run
   a query which finds all the items, both accepted and unaccepted.

   NOTE:  Any query folder, such as the Task List, will return an error while
   trying to get the messages collection.  For Query folders, you must
   retrieve the Query, and then get the messages collection from the Query.

   Defect # 346841:  Likely memory leak of around 180 bytes when the 
   FindMessages method is called.  Defect submitted to GroupWise Development.

   Defect #373436:  Using the TOTAL_RECIPIENTS keyword in a filter gives
   an error.  The fix is to be made in GW 7 SP1.  

FolderRights:

   Defects # 266277 and # 100257534:  Accessing the Folder.FolderRights
   property took took long to respond.  The lengthy response time was
   corrected in GW 6.0 SP1 and GW 5.5 EP SP4 (GW 5.5.6.1).  It now takes a
   much shorter time to access the FolderRights property. 

Name:

   NOTE:  If developers rename a folder in caching mode to a name already in
   use as a hidden folder by the Outlook Plugin, such as Contacts, the system
   may rename the folder again to avoid a conflict like Contacts-1.  

   Defect # 312169:  The Folder.Name property, for the mailbox folder, was
   returning the name of Mail box (with a space) rather than Mailbox
   (without a space).  This was fixed in GW 6.5.

Shared:

   NOTE:  If someone else shares a folder with you, and you access a document 
   reference in that folder, beware that you have rights to the associated 
   document.  You may not be able to access it otherwise.

   NOTE:  There is no way to determine the shared folder status of the sharee
   of the folder.  Did the sharee accept it?  Open it? Delete it?

FOLDERRIGHTS OBJECT

Defect # 354588.  UserA shared a folder with UserB.  UserB accidentally
deleted it.  UserA tried to reshare it programmatically, by first deleting
UserB's rights, then adding them back in and commiting the changes.  The error
was that the folder was not reshared with UserB.  Defect submitted to 
GroupWise Development.

FOLDERRIGHTSCOLLECTION OBJECT

Add:

   Defects # 316133 and # 319522:  The FolderRightsCollection.Add method was
   being used to add to add an Addresses object as the first argument to the
   Add method.  This is OK.  The Addresses object had a Group object in the
   collection.  This resulted in a crash.  This problem was fixed in GW 6.0.3
   and in GW 6.5.

FOLDERS OBJECT

Add:

   NOTE:  The Add method doesn't accept a full folder name, like
   John DoeMyFolder.  You can't have any  marks in the name.  This is
   opposite to other methods and tokens, like the RuleAddActionMoveToFolder
   token - that needs the full folder path.  You have to go to the folder
   level you want before calling Folders.Add.

Refresh:

   Defect # 376448, 376524: The Folders collection object lacked a way to
   refresh the contents. That meant that any changes to the Folders -
   especially by other programs - were not reflected in the collection. The
   only way to refresh the collection was to completely exit the program,
   then relogin.  To duplicate: Inside VB .NET, login to the Object API.
   Loop until the user stopped the test or closed the program on the next
   instructions.  Retrieve the AllFolders collection. Display the Count of
   the collection.  Then delay for a short time. While this program is
   running, go to another computer and run the GW Client against this same
   account. Add a new folder to the Cabinet. The All Folders::Count() in
   the loop never changed.  Fixed (9/10/2004) in GW 6.5.3, and in GW 7.0.

Defect #401896:  Problem with a semaphore deadlock.  Encountered while
accessing a NewFolder and trying to delete an item from the Trash.  Fixed
in GW 7.0, Feb, 2005.  Fixed also submitted for inclusion in GW 6.5.4.

FORMATTEDTEXT OBJECT

PlainText:

   Defect # 355428:  In rare circumstances, accessing the Plaintext or RTF
   properties of a message using C would not work.  Fixed in GW 6.5.2 in
   January, 2004.

RTF:

   NOTE:  To change the color of the font, programmatically, you could use
   the Message.FormattedText.RTF property.  

Unicode:

   Defect # 386755:  Retrieving the Unicode version of the message body did not
   return certain Unicode characters.  Fixed in GW 6.5.3 (Oct, 2004)

GROUPMEMBER OBJECT

Defect:  The ObjType values for a group in an address book always returned
0.  This problem was fixed in GW 5.5.3.

GROUPMEMBERS OBJECT

Add:

   Defects # 313593 and # 322592:  When the AddressBookEntry argument to the
   Add method did not have a valid email address (as required), a faulty
   error message was being returned that said, Running in remote mode, method
   not available.  Fixed in GW 6.0.3 and GW 6.5.

   NOTE:  You cannot another GroupMember object to a GroupMembers collection.
   In other words, you cannot create groups of groups.

   NOTE:  The first argument to the GroupMembers.Add method is an
   AddressBookEntry object.  This object needs to have a valid email address.

LOCATIONS OBJECT

Add:

   Defect # 261967:  When a DocumentLibrary object was supplied as the argument
   for the Locations.Add method, (to perform a Query), it was first thought
   that there was a bug that required the DocumentLibrary object to be
   instantiated before it could be used.  Thus, it appeared that Locations.Add
  (MyRootAccount.DefaultDocumentLibrary) would not work, but
   Locations.Add(vLib)would work where vLib had been defined previously as
   MyRootAccount.DefaultDocumentLibrary.  Upon investigation, there were
   several other factors involved with memory allocation and refresh issues.
   The defect was fixed in GW 5.5 EP SP3 (GW 5.5.5.1) and in GW 6.0 SP1, but
   not in GW 5.5.

   Note:  Make sure you supply a VARIANT argument to the Add method, and not a
   specific interface using early binding and the type library.  This is
   because the Add method accepts only a VARIANT argument.

MAIL OBJECT

CommonMessageID:

   NOTE:  This property is works the same way across post offices.  
   However, the CommonMessageID property has not been added to the Query
   or Find parser.

DelayedDeliveryDate:

   Defect # 357765:  Accessing the Mail.DelayedDeliveryDate property in
   caching mode caused a crash.  Fixed in GW 6.5.2.

   Defect # 376254, #376521:  Sometime during the development of GW 6.5.2
   the Mail.DelayedDeliveryDate property was broken.  All mail was
   delivered immediately.  Fixed in GW 6.5.3 in July, 2004.  Also fixed in
   GW 7.0 July, 2004.

   Defect # 367548:  When a draft message is saved into the Work in Progress
   folder with a delayed delivery date, the delayed date is wiped out.  
   Defect submitted to GroupWise Development.

   NOTE:  Even though the Mail.DelayedDeliveryDate property was not
   implemented until the Mail4 interface (according to the VB Object Browser),
   it still appears as a property of the Mail object in the watch window 
   using Visual Basic - even for the Mail, Mail2, and Mail3 objects.  It also
   can be set to a value in the application for Mail objects prior to Mail4,
   and applications will work fine using a Sep, 2004 version of GW 6.5.3. 
   More investigation needed.

   NOTE:  The GroupWise Delivered Date is the actual date the item was
   delivered to the Post Office. In most cases this is also the date the
   item is delivered to the User. However - if the message was sent as a
   "Delayed Delivery" message, the item will be delivered to the Post
   Office, but held from the User until the actual Delayed Delivery Date is
   hit. 

DeliveredDate:

   NOTE:  see DelayedDeliveryDate:

MESSAGE OBJECT

Defect # 330328, # 332618:  There was originally no capability for getting or sending HTML formatted messages through the Object API or Tokens.  However,
now, if you add an attachment called text.htm, GW 6.5 and later will
recognize it as the HTML part of the message and display it properly.

Message3 Interface:

   Defect # 283060:  The Message3 interface had some initial problems
   associated with it.  It was modified in GW 6.0 SP1 and left in the
   GroupWise code.  The interface now points back to the Message2 interface.
   If you need one of the methods that were new to the original Message3
   interface (get_Archived, put_Archived, put_Sharer), get the appropriate
   sub-message interface (Mail3, Appointment3, etc) instead.

   Defects # 316753 and # 316754:  The GUID values of the Message3 and
   Message2 interfaces, as recorded in the registry, did not match the
   values given the gwoapi.h header file.  Fixed in GW 6.0.3 and in GW 6.5.

Archived:

   Defect # 273141:  The Message.Archived property did not work if you used
   early binding with a Message3 interface in GW 6.0.  The message was not
   archived.  As a result of this bug, the Message3 interface was modified
   (GW 6.0 SP1).  The workaround was instead of using a Message3 interface,
   retrieve a Message interface on an object, determine the item type (mail,
   appointment, task, etc), and then retrieve the appropriate interface from
   the child message type that contains the Archived method.  

Attachments: (see also Attachments Object)

   Defect # 100266876:  If you accessed a message type attachment from a non-
   GroupWise user, there was an error.  Fixed in GW 6.0.1 and GW 5.5 EP SP4
   (GW 5.5.6.1)

   NOTE:  Attachments sent with a message, where the message had no bodytext,
   were truncated or missing if the message was sent through GWIA.  Fixed in
   GW 6.0.3.

BodyText: (also see BodyText:PlainText)

   Defect # 355428:  On some accounts, when looping through all the messages
   in an account, the Object API was unable to access the body text (either
   plaintext or RTF) of a particular message.  Fixed in GW 6.5.2.

   NOTE:  When an encrypted message is sent, it arrives as an attachment.
   The body text is blank.  Therefore, Message.BodyText will be blank

   Defect # 392420, #392423:  Retrieve any message that comes from a corrupt
   GroupWise database. Then ask for the Message Body. The Object API will
   never return.  Fixed in GW 6.5.3 and GW 7.0, Nov., 2004.

BodyText: PlainText:

   Defects # 294556 and # 100293998:  When a user tried to access the bodytext
   of a routed message, using the Message.BodyText property (or 
   Message.BodyText.PlainText), there may have been a runtime error.  The
   problem was fixed in GW 6 SP2, GW 5.5 EP SP5 (GW 5.5.7.1) and in GW 6.5.

   Defect # 312909:  The ability to modify bodytext for personal appointments
   and tasks was added to GW 6.0, but not to the Object API.  Hence, although
   the first call to modify bodytext worked, subsequent calls did not work
   because the GW client did not show the new text.   Fixed in GW 6.5. 

   Defect # 383914:  If you create a draft message using the GW client, and
   save it, and then access it with the Object API, you cannot change the
   body text field.  You can only change the subject field.  Defect submitted
   to GroupWise Development.  Workaround is to create a new Draft Message,
   then change the BodyText in there.

   Defect # 331866.  Using the Object API, you could not modify the bodytext
   of a message for personal appointments, tasks, or notes, and have that
   modification appear in the GroupWise client, until GroupWise was
   rebooted.  Defect submitted to GroupWise Development.

Clone:

   Defect # 374267, #380259:  The Message.Clone method did not copy
   category information.  Fixed in GW 6.5.3 on Aug. 20, 2004, and in
   GW 7.0, Dec. 2004.

Completed:

   Defects # 294472 and # 100295312:  When the Object API was used to mark a
   routed message as completed, using the Message.Completed property,  it
   caused two messages to be sent to the next person in the routing chain
   instead of one message.  Fixed in GW 6.0 SP2, GW 5.5 EP SP5 (GW 5.5.7.1),
   and in GW 6.5.

   Defect # 296459:  The value of the Message.Completed boolean value for a
   routed message was always FALSE, even if you set it to TRUE.  Fixed in GW
   6 SP2, GW 5.5 EP SP5 (GW 5.5.7.1), and GW 6.5.

CreationDate:

   Defect # 100273377:  The creation date was off about 6 hours when a message
   was put into a shared folder.  Fixed in GW 6.0.1.

Delete:

   Defect # 296459:  The user was unable to delete a routed message after it
   had been completed.  There was a runtime error.  Fixed in GW 6 SP2, GW 5.5
   EP SP5 (GW 5.5.7.1), and GW 6.5.

DownloadStatus: BodyTextState:

   Defect # 271003:  Suppose you used Hit the Road in the GW client to
   download only the subject line of messages.  The Object API would report
   incorrectly that for some messages, the body text was downloaded.  This
   error was fixed in GW 5.5.5, GW 5.5 EP SP4 (GW 5.5.6.1) and in GW 6.0.

EnclosingFolders:

   NOTE:  Using the Object API to find all message IDs in the calendar folder,
   a message may be duplicated "if" that message is linked to another folder.
   To verify if it is, check the "EnclosingFolders" property of the message
   object.  If it is > 1, it is linked.

Field: Value:

   Defects # 287066, # 287084, and # 100276179:  Custom message field values,
   when accessed through a C3PO, were not refreshed properly.  You had to
   shut down GroupWise before the values were refreshed.  Fixed in GW 6.0.2
   and GW 6.5.

Forward:

   NOTE:  You can only forward or reply to a message once for the same
   forwarding or reply rule.  This is working as designed.  It is to help
   prevent intra-company spamming from vacation rules and the like.  If a
   rule doesn't have a subect OR uses the Does Not Contain method, then each
   user will only receive a repy from the rule one time.  Appointments are
   exempt from this feature so they will always receive replies.  In 
   ConsoleOne's client options there is a feature  -> Send -> Send Options,
   there's a radio button called "Allow reply rules to loop".  Setting that
   radio button will override this feature. 

   Defect # 357086:  If you use the Object API to get some message already
   in your inbox (or a sent item), and call its forward method, it will
   create a new draft message for you with the original message as an
   attachment.  If you then fill out the fields of the draft message and call
   its "Send" method, you get an error message saying the Send method of the
   IGWMail5 object failed.  Fixed in Feb, 2004, in GW 6.5.2.

   Defect # 378163:  If a 3rd party uses the Object API to Forward or Reply
   to a message, the appropriate Forward and Reply bits are NOT set in the
   current message.  Without those bits, the GW Client will not display the
   appropriate icon.  Fixed in GW 7.0, Aug. 2004.

FromText:

    Defects # 284074, # 284679 and # 285643:  When the
    Messages.AddExistingMessage function was used, the Message.FromText field
    was being overwritten.and the From text was being truncated to the size
    of the orignal text in the From field.  Fixed in GW 6.0 SP2 and GW 6.5.

LocalDelete:

   NOTE:  The Message.LocalDelete property should be used through
   the message subtypes instead.  Retrieve a Message interface on an object, 
   determine the item type (mail, appointment, task, etc), and then retrieve
   the appropriate interface from the child message type that contains the
   LocalDelete method.  

MessageID:

   Defect # 223756:  The GroupWise Message ID should be unique and persistent.
   For GW 5.5 EP, if a GroupWise posted message is created, and assigned a
   message ID, if the posted message was subsequently modified via the
   GroupWise client, the posted message's ID was changed.  The fix was
   inserted into GW 5.5 EP SP1 (GW 5.5.3.1).

   NOTE:  The Message.MessageID property of a message may be duplicated if
   the message is linked to another folder.  Check the
   Message.EnclosingFolders property to tell if the message is linked.  If
   the value is > 1, it is linked.

   NOTE:  There is no way to correspond the Message IDs in the MTA log with
   the Message IDs in the GroupWise data store.   They are different.  Also,
   the Message ID used by the Object API is not the same thing as the Message
   ID used by GroupWise MAPI.  The Object API MessageID was originally
   intended for internal use only, but has become part of public knowledge.

   NOTE:  The Message ID of a draft message changes when it is sent.  The ID
   of the Sent Message is not the same as the ID of the message as seen by
   the recipient.

   NOTE:  If you capture an outgoing message using a C3PO, there is no way
   to get the MessageID in the handler.

   Defect # 375690:  If you get the message list of all the messages
   (document references) in the "Default Library" folder, or the "Authored"
   folder (both of these are Query folders), and then access a particular
   message (document reference) in the collection, you cannot access its 
   MessageID.  A runtime error says that memory could not be allocated. 
   On the other hand, if instead of using the Default Library or Authored
   folders, you try other types of Query folders like a "Find Results"
   folder, and get a document references collection, it works fine.  Defect
   submitted to GroupWise Development.

   NOTE:  GroupWise Development feels that as far as syncing messages is 
   concerned, the only way to prevent reprocessing of messages is to keep
   track of the messages in some other database, then compare the new
   messages with the old. For example, sync products keep a separate database
   of items to give to the PDA. These sync products retrieve a collection
   from the Object API, then store the Message ID in their database. The next
   time the sync products request a messages collection they compare the list
   they have to the list in their database. This is also a good way to find
   what has been deleted and what is new.

   NOTE:  The MessageID is unique across all mail boxes in a domain.  There
   is a very small chance the ID could be duplicated if a second GroupWise
   domain is created and the same userID is on both GroupWise domains and
   a message is created at the exact same time on these two separate
   GroupWise domains.  

Name:

   Defect # 100266954:  When accessing the Message.Name property, there was an
   error if the Message was a SharedAddressBook notification message. (A 
   SharedNotification type message).  Fixed in GW 6.0 SP1 and GW 5.5 EP SP3
   (GW 5.5.5.1).

Opened:

   Defect # 392161, #392162, #392163:  If a user changed the status of the 
   Message.Opened or Message.Read flags on one of his email messages  
   programmatically, this information was never relayed to the sender of
   the message.  When the sender clicked on the properties menu on this
   message in his Sent Items folder, he saw no change in these values.
   Fixed in GW 6.5.3 and GW 7.0.

   NOTE:  Even when a message has been opened, this property can be set back
   to false when using the PeekMode property.  See Account.Peekmode property.

   Defect # 365001.  If the Object API is used to read an unopened message,
   the value of Message.Opened will be set to TRUE (GW 6.5).  If you then
   set the Message.Read status back to FALSE, and run the application again,
   and read the message, the value of Message.Opened will be set back to
   FALSE.  Could not duplicate the problem in GW 7.0.  Fixed in GW 6.5.5.

Private:

   Defects # 264517 and # 268109:  Setting the Message.Private property had
   no effect.  Fixed in GW 5.5.5, GW 5.5 EP SP4 (GW 5.5.6.1) and in GW 6.0
   SP1.

   Defects # 290956 and # 290998:  Setting the Message.Private property
   resulted in an error message saying Update access is denied to current
   user.  Error began occurring in GW 6.0 SP1.  Fixed in GW 6.0 SP2 and in
   GW 6.5.

Read:

   Defect # 392161, #392163:  If a user changed the status of the
   Message.Opened or Message.Read flags on one of his email messages 
   programmatically, this information was never relayed to the sender of
   the message.  When the sender clicked on the properties menu on this
   message in his Sent Items folder, he saw no change in these values.
   Fixed in GW 6.5.3 and GW 7.0.

   NOTE:  Even when a message has been read, this property can be set back
   to false when using the PeekMode property.  See Account.Peekmode property.

   Defect # 365001.  If the Object API is used to read an unopened message,
   the value of Message.Opened will be set to TRUE (GW 6.5).  If you then
   set the Message.Read status back to FALSE, and run the application again,
   and read the message, the value of Message.Opened will be set back to
   FALSE.  Could not duplicate the problem in GW 7.0.  Defect submitted to
   GroupWise Development.

   Defect # 394601:  Problem only seems to appear when using VB Threads. If
   you receive a new email and mark it read, the API will mark the message
   unread when you access the body text of the email.  Similarly, if you 
   create a new meeting and accept it, the API will change the meeting to 
   unaccepted when you access the body text of the meeting.  This behavior
   only happens once per object.  For example, if you mark the email message
   Read a second time, it will remain marked read.

Recipients: (see also Recipients Object)

   Defect # 357680:  Accessing the Message.Recipients collection repeatedly
   during stress testing revealed that eventually after looking at around
   65,000 messages you would see an error message saying an error occurred
   trying to access the Windows System Registry.  Fixed in GW 6.5.2.

Refresh:

   NOTE:  At one time, the Message.Refresh method had a memory leak.  It was
   fixed in January, 2000.

Reply:

   Defect # 384529.  Retrieve a Message from a folder. Call Message::Reply
   to generate a NewMessage object. Call NewMessage::Send. The original
   sender of the message will receive two replies to their message.  Fixed
   in GW 6.5.3 and GW 7.0, Sep, 2004.

   NOTE:  You can only forward or reply to a message once for the same
   forwarding or reply rule.  This is working as designed.  It is to help
   prevent intra-company spamming from vacation rules and the like.  If a
   rule doesn't have a subect OR uses the Does Not Contain method, then each
   user will only receive a repy from the rule one time.  Appointments are
   exempt from this feature so they will always receive replies.  In 
   ConsoleOne's client options there is a feature  -> Send -> Send Options,
   there's a radio button called "Allow reply rules to loop".  Setting that
   radio button will override this feature. 

   Defect # 378163:  If a 3rd party uses the Object API to Forward or Reply
   to a message, the appropriate Forward and Reply bits are NOT set in the
   current message.  Without those bits, the GW Client will not display the
   appropriate icon.  Fixed in GW 7.0, Aug. 2004.

ReplyDaysRequested:

   Defect # 322990:  This property was not being saved properly (was not 
   persistent).  If you set the property to some non-zero value, and sent out
   a message to a recipient, the value of ReplyDaysRequested as seen by the
   recipient, using the Object API, was back to zero.  Also, if the sender of
   the draft message saved the message, and used the Object API to look at
   the ReplyDaysRequested property later, it was zero.  Fixed in GW 6.5.1

ReplyParent:

   Defect # 405653.  This method only appeared to work for received messages,
   and only if another earlier received message in the reply thread is also
   in the inbox as a received message.  It then returned the grandparent
   and not the parent.  Fixed in GW 7.0.  Also submitted to GW 6.5.5.

Retract:

   NOTE:  Only the sender of a message can retract it.

Routed:

   Defects # 256253 and 100256647:  After setting the Message.Routed flag to
   TRUE, a message was suppose to proceed from one recipient to the next in
   order of completion.    However, the message went to all recipients at
   once, ignoring the routed property.  This defect was fixed in GW 6.0 SP1,
   and in GW 5.5 EP SP3 (GW 5.5.5.1). 

   Defect # 296459.  There were several problems with using the Message
   object of the Object API of a routed message.  Fixed in GW 6 SP2.  Also 
   fixed in GW 5.5 EP SP5 and GW 6.5.

Send:

   Defect # 276144:  You used to be able to send off a draft message, and then
   use it again a second time (or multiple times) after it had been put in the
   trash.  This was fixed in GW 6.0 SP1.  It is no longer possible.  The first
   send should delete it, and make it unuseable (unless you retrieve it from
   the trash).

   NOTE:  Using the Message.Send method to send out messages within a loop can
   cause Sent Item property difficulties.  The GroupWise code structure can
   cause two messages to have the same ID if sent within the same second.  The
   person sending out the messages needs to slow down the iterative loop time.

   Defect # 322402.  When you send out X messages in a loop, through the
   Object API, the Sent Items Folder may show more than X messages that were
   sent.  Some messages may be reported as duplicated.  Defect submitted to
   GroupWise Development.

   Defect # 357086:  If you used the Object API to access a message already in
   your inbox, and call its forward method, it will create a new draft message
   for you with the original message as an attachment.  If you then filled out
   the fields of the draft message and called its send method, you got an
   error message.  The problem only occurred in GW 6.5, not in GW 6.  Fixed in
   GW 6.5.2.

   Defect # 100255903:  The Recipients.Resolve method would hang when used in
   an NT service.  The Message.Send method calls the Resolve method.  Fixed in
   GW 5.5.5 and GW 5.5 EP SP4 (GW 5.5.6.1).

   Defect # 394862:  The Send method would crash if you first used the
   MultiLogin command with the MultiLoginAddressBookSupport flag set to TRUE,
   and had added your recipients by using the Recipients.AddByDisplayName
   method.  Fixed in GW 6.5.4 (12/3/2004)

   NOTE:  Messages are sent from the GroupWise Client on a Windows background
   thread.  When you create a message and push Send, the GroupWise Client
   spawns a background thread in Windows and uses the background thread to
   actually call into the GroupWise engine to perform the send.  While the
   SEND is in process, GroupWise returns control of the UI to the user.
   There could be some cases where conceivably the SEND action is occurring
   slowly enough some other action taken by the user after the Send button is
   pushed, such as creating a rule, may actually occur before the message is
   really sent.

   Defect # 100354256:  GroupWise 6.5 was too slow at start up.  The problem
   was that GroupWise 6.5 added support for SSL connections between the GW
   Client and the POA. This supporting code was too slow.  A fix was made
   in GW 6.5.2, April, 2004.

   Defect # 384529.  Retrieve a Message from a folder. Call Message::Reply
   to generate a NewMessage object. Call NewMessage::Send. The original
   sender of the message will receive two replies to their message.  Fixed
   in GW 7.0, Sep, 2004.

   Defect # 402937:  NTService displays a dialog box when sending to a
   Personal Group.  Create a program that uses the Object API to send a
   message. Login to the Object API as an NT Service. Also tell the Object
   API to NOT use MAPI. Then send a message to a Personal Group. The Object
   API/MAPI Address Book will report "The MAPI Session Handle of the Novell
   GroupWise Object Request Broker could not be accessed.  The address book
   cannot run."  Fixed in GW 7.0, Feb. 2005. 

   Defect # 403882:  Sending to a PAB Group from a Shared Address Book does
   not work.  Add a Group from a Shared Address Book to a draft message,
   then calling Send() will not send the message to the group.  To duplicate:
   have someone create a Shared Address Book, then share it with you. Also
   have a Group created in that Shared Address Book using names from the
   Shared book.  When the message is sent, it will not be sent to the Group.
   Fixed in GW 7.0, Feb. 2005

   NOTE:  The Message.Sharer property should be used through the
   message subtypes instead.  Retrieve a Message interface on an object,
   determine the item type (mail, appointment, task, etc), and then retrieve
   the appropriate interface from the child message type that contains the
   LocalDelete method.  

Size:

   Defect #416988:  It was not possible to get the size of a message directly.
   That is, there was no Message.Size property.  An indirect method was to
   used to get the Size keyword within a filter.  Using this keyword, you
   could determine whether a given message is greater or less than a certain
   size. This could be done a number of times on the same message in an
   iterative loop using a type of binary search until you have pinpointed the
   size of the message.  This is still the only available way for GW versions
   6.5 and before.  GroupWise Engineering added the capability to get the
   size directly in GW 7.0.  Use the various message subtypes, such as
   Mail.Size, Appointment.Size, etc.

ViewName:

   Defects # 277861 and 100274737:  Setting a custom view for a message to be
   sent by using the Message.ViewName property did not work.  The recipient
   of the message received a regular mail view instead.  The fix was made in
   GW 6.0 SP1 and also in GW 5.5 EP SP5 (GW 5.5.7.1)

MESSAGES OBJECT

NOTE:  Normal Object API Messages collections have a limit of 4962 messages
in a folder (counted by records). This is the value that Messages.Count uses.
If there are more messages than that in the Folder, the Object API user will
not be able to see them (you must delete some messages in order to see the
extra messages). MessageLists, however, are different. There are no limits
to the number of items in a MessageList.  So any results from a Query object
or from the AllMessages::Find method will have no limits.  When you use Messages.Add, the limit was 8192 (counted by DRN rather than records). This
was fixed (see below). 

Defect # 400845, 400846:  Enhance the Object API so that more than 4962 or
8192 messages could be contained in a folder.  Fix made in GW 7.0, Feb,
2005.  Also fixed in GW 6.5.5 (Jan, 2005)

NOTE:  GroupWise Development feels that as far as syncing messages is 
concerned, the only way to prevent reprocessing of messages is to keep track
of the messages in some other database, then compare the new messages with
the old. For example, sync products keep a separate database of items to
give to the PDA. These sync products retrieve a collection from the Object
API, then store the Message ID in their database. The next time the sync
products request a messages collection they compare the list they have to the
list in their database. This is also a good way to find what has been deleted
and what is new.

NOTE:  The messages collection returns messages in no particular order. In
other words, there is no guaranteed order of returned values. As a general
rule, the Object API leaves any sorting of items up to the callers.

Add:

   Defects # 345542, #346469 and # 346466:  The Messages.Add method would
   not work when trying to add a new draft message to an account that already
   had too many messages in it (several thousand).  Fixed in GW 6.0.4, GW
   6.5.2 and GW 7.0.

   NOTE:  If you use early binding with a Message object as the argument, it
   needs to be dimensioned as a VARIANT argument and not as a Message argument.

   NOTE:  You cannot create a new SharedNotification message for a new address
   book by using the Messages.Add method with
   GW.MESSAGE.MAIL.NEW.SHARED.PAB.NOTIFY.  Instead, you need to create an
   address book and share it with someone else.

   NOTE:  If you define the Message object that the Messages.Add method returns
   as an Appointment object, and then access the StartDate property, you will
   get an error.  The error says the object doesn't support that method.  An
   easy workaround is to dimension the return Message value as Appointment2,
   Appointment3, Message, or Variant.  It will then succeed.

   NOTE:  If the Appointment object came as a return value from the
   Messages.Add method, dimension the object as an Appointment2,
   Appointment3, Message or Variant object, and not as an Appointment
   object.

   Defect #383833, #383834.  The Messages.Add method returned an error when
   you tried to add a personal message (using egwPersonal as second
   parameter).  Fixed in Sep, 2004 in GW 6.5.3 and GW 7.0.

AddExistingMessage:

   Defects # 284074, # 284679 and # 285643:  When the
   Messages.AddExistingMessage function was used, the Message.FromText field
   was being overwritten.and the From text was being truncated to the size of
   the orignal text in the From field.  Fixed in GW 6.0 SP2 and in GW 6.5.

   Defect # 347806:  A customer was creating a new message (Message A) by using
   the Messages.AddExistingMessage method, and then attaching that new message
   to a new draft message (Message B).  He then used the
   Messages.AddExistingMessage method again to add Message B to a message
   collection.  All this was done in a loop.  This created a number of problems
   and runtime errors, seen at different times.   Fixed in GW 6.0.5 and
   GW 6.5.2.

   Defect # 336778.  If you used the Messages.AddExistingMessage method to
   add a new message, it would say "Pending" in the SentItems properties.
   Fixed in GW 7.0 so that the status now returns nothing.

   Defect # 383646, #383647.  If you used AddExistingMessage with the 5th
   parameter equal to egwPersonal, the message never displayed in the GW
   client.  Fixed in Sep, 2004, in GW 6.5.3 and in GW 7.0.

   Defect # 404500, 405760.  The second parameter in AddExistingMessage was
   ignored.  It is the sender's email address.  Instead, the value of 
   Message.Sender.EmailAddress returned the email address of the account you
   are using to run the application.  Fixed in GW 7.0 (March, 2005) and in
   GW 6.5.5 (March, 2005).

   Defect # 411036:  When the recipients for the new message were inserted
   by using the AddByDisplayName method of the Recipients object, and the
   display name was in the form of "last name, first name", and this draft
   message was used as input to the Messages.AddExistingMessage method, the
   first name was left off when the message created from AddExistingMessage
   was later viewed in the GW client.  This can be partially resolved if each 
   recipient object is first resolved.  In this case, the resulting message
   after calling the AddExistingMessage function will show email addresses
   instead of display names.  Getting the entire display name is not
   possible.

Count:

   NOTE:  The Sent Items folder will find any Outbox item in the  Mailbox,
   Calendar, or Sent Items folder.  Sent appointments or tasks will show up
   in the Sent Items folder, but not in the mailbox.

Find:  (See Filter Object also)

   NOTE:  The Messages.Find property can only find the * and ? special 
   characters.  It also cannot find partial words.

   NOTE:  For Calendar folders, the Find method only returns accepted
   messages, along with unaccepted ones sent to yourself.

   NOTE:  The Find method uses a <MyField, STRING> syntax rather than a
   <MyField> syntax for Strings, like the AddressBookEntries.Find method uses.

   NOTE:  This method will not only find messages in a particular folder, but
   also linked messages to that folder.

   NOTE:  Cannot used the Find method to search for the CommonMessageID
   property of the message subtypes (mail, appointment, etc) across post
   offices.

Move:

   NOTE:  The Messages.Count value will decrease as soon as you move a message
   that is in the collection.

MESSAGELIST OBJECT

NOTE:  Normal Object API Message collections have a limit of 4962 messages.  
If there are more messages than this number in the folder, the Object API will
not be able to see them.  In contrast, there are no limits to the number of
items that are allowed in a MessageList.

Add:

   Defects # 257824 and # 100269771:  When adding a task to this message list,
   the MessageList.Item method failed to work correctly later to access
   messages in the list regardless of their type.  The wrong messages may
   have been accessed.  This problem was fixed in GW 5.5.5, GW 5.5 EP SP4 (GW
   5.5.6.1) and in GW 6.0 SP1.

Item:

   Defects # 257824 and # 100269771:  When adding a task to this message list,
   the MessageList.Item method failed to work correctly later to access
   messages in the list regardless of their type.  The wrong messages may
   have been accessed.  This problem was fixed in GW 5.5.5, GW 5.5 EP SP4 (GW 
   5.5.6.1) and in GW 6.0 SP1.

   Defect # 354495:  When you use MultiLogin() to connect to an account, then 
   create a query, add some folders to the Query Locations object, perform
   the query, and then walk through the resulting MessageList, for some
   messages the MessageList.Item(vIndex) fails.  Defect has been submitted
   to GroupWise Development.

QUERY OBJECT

Defect # 270166:  The Query object did not work in GW 6.0 in caching mode when
a password was used to log into caching mode.  Fixed in GW 6.0 SP1.

NOTE:  A Query won't find a document until it has been indexed.  By default,
this is about every four hours.

Defect # 354495:  When you use MultiLogin() to connect to an account, then 
create a query, add some folders to the Query Locations object, perform
the query, and then walk through the resulting MessageList, for some
messages the MessageList.Item(vIndex) fails.  Defect has been submitted
to GroupWise Development.

Defects # 310328 and # 314958:  There used to be a limit on Query results
of 4096.  This limit was increased to 65536.  Fixed in GW 6.0.3 and GW 6.5.

NOTE:  The CommonMessageID property of the message subtypes (added in
November of 2002) was never added to the Query or Find parser.

Expression: (See Filter Expression also)

   Defects # 269413 and # 269800:  Suppose you created a Find Results folder 
   through the GroupWise client that searched for documents only, and had
   checked the box labeled Find only official document versions.  Suppose
   further that you had added some other criterion in your search filter
   such as the subject of the document had to contain GroupWise.  When you
   later used the Object API to get the Query.Expression of this FindResults 
   folder, the expression would include two ANDS instead of one like this:
   SUBJECT CONTAINS GroupWise AND AND OFFICIAL_DOCUMENT_VERSIONS_ONLY.
   Further, if you had not checked the Find only official document versions
   checkbox, the API application would have crashed.  This bug was fixed in
   GW 5.5.5, GW 5.5 EP SP4 (GW 5.5.6.1) and in GW 6.0 SP1.

   Defects # 270633 and # 100272515:  Assigning a complicated filter
   expression with multiple parentheses to the Query.Expression method would
   sometimes mess up the GroupWise parser with some nesting problems and
   change the meaning of the expression.  Hence, the search would sometimes
   be for the wrong expression.  The problem was fixed in GW 6.0 SP1 and in
   GW 5.5 EP SP4 (GW 5.5.6.1).

   Defects # 278092 and # 100272898:  The Object API was used to copy the 
   Query.Expression filter from one Query folder, and use the same filter on
   another folder.  The expression included a reference to the Official
   Document Version.  After making the copy, and extraneous 65535 was
   introduced into the expression syntax for the document version.  It also 
   unchecked the Find only official document versions checkbox in the GW
   client, which it should not have done.  Fixed in GW 5.5 EP SP4 (GW 5.5.6.1)
   and in GW 6.0 SP1.

   Defect # 278524 and # 100272899:  When you set librarian rights in the GW
   client for a Query folder, that filter was not inserted into the 
   Query.Expression (doesn't see SEARCH_AS_LIBRARIAN added to existing Query 
   string.  Fix was in GW 5.5 EP SP4 (GW 5.5.6.1) and GW 6.0 SP1.

   Defect # 306635:  A Query.Expression like (CREATE_DATE > THIS_MONTH 3)
   saved through Query.CreateFolder would not be displayed correctly in
   GroupWise  Folder/Properties/Advanced Find.  Even if you created the
   search expression in the GroupWise Client, and then use the same filter 
   expression to create the new Query Folder, the result was the same.  Fixed
   in GW 6.5.

   Defect # 313546:  There was no ability to search on task priority or
   category.  Added in GW 6.5.

   NOTE:  To search for text within documents, use ANY_FIELD in the filter 
   expression.  The type of document can make a difference in the success of
   the search.

   NOTE:  Cannot used a Query to search for the CommonMessageID property of
   the message subtypes (mail, appointment, etc) across post offices.

Locations:

   Defect # 306634:  The Query.Locations were not saved with the Query.  When
   Query.CreateFolder was run, for example, whatever locations you had were
   reset to an empty list, so that the whole mailbox was searched.  This
   happened after you exited the application.  Fixed in GW 6.5.

   Defect # 361002:  Queries were paying no attention to any Query.Location 
   restrictions.  If you restricted the search to one folder, messages in
   other folders were being found as well.  Fixed in GW 6.5.2.

   NOTE:  The Query object states in the Locations property that you can
   search within a document library.  To search for text within documents,
   use ANY_FIELD in the filter expression.  The type of document can make a
   difference in the success of the search.

   NOTE:  You cannot specify locations in a proxied account.  In other
   words, it is invalid to add a folder from a proxied user into a query of
   the user that did the query.  (This used to not be the case, and hence
   this oversight was corrected in GW 7.0)

QueryMessages:

   Defects # 310328 and # 314958:  There used to be a limit on Query results
   of 4096.  This limit was increased to 65536.  Fixed in GW 6.0.3 and GW 6.5.

   Defect # 375690:  If you use a Query to get all the messages in the
   "Authored" of "Default Library" folders (both query folders), and then
   access any message in this message list (which is really a list of
   document reference type messages), you cannot access the MessageID
   property.  A runtime error says memory could not be allocated.  Defect
   submitted to GroupWise Development.

SearchLocally:

   NOTE:  This is the only Query property that acts differently in online and
   remote or caching modes.

Stop:

   NOTE:  The Stop method issues a HALT command to the GroupWise Search
   Engine.  The HALT will be handled the next time a set of Search Results
   is returned.  Stop does not set the Query.Completed flag to TRUE.  Take
   the current set of Messages found and use them.

QUICKMESSAGE OBJECT

NOTE:  With the release of GroupWise 6.5.2, the GWOAPI.H header file for 
developers using C included a description of the QuickMessage interface. This description left off two properties - BoxType and ClassName. Any 3rd party
that tried to use that file to build a C or C++ program, then access the QuickMessage object received errors. These two properties were quickly added
to the header file.

QUICKMESSAGES OBJECT

Defect # 390253.   When you attempted to get the QuickMessages collection
for Tasks, setting the StartDate to some value and using the egwNewMessages
value, you got all the tasks and not just the tasks since the StartDate.
Fixed in the GW 6.5.3 version dated Oct. 28, 2004.

Defect # 389728.  When you use a trusted application to log into several
accounts, and get the QuickMessages collection in each account about five
seconds apart, the application hangs.  Fixed in Oct. 28 build of GW 6.5.3.

Defect # 400845:  Enhance the Object API so that more than 4962 or 8192
messages could be contained in a folder (see Messages Object).  Fix made in
GW 7.0, Feb, 2005.

Defect # 401166:  Accessing QuickMessages and Account::Refresh from multiple
users, each user running in a different thread, causes a hang or crash.
Fixed in GW 7.0, Feb. 2005.

Defect #378232:  The QuickMessages collection was change in GW 7.0 so that
the collection no longer includes hidden messages.

Count:

   Defect # 390253:  When you attempted to get the QuickMessages collection
   for Tasks, setting the StartDate to some value and using the
   egwNewMessages value, you got all the tasks and not just the tasks since
   the StartDate.   Fixed in the GW 6.5.3, Oct., 2004.

GetQuickMessagesCollection:

   NOTE:  Like the normal Messages collection, the QuickMessages collection
   returns messages in no particular order. In other words, there is no
   guaranteed order of returned values. As a general rule, the Object API
   leaves any sorting of items up to the callers.

RECIPIENTS OBJECT

Defect # 307938:  The Object API was returning blind copy recipients as well as normal recipients and CC recipients in the Recipients collection.  This made it possible for normal recipients of a message to see a list of all blind copy recipients of the message.  Only the Sender-Owner of the message should
have had that capability.  Fixed in GW 6.0 SP3 and in GW 6.5.

Defect # 388190, #388191.  If someone sent an email to you from outside
GroupWise, with you are a BC recipient, you could not see it when iterating
through the Recipients collection.  Fixed in October, 2004, in GW 6.5.3, and
in GW 7.0, Oct, 2004.

Add:

   Defect # 358355:  Messages sent with CC or BC recipients ended up as TO 
   recipients instead when the message was opened.  Fixed in GW 6.5.2.

AddByDisplayName:

   Defect # 394862:  The Send method would crash if you first used the
   MultiLogin command with the MultiLoginAddressBookSupport flag set to TRUE,
   and had added your recipients by using the Recipients.AddByDisplayName
   method.  Fixed in GW 6.5.4 (12/3/2004)

   Defect # 411036:  When the recipients for the new message were inserted
   by using the AddByDisplayName method of the Recipients object, and the
   display name was in the form of "last name, first name", the first name
   was left off when the message was later viewed in the GW cleint.
   Submitted to GroupWise Development.

Count:

   Defect # 100253222:  If a forwarded message had more than one of any of the 
   types of recipients (TO/CC/BC), the Recipients collection would only return
   one item.  The item returned was the ?TO? address of the original message,
   but had the type set to BCC.  If there were no more than one recipient of
   any type in the forwarded message, then the Recipient's collection
   contained the correct expected values.  Fixed in GW 6.5.

   Defect # 405404:  If you search for messages with more than a certain 
   number of recipients, using the TOTAL_RECIPIENTS key, and then access
   these messages and look at the number of recipients in each message,
   there is a discrepancy.  The number of recipients
   (Message.Recipients.Count) includes the TO and CC recipients, and not
   the BC recipients.  However, when the AllMessages.Find operation is used
   with a TOTAL_RECIPIENTS >= X filter, it finds TO, CC, and BC recipients.
   Hence, you can find messages that show more than X recipients, and when
   it is printed out using Recipients.Count, it shows less than X.   It
   appears that the filter is not working properly.  Defect has been 
   submitted to GroupWise Development.

Resolve:

   Defect # 100255903:  The Recipients.Resolve method would hang when used in
   an NT service.  Fixed in GW 5.5.5 and GW 5.5 EP SP4 (GW 5.5.6.1).

SHAREDNOTIFICATION OBJECT

Defect # 100266954:  When accessing the Message.Name property, there was an
error if the Message was a SharedAddressBook notification message. (A SharedNotification type message).  Fixed in GW 6.0 SP1 and GW 5.5 EP SP3 (GW 5.5.5.1).

NOTE:  There is no way to determine who owns a shared address book through
the Object API.  

NOTE:  You cannot create a new SharedNotification message for a new address
book by using the Messages.Add method with
GW.MESSAGE.MAIL.NEW.SHARED.PAB.NOTIFY.  Instead, you need to create an address
book and share it with someone else.

Accept:

   Defects # 250248 and # 100257398:  The SharedNotification.Accept method,
   when used to accept a shared folder notification message, caused an
   application crash.  In spite of the crash, the shared folder was accepted
   although with a cryptic form of the original folder name.  The defect
   was fixed in GW 6.0 and in GW 5.5 EP SP4 (GW 5.5.6.1)

   Defect # 281327 and # 100273550:  The SharedNotification.Accept method,
   when used to accept a shared address book notification message, did not
   work.  Fixed in GW 6.0 SP1 and in GW 5.5 EP SP4 (GW 5.5.6.1).

TASK OBJECT

Defect # 268522:  Tasks created and assigned through the Object API could not
be printed later with the GroupWise Client.  This problem was corrected in
GW 5.5.5 and in GW 5.5 EP SP4 (GW 5.5.6.1).  Presumably it was also fixed in
GW 6.0 SP1, but no record is given.

Completed:

   Defect # 294472.  Marking a routed message as completed had the effect of 
   sending "2" messages to the next person in the routing chain.  Fixed in
   GW 6 SP2.  Fixed in GW 5.5 EP SP5, and in GW 6.5.  

StartDate:

   NOTE: If a task is not completed, the client shows the startdate and
   duedate as the same original date of the task.  However, the Object API
   shows that the StartDate is updated everyday, while the DueDate
   remains the original date like the client.  This is working as designed.
   Tasks have a separate date (AssignedDate).  When it is first created the
   AssingedDate is set to the StartDate.  At midnight, the StartDate is
   rolled to the next day.  The GWClient will show AssignedDate the start
   of the task.  The GWClient uses the StartDate to determine that the task
   is over due.

TIMEBLOCK OBJECT

NOTE:  The TimeBlock.From field follows the administratively defined
ConsoleOne setting for name format (LastName, FirstName or FirstName, 
LastName).  Hence, this field in a busy search may be invalid if the user has
the GW client address book display format set to the opposite format from ConsoleOne (see Address Book/ View/Name Format).

TRASH OBJECT

NOTE:  The trash folder is not a query folder.

TRASHENTRIES OBJECT

NOTE:  The AllMessages collection includes all messages that are in the box
EXCEPT the trash.  If any third party wishes to search the Trash, the party
can retrieve the TrashEntries collection, then use the Find method inside
there.

TRASHENTRY OBJECT

Delete:

   Defect #401896:  Problem with a semaphore deadlock.  Encountered while
   accessing a NewFolder and trying to delete an item from the Trash.  Fixed
   in GW 7.0, Feb, 2005.  Fixed also submitted for inclusion in GW 6.5.4.

--gmonson

Novell® Making IT Work As One

© 2009 Novell, Inc. All Rights Reserved.