Abstract:
In a general aspect, a computer-implemented method includes receiving, via an input interface of a notification platform, updated subscriber data; comparing, using a comparison module of the notification platform, the updated subscriber data with existing subscriber data stored in a subscriber database; and, based on the results of the comparing, modifying, using a modification module of the notification platform, the existing subscriber data stored in the subscriber database.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application in a continuation of U.S. patent application Ser. No. 13/293,713, filed Nov. 10, 2011, which claims priority to U.S. Provisional Application Ser. No. 61/412,149, filed Nov. 10, 2010, the contents of which are incorporated herein by reference. 
    
    
     BACKGROUND 
     This application relates to a data management system. 
     Reliable and rapid delivery of large numbers of text messages is important to enterprises, public safety agencies, universities, and others with a need to quickly notify interested parties. 
     Multi-modal broadcast alert platforms (also known as notification platforms) are widely used to provide alert notifications to members of a community. For instance, federal, state, and local entities; businesses; and educational institutions (collectively referred to herein as institutions) make use of notification platforms to send messages efficiently to members of their respective communities. 
     Notification platforms administer the distribution of short message service (SMS) messages or other electronic communications to subscribers to the notification platform. A notification platform is administered by a messaging administrator. To send a message to subscribers, the messaging administrator generates a notification event within the notification platform. The notification event contains the text of the message that is to be sent to the subscribers. When a notification event is generated, the notification platform sends a message to each subscriber. 
     In general, a notification platform relies on the members of the institution employing the platform to enroll in the platform in order to receive notification messages relevant to the institution. The enrollment process typically calls upon a member to complete several, if not all, of the following steps:
     1. Visit a website associated with the institution   2. Provide credentials or other personally identifying information to prove that the member is authorized to receive the institution&#39;s notifications   3. Provide one or more contact points (e.g., a mobile telephone number, a landline telephone number, an email address, an instant messenger handle, or another contact point) at which the member wishes to receive notification messages   4. Acknowledge the terms of use of the notification platform   5. Complete a confirmation process to confirm that the member owns or controls the designated contact point(s)   

     SUMMARY 
     In a general aspect, a computer-implemented method includes receiving, via an input interface of a notification platform, updated subscriber data; comparing, using a comparison module of the notification platform, the updated subscriber data with existing subscriber data stored in a subscriber database; and, based on the results of the comparing, modifying, using a modification module of the notification platform, the existing subscriber data stored in the subscriber database. 
     Embodiments may include one or more of the following. 
     The method further includes verifying, using a verification module, an integrity of the updated subscriber data. An integrity of the updated subscriber data includes an integrity of a file containing the updated subscriber data. 
     The method further includes validating, using a validation module, a quality of the updated subscriber data. The method further includes generating, using a report module, a report indicative of the results of the validating. 
     The method further includes generating, using a report module, a report indicative of the results of the modifying of the existing subscriber data. The report has a format that corresponds to a format of a file containing the updated subscriber data. The method further includes providing the report to an administrator of the notification platform. The report is indicative of an error in the modifying. 
     The updated subscriber data includes at least one of a subscriber identifier and a subscriber contact point. 
     The subscriber database is located on the notification platform. 
     The method further includes sending, using a messaging module of the notification platform, a message to a mobile communications device associated with each subscriber included in the modified subscriber database. 
     In another general aspect, a system includes an input interface configured to receive updated subscriber data; a comparison module configured to compare the updated subscriber data with existing subscriber data stored in a subscriber database; and a modification module configured to, based on the results of the comparing, modify the existing subscriber data stored in the subscriber database. 
     Embodiments may include one or more of the following. 
     The system further includes a verification module configured to verify an integrity of the updated subscriber data. 
     The system further includes a validation module configured to validate a quality of the updated subscriber data. The system further includes a report module configured to generate a report indicative of the results of the validating. 
     The system further includes a report module configured to generate a report indicative of the results of the modifying of the existing subscriber data. 
     The subscriber database, the comparison module, and the modification module are co-located on a notification platform. 
     The system further includes a messaging module configured to send a message to a mobile communications device associated with each subscriber included in the modified subscriber database 
     The systems and methods disclosed herein offer a number of advantages. 
     The data management subsystem and associated methods can make use of contact information that has already been collected by an institution for its members, thus eliminating a redundant step of collecting contact information for the explicit purpose of the notification platform. A notification platform making use of this data management subsystem thus may achieve a high subscription rate among members of its associated institution, thus helping to ensure that the vast majority of the members of the institution will receive messages generated by a notification event. In particular, because members of the institution do not need to actively complete an enrollment process, it is not necessary to make them aware of the enrollment process. Furthermore, no time or effort is required from members of the institution to enroll in the notification platform, and thus members are less likely to be discouraged from enrolling. 
     The contact information can be loaded into the notification platform directly. The robustness of the data management subsystem helps to ensure that the resulting database is high quality, error free, and stable. 
     Data discrepancies that may arise when managing subscriber data across multiple systems and interfaces is avoided. This in turn reduces mistakes, such as the sending of messages to the wrong recipients or wrong contact points or missing entire segments of an institute&#39;s population. 
     The data management subsystem described herein involves minimal manual manipulation of the data. Thus, staff at the corresponding institution are freed from the need to manage member information, including parsing and exporting data from various systems in order to meet data management criteria of a particular notification platform. Furthermore, the staff does not need to determine which information in a subscriber database needs to be added, removed, or modified within the database to ensure that the database reflects the current communications preferences of the institution and its members. Rather, such determinations are made by the data management subsystem. 
     The reduction of manual and institution-level data manipulation allows the institution&#39;s staff to interact with the data only at a high level. More detailed data manipulation and system integration work, such as processes that involve a deep understanding of the challenges of multi-modal messaging and strategies to mitigate such challenges, are undertaken by the data management subsystem itself. This automation can help reduce errors and frees up resources for the institution. 
     Other features and advantages of the invention are apparent from the following description and from the claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a block diagram of a notification platform. 
         FIG. 2  is a flowchart of the operation of a data management subsystem. 
     
    
    
     DETAILED DESCRIPTION 
     Referring to  FIG. 1 , a notification platform  100  associated with an institution  102  administers the distribution of short message service (SMS) messages or other electronic communications, such as emails or voice messages, to subscribers  104  of the notification platform. Subscribers  104  receive notification messages from the notification platform. For instance, university students subscribed to their university&#39;s safety alert notification platform receive messages relevant to public safety at their university. Residents of a city and/or commuters to that city may choose to subscribe to a local traffic alert group to receive traffic status messages. 
     In some cases, enrollment in notification platform  100  is initiated by subscriber via an independent subscription process  106 . In other cases, a subscription to the notification platform associated with a particular institution  102  is automatic and/or mandatory for members or affiliates of the institution. For example, any university student who provides a mobile or landline telephone number or email address to the university may be automatically enrolled into the public safety notification platform for the university without any action on the part of the student. Subscriber information, such as the subscriber&#39;s mobile and/or landline telephone number(s), mobile carrier(s), email address(es), and preferred mobile communication device or method, is stored in a subscriber database  108  on notification platform  100 . 
     Notification platform  100  is administered by a messaging administrator at the corresponding institution  102 . To send an SMS message to subscribers, the messaging administrator generates a Notification Event within notification platform  100 . The Notification Event contains the text of the message (e.g., “Exit 20 of Interstate 90 is closed. Seek alternate route.”). The Notification Event may also include other information, such as a percentage of messages that are to be successfully delivered in order for the Notification Event to be closed. When a Notification Event is generated, the notification platform sends a notification message to each subscriber according to the subscriber information stored in subscriber database  108 . The messaging functionality of the notification platform  100  is managed by a business functionality platform  110  and data relevant to the messaging functionality is stored in a messaging database  112 . 
     A data management subsystem  150  manages subscriptions that are administered by the institution  102  associated with the notification platform  100 . In general, data management subsystem  150  receives subscriber data from the institution and verifies the integrity and validity of the data. Data management subsystem also processes the data such that correct, updated data for each subscriber is ultimately stored in subscriber database  108 . Data management subsystem  150  also provides a data reporting functionality which returns reports to institution  102  at the conclusion of the processing of data provided by the institution. These functionalities are described in greater detail below. 
     Data Receipt and Integrity Check 
     Referring to  FIGS. 1 and 2 , the institution  102  associated with notification platform  100  submits subscriber data, such as identification and contact information, to data management subsystem  150 . Data is transferred from the institution to the data management subsystem (step  200 ) via a data interface, either via a direct connection (as shown) or via the Internet. In particular, an input file  114  is stored by the institution  102  on a shared access directory  116 , such as a WEBDAV (Web-based Distributed Authoring and Versioning) system, hosted by notification platform  100 . Alternatively, data may be provided via other electronic means. For instance, subscriber data may be formatted as an XML document and transferred to the notification platform as a web-service request. 
     In an exemplary embodiment; the messaging administrator of institution  102  creates a comma separated value (CSV) spreadsheet containing subscriber data, such as subscriber identification and contact information and contact preferences. Data management subsystem  150  may request that the CSV file be provided in a pre-defined format to facilitate data processing. Subscriber identification information may include data such as, e.g., first name, last name, or a user identifier. Contact information for a subscriber may include data such as, e.g., mobile telephone number(s), landline telephone number(s), email addresses, instant messenger handles, or other common contact points. In addition, subscriber preferences regarding use of the various contact points may be included (e.g., a subscriber may note that all communication should be via SMS message to the provided mobile telephone number rather than via email or voice message). 
     Upon receipt of the input file  114 , data management subsystem  150  checks the integrity of the data to ensure that it can be read and processed (step  202 ). If the data is unusable for any reason (e.g., the file is corrupted or the file is incorrectly formatted), the input file  114  is rejected in its entirety, in order to avoid improper manipulation of the data (step  204 ). 
     Data Differential Processing 
     Data management subsystem  150  may impose criteria on the format and content of the input data file  114  in order to simplify generation of the load file that is used to update subscriber database  108 . In particular, the data management subsystem may request that the data included in input file  114  describe the desired end state of the subscriber database  108  rather than changes to be made to the subscriber database. That is, the input data preferentially includes a list of all subscribers and associated contact points and alerting preferences, rather than a list of changes to be made to preexisting data stored on the notification platform. 
     Once in receipt of the input file  114 , the data management subsystem  150  compares the contents of the input file with the contents of subscriber database  108  (step  206 ) to identify what information is to be added to, removed from, or modified within the database. Based on the comparison, the subscriber database is updated according to the contents of the input file (step  207 ). 
     This differential approach relieves the messaging administrator from performing these complex comparative calculations before providing the input data to the notification platform. In addition, the differential approach eliminates the possibility for the institution&#39;s subscriber database to become out of sync from the notification platform&#39;s subscriber database  108 . 
     In some embodiments, individual subscribers are given the ability to update their own information via a subscriber interface. The data management subsystem  150  will defer to additions and changes made by subscribers over data provided by the institution  102 , under the assumption that the data provided by the subscriber is more likely to be correct than data provided by an intermediary (the institution). 
     Data Validation 
     The data management subsystem  150  applies lower-level data validation steps (step  208 ) to maximize the likelihood that a notification message will be successfully delivered to a subscriber&#39;s contact point. These checks include, for instance: 
     Evaluating email addresses to confirm that they conform to email address format criteria Confirming that email domains (i.e., emailhandle@emaildomain) are properly formatted, exist as routable domains, and do not contain common typographical errors Referring to third-party managed databases (e.g., a mobile carrier database  120 ) via a carrier lookup function  122  to identify the mobile carrier supporting a particular mobile telephone number, and adding and/or updating mobile carrier information in subscriber database  108 . Implementing these validation checks within the data management subsystem rather than at the institution level allows for the leveraging of domain-specific knowledge embedded into the notification platform without the need for such knowledge to be developed in house at the institution. Furthermore, centralization of data management and validation avoids the possibility of contending approaches to the management of messaging data compromising the success of a notification event. 
     Reporting 
     As the data contained in input file  114  is processed, data management subsystem  150  generates a report  124  that identifies the actions taken while processing the record for each subscriber (step  210 ). The report identifies the record processed and the outcome of processing the record. For instance, the report may state that a mobile telephone number previously stored in subscriber database  108  for a particular subscriber was deleted and replaced with a newly provided mobile telephone number. The report may also indicate that the carrier lookup function on the new mobile telephone number revealed that a different mobile carrier supports the new number, and that an appropriate update was made to the mobile carrier entry for that subscriber. 
     Once all the data contained in input file  114  is processed, the completed report is returned to the messaging administrator at the institution (step  212 ). For instance, the report may be stored on the WEBDAV system  116 . Alternatively, the report may be sent (e.g., emailed) to the messaging administrator. The messaging administrator at the institution reviews the report, notes any processing errors or warnings indicated on the report, and takes appropriate action to resolve the errors. For instance, the messaging administrator may contact a subscriber to resolve a user-generated error indicated on the report. 
     The format of the report  124  matches the format of input file  114 . Thus, the messaging administrator can resolve errors directly within the report and resubmit the updated file to the data management subsystem  150  for reprocessing, thereby simplifying data clean-up activities. 
     Implementation 
     The notification platform runs on a computing platform, such as, for instance, a multi-threaded computing environment interfaced with external messaging delivery channels and mobile carrier databases via the Internet. 
     The notification platform can be applied to any messaging technology, including, for instance, SMPP (Short Message Peer-to-Peer protocol) via SMS aggregators, SMPP direct to carriers, SMTP (Simple Mail Transfer Protocol) direct to carriers, SIP (Session Initiation Protocol), SOAP/XML (Simple Object Access Protocol/Extensible Markup Language), or CAP (Common Alerting Protocol). 
     The techniques described herein can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The techniques can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. 
     Method steps of the techniques described herein can be performed by one or more programmable processors executing a computer program to perform functions of the invention by operating on input data and generating output. Method steps can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). Modules can refer to portions of the computer program and/or the processor/special circuitry that implements that functionality. 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. 
     To provide for interaction with a user, the techniques described herein can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer (e.g., interact with a user interface element, for example, by clicking a button on such a pointing device). Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. 
     The techniques described herein can be implemented in a distributed computing system that includes a back-end component, e.g., as a data server, and/or a middleware component, e.g., an application server, and/or a front-end component, e.g., a client computer having a graphical user interface and/or a Web browser through which a user can interact with an implementation of the invention, or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet, and include both wired and wireless networks. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact over a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     It is to be understood that the foregoing description is intended to illustrate and not to limit the scope of the invention, which is defined by the scope of the appended claims. Other embodiments are within the scope of the following claims.