AUTOMATED SYSTEM AND METHOD FOR DOWNLOADING, UPDATING AND SYNCHRONIZING CONTACT INFORMATION
CROSS REFERENCE TO RELATED APPLICATIONS
The present application is related to and takes priority from U.S. Provisional Patent Applications Serial Numbers 60/234,020 and 60/238,273, filed September 20, 2000 and October 5, 2000, respectively, entitled AUTOMATED SYSTEM FOR DOWNLOADING, UPDATING AND SYNCHRONIZING CONTACT INFORMATION, and ENHANCED AUTOMATED SYSTEM FOR DOWNLOADING, UPDATING AND SYNCHRONIZING CONTACT INFORMATION commonly owned by the assignee of the present application, the entire contents of which are expressly incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates generally to electronic contact management systdms and, more particularly, to a system for automatically updating and synchronizing a local contact manager with a centralized universal data base.
BACKGROUND OF THE INVENTION
Personal contact data exchange occurs every time two or more individuals communicate, in either a business or personal context, face-to-face, or across space and time. Such exchanges frequently include the exchange of informal information, such as business cards, telephone numbers, addresses, dates, and times of appointments. In order to support this kind of activity, personal contact management application software programs have been developed by means of which an individual or entity can collect, store and maintain contact record information acquired through formal, or informal data exchanges. Contact management software automates the exchange of personal information typically found on a traditional business card and allows an individual or entity to bring up that information with the click of a mouse.
However, given the fluidity of personal circumstances in the modern world, contact record information is often out-of-date after a relatively brief period of time. A contact's circumstances may have changed to such an extent that their business address, telephone number and e-mail address may all have changed, making them difficult to reach in the best of circumstances. Further, a particular individual or entity may have exchanged business cards with one individual at one point in time and exchanged business card containing wholly different information with another individual at a second point of time. These two individuals
will have conflicting contact data and if they happen to find themselves in communication with one another, often find it difficult to reconcile these differences.
Conventional contact management software programs also generally requirement manual intervention with a user desires to update contact records after having discovered an error. While certain programs allow for the exchange of information in electronic form, as populated contact cards, for example, both the initiator and recipient of such an exchange must have recourse to the same contact management software program. Users with different contact management programs, must then default to manual data entry and/or updating in order to maintain their contact records in current condition. To date, their is no methodology available by which an individual's contact information may be acquired and centrally maintained and automatically forwarded to associated parties defined by that individual's own personal contact list, whenever the individual updates their own contact profile. Further, there is no methodology, to date, by which an individual is able to acquire a complete set of contact record data for a "just meet" colleague for example, when that individual only has recourse to the colleague's e-mail address or telephone number. This often occurs during modern electronic transaction communications, where communication parties identify themselves simply by name and e- mail address.
Accordingly, there is a need for a system and method by which an individual is able to add a contact record to their personalized contact database by performing a search and acquisition process on some unique communication identifier belonging to a new contact. The system should be able to synchronize a subscriber's personalized contact record database with an aggregate contact record database and update any stale records belonging to the subscriber. Further, as a subscriber updates their own contact record information, the system should provide notification of the change to all of the subscriber's associated entities, along with the updated contact information. Contact data is transferred between and among subscribers without regard to the contact management program they have implemented on their desktop. System participation should be encouraged by engaging non-subscribing associates of a participate during contact synchronization.
SUMMARY OF THE INVENTION
In one aspect, the present invention is directed to an automated information exchange system for establishing efficient information maintenance and extraction. The system generally comprises a database server with a database hosted on the server. The database includes personalized contact records with each record contributed by a contact record
provider. Each record provider and thus each record is identified by a unique identification index. An information requester is identified to a source locus and queries the database for a contact record by providing the unique identification index as the query.
A matching engine matches the unique identification index to a corresponding particular contact record and a transmission engine forwards the particular contact record matched to the unique identification index to the source locus and thereby to the requester.
In a further aspect, the invention includes a network enabled user terminal and a contact management program hosted on the user terminal. An information exchange software program plug-in is also hosted on the user terminal and operates in cooperation with the contact management program. The information exchange software program plug-in executes the contact record query and the particular contact record matched to the unique identification index is populated into a contact record maintained by the contact management program.
An advantageous feature of the present invention is implemented by an association engine, hosted on the database server, which forms an association between the requesting party and the provider of the particular contact record. As a provider modifies their personalized contact record, the modified contact record is automatically forwarded to each requesting party with which the provider is associated. In particular, an association is formed when one party's unique identification index is found within an aggregate of contact records belonging to another individual identified by their own unique identification index. In a further aspect of the invention, a synchronization engine synchronizes the contents of the database with a set of contact records maintained by a user and hosted on the user's contact management application software program. Each user maintained contact record, corresponding to a contact record in the database, is updated to reflect current information contained in the database contact record during content synchronization. The system includes an engine for automatically populating empty contact fields in a user maintained contact record with corresponding current contact field information contained in the database contact record. The engine automatically replaces field contact fields in a user maintained contact record with corresponding current contact field information contained in the database contact record. In an automated information exchange system, a method for establishing efficient information updating an extraction includes the steps of establishing a database, the database including personalize contact records, each contributed by a contact record provider and each including a unique identification index. A query is received from a information requester, with the requester providing an information index as the query. The identification index query provided by the requester is matched with a unique identification index corresponding
to a particular contact record and the particular contact record matched to the unique identification index is forwarded to an identified source locus corresponding to the requester. The method further includes a signing an association between the requester and the provider of the particular contact record and, as a provider modifies their personalized contact record, the modified contact record is automatically forwarded to each requester with which the provider is associated. The unique identification index is selected from a group consisting of an e-mail address, a telephone number, a social security number, a random alpha-numeric tag, or a sequential alpha-numeric tag. The unique identification index is preferably an e-mail address or an e-mail address in combination with a name. Contents of a centralized database are synchronized with a set of contact records maintained by a user, wherein each user maintain contact record, corresponding to a contact record of the database, is updated to reflect current information contained in the database contact record. The updating step further comprises automatically populating empty contact fields in a user maintained contact record with corresponding current contact field information contained in the database contact record and/or automatically replacing field contact fields in a user maintained contact record with corresponding current contact field information contained in the database contact record.
In a further aspect of the invention, user maintained contact record information which is replaced by current database contact field information is saved and appended into a free- form data field and defined by a local contact management software program.
In yet an additional aspect of the invention, record contents of the set of contact records maintained by a user are evaluated and a unique transmission index is identified, in each contact record of the set which does not correspond to a contact record in the database. An invitation message is transmitted to each identified unique transmission index which does not correspond to a contact record in the database.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features, aspects and advantages of the present invention will be more fully understood when considered in connection with the following specification, Appended Claims and Accompanying Drawings, wherein: FIG. 1 is an exemplary screen shot of a contact management new contact record including client software interfaces in accordance with the present invention;
FIG. 2 is an exemplary screen shot of a registration and new contact entry form, indicating data entry fields associated to a participant's unique identifier;
FIG. 3 is an exemplary screen shot of a contact management contact record, including updated information and saved previous contact data;
FIG. 4 is an exemplary screen shot of synchronization preference options in accordance with the invention; FIG. 5 is an exemplary screen shot of a listing of contacts to which participation invitations are pending;
FIG. 6 is simplified, semi-schematic block diagram of a conceptual data model in accordance with the present invention;
FIG. 7 is a logical data flow diagram illustrating an add new contact process; FIG. 8 is a logical data flow diagram illustrating an invite publisher and edit publisher information process;
FIG. 9 is a logical data flow diagram illustrating a contact synchronization process; and
FIG. 10 is a simplified, semi-schematic block diagram of site components of the network partition portion, of the system of the present invention.
DESCRIPTION OF THE INVENTION
Briefly, the invention is characterized as an automated information exchange system which provides for efficient information intercommunication with respect to personalized contact data, and the like. The system is devised to be implemented in a wide area network environment, where end-users are each facilitated with a data terminal device, such as a PC, running to any one of a number of various, commercially available contact management application software programs. A network partition portion suitably comprises a data base server which hosts a system data base, including personalized contact records, each contributed by a contact record provider and each including a unique identification index. The network partition portion further includes synchronization which synchronizes the record contents of the data base with a corresponding set of personalized contact records maintained by the user, without regard to the form or implementation of the user's contact management application software program.
Personalized contact record information is created by the "owner" of such information and is "published" to the network portion's data base through client software residing on the user's computer system. "Publishers" of personalized contact information are associated with various particular ones of the universe of "subscribers" of the system through each individual user's list of contacts, residing in their contact management application software program. Each user (subscriber) thereby establishes a one-to-many relationship with
each of their listed contacts who, in turn, may establish a one-to-many relationship, both with the first user, and with the various individuals and entities listed in their own contact management application software program. As will be discussed in greater detail below, as new information is "published" to the data base, the system associates the newly published information to all of the individuals and entities having a relational association to the publishing party. Periodically and rationally, newly published information is synchronized with the publishing party's relational partners at a determinable time when the relational partner's contact management application software program is available to system access.
The system automatically populates empty contact fields in a user maintained contact record with corresponding current contact field information contained in the most recently published data base contact record for the publishing entity. The system further automatically replaces field contact fields in a user maintained contact record with corresponding contact field information contained in the most recently published data base contact record for the publishing entity. Thus, each user maintained contact record which corresponds to a contact record maintained in the data base is updated to reflect the most recent information published to the data base by the owning entity of the data base contact record.
Further, and in keeping with principles of the invention, each data base contact record is identified by a unique identification index, such as an e-mail address, a telephone number, social security number, or a random or sequential alpha-numeric tag, in order to uniquely identify each record and obviate the confusion that might obtain in the case of multiple individuals, each named John Smith, for example. Subscribers are able to query the system for a contact record belonging to a particular individual or entity, by forwarding a contact record query associated to the unique identification index. For example, a contact record query for a particular John Smith is able to extract and return contact record information for John Smith of Santa Barbara, California, by querying for John Smith associated to the telephone number (805) 111-2345, for example. These, and other particular features of the present invention, will be described in greater detail below.
One particular embodiment of the invention provides an end-user with a substantially free, automated methodology by which to download, update and synchronize contact information without adding cost or requiring significant, or even inconvenient, changes in behavior. Using an individual's or entity's e-mail address, for example, as a unique identifier, the system catalogs contact information provided by subscribing users and disseminates any information changes or updates to any or all of the "contacts" contained in a subscribing user's contact manager program. Further, the system alerts Subscribers when their relational associates or colleagues have changed their own contact information.
The system, according to the invention, maintains currency of files by generating a verification request and e-mailing the request to the individuals and entities contained in the contact listing of the system's Subscribers. Each verification request is generated and directed to an individual or entity, as emanating from the e-mail address of a known colleague. The verification request further acts as an invitation to download and use the system, for those individuals who do not already participate in the data base. By promoting peer-to-peer communication between businesses and professionals, the system's data base entries are expected to expand exponentially.
The system includes a client application software program, configured to function as a plug-in to existing contact management software, rather than as a stand-alone system. The plug-in capability of the client application provides a user with the functionality of the system, without requiring a user to learn new software or to abandon their present e-mail client or contact management software, with which they are already comfortable.
Prior to describing the details of the system's architectural and functional implementation, some discussion as to term definitional meaning would be appropriate. In the context of the application, a "Subscriber" refers to a person, whether individual or entity, who receives contact information and who enters it into their local contact data base. A "Publisher" refers to a person, whether individual or entity, who owns contact information (information contained within a contact record) and who is the ultimate authority for maintaining it. An "Invitee" refers to a person, whether an individual or an entity, who has been invited to participate in the system by a Subscriber, but has yet to respond to the invitation. It should further be noted, that Subscribers and Publishers both fall under the general rubric of "Users," which refers to any individual or entity availing themselves of any of the functionality of the system. Operationally, and in accordance with the invention, Subscribers add new contacts into their local contact manager data base and synchronize their contact data base with the network portion of the system. Subscribers and Publishers both update contact information and are notified automatically of detected contact information update changes. Additionally, Subscribers and Publishers respond to a notification from the network data base, in order to update their own local contact information data base.
Initially, a user downloads a client software application from the system's Web point of presence, for example, and associates the client software application to their particular contact management software program. This is done in several ways, the most prevalent of which are downloading a specific piece of client software adapted to the user's contact manager program, or downloading a universal client application and configuring the
application's software switches for use with a particular contact manager by selecting the appropriate contact manager from a menu list of supported contact management programs. Other methodologies will be immediately apparent to those having skill in the art and need not be described further herein. All that is necessary is that the client software application be associated to the user's contact management program. This is particularly advantageous in providing translation field definitions between and among various contact managers, such that the ordering of a particular file string pertinent to Eudora will be recognizable and translatable into element fields of Outlook, for example. In this regard, the present invention will be discussed in terms of Microsoft Outlook being used as a user's contact management program. Microsoft Outlook is a commercially available contact manager, manufactured and sold by Microsoft Corporation of Redmond, Washington, and is merely illustrative of the presentation and functionality of contact management software.
As mentioned above, the user's client software application functions as a plug-in to their conventional contact manager. As such, the plug-in interacts with a user through a graphical user interface (GUI) and presents its information fields and user input requests in the same, familiar form as the user's contact manager.
In this regard, and with reference to the exemplary screen shot of FIG. 1, functionality of the client software is invoked by the addition of functional "buttons" disposed as additional "tools" within the "toolbar" 12 of a new contact form 10. In the exemplary embodiment of FIG. 1, a "synchronized" activity button 14 is appended to the task buttons of the toolbar 12. Further, a synchronization activity definitional page is added to each contact record, and is accessed through an identifying "tab" 16 that is appended to the conventional tabular definition of a record, such as the General tab, Details tab, Journal tab, Certificates tab, and all Fields tab, in the case of an Outlook contact record. Clicking on either the synchronization button 14 or synchronization tab 16 brings the client application functionality forward for interaction by a user.
Registration and acquisition of the client software application begins by a prospective user" interacting with a registration agent provided over the Internet, for example. The registration agent requests the prospective user to fill in certain fields of a registration form with the prospective user's personal or business contact information. As illustrated in the exemplary screen shot of FIG. 2, the registration form includes entry fields that contain the prospective user's first and last names, salutation and suffix information, title, employer and department data, residence address data, and the like. In particular, the registration form requires entry of a prospective user's first and last names, along with an e-mail address and a security password. The prospective user's first and last names, in combination with their e-
mail address, provides sufficient, unique identification information such that the user is uniquely identifiable from an extremely large data base set of similar users. Adding a first and last name to an e-mail address assures that each user is distinguished, even in the case where several users might share a common e-mail address, such as the different family members of a household.
The registration form also contains the optional fields within which a prospective user might list various telephonic contact numbers, facsimile numbers, pager numbers and other e- mail addresses or contact resources. The registration form illustrated in the exemplary embodiment of FIG. 2 also requests the user to indicate what sort of software is used for contact management, by selecting a contact management program from a menu of such programs.
When the registration form is completed, it is submitted to the system administrator, over an Internet connection, whence the user's contact information is collected into a data base contact record. The user is associated to their contact record as its Publisher and is allowed to download the client application software program.
Once the client application is downloaded and installed on the user's system, the user becomes a Subscriber and may initiate interaction with the client. One of the particular features of the client application of the invention is its ability to initiate searches of the data base for contact information relating to a prospective (or new) contact of the Subscriber. A Subscriber can simply enter the prospective contact's e-mail address to start. The e-mail address is entered into a dialogue box that also asks the Subscriber if they wish to search the system's network data base for additional information. By clicking on "yes," a search of the data base is conducted and the other contact fields are filled in if the Publisher is found. Returning to the exemplary embodiment of FIG. 1, the prospective contact's e-mail address is entered into the e-mail field 18 of a user's contact manager's general contact record.
If an information publisher is not found which corresponds to the e-mail address entered into the e-mail record field 18, a dialogue box appears which asks the Subscriber if they would like to invite the prospective contact to participate in the contact management and synchronization system of the invention. The dialogue box offers a Subscriber the option to click either "yes" or "no". If the Subscriber clicks "yes," a form e-mail is sent to the Invitee, containing the contact information of the Subscriber both in the message body and as a "vCard" (a standardized personal data interchange methodology that transfers information in accordance with a structured .vcf file format). The system intersperses the e-mail to the Invitee with URL links that allow the Invitee to traverse the system's Web pages. Once an Invitee traverses a link to the system's Internet point of presence, they are able to register as a
Publisher by filling out the above-mentioned registration form and automatically notify all Subscribers of these changes (change of contact data). The system allows a Publisher to set permissions such that all or none of the Subscribers can access the changes and/or opt-out of the system completely. Once registered as a Publisher, the Invitee may download the client software application and become a Subscriber in addition to being a Publisher.
As will be described in greater detail below, upon sending a system participation invitation, the original Subscriber's contact record, containing the e-mail address of the Invitee, is saved and appended with a category flag of "Pending Invitation Response." The Subscriber also has the option of clicking on the synchronized button 14 and synchronizing the current contact record or all of their contact records with the system data base. Each contact not associated with a record in the data base will be sent an invitation to participate, in substantially the manner described above.
Those contact records that are determined to be associated to contact records maintained in the system data base, are updated. Local contact record updating includes automatically filling any empty contact fields in the local contact record with information contained in the corresponding system contact record. Further, all local contact fields containing existing information are updated with the corresponding information contained in the contact record maintained in the systems' network data base. In accordance with the invention, as existing information is updated, the original field content (the previous information) is saved and appended as textual data to the top of the "notes" field 20 for review and evaluation by a Subscriber. As indicated in the exemplary screen shot of FIG. 3, the original data which has been subject to update is flagged with an appropriate field name indicating which field it was reserved from.
Synchronization is accomplished in a couple of different ways, depending upon the architectural implementation choices of the system architect. In one particular embodiment, a "thicker" client software application accesses the contents of the contact manager's contact record data base file and extracts data, for each contact, from those fields which function to uniquely identify a contact (first and last name and e-mail address, for example). A file, or data stream, comprising this information is forwarded to the system's network portion, for evaluation against the system's data base, over an Internet connection. Where a match is found, the complete record data is returned to the local client, whence it is populated into the corresponding local data base record. Necessarily, the data stream flowing from the system's network portion to the local client is formatted in a standardized manner, such that the client is able to recognize delimited data as pertaining to specific fields of its associated contact management application.
In an alternative form, a "thinner" client communicates with the system's network portion and forwards a mirror image of its contact management application data base file. The network portion, suitably comprising a data processing server, performs the unique identification extraction, comparison and matching functions, with the system's network portion returning a constructed file of update information to the local client, with the constructed file delimited to such an extent as to enable the local client to seamlessly overlay the "update return" information on the local contact record data base contents. In this regard, the network portion understands the form and format of the data necessary to be returned to the local client. It will be understood by those having skill in the art, that the 3-character file extension of the local contact data base file necessarily identifies the contact manager software application being used in connection with that file. All the network portion need do is to parse the 3-character file extension of the mirror in order to determine how data is to be formatted for that particular contact management program.
Notwithstanding the foregoing, those having skill in the art will immediately recognize that the thick client and thin client embodiments represent two ends of an implementation spectrum. A system architect may well choose to implement a particular methodology which partitions the functional and operational tasks of the network portion and the local client in a manner anywhere along the spectrum.
Synchronization activities may be performed at any time, and in accordance with synchronization preferences that are settable through a Subscriber's client application. Turning now to the exemplary screen shot of FIG. 4, the various system synchronization options are accessible through a pop-up window 22 that appears when the user interacts with the synchronization button 14. The pop-up window 22 suitably comprises a set of activity pages, each accessible through a respective one of a set of "tabs," such as preferences 24, pending invitations 26, and view log 28. Selecting the preferences tab 24 accesses the preferences dialogue window which presents various synchronization options to the Subscriber, any of which may be selected by clicking an "activation" area. For example, in the exemplary embodiment of FIG. 4, the user is given the option of synchronizing all contacts automatically or synchronizing all contacts manually. Further, the user can instruct the system to initiate a synchronization request whenever the user creates a new contact record or the user can affirmatively defeat this functionality. Further, within the preferences dialogue window 24, the user can click on a "choice" switch 30 which instructs the client to perform synchronization with respect to a set of contacts affirmatively chosen by the Subscriber. This "choice" option allows the Subscriber to define synchronization options on a pre-determined plurality of contacts and, therefore, represents a synchronization activity
between the "automatic all" and "manual all" poles. Further, synchronization timing is determined by the user's entry of a timing period into a timing window 32. For example, the user might prefer the system to synchronize all contacts automatically every three (3) days by setting those optional switches. Or, the user might prefer the system to synchronize only those "chosen" contacts every seven (7) days by setting those switches. Once preferences are set, the window is closed and preferences are maintained within the client for future reference and activity control.
Also, and as depicted in the exemplary screen shot of FIG. 5, a "pending invitations" window is opened by the user's accessing the pending invitations tab 26 of the preferences pop-up window 22. "Pending invitations" contains a listing of those e-mail addresses, and the entity names associated therewith, to which invitations to participate have been sent, but a response has not yet been forthcoming. This information is particularly helpful to a Subscriber in determining which of their local contact records may be incomplete or out-of- date, at least at such time as the invitation was sent. A flag field 34 is associated with each entry and might indicate from which of the entries a response is awaited, and/or which of the entries have "bounced" the invitation such that no response is likely. Those entries from which a response was declined can therefore be removed from the synchronization schedule.
A further preference window, the view log window 28, gives a Subscriber the opportunity to view the system processing logs. System processing logs contain conventional state completion logging data which is well understood by those having skill in the art. Accordingly, it will not be discussed in any greater detail herein.
A conceptual data model of the functional implementation of the system in accordance with the invention is illustrated, in simplified form, in FIG 6. A subscriber 36 invites various Invitees to participate in the system by synchronizing at least a unique identification portion of contact information 38 with the system data base. Through interaction with the system, the subscriber 36 establishes an association 40, or set of associations, with each of the individuals or entities comprising their local contact record data base. Each subscriber 36 develops a preference 42, or set of preferences, by which their associations 40 are defined. System interaction allows a Subscriber 36 to receive communications 44 which, in turn, correspond to contact record associations derived through subscriber preferences.
A publisher 46 adds or updates their own contact information 38 which is communicated, on a one-to-many basis, to all of the subscribers 36 which have an association 40 with the publisher 46 as determined by their preferences 42. Communications 44 provide
publisher-defined updates to each associated subscriber 36 through a synchronization procedure.
Operationally, and with reference to the exemplary new contact logical flow diagram of FIG. 7, system processing initiates when a Subscriber brings up a new contact window from their local contact management software application. A client system-generated dialogue box pops-up on an e-mail insertion event, such as when a Subscriber enters the e- mail address of a prospective new contact in the e-mail window of the new contact record. The dialogue box makes a "find contact" request and elicits a "yes" or "no" response from the user. Further, the user is given the option to check a "don't ask again" activity field if they wish to disable this automatic portion of the system. If "don't ask again" is checked, the dialogue is closed. The "don't ask again" engine sets future dialogues to the default value selected in the current action. This default value can be reset in the client system's "settings" dialogue, in conventional fashion. Given an appropriate response to the dialogue, the client application initiates a "find contact" procedure by which it accepts either a single contact value, or an array of contact values, and performs a search on them through the system's network data base. The network system portion accepts a single contact value for an array variable, and selects a data base contact record where the record e-mail is equal to an input publisher e-mail and where the Publisher has not decided to opt-out of system usage during the publication process. The network system portion checks a security permission and selects "permission granted" where a Publisher's e-mail address is equal to the input publisher e-mail and the Subscriber's e-mail address is equal to the input Subscriber e-mail address (the e-mail address making the request). If the show value is false, the system hides the contact record data from the Subscriber and returns an empty contact results array.
If a corresponding contact record is found, the network system portion inserts an association between the Subscriber and the Publisher into the data base. The association is inserted into the Publisher's and Subscriber's ID, where they are equal to the respective e- mail addresses. Each Subscriber's association "family tree" is thereby updated and maintained. A contact record synchronization procedure is then carried out with respect to the Publisher's contact record maintained in the system's network data base and the new contact record established by the Subscriber at the beginning of the process. In the case of more than one match between an input Publisher e-mail address and a plurality of Publisher contact records, system defaults to the most recent entry for that Publisher.
In the case where no contact record has been found that corresponds to a Subscriber input e-mail address, the system returns an empty results array and the user is prompted to trigger a participation invitation to the prospective Publisher. A pop-up dialogue box initiates
a request to the user as to whether the user wishes to invite the new contact to participate. The dialogue elicits a "yes" or "no" response from the user, as well as gives the user the opportunity to check a "don't ask again" activity field. The dialogue closes (or does not initially open) after appropriate negative responses. If the Subscriber chooses to make the new contact an Invitee, top-level contact data is saved in the "pending invitations" data base and the network portion is commanded to issue a participation invitation. Further, the prospective Invitees' contact data, as entered by the Subscriber in their contact management program and saved "pending invitation," is also forwarded to the network data processing portion whence it is presented to the Invitee along with the participation invitation. An exemplary logical flow diagram of an invitation process is depicted in FIG. 8. An invitation engine of the network system portion sends an e-mail to the Publisher (Invitee) of the contact information, as identified by the e-mail address provided by the Subscriber, and invites the Publisher to edit or approve the information. The engine provides a link, within the e-mail message, that the Publisher can click on to traverse the Internet in order to access the requisite edit profile page. This engine provides the necessary functionality allowing for both new publisher entries and for allowing Publishers to edit existing contact records. Thus, the engine is invoked either by a user explicitly logging-on to the system and accessing the requisite edit profile page, or by the system's sending an invitation to a Publisher that provides the link. It should be noted that contact information provided to the Publisher includes both the Publisher contact information provided by a Subscriber and Subscriber contact information from the Subscriber which initiated the process. The system creates a file in vCard format of both the Publisher's and/or Subscriber's contact information for attachment to the e-mail. In the case where a Publisher is an Invitee, they click on the URL contained in the e-mail and are then able to edit their contact information as shown on the contact information page. Further, an Invitee is given a choice of various preference options, including the option to opt-out of the process and to set various allowance levels in order to grant or preclude access in accordance with Publisher-defined metrics. Changes from the edit contact information page are saved and the contact table for the current Publisher is updated with the values from the edit contact information page. A confirmation page, which confirms saving a Publisher's contact information, provides a link through which a Publisher downloads client software that is installed on their local data terminal device so as to function in cooperation with their locally-hosted contact management software program. The link to the client download is also provided as a URL link in the e-mail directed to the Invitee by the system. A Publisher need only click on the
link and download proceeds in a conventional fashion. Client software is installed, and the Publisher becomes a Subscriber.
If the Publisher checks the option to notify all Subscribers of changes, whenever the Publisher performs an update of their information through the Web page, the system gathers all of the e-mail addresses of Subscribers associated to the Publisher and creates an array of those e-mails. The system steps through the array and issues a notification e-mail to associated Subscribers that updated information is available for a particular Publisher. A Publisher's updated contact information is formatted as a vCard file and attached to each e- mail. The e-mail to Subscribers also contains a Publisher's contact change information in the message body in addition to its attachment as a vCard file.
A synchronization component allows a Subscriber to verify and synchronize their entire contact data base against the contents of the system data base. This element is triggered by an explicit action, taken by the user, and follows the logical synchronization process flow procedure exemplified in FIG. 9. As depicted in the process flow of FIG. 9, synchronization is initiated either at the time of client software installation by the user, as a Subscriber affirmatively clicks on the synchronization command button, or in accordance with a timing periodicity, affirmatively set by a Subscriber through interaction with a client software. Regardless of how initiated, the process initiates synchronization which allows the Subscriber to synchronize either the current contact, all contacts in their data base, or a selected set of contacts in the data base. A contact dialogue presents an explicit request to the user as to whether the user wishes to synchronize contact information with the system, and presents the user with the synchronization options. If the user chooses a "sync current" option, the client software initiates synchronization for the current contact and accepts either a single contact value, or an array of contact values, and forwards them to the network system portion for searching, as was described above. If the user returns a "sync all" or "sync some" command, the client gathers and collects all Publisher e-mail addresses, for the contacts in the desktop data base, and passes them to the network system portion, in an array, along with a check sum value. The network system portion accepts either a single contact value, or an array of contact values, and performs a search on each of the array values in a manner like that described above. Each search establishes whether or not a contact was found and if so, constructs a "return found contacts" array which returns the results of the search in an array for processing on the client side. Family tree information is updated and the process runs in a "for each" loop with respect to the array. If no contact records are found with respect to an item in the Subscriber's array, the system constructs a "not found array" of e-mails from all contact
elements not found in the search process. The "not found array" is forwarded to the Invite Publisher Process which constructs an e-mail to the Publisher of the contact information (as identified by the e-mail address) and invites them to edit or approve the information. Synchronization continues until all of the contact elements, forwarded to the system's network portion, have been compared to the network data base contents and either found and entered into the "return found contacts" array or not found and entered into the "not found contacts" array.
Characteristically, the "return found contacts" array is used to initiate synchronization with each individual contact record contained in a Subscriber's local contact management data base, in a manner similar to that described above.
Personal Data Interchange (PDI) occurs every time two or more individuals communicate, in either a business or personal context, face-to-face, or across space and time. Such interchanges frequently include the exchange of informal information, such as business cards, telephone numbers, addresses, dates, and times of appointments. Augmenting PDI with electronics and telecommunication capabilities helps ensure that information is quickly and reliably communicated, stored, organized and easily located when needed. vCard automates the exchange of personal information typically found on a traditional business card. vCard is used in applications such as Internet mail, voice mail, Web browsers, telephony applications, call centers, video conferencing, Personal Information Managers (PIMs), Personal Digital Assistants (PDAs), pagers, fax, office equipment, and smart cards. vCard information goes beyond simple text, and includes elements such as digital photos, graphic company logos, live Web addresses, and the like. The specifications for implementation of vCard technology are well known to those having skill in the art and further elaboration is not required herein. No matter how implemented, however, form entry field data is validated by way of
JavaScript on Web pages, and by way of event handlers in the client contact manager program. Data base errors or captured and the most common errors are returned to the user in a friendly dialogue manner which explains the error. Contact information for reporting errors is also provided. In addition to integrating with a user's local contact data base, the system supports considerable e-mail traffic by way of SMTP. SMTP components are integrated with external e-mail servers. Data transfer between a Subscriber client application and the system's network portion occurs by way of Secure HTTP (SSL). All data is transferred either as Post or Get Arguments or formatted as an Extensible Markup Language (XML) document.
One exemplary embodiment of site components of the system's network portion, is illustrated in FIG. 10. In particular, the site components suitably comprise a relational data
base 50 which functions as the central repository (data warehouse) for all contact record information and archiving of application actions. The relational data base 50 operates under control of a relational data base management system (RDBMS) which functions to organize, populate, update and otherwise manage the components of the relational data base 50. The system's network portion further comprises an application server, which runs middle wear application software routines providing a interface into the RDBMS, tools for data manipulation, and generates HTML-based presentation events for the user interface. A user interface for data accessing and editing 56 controls all data access and display functions such that all data access and display occurs through either a direct HTTP connection to a user's desktop content application operating in cooperation with the system's client software, or a Web browser interface. A Web server 58 hosts Web server software 60 that handles all communications between the client desktop and the application/data base. System security is promoted by a network firewall 62 which controls definition of public and private access to the system servers. Filters are implemented for all servers to allow only those Internet protocols relevant to utilizing the system. Firewall hardware and software security is implemented at the hosting location in order to limit access to the system servers from the front end. This ensures that only valid HTTP requests are made to the server from authorized networks. Secure Socket Layer (SSL) encryption is used to protect transfers of information from a client's Web browser to the Web server 58. This method of security provides a visual assurance to the user, at the browser, that the information they are submitted is not being intercepted by prying eyes.
Operating system software is provided as an operating system layer in the application server 54 and the data base server 64, and provides the foundation for all other applications to run and interact. An e-mail server 66 provides e-mail communication capability for users of the system by way of SMTP calls from the application server 54.
While the present invention has been described with reference to a number of exemplary embodiments, it will be understood by those having skill in the art that the invention is not limited to the specific structural arrangements and methodological steps exemplified therein. Indeed, the allocation of the various software elements comprising portions of the present invention may be made in substantially different fashion, depending on the architectural objectives of the system designer. For example, the client application may be thicker or thinner, at the designer's option, and might be implemented as a standalone GUI, as opposed to being completely integrated with a user's contact management program. The thickness and/or thinness of the client application would necessarily determine
whether the client software participates in a greater or lesser degree with the organization of local contact record data for searching and/or synchronization.
A thick client may well be provided with functionality that enables a Subscriber to create, append, modify or otherwise inform the various lists, profiles, menu items, rule sets, and the like, and them communicate the various adaptations to the system, whenever the Subscriber establishes a connection session. A thinner client would necessarily allocate these resources to a centralized application server which would then be available to a Subscriber either through the client application or through accessing the system's network presence by a conventional browser application. Likewise, the specific servers discussed above can be considered "virtual" servers, in that a single, unique piece of equipment is not necessarily allocated to the various functional aspects of the system. As data processing equipment grows in capability, it is quite likely that a single, monolithic piece of hardware might become practicable for carrying out all of the operational tasks of the system. Conversely, various pieces of data processing hardware might be coupled together to form a distributed server system, with the various operational tasks distributed between and among the various pieces of hardware in a non-intuitive fashion. The system's network portion might be configured to have a particular operational presence in various locations, depending on the nature of the underlying transport network with which it is associated.
Accordingly, the present invention is not intended to be limited to the various exemplary embodiments illustrated above, but is rather intended to cover all manner of equivalent structure and operational steps that might be made within the scope and spirit of the present invention as defined by the Appended Claims.