DETAILED DESCRIPTION
[0044] In the following description of the specific embodiments, reference is made to the accompanying drawings which form a part hereof and which show by way of illustration the specific embodiments in which the invention may be practiced. In the accompanying drawings, like reference numbers represent corresponding parts throughout the several views. It is to be understood that other embodiments may be utilized as structural changes may be made without departing from the scope of the invention.
[0045] I. Distributed Information System for Data and Processes
[0046] The distributed information system for data and processes in accordance with one embodiment of the invention includes one or more databases and processes, such as computer software programs, that share a common database. In one embodiment, the distributed information system for data and processes can utilize a structured query language (SQL) common database for providing a distributed database management system. For example, a MICROSOFT SQL™ server can be used to provide a common database function whereby a plurality of general-purpose computers in communication with the SQL server can carry out the manipulation of data stored on the SQL server while the SQL server performs other operations associated with the distributed database management system. Those skilled in the art will appreciate that the SQL server can be coupled to or be in communication with one or more storage devices for storing data or computer software programs. In accordance with one embodiment of the invention, any changes that are made to a particular set of data by the one or more computer software programs in one process, or by one or more users, are reflected into and are accessible by other computer software programs within the distributed information system on a real-time basis.
[0047] Referring now to FIG. 1 , where one embodiment of one set of components that can be used to carry out the system, method and apparatus is illustrated in diagram form. In one embodiment, the system components comprising the distributed information system 10 include an application server 12 , a shared server 14 , a database server 16 , a general-purpose computer 18 and a workstation 26 . The application server 12 provides access to one or more computer software programs 20 stored therein or stored in a database 22 in communication with the application server 12 . Further in one embodiment, the application server 12 is in communication with one or more other components of the other distributed information system 10 , such as the shared server 14 , the database server 16 , the general-purpose computer 18 and the workstation 26 , for example. The one or more system components also can communicate with each other via well-known communications hardware and software. Still further in one embodiment, the one or more system components can be interconnected in a network 24 configuration in accordance with various well-known network topologies. For example, the components of the distributed information system 10 can be interconnected in a bus topology, ring topology, a star topology or combinations thereof. Those skilled in the art will appreciate that any one these network topologies, or combinations thereof, can provide an adequate implementation of the system, method and apparatus.
[0048] The general-purpose computer 18 , the shared server 14 , the database server 16 and the workstation 26 can each execute the computer software programs 20 stored in the application server 12 or programs that arc stored in the database 22 depending on the specific implementation. In one embodiment, the general-purpose computer 18 can perform the function of the workstation 26 or other computing systems without departing from the scope of the invention. Those skilled in the art will appreciate that the general-purpose computer 18 can be provided with various peripherals in communication with or coupled thereto. For example, the general-purpose computer 18 can be coupled to an optical disk drive 28 for reading and writing instructions or data to be used by the general-purpose computer 18 . Moreover, a tape drive 30 can be coupled to the general-purpose computer 18 for storing data and processes for backup purposes, for example. In addition, a storage device 32 , such as a floppy disk drive or hard disk drive can be coupled to the general-purpose computer 18 for storing instructions and data to be used by the general-purpose computer 18 . Instructions and/or data can be provided to the general-purpose computer 18 via a removable storage medium 34 . A communication device 36 such as a modem can also be provided with the general-purpose computer 18 to serve various communication purposes. Also, an output device 38 , such as a printer, or a monitor 44 , can be provided in communication with or coupled to the general-purpose computer 18 for providing the user with reports and the like.
[0049] In use, a user operating the general-purpose computer 18 sends a request to access the one or more computer software programs 20 from the application server 12 . Such computer software programs 20 can then be delivered to the general-purpose computer 18 , the shared server 14 , the database server 16 or the workstation 26 for execution thereon. Accordingly, any changes that are made by the user operating the general-purpose computers 18 in communication with the network 24 to any of the programs 20 or data residing within the databases 22 distributed throughout the distributed information system 10 , will be available and accessible by the other system components and users. Those skilled in the art will appreciate, that if more than one general-purpose computers 18 are interconnected in a network 24 , changes to the database 22 made by one user operating one general-purpose computer will be available and accessible to any other user operating any other general-purpose computer 18 in communication with the network 24 on a real-time basis (e.g., substantially instantaneously).
[0050] One embodiment of a hardware environment of a general-purpose computer 18 , a distributed information system 10 , a telecommunication switch and a switch-master, whereby the instructions of computer software program 20 can be executed by, or interact with, are described below. Furthermore, specific embodiments of the computer software programs 20 , such as program 20 for receiving and capturing call processing failures and digital cellular switch failures, communicating and managing telecommunication call records, processing court-ordered surveillance requests, obtaining real-time information associated with a network and tracking the deployment of telecommunication network sites on a real-time basis also are described below.
[0051] II. General-Purpose Computer
[0052] Referring now to FIG. 2 , one embodiment of a hardware environment of a general-purpose computer 18 provided for executing one or more computer software program 20 instructions is shown in diagram form. The general-purpose computer 18 can be, for example, an IBM-compatible computer that operates under the control of a number of operating systems. For example, the general-purpose computer 18 may operate under a DOS, OS/2, WINDOWS, WINDOWS NT, UNIX, XENIX, LINUX or PICK operating systems, among others, that are generally well known to those skilled in the art.
[0053] In one embodiment, the general-purpose computer 18 can include one or more peripherals that are coupled to or are in communication with the general-purpose computer 18 . For example, the general-purpose computer 18 can include several input devices such as a mouse 40 or a keyboard 42 . Furthermore, the general-purpose computer 18 can include several output devices such as a monitor 44 , a printer 38 or a plotter. In addition, the general-purpose computer 18 can include several communication devices such as, for example, a modem 36 .
[0054] The general-purpose computer 18 can also be adapted to be coupled to or in communication with one or more other general-purpose computers distributed throughout the distributed information system 10 . For example, the one or more general-purpose computers can be interconnected or configured as a network 24 . As discussed above, the network topology can be a bus topology, a ring topology, a star topology or combinations thereof without departing from the scope of the invention. Those skilled in the art will appreciate that any one of these network topologies, or combinations thereof, can provide an adequate network implementation for the system, method and apparatus. Still other peripherals may be coupled to the general-purpose computer 18 such as, for example, a storage device 32 such as a hard disk drive or floppy disk drive, an optical disk drive 28 , a tape drive 30 and the like. Those skilled in the art will appreciate that the above list of peripherals is not exhaustive and that other peripherals may be utilized in conjunction with the general-purpose computer 18 without departing from the scope of the invention.
[0055] The general-purpose computer 18 also can include several other components known generally to those skilled in the art as the motherboard, interfaces, adapters and controllers. For example, a network adapter 45 may be utilized to provide a communication means or to couple the general-purpose computer 18 to one or more other general-purpose computers, one or more workstations, or more mainframe computers or servers distributed throughout the distributed information system 10 . Also, a parallel interface 46 may be provided for coupling the general-purpose computer 18 to various printers 38 and plotters. Furthermore, a serial interface 48 may be provided for interfacing a communication device, such as a modem 36 to the general-purpose computer 18 . In addition, a video graphics adapter 50 may be utilized to couple the general-purpose computer 18 to the monitor 44 . Moreover, a storage device controller 52 , e.g., a hard disk drive controller, a floppy disk drive controller or an optical disk drive controller, may be utilized for controlling the hard disk/floppy disk drive 32 , the optical disk drive 28 , and the like.
[0056] The motherboard of the general-purpose computer can include one or more central processing units 52 and one or more memory devices 54 for storing the instructions of software programs to be executed by the central processing unit 52 for carrying out a particular algorithm or function. The one or more central processing units 52 may be custom manufactured for a specific application at hand, or may be selected from a wide variety of processors and controllers that are generally available on the market and well known to those skilled in the art. For example, single chip or multi-chip processors manufactured by the INTEL CORPORATION including the 8051, 80386, 80486, PENTIUM and PENTIUM PRO family of processors can be used. In addition, single chip or multi-chip processors manufactured by the MOTOROLA CORPORATION including the MC68000 and MC68040 can be utilized. Further, various clones of the above listed processors that are readily available on the market can be used. For example, processors manufactured by ADVANCED MICRO DEVICES (AMD), CIRYX, C&T and IBM can be readily adapted and utilized as the central processing unit 52 for the general-purpose computer 18 .
[0057] The general-purpose computer 18 can also act as a workstation 26 whether it be in a standalone configuration or interconnected in the network 24 . In addition, workstations 26 requiring additional performance may utilize reduced instruction set computing (RISC) architecture processors and one or more SPARC central processing units 52 such as those manufactured by SPARC INTERNATIONAL, INC., SUN MICROSYSTEMS, INC., the POWER PC™ by MOTOROLA, the AMD 29000™, and the like.
[0058] Memory devices 54 such as random access memories (RAM), read only memories (ROM) and erasable programmable read only memories (EPROM) are generally used for storing the instructions of the software programs 20 to be executed by the central processing unit 52 of the general-purpose computer 18 for carrying out specific algorithms or functions. These memory devices 54 are well known to those skilled in the art and are available in a wide range of configurations and from a wide variety of manufacturers. Those skilled in the art will appreciate and recognize that the above recitation of central processing units 52 and memory devices 54 is not exhaustive and that others may be substituted without departing from the scope of the invention.
[0059] III. Network Organized Repository of Data
[0060] Referring now to FIG. 3 , where one embodiment of a logic flow diagram 19 of a network organized repository of data is shown in logic diagram form. At logic block 21 , one or more computer software programs 20 are stored in a shared database 22 . At logic block 23 , data are also stored in the shared database 22 . At decision block 25 , it is determined whether a user, a process or a computer has requested access to the programs 20 or data that are stored in the shared database 22 . If access to the programs 20 is requested, at logic block 27 the user is permitted access to a selected program 20 stored in the shared database 22 . At decision block 29 , it is determined whether the user has modified the program 20 . If the program has not been modified, the logic flow returns to the previous process. However, if the selected program 20 is modified in any way, at logic block 31 , any changes or modifications that are made to the program 20 are reflected in the other programs 20 that are stored in the database 22 . Furthermore, at logic block 33 , the changes made to the programs 20 stored in the database 22 are made available to every other program on the distributed information system 10 on a real-time basis.
[0061] If, at logic block 25 , access to data is requested, at block 35 the user is provided with access to the data stored in the database 22 . If the data are modified, as determined at block 37 , at block 39 the modifications made to the requested data are reflected in all other data stored in the database 22 . At block 41 , the changes made to the data stored in the database are made available on the distributed information system 10 on a real-time basis.
[0062] IV. Telecommunication Distributed Database Management System
[0063] Referring now to FIG. 4 , where one embodiment of the distributed information system 10 is illustrated which can be utilized as part of a telecommunication distributed database management system 56 . In one embodiment, the general-purpose computer 18 can be in communication with one or more other general-purpose computers configured and adapted as the database server 16 component of the telecommunication distributed database management system 56 . The database server 16 can be configured as a distributed database management server for creating, maintaining and viewing database data. Those skilled in the art will appreciate that, in addition to the data, the database 22 ″ can also include one or more computer software programs 20 therein.
[0064] In one embodiment, the database server 16 of the telecommunication distributed database management system 56 can utilize a structured query language (SQL) database for creating, viewing and maintaining database data. MICROSOFT, ORACLE, GUPTA, INFORMIX, POWERSOFT, ORACLE and SYBASE can all supply SQL databases, for example. Accordingly, the database server 16 can implement an SQL database server such that one or more general-purpose computers 18 , workstations 26 or other servers can access and manipulate the data stored in the database 22 ″ that is accessible by the database server 16 . In addition, the database server 16 can manage and coordinate the data stored in the database 22 while also performing calculations locally. For example, as discussed above, the database server 16 can be comprised of a general-purpose computer 18 or workstation 26 that includes one or more central processing units 52 for executing instructions according to one or more software programs 20 and a memory 54 for storing such instructions. The database server 16 also can be configured and adapted to perform additional functions and execute additional algorithms in addition to manipulating data within the database 22 ″.
[0065] For example, in one embodiment, the database server 16 can execute instructions of a software program 20 for carrying out tasks such as managing the storage and retrieval of database 22 ″ data, generating reports, displaying data, transmitting data to one or more peripheral devices such as printers 38 , plotters, facsimiles, modems 36 and other similar devices. In addition, in one embodiment, the database server 16 can execute instructions of one or more software programs 20 for carrying out tasks such as transmitting database data or specific reports to one or more other general-purpose computers 18 or workstations 26 that are in communication therewith.
[0066] Further, in one embodiment, the database server 16 can execute instructions of one or more software programs 20 for carrying out tasks such as communicating database 22 ″ data or reports to one or more other computer software programs 20 whose instructions are executed on other general-purpose computers across the telecommunication distributed database management system 56 . In addition, the database server 16 can execute instructions of one or more software programs 20 for carrying out tasks such as sending database data or reports to a network address or electronic mail (e-mail) address in response to a query or in response to a predetermined set of conditions. Still further in one embodiment, the database server 16 , or for example any one of the one or more general-purpose computers 18 in communication with the network 24 , can execute instructions of a software program 20 for carrying out the function of broadcasting a wireless signal to be received by one or more users carrying a wireless device or to be received by other devices having incorporated therein a device in response to a predetermined set of conditions. Those skilled in the art will appreciate that the wireless device can be, for example, a pager receiving a paging signal. Those skilled in the art will recognize that the above-enumerated tasks to be performed by the database server 16 can be performed by other components within the telecommunication distributed database management system 56 . Also, such tasks are illustrative in nature are not intended to limit the scope of the invention.
[0067] V. Telephone Switch
[0068] In one embodiment, as illustrated in FIG. 4, a telecommunication switch 58 provides a communication path or circuit between a transmitting telecommunication device and a receiving telecommunication device, and vice-versa. Those skilled in the art will appreciate that the transmitting and receiving telecommunication devices include telephones (e.g., mobile or cellular) pagers or the like. The communication path or circuit remains in place for the duration of the transaction between the transmitting and the receiving devices. The switch 58 can process various signal types. For example, the switch can process voice (e.g., digital and analog voice), data, text, images and the like. As described herein, the telecommunication switch 58 can be associated with both wireless and wireline telecommunication devices. Furthermore, in one embodiment of, the telecommunication switch 58 can refer to an electronic switching office that switches calls from a cellular telephone to a wireline telephone or a digital cellular switch. The telecommunication switch 58 also can perform such tasks as controlling the handoff of transactions between cells in a cellular network and monitoring various transaction parameters. For example, the telecommunication switch 58 can provide telephone usage, cell monitoring data or transactional data, hereinafter referred to as call records 62 , to various components of the telecommunication distributed database management system 56 . The call records 62 are generated by telecommunication devices, for example from cellular telephones owned by subscribers 144 . One embodiment of the telecommunication switch 58 also can include a storage device 60 , for example it can include a tape drive, a hard drive, a disk drive or optical drive for the local storage of various call records 62 .
[0069] An electronic control processor 64 (ECP) can be provided within the system for controlling the telecommunication switch 58 . The ECP 64 can control the operation of one or more telecommunication switches 58 servicing a particular geographic region. For example, each geographic region near a major metropolitan area will generally have one or more ECP's 64 for controlling the operation of one or more telecommunication switches 58 . In one embodiment, the data emerging from the ECP 62 include AMA records. AMA records are automatic message accounting records, which is another name for call records.
[0070] Furthermore, the ECP 64 can be configured to send a feed out to a switch-master 66 for clone detector fraud and at the same time, the ECP 64 can send a feed out to the home office. In other words, the ECP 64 can act as a gateway for directing where some of the call records 62 , such as cell records, should go. Those skilled in the art will appreciate that the call records 62 can be exported into one of the programs 20 within the system 56 , such as a spreadsheet, for additional analysis. Several different feeds also can be provided from the switch 58 to the switch-master 66 . For example, a billing feed 142 and a data feed 143 can both be provided from the switch 58 to the switch-master 66 . Alternatively, the data feed 143 can provide information associated with telecommunication failure data to the central office without the billing information. Feed data can be analyzed in various ways. For example, an analysis can be conducted with respect to how the ECP 64 viewed a particular telecommunication failure and how the switch 58 viewed the telecommunication failure, for example.
[0071] In a market using exclusively ERICSSON wireless technology and ERICSSON telecommunication switches 58 , for example, the data feed 143 can be handled differently. The ERICSSON implementation is generally provided with a separate processor and a user back at the central office receives very little information. The majority of analysis will be performed based on the billing records. As discussed above, one embodiment of a telecommunication switch 58 can be a digital cellular switch. In one embodiment, the ECP 64 also can be coupled to the switch-master 66 , which is discussed below.
[0072] VI. Switch-Master
[0073] In one embodiment, as illustrated in FIG. 4 , the ECP 64 and/or the switch 58 interfaces with the switch-master 66 . The switch-master 66 is an electronic device that operates under the control of a UNIX operating system, for example. Its function is to take a feed 145 coming from the ECP 64 that the AMA is teleprocessing. In addition, the telecommunication company's billing department uses the switch-master 66 for collecting call records 62 . Moreover, the switch-master 66 can provide feeds 68 for detecting roamers 70 , frauds 72 and other functions 74 . The switch-master 66 is generally contained within a building at a particular telecommunication cell site. It is not part of the manufacturer's equipment, such as LUCENT or ERICSSON, nor is it part of the switch 58 . The switch-master 66 is a self-contained electronic device that performs its own set of functions.
[0074] As discussed above, the switch-master 66 generally operates under the control of the UNIX operating system and, generally, there is a switch-master 66 for every switch 58 throughout a given telecommunication system. The switch-master 66 is maintained by a special group and is generally used for billing purposes. For example, the switch-master 66 can be provided with a billing feed 76 used for sending billing information to the billing system of the telecommunication system.
[0075] One embodiment of the switch-master 66 includes a storage device 78 . For example, the switch-master can include a tape drive, a hard drive, a disk drive or an optical drive for local data storage. The switch 58 corresponding to a specific switch-master 66 stores all of the switch's 58 call records 62 on the switch-mastcr's 66 own storage device 78 . Periodically, every morning for example, the call records 62 stored in the switch's 58 storage device 60 are transferred and stored into the switch-master's 66 storage device 78 . Accordingly, the entire billing contained in the switch 58 is sent to the storage device 78 within the switch-master 66 to be stored therein. One embodiment of the storage device 60 can be provided within the switch 58 itself, and accordingly, information stored in the storage device 60 can be provided to the switch-master 66 . Memory can also be provided within the switch 58 or the switch-master 66 for temporarily storing the information prior to transferring it to a storage device (e.g., within the switch 58 or within the switch-master 66 , depending on the direction in which the information is being transferred).
[0076] Turning now to FIG. 5 , where one embodiment of a computer software program 20 ′ is illustrated which interacts with the switch-master 66 as follows. The computer software program 20 ′ allows a user logged into the general-purpose computer 18 to log into the switch-master 66 and execute a script 80 . The script 80 , in turn, allows the user to access a file 82 containing the call records 62 stored within the switch-master 66 . When the switch-master 66 receives a billing feed 76 , for example a serial feed, it dumps the call records 62 to the file 82 . Generally, that file 82 is given a name, such as “000413.13,” which represents the year, hour and day that the file 82 was created. Once these files 82 are generated, they can be compressed and the name of the file can subsequently be changed. Once the information is written to the file 82 , the script 80 takes out the feed 76 and the file 82 is sent to the central office 77 . In case there is a network failure, for example, a transmission control protocol/internet protocol (TCP/IP) connection failure, during the transfer, a pointer is stored within the switch-master 66 indicating the last record that was sent.
[0077] One embodiment of a computer software program (e.g., DD_RUN, to be discussed in more detail below) constantly looks for such system failures. Accordingly, if a failure occurs, the software program 20 provides instructions to the general-purpose computer 18 to shut down all processes and then restore them. Therefore, when the user logs in and executes the script 80 , the script 80 is able to determine the last call record 62 that was sent prior to the interruption in the communication channel and will send the next call record 62 on the list.
[0078] In the event of a shutdown or loss in communication, there is always the possibility of actually losing some call records 62 . If such a failure occurs, several call records 62 , up to 200 for example, may actually be lost. Although the likelihood of losing a large number of call records 62 is remote, the system 56 provides the ability for determining who the calling party was and to see how they were being billed and resolve the situation. The system 56 can recreate more than 99% of the call records 62 and the billing records in case of a loss in communication during transmission.
[0079] VII. Computer Software Programs
[0080] A. Capturing and Processing Call Processing Failures Occurring at a Telephone Switch Control Processor and Call Processing Failures Occurring at a Digital Cellular Switch
[0081] Referring now to FIG. 6 , where one embodiment of a system 56 for capturing and processing call processing failures occurring at a telephone switch control processor 64 and at a digital cellular switch 58 is shown in diagram form. The instructions of one or more computer software programs 20 (e.g., child applications 92 ) are executed on a general-purpose computer 18 for carrying out the function of capturing and processing the telephone call processing failure data collected at the switch 58 on a real-time basis (e.g., substantially instantaneously as the failures occur). In one embodiment, the instructions of the one or more software programs 20 can be executed on a general-purpose computer 18 for carrying out the function of analyzing the captured data and presenting the data to one more users that are logged into the network 24 . In addition, the data can be presented in various user definable ways.
[0082] In one embodiment, the electronic control processor 64 (ECP) is in communication with or coupled to one or more digital cellular switches 58 (DCS). The ECP 64 and the DCSs 58 are located at a cell site 86 located in a given geographic region. For example, in the state of Florida there may be a cell site 88 located in West Palm Beach, a cell site 88 in Ft. Lauderdale, and so on. The ECP 64 is in communication with the switch-master 66 . Physically, the switch-master 66 may be located remotely from the site 86 or may be contained in proximity of the ECP 64 , within the same building for example. The ECP 64 is also in communication with the general-purpose computer 18 executing the instructions of one or more computer software programs 20 therein. For example, the instructions of a client computer software program 94 may be executing in the general-purpose computer 18 in conjunction with the instructions of a master computer software program 90 on the workstation 26 . In addition, the instructions of one or more child computer software programs 92 may also be executing in the general-purpose computer 18 in order to continually capture and process call processing failure data occurring either at the ECP side 92 or at the DCS side 94 of a given cell site 86 , 88 within a telecommunication system.
[0083] In one embodiment, the general-purpose computer 18 is in communication with one or more SQL servers 16 of the type described above. The one or more SQL servers 16 also can be in communication with the general-purpose computer 18 configured and adapted to act as the workstation 26 . Accordingly, the workstation 26 also can be in communication with the application server 12 . Those skilled in the art will appreciate that the one or more SQL servers 16 , the general-purpose computer 18 and the application server 12 can be interconnected in the network 24 .
[0084] In one embodiment, instructions of the client software program 94 can be executed in conjunction with several prerequisites in order to perform a given function. For example, the general-purpose computer 18 can execute the instructions of three distinct software programs simultaneously: a master software program 90 (hereinafter m_cpfail), the master's child software programs 92 (hereinafter s_cpfail) and the client software program 94 (hereinafter c_cpfail).
[0085] One embodiment of the instructions of the master software program 90 can be executed to perform the function of monitoring the execution of the instructions of the child software programs 92 , assuring that failure data is continually received from the operations and maintenance platform (OMP processor), performing paging functions and maintaining data and logging administrating functions. The instructions of the child software programs 92 can be executed to carry out the function of establishing communication links to each OMP location, (e.g., by way of TCP/IP), filtering the received data and providing any predetermined fields to the SQL server 16 , for later processing.
[0086] One embodiment of the instructions of one child software program 92 can be executed to collect failure data from each OMP location. The instructions of the client software program 94 can then be executed to carry out the function of displaying the data that were collected in various formats as predefined by the one or more users logged into the network 24 . For example, the display format can include a graphical output format. Of the three software programs 90 , 92 , 94 whose instructions are executing, the client software program 94 is accessible to the one or more users. The instructions of the software programs 90 , 92 , however, are executed on a stand-alone basis and are generally not accessible to the users. For example, in one embodiment, the instructions associated with software programs 90 , 92 can be executed on a stand-alone WINDOWS NT workstation 26 having administration privileges configured not intended for general use.
[0087] One embodiment of the ECP 64 that controls multiple switches 58 can be adapted to receive information from the switch-master 66 . Further in one embodiment, the ECP 64 also can monitor any call processing failure records. Accordingly, a telecommunication system performance management team member, or system user at the central office, is able to view the failure data messages occurring at the ECP 64 on a real-time basis. For example, in implementations using a switch 58 manufactured by the LUCENT COMPANY, a feed 96 can be established between the ECP 64 and the general-purpose computer 18 . The call processing failure records, and various other types of messages depending on the configuration of the ECP 64 , are then sent to a specific port 98 . The port 98 can be adapted in order to capture and receive the call processing failure records and then transmit the failure data messages to the general-purpose computer 18 that the user is logged into. Certain portions of the failure data messages and other information can then be stored into specific tables 100 102 having fields 100 in the SQL database server 16 , for example.
[0088] In operation, the user operating the general-purpose computer 18 at the central office points to and clicks on an icon on the display device 44 representative of the application server 12 and thereby executes the instructions of a software program 20 for carrying out the function of establishing a communication connection 93 between the general-purpose computer 18 and the SQL database server 16 , and retrieving specific information requested by the user on a real-time basis. The user then establishes a communication connection 97 between the general-purpose computer 18 and the ECP 64 . Once the communication connection has been established with the ECP 64 , the user can retrieve the call processing failure messages from either the ECP 64 or the DCS 58 .
[0089] The physical location of the ECP 64 may vary without departing from the scope of the invention. In general, the ECP 64 can reside within the same building in which the cellular switch 58 resides. The total number of cellular switches 58 that are located at a particular location 86 , 88 will vary depending upon the telephone call traffic for the particular geographic region 86 , 88 in which the switches 58 are located. For example, some regions may have three or more switches 58 within the same building or the switches 58 may be spread out in separate buildings throughout the geographic region 86 , 88 . For each switch 58 there can be provided separate output ports 104 . For example, instructions of the child software program 92 can be executed for carrying out the function of receiving and capturing information from each separate switch port 104 . Accordingly, there can be provided separate output ports 104 for each individual switch 58 handling a particular geographic region 86 , 88 .
[0090] In one embodiment, the operation of the cell site can be made to be automatic. For example, instructions of a computer software program 20 can be executed for carrying out the function of collecting the data portion of the cell while the instructions of the child software program 92 can be executed to provide that child 92 with enough intelligence to monitor its execution and to ensure that it continues collecting failure data messages from the ECP 64 or the DCS 58 , depending on the specific implementation used.
[0091] Those skilled in the art will appreciate that more than one database server 16 can be utilized without departing from the scope of the invention. For example, two or more separate database servers 16 can be deployed, one serving a first set of computer software programs, the second serving another set of computer software programs, and so on. Having a multi-database server configuration is advantageous in case the operation of the first database server 16 fails. In the event of such failure, the second (or nth) database server 16 ′ can be utilized to perform data collection until the operation of the first database server 16 is restored. In other words, the second database server 16 ′ can act as a back up to the first data base server 16 . It will be apparent to those skilled in the art that this concept can be extended to include a plurality of database servers working in conjunction and acting as backups for each other. The act of switching the operation between one database server and another can be performed either manually or automatically.
[0092] Turning now to FIG. 8 , where one embodiment of a logic flow diagram 106 for capturing and processing call processing failure data messages occurring at a telephone switch control processor 64 and occurring at a digital cellular switch 58 is shown in diagram form. At block 108 instructions associated with the master software program 90 are executed. At block 110 instructions associated with the child program 92 are executed. At block 112 , instructions associated the client program 94 are executed. Once the instructions for the master program 90 , the child program 92 and the client program 94 are executed, at block 114 , the master program 90 begins monitoring the execution of the child software program 92 and the client software program 94 . These instructions execute concurrently.
[0093] Once the instructions associated with the child program 92 begin executing at block 110 , the child software program 92 establishes communication links between the general-purpose computer 18 and one or more OMP sites at block 116 . At decision block 118 , it is determined whether the child software program 92 is to receive call processing failures from the ECP 64 or from the DCS 58 . If the call processing failure records are to be received from the ECP 64 , at block 120 , the child software program 92 executes instructions for continually capturing call processing failure records from the OMP site at the telecommunication switch control processor ECP 64 on a real-time basis. If it is determined that the call processing failure records are to be received from the DCS 58 side, the child software program 92 executes instructions for continually capturing call processing failure records from the OMP sites at a digital cellular switch DCS 58 on a real-time basis at block 122 .
[0094] While the child software program 92 continually captures call processing failure records at blocks 120 , 122 , the master software program 90 , at block 128 , ensures that the call processing failure records are continually received. Meanwhile, the child software program 92 , upon continually capturing the call processing failure records, filters the captured data at block 124 and at block 126 stores the filtered captured data to a storage device 22 that is in communication with the general-purpose computer 18 .
[0095] Meanwhile, the master software program 90 , at block 130 , monitors the captured data and looks for a predetermined set of conditions within the failure data messages. At decision block 132 , the master software program 90 continuously checks if the predetermined condition has occurred. If the predetermined condition has occurred, at block 134 , the master program 90 executes instructions that ultimately result in broadcasting a signal to a wireless telecommunication device. At block 136 , the master program continuously maintains call processing failure records and also logs any administration data to the data storage device 22 ″ coupled to the data base server 16 .
[0096] The client computer software program 94 , which is the only computer software program available to a user, can receive user-defined instructions for how to format the captured data at block 138 . Once the user has determined the particular format for outputting the failure data messages, at block 140 , the client program 94 provides the captured data messages to an output device coupled to the general-purpose computer 18 in accordance with the user's formatting instructions.
[0097] In one embodiment, the computer software program 20 provides several options and features. As described above, at block 134 of logic flow diagram 106 , the software program has the ability to alert users of the occurrence of certain events based on various predetermined thresholds by automatically executing instructions for broadcasting, for example, a paging signal to one or more wireless paging devices. Thresholds can be set up to be dependent on time of day, call volume, the number of call failure data messages captured and the like. In a further example, one or more users may want to receive a paging signals in the event a particular cell site reaches a predetermined number of failure data messages of a particular type. In one embodiment, the users are permitted to specify the various threshold levels to be monitored. For example, one user may want to be paged if 50 failures occurred at 2:00 am. Another user may not want to be paged if less than 50 failures occur at 12:00 noon. Still another user may program the system to receive a page if 5,000 failures occur at 12:00 noon and if 50 failures occur at 12:00 midnight. Accordingly, the system provides means for allowing the one or more users to customize the individual threshold settings to satisfy their individual needs.
[0098] In one embodiment, the failure data message analysis is performed on a real-time basis. For example, the information received and captured at the ECP 64 or DCS 58 side of the telecommunication system is updated and displayed on a continuous basis by the general-purpose computer 18 operating in conjunction with the other network 24 components such as the database server 16 , and the like. There exist a variety of methods that can be employed for analyzing the call failure data messages. For example, in one embodiment, the analysis can be performed on the basis of the specific hour, cell site, phase or radio (cellular telephone). In one embodiment, when the user first executes the software program the user is initially provided with data on an hourly basis and the user can then change these settings to ones that better suit.
[0099] Furthermore, the one or more users can be equipped with two or more general-purpose computers 18 at the central office that are in communication with the network 24 . For example, a number of users can have two or more general-purpose computers 18 at their desk whereby one of the computers can be configured to have a specific screen open at all times, while the other computer can be configured to have a different screen open at all times. For example, one screen may be displayed such that the user can see, in real-time, how many call failures have occurred throughout the telecommunication system. These failure types can be displayed at the top of the screen. The user can then click on the heading in order to see what those failure types actually are. The lost calls, which are calls that were actually lost, are then displayed at the bottom of the screen.
[0100] To obtain additional information with regards to the call failures, the user can type, for example, “raw” in the command line and the software program will display all of the actual call failures. Furthermore, the user can sort the call failures based on various fields. For example, the user can sort the call failures based on directory number. The user can look at the output block to see if there exist any patterns and determine whether they are associated with a particular number. If a pattern emerges the user will see something stand out right away. The user also can sort the cell failure types by cellular telephone number. For example, if one particular cellular telephone number has a problem, the user will have the ability to view the raw record of the call failures associated with that particular cellular telephone number on a real-time basis.
[0101] The call processing failure records can be broken down even further. For example, the call processing failure records can be broken down according to every single failure that occurs. Furthermore, the call processing failure records can be broken down into current (Amperage), for analog telephones, or time division multiple access (TDMA), for the digital telephones. The call processing failure records also can be broken down and viewed on an hourly basis or they can be broken down and viewed on the basis of the specific cell. For example, if a particular cell has had either a lot of traffic or has a large number of failures associated therewith, for example 976 failures recorded in one day, the user more than likely will go in to view the raw data in order to determine the cause of the failure at that cell or try and determine whether a failure pattern exists for that cell. If the processing failure records are broken down and analyzed in terms of cellular telephone numbers, the user is then able to determine the worse cellular telephone in the entire telecommunication system.
[0102] Some processing failure records exhibit failure patterns that are easier to spot than others. For example, if there are problems with the telephone, an entire page may be filled with the same telephone number and that pattern will stand out and be readily apparent to the user. Upon detecting a certain failure pattern, the user will generally attempt to contact that particular subscriber 144 and work out the problem. Other failures, for example, could be caused by the telephone itself or the telephone may actually be turned off. Sometimes, the subscriber 144 may be in the middle of a telephone call, and for various reasons, the telephone will be powered off or the battery will go dead in the middle of the call. These are seen by the system 56 as failures merely because the call was terminated, however, the subscriber 144 generally knows when these situations arise and the issues can be readily worked out.
[0103] One embodiment of the software program 20 can be configured such that it reports the worst failure that occurs in the telecommunication system and the type of failure that occurred in the system when the software program is first invoked by the user. As illustrated at block 138 of logic flow diagram 106 , the user has the ability to filter the output based on any single failure type. In addition to viewing the data, the user can also print the data.
[0104] In one embodiment, the user can invoke a software program 20 and execute instructions associated therewith for querying the database 22 . For example, the user can query the database 22 based on a specific failure type or run a query based on a specific directory number. In accordance with the specific query, the system responds by showing the user the number of telephone call failures. For example, the output can illustrate that a particular telephone number queried had multiple failures, e.g., 128 because midnight. Accordingly, the user can readily deduce that something has gone wrong with that particular cellular telephone. In another example, the database can be queried based on the type of cellular telephone and call failures can be retrieved and displayed accordingly. Furthermore, the user can query the database 22 based on a variety of other failures, for example, hand-off failures between cell sites. As discussed above, the user has the option of viewing the failure reports in a number of canned report formats, which are provided by the system 56 .
[0105] In one embodiment, the user has the option of executing instructions for running a “glare.” Glare means that there are two identical telecommunication devices trying to be used at the same time. This is generally an indication that something has gone wrong. The user has the option of executing instructions for running a glare in accordance with trunk group, serial number or numbered history. The user also can output a report based on the cell number. For example, a cell report for cell number 8 will provide the user with every failure that occurred within cell number 8 . The reports can be outputted to the display and can include the directory number, when it failed, what the failure was, the serial number, the cell and DCS, station class mark, what type of a call it was, trunk group member number, which cellular telephone it was on, whether it was answered, whether there are any call backs and so on.
[0106] Furthermore, the user can output a report based on a directory number and retrieve records as far as, for example, 90 days in the past. Those skilled in the art will appreciate that the number of days can be preset based on the available memory on the server 16 or in the database 22 , and should not be considered as limiting the scope of the invention. The user also can use the backlog from a directory number. For example, if a subscriber 144 called the central office because of a problem they were experiencing on their line, the user will proceed to query the database 22 and make a determination as to whether there had been any failures on that particular line on that day.
[0107] Generally, users have three tools that they rely on for troubleshooting, namely, the graphical output, the investigation screen and the paging signal broadcast output. Thus, the user has the capability of graphing the call processing failure records and generating an output in the form of a graph. Furthermore, the investigation screen provides the user with the capability of setting up various thresholds and thereby broadcasting a paging signal to a remote wireless paging device based on a predetermined, user selectable 100 condition. Such paging broadcasts are tracked by the system 56 and an investigation number is tagged to the broadcast. Accordingly, the person or wireless telecommunication device that was signaled can call back into the central office, specify the investigation number and the user will be able to show them all of the failures that are associated with that specific investigation number. Those skilled in the art will appreciate that any identifiers such as an investigation number, a cell name and the like may be tagged to the paging signal broadcast for reference purposes.
[0108] There are other screens that can be viewed by the user on the output device. For example, the user can view a threshold screen where the thresholds can be viewed and specified. Such thresholds can be weighed based on the title and date, and other thresholds can be based on the various failures that can occur. The user also can apply system averages that can be tracked. Accordingly, if the user knows that, on average, there are 400 lost calls in the middle of the day and 300 at eleven o'clock, for example, the user can enter these values in the threshold screen and automatically have the system 56 generate what the threshold level should be. The system 56 also provides a paging screen that allows the user to specify who the individuals to be paged are, what their numbers are, and the like. In addition, the system 56 can be provided with functionality that allows the user to broadcast a paging signal to a digital pager. Moreover, the broadcast signal can page an Internet Protocol Suite (IPS) pager where the user can send an electronic mail (e-mail) address and perform additional paging functions. The messages are received via a TCP/IP communications link to the OMP processor. The messages are then stored on the SQL server 16 after being parsed.
[0109] B. Communicating and Managing Telephone Call Records
[0110] Referring now to FIG. 9 , where one embodiment of a logic flow diagram 146 is illustrated in diagram form. The logic flow diagram 146 includes a series of steps representing instructions to be executed by a general-purpose computer 18 . Beginning at block 148 , from a telecommunication device such as a wireless telephone located at a remote site, one or more digits dialed by the telecommunication device that are associated with a call record 62 are transmitted from the remote site on a real-time basis. At block 150 , a telecommunication switch 58 receives the one or more transmitted dial digits in real-time. At block 152 , the transmitted one or more dial digits received by the switch 58 are transmitted to the general-purpose computer 18 located at a local site in real-time.
[0111] Upon receiving the one or more dial digits, the general-purpose computer 18 determines whether to analyze the dial digits in accordance with the user's instructions at block 154 . If the general-purpose computer 18 has been programmed to analyze the dial digits, at block 156 , the telephone dial digits are parsed and at block 158 a report is generated in accordance with a predetermined criteria as programmed by the user. If a determination is made at block 154 not to analyze the dial digits at that time, the one or more dial digits are stored in the database 22 coupled to the general-purpose computer 18 .
[0112] Referring back to FIG. 4 , where one embodiment of a system 56 for communicating and managing telephone call records is illustrated in block diagram form. In one embodiment, the general-purpose computer 18 , for the purpose of communicating and managing telephone call records 62 , executes instructions of one or more computer software programs 20 . The telephone call records 62 can be the actual telephone billing records. In one embodiment, the one or more computer software programs 20 allow the user to query the call records 62 stored in the database 22 based on several variables such as the telecommunication device number (e.g., cellular), any particular digits that were dialed by the telecommunication device or the serial number of the telecommunication device.
[0113] The switch-master 66 is in communication with the switch 58 by way of a billing feed communication link 142 . In one embodiment, the billing feed communication link 142 can be a landline or can be a wireline connection. The switch-master 66 also is in communication with a first general-purpose computer 18 . One embodiment of the switch-master 66 and the general-purpose computer 18 can be arranged in a network 24 , such as a local area network (LAN) configuration. The general-purpose computer 18 also is in communication with the database server 16 , such as a computer having an SQL server, which in turn is in communication with a second general-purpose computer adapted and configured as a workstation 26 .
[0114] The first general-purpose computer 18 is configured to execute instructions of one or more computer software programs 20 . For example, the general-purpose computer 18 can execute instructions according to a first software program (“NTSTART” hereinafter) for carrying out the function of resetting various memory or storage tables 100 available on the network 24 to a known state. The NTSTART software program then initiates the execution of instructions according to a second software program (“DD_RUN” hereinafter) for carrying out the function of checking the status of any child software program 92 and for looping through various hosts. In addition the DD_RLN software program can check the sanity of the overall system 56 and on a real-time basis the status of the system 56 based on the switch 58 type. For example, if the switch 58 is a LUCENT switch, DD_RUN checks the system 56 status approximately every 15 minutes. If the switch 58 is an ERICSSON switch, DD_RUN checks the system 56 status approximately every 60 minutes. In addition, the DD_RUN software program initiates the execution of instruction