Ensminger, John D. (1537 Valley View Circle, Homewood, AL, 35209, US)
Van Natter, Douglas C. (P.O. Box 380515, Birmingham, AL, 35244, US)
Cerami, Robert E. (1017 Barkley Drive, Birmingham, AL, 35242, US)
Ensminger, John D. (1537 Valley View Circle, Homewood, AL, 35209, US)
Van Natter, Douglas C. (P.O. Box 380515, Birmingham, AL, 35244, US)
|1.||A method for determining whether a telephone company is properly billing for telephone service, comprising the steps of : (a) reading a plurality of records from a billing system; (b) reading a raw CDR from a system that provides billable telephone service ; (c) converting the raw CDR to a generic CDR; (d) comparing the CDR to each record of the plurality of records, until a matching record is found or all of the records have been compared; (e) storing the CDR in a file of matched records if a matching record in the billing system is found; (f) storing the CDR in a file of nonmatching records if no matching record is found in the plurality of records; and (g) analyzing the nonmatching record file to determine whether the telephone company properly billed for telephone service.|
|2.||The method recited in claim 1, further comprising: (h) incrementing a counter of total records processed for each CDR that is attempted to be matched to a record in the plurality of records; (i) incrementing a counter of matching records if there is a match in step (e); and (j) incrementing a counter of nonmatching records if there is no match found for the CDR in step (f).|
|3.||The method recited in claim 1, further comprising the steps of comparing switch generated CDRs with the plurality of records.|
|4.||The method recited in claim 1, further comprising the step of comparing prepaid CDRs with the plurality of records.|
|5.||The method recited in claim 1, further comprising the step of comparing SMS CDRs with the plurality of records.|
|6.||A system for determining whether a telephone company is properly billing for services, comprising: a CDR processor configured to read raw CDRs ; a CDR converter executing on the CDR processor to convert the raw CDRs to generic CDRs ; a billing system comprising a billing system disk having a plurality of billing records stored thereon; a CDR compare tool executing on the CDR processor for comparing each generic CDR to at least one of the billing records to determine if each generic CDR matches a billing record; and a nonmatched file to store CDRs that do not match one of the billing records, wherein the nonmatched file can be analyzed to determine if there is a problem with billing.|
|7.||The system recited in claim 6, further comprising: a first counter to count a number of matching records; a second counter to count a number of nonmatching records; and a third counter to count a total number of records processed.|
|8.||The system recited in claim 6, further comprising: a first counter to count a number of matching CDRs ; a second counter to count a number of nonmatching CDRs ; and a third counter to count a total number of CDRs processed.|
|9.||The system recited in claim 6, further comprising a matchedrecord file to store records that match a billing record.|
|10.||The system recited in claim 6, wherein the CDRs are generated by a switch.|
|11.||The system recited in claim 6, wherein the CDRs are stored in a prepaid CDR disk on a prepaid platform.|
|12.||The system recited in claim 6, wherein the CDRs are stored in a SMS CDR disk on an SMSC system.|
Background of the Invention  A critical issue facing cellular telephone companies is ensuring appropriate subscriber billing. For example, it is important to ensure that subscribers are billed for services they use, and not billed for services they do not use. Not only do billing errors result in upset customers, but finding and fixing the problems can cost large sums of money.
[00031 Another problem faced by cellular telephone companies is unauthorized use of service by non-subscribers. Such non-subscribers often steal telephone service through a number of fraudulent schemes. Revenue lost through such fraud can reach into the millions of dollars.
 Detecting these and other billing errors generally requires analysis of the activity of each switch in a telephone network. Modern cellular telephone switches maintain records for each telephone call a switch is involved in handling. These records are known as call detail records (CDRs). CDRs contain virtually all information regarding telephone calls handled by a switch. This information includes identification of trunk group and cell site, duration of the call, start date and start time of the call, termination status of the call and other information related to the call. An enormous amount of information can be stored in the CDRs. For example, in a typical billing cycle of one month it is not uncommon for a switch in a cellular telephone system to generate fifty to one hundred million CDRs.
 One problem with analyzing CDRs is that each switch manufacturer uses a proprietary format for the CDRs generated by its switches. Moreover, different switches manufactured by a single manufacturer often have different CDR formats.
For example, some switches generate a single CDR per telephone call and others generate multiple CDRs per telephone call.
 In most telephone systems, CDRs generated by a switch are sent to a mediation device. The transfer can be by tape, which is then stored on a disk, or stored directly to disk. The mediation device is usually configured to filter CDRs according to a set of pre-defined filtering rules. Generally, the rules are designed by a particular implementation to remove CDRs that should not be forwarded to the billing system. For example, in a caller-pays environment, CDRs for incoming calls can be removed by the mediation device. This is because only callers pay in this type of environment. Customers in such systems do not pay for received calls.
 CDRs remaining after filtering by the mediation device are sent to the billing system. The billing system is generally separate from the switches in the telephone network. The billing system also includes information regarding the telephone company's subscribers. The billing system uses this information in conjunction with the telephone usage information. The billing system then uses the information it knows about subscribers to prepare and send bills on a periodic basis. The typical periodic basis for the billing system is one month.
 CDRs can also be removed by the billing system. For example, if the CDRs for incoming calls are not removed by the mediation device in a caller-pays environment, CDRs that would result in a called party being billed are usually removed as an initial step in the billing process. Further, CDRs related to prepaid calls can be removed by the billing system if not removed by the mediation device.
The removal of CDRs proceeds according to a set of predefined billing or business rules.
 CDRs that survive the filtering process, whether performed by the mediation device, the billing system or both, are rated. Rating is the process of calculating the appropriate charges for the services used. After the changes are calculated, bills for services are sent to subscribers, usually on a per-month basis.
 Billing errors can occur when the billing data and switch data are not in agreement. For example, if the switch data incorrectly indicates that a particular customer is a prepaid customer when the customer is actually a postpaid customer, the filtering process of the mediation device would remove the CDRs for that customer's telephone calls prior to their being sent to the billing system. Because these CDRs do not reach the billing system, the customer is not billed for the calls.
SUMMARY OF THE INVENTION  The present invention solves the foregoing problems in the art by efficiently comparing switch data and billing data to identify records that are not in agreement.
CDRs generated by the switch that survive the filtering process of the mediation device or billing device should match records found in the billing data. Those switch- generated CDRs that cannot be found in the billing data indicate possible billing errors that should be examined. For example, these CDRs may represent use of the telephone system that may not have been appropriately billed.
 The filtering process of the mediation device and/or billing system proceeds according to a set of pre-defined business rules to remove CDRs that are not intended to be billed. For example, in many cases prepaid calls are handled by a prepaid platform. Those calls are not billed because they have already been paid for.
Another class of calls that are not billed includes calls that result in busy signals or calls that are not answered.
 In another embodiment of the present invention, a comparison is made between the CDRs generated by the switch and the prepaid platform data. The comparison that is made is substantially the same as the comparison between the switch data and billing system data. CDRs that match records in both the postpaid billing system and the prepaid system could indicate potential double billing of prepaid customers.
 In another embodiment of the present invention, the switch data is compared to short-messaging service center (SMSC) data. The SMSC is the system that houses the detailed records for short messages that are sent to and from cellular customers.
The comparison that is made is substantially the same as the comparison between the CDRs generated by the switch and billing system data. In addition, the CDRs in the SMSC are compared to the billing system data to ensure that customers using the SMS service are properly billed for that use.
BRIEF DESCRIPTION OF THE DRAWINGS  FIG. 1 is a schematic diagram of a system for comparing billing data CDRs with records from one or more other systems in a telephone system according to a preferred embodiment of the present invention.
 FIG. 1A is a schematic diagram of a system for comparing billing data CDRs with roaming records in a telephone system according to a preferred embodiment of the present invention.
 FIG. 2 is a flow chart for a method for comparing CDR records to records of one or more other systems in a telephone network.
 FIG. 3 is an exemplary generic CDR according to an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION  FIG. 1 is a schematic diagram of a system for comparing billing data with records from other systems in a telephone system according to a preferred embodiment of the present invention. A switch 102 generates at least one call detail record (CDR) for each telephone call that switch 102 is involved in processing.
Switch 102 can be any switch capable of generating CDRs. Such switches are well- known to those skilled in the art, and include cellular telephone switches manufactured by Lucent, Nortel, Ericsson and others.
 Typically CDRs generated by switches manufactured by different manufacturers have different structures. Further, some switch manufacturers provide switches that use the same CDR structure for every telephone call handled by the switch. Other switch manufacturers provide switches that generate CDRs having different structures based on the type of telephone call. For example, different CDR structures are used for telephone calls originating on land line telephones, telephone calls originating on cellular telephones, telephone calls terminating on land line telephones and telephone calls terminating on cellular telephones.
 Each CDR comprises information about the telephone call causing its generation. Any desired information regarding the telephone call can be contained in a CDR. For example, CDRs often contain information regarding the originator of the telephone call, including calling party number or a-number, and information regarding the called party, including dialed number, called number or b-number. In addition, the CDRs commonly include the time the call was made, the duration of the call, status of the call or termination code and any other desired information regarding a telephone call that the switch captures.
 CDRs generated by switch 102 are stored on disk 104 in a mediation device 105. Some switches generate tapes containing the CDRs for a billing period.
According to the present invention, such CDRs are transferred from a tape to disk 104. The CDRs are stored in a raw format. The raw format is generally a binary format that is typically proprietary to each switch manufacturer. Thus, CDRs stored on disk 104 are often referred to as raw CDRs.
A CDR processor 106 is electronically coupled to mediation device 105 such that CDR processor 106 has access to the raw CDRs stored thereon. A CDR converter 109 converts raw CDRs retrieved from raw CDR disk 104 into generic CDRs. The generic CDRs can be compared to billing, SMSC and/or prepaid platform records.
Generic CDRs facilitate the management processes of the present invention.
According to an embodiment of the present invention, a generic CDR is a data structure that has a field corresponding to every field that can be present in any CDR produced by a switch of any manufacturer. In an alternative embodiment of the present invention, the generic CDR is designed to provide a field corresponding to every field of any CDR that can be generated by any switch of any manufacturer.
Thus, a generic CDR structure can hold the data that is present in any raw CDR from any switch manufacturer. During the conversion process, any field in the generic CDR that is not present in the raw CDR being converted is left blank or populated with a dummy value to indicate it is not a real value. The generic CDR structure is updated to reflect any changes in any CDR structure from any switch manufacturer.
An exemplary generic CDR structure is illustrated in FIG 3. As shown in FIG. 3, the generic CDR is a data structure comprising a plurality of fields. As described above, each field corresponds to a field that can be present in a CDR generated by a target switch. The target switch is the switch whose CDRs the generic CDR is designed to capture. Each field in the generic CDR has an associated field type. The field type is the data type of the field with which it is associated. The generic CDR shown in FIG. 3 is for explanatory purposes only. In practice there would likely be many more fields and associated data types.
 Exemplary fields include service code, service type, record length, record type, call type, called number, calling number, start time, end time and numerous other fields that would be known to those skilled in the art. Exemplary data types include byte, int, short, byteh, bytep and time-t. Byteh corresponds to hexadecimal data. Bytep corresponds to phone number data. Time t corresponds to times. Other data types can be defined and/or used in the generic CDR if required.
 As shown in FIG. 3, the compiler directive #ifdef can be used to configure the generic CDR for multiple switch types. Thus, the generic CDR can be configured for different switches produced by a particular manufacture that have common and uncommon fields. For example, all switches manufactured by Nokia generate CDRs that have common elements. In addition, different models of Nokia switches generate CDRs that can have uncommon elements. These differences can be accounted for by using the #ifdef compiler directive. As shown in FIG. 3, for example, fields 1-5 are common to both switch types 1 and 2. Fields 6-7 are specific to the CDRs generated by switch type 1 and field 8 is specific to switch type 2.
 Using a generic CDR allows the management processes of the present invention to be written according to the generic CDR, rather than having to be individually tailored to each specific CDR type generated by a manufacturer's switch.
CDRs can be compared using a CDR compare tool 110. CDRs from several sources can be compared to ensure that telephone services are being billed for appropriately.
 In an embodiment of the present invention, generic CDRs generated by switch 102 are compared to billing records stored on a billing records disk 117 generated by billing system 114. The comparison is performed by a CDR compare tool 110. CDR compare tool 110 attempts to associate each CDR generated by the switch with a corresponding record in the billing data. Any CDRs generated by the switch that cannot be associated with a record in the billing data may correspond to services that are not being properly billed. Likewise, records present in billing data that have no corresponding CDR generated by the switch may represent inappropriate billing of customers for services they are not using.
 In one embodiment of the present invention, all billing records stored in billing system 114 are read into computer memory. Each generic CDR generated by switch 102 is read in turn and compared to each record from the billing system. If there is a match, that record is counted as a matched record and a MATCHED- RECORDS counter is incremented. The MATCHED-RECORDS counter is a one-up counter of matched records. In addition, a TOTAL-RECORDS counter is incremented. The TOTAL-RECORDS counter is a one-up counter of the number of records that have been processed. In addition, the record can be stored in a MATCHED-RECORDS file. The MATCHED-RECORDS file can store switch- generated CDRs that match a billing record, billing records that match a switch- generated CDR or both.
 If there is no match, the record is stored in a NON-MATCHED-RECORDS file and a NON-MATCHED-RECORDS counter is incremented. The NON- MATCHED-RECORDS file can store switch-generated CDRs that do not match a billing record; billing records that do not match a switch-generated CDR or both. The NON-MATCHED RECORD counter is a one-up counter of non-matching records.
In addition, the TOTAL-RECORDS counter is incremented. The ratio of the value of the MATCHED-RECORD counter to the TOTAL-RECORDS counter is the percentage of the total number of switch-generated CDRs for which corresponding billing data was identified. This percentage provides an indication of the billing efficiency of the telephone network.
The NON-MATCHED-RECORDS file can be further analyzed to determine why the records are not being appropriately billed. This analysis can lead to discovery of missed billing opportunities, telephone fraud schemes and inaccurate billing of customers.
Due to memory constraints of many computers and the large number of billing records containing subscriber billing data in billing system 114, there is generally insufficient memory to store all billing records in CDR processor 116. Thus, not all billing data can be read into computer memory in a single read. Consequently, CDR processor 106 reads only a portion of billing records and CDR compare tool 110 performs comparisons on that portion and then obtains more data. As described below, this process continues until the CDRs have been compared to all billing records or all CDRs have matching billing records.
In one embodiment of the present invention, each generic CDR is read from disk 108 in turn. As described above, CDR processor 106 attempts to match each CDR with a billing record. In this case, the billing records used for matching purposes are those billing records in the portion of billing records stored in CDR processor 106. If the CDR matches a billing record, a MATCHED-RECORDS counter is incremented. In addition, a TOTAL-RECORDS counter is incremented.
In an embodiment of the present invention, the matched record is also stored in a MATCHED-RECORDS file.
 If the CDR does not match a billing record, the CDR is stored in a RETRY file. CDRs stored in RETRY file 111 are compared to other portions of the billing records as described below.
 After each of the generic CDRs has been compared to the portion of billing data stored in CDR processor 106, the CDRs will have matched or been stored in RETRY file 111. If RETRY file 111 is empty, then all generic CDRs have been matched and the CDR compare tool 110 has completed the comparison process.
 If RETRY file 111 is not empty, then another portion of billing records is read from billing system 114 into CDR processor 106. CDR compare tool 110 attempts to match generic CDRs from RETRY file 111 to records in the new portion of billing records in CDR processor 106, as described above. This process continues until there are no more generic CDRs in retry file 111 or all billing records have been accessed to attempt matches to the generic CDRs.
 If there are no more billing records, then any CDRs remaining in RETRY file 111 represent CDRs for which the telephone company did not bill. These CDRs represent lost revenue to the telephone company. In an embodiment of the present invention, the number of CDRs stored in the RETRY file is totaled and stored in the NON-MATCHED-RECORDS counter.
 Preferably, the matching process performed by CDR compare tool 110 uses flexible criteria to determine whether a particular CDR matches a billing record. For example, in some cases matches can be made based on the dialed telephone number.
However, the billing system may store dialed numbers as seven-digit numbers and the switch may store dialed telephone numbers with ten digits in the CDRs it generates.
Without any flexibility in CDR compare tool 110, the seven-digit telephone numbers stored in the billing data would not match the ten-digit telephone numbers stored in the switch-generated CDRs. To overcome this problem, in one embodiment of the present invention CDR compare tool 110 adds a three-digit area code to the dialed- number field in each billing record to enable matching. Other otherwise incompatible formats between the types of data being matched can be accounted for in a similar manner.
 In addition to performing comparisons between switch-generated CDRs and billing system 114 records, CDR compare tool 110 can compare CDRs processed by prepaid platform 112. In this case, CDR compare tool 110 compares CDRs processed by prepaid platform 112 in the same manner as described above for CDRs generated by switch 102. The prepaid CDRs are stored on a prepaid CDR disk 119. That is, records from prepaid platform 112 are used rather than CDRs generated by switch 102. In this case, however, CDR compare tool 110 uses business rules designed to keep prepaid CDRs and discard other types of CDRs.
 In addition, CDR compare tool 110 can be used to perform comparisons between CDRs processed by a short-messaging service center (SMSC) 115 and billing system 114. In this case, CDR compare tool 110 compares SMS CDRs 116 processed by SMSC 115, which are stored on an SMS CDR disk 116, with billing records in the same manner as described above for comparing switch-generated CDRs with records of billing system 114.
 In another embodiment of the present invention, CDRs generated by switch 102 are compared to roaming records to ensure that the telephone company is receiving the correct revenue for subscribers of other telephone companies that use its network, as well as to ensure that it is being charged correctly for its subscribers that use other telephone companies'networks. FIG. 1A is a schematic diagram illustrating a system according to an embodiment of the present invention for comparing switch-generated CDRs with roaming records from a clearing house 120.
Roaming records correspond to either subscribers of another telephone company using the telephone company's network or to subscribers of the telephone company using other companies'networks. Clearing house 120 is responsible for obtaining roaming records and distributing them to the correct telephone company for billing purposes.
 Switch 102 generates CDRs as described above. Some of these CDRs may pertain to roaming telephone calls. According to the business rules, these CDRs are passed through to clearing house 120 for processing and distribution. The CDRs are also stored as raw CDRs in storage device 104. Clearing house 120 provided billing information regarding roaming telephone calls to billing system 114. The billing information is stored on storage device 117.
 CDR compare tool 110 compares the CDRs generated by switch 102 pertaining to roaming telephone calls with the data in billing system 114 passed from clearing house 120. The comparison is performed in a similar manner to the comparison described above for comparing the CDRs to other kinds of billing data.
By performing this comparison, the telephone company can ensure that it is receiving the revenue it expects from subscribers of other telephone companies that use its network, as well as being correctly billed for the use of other telephone companies' networks by its own subscribers.
 One issue that remains is the possibility that the switch-generated CDRs include CDRs that would normally be filtered by mediation device 105 and/or billing system 114. For example, prepaid calls are often filtered out of the billing data. This filtering prevents subscribers from being billed twice for these calls. If CDR compare tool 110 did not account for such filtering, the prepaid CDRs would be processed by compare tool 110. However, due to filtering by billing system 119, CDR compare tool 110 would be unable to match these prepaid CDRs with any record in the billing system 114. Those records would ultimately be stored in the non-matched record file, and incorrectly indicate that subscribers making these calls had not yet been billed for them.
 To account for such filtering, CDR comparison tool 110 is preferably configured to apply the same rules as its host telephone system. When configured to apply these business rules, CDR compare tool 110 filters out those switch-generated CDRs that are normally filtered by billing system 114 or mediation device 105. The CDR compare tool 110 will attempt to compare only those CDRs that would be expected to correspond to records in billing system 114. CDR comparison tool 110 then performs the above-described comparison process using only those CDRs that survive the filtering process performed by CDR comparison tool 110.
 For each applied business rule, a count of the number of CDRs filtered by that rule is kept. In addition, the filtered CDRs can be stored in a single file, along with an identification of the business rule that caused it to be filtered. Alternately, the filtered CDRs can be stored in separate files that are identified in such a manner to indicate the business rule that filtered the CDRs. For example, the file name or extension can be chosen to indicate the business rule that filtered the CDRs contained in the file.
 Keeping track of the number of filtered CDRs and/or the filtered CDRs by business rule facilitates troubleshooting of the filtering process. For example, if CDR comparison tool 110 filters a different number of CDRs for a particular business rule than the billing process, the particular business rule is not accurately reflecting the behavior of the actual system. Consequently, the business rule can be examined and modified to correct the error. Further, the number of filtered CDRs can be used as checks against other processes described below, including, for example, the compare function applied to prepaid platform 112 and SMSC 115.
 FIG. 2 is a flow chart for comparing CDRs generated by a switch to billing records. The method begins in step 202 with the step of obtaining a portion of the billing records that is compared with the switch-generated CDRs. In some systems all of the billing records can be read. But, for most telephone companies, memory constraints in CDR processor 106 permit only a portion of the billing records to be read.
 The method continues in step 204 with the step of reading a raw CDR from the switch. The CDR is converted to a generic CDR in step 206. The method continues in step 208 with the step of filtering the switch CDR. Filtering step 208 eliminates the CDR from consideration if the telephone company's business rules provide that the CDR should not appear in the billing records.
 In step 209 the method determines whether the CDR was filtered. If the CDR is filtered, the method continues in step 222 with the step of determining whether there are more raw CDRs to read. If the CDR is not filtered as determined in step 209, the method continues in step 210 with the step of comparing the CDR to the billing records obtained in step 202.
 If the CDR does not match any of the records, a TOTAL RECORDS counter is incremented by 1 in step 214. This increment is not performed if the CDR processing is being performed using CDRs in a RETRY file because they have already been counted. In step 216, the generic CDR that is not matched is stored in the RETRY file.
 If the CDR does match a billing record, the TOTAL-RECORDS counter is incremented by 1 in step 218. In addition, in step 219, a MATCHED-RECORDS counter is incremented by 1. The TOTAL-RECORDS counter is not incremented if the comparison is performed using CDRs from the RETRY file because they have already been counted. In step 220, the matching CDR is optionally stored in a MATCHED-RECORDS file.
[0054) As described above, matching is a flexible process to allow for differences between the way the data is stored by the switch and the billing system. For example, the switch might store seven-digit telephone numbers whereas the billing system might store ten-digit telephone numbers.
 In step 222, compare tool 110 determines whether there are more raw CDRs to be processed. If there are, the method continues in step 204 with the next raw CDR.
 If there are no more raw CDRs to be processed, the method continues in step 224 by determining whether the RETRY file is empty. If the RETRY file is empty, then all CDRs in the switch were matched with billing records, indicating that all calls were billed. In this case the method ends in step 226.
 If the RETRY file is not empty, CDR compare tool 110 continues the method in step 228 by determining whether there are additional billing records for comparison with the remaining CDRs. If there are additional billing records, CDR compare tool 110 continues the method in step 208 by obtaining another portion of the billing records and comparing CDRs in the RETRY file to the new portion of billing records.
 If there are no more billing records, then any CDRs remaining in the RETRY file represent CDRs that could not be matched to any billing records. Thus, these CDRs are effectively a non-matched CDR file in step 230. These CDRs can be subsequently analyzed to determine why they were not appropriately billed despite passing through any applicable business rule filters. The method then ends in step 226.
 As described above, the comparison can be performed between billing data and other systems in the telephone system that provide billable services. For example, such systems include a prepaid platform and/or an SMSC. For these cases, the method of the present invention proceeds as described with respect to FIG. 2, but using CDRs from the other system.
 The foregoing disclosure of the preferred embodiments of the present invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed.
Many variations and modifications of the embodiments described herein will be apparent to one of ordinary skill in the art in light of the above disclosure. The scope of the invention is to be defined only by the claims appended hereto, and by their equivalents.
 Further, in describing representative embodiments of the present invention, the specification may have presented the method and/or process of the present invention as a particular sequence of steps. However, to the extent that the method or process does not rely on the particular order of steps set forth herein, the method or process should not be limited to the particular sequence of steps described. As one of ordinary skill in the art would appreciate, other sequences of steps may be possible.
Therefore, the particular order of the steps set forth in the specification should not be construed as limitations on the claims. In addition, the claims directed to the method and/or process of the present invention should not be limited to the performance of their steps in the order written, and one skilled in the art can readily appreciate that the sequences may be varied and still remain within the spirit and scope of the present invention.