[ Home ] [ Table of Contents ] [ About Lee Goeller ] [ Search ]

Voice Communication in Business Volume 1
Essays on telecommunications, 1969-1980

Chapter 14
Do-It-Yourself Programming
for Call Detail Recorders

Most of the early recorders and/or routers simply provided the customer with a roll of magnetic tape at the end of the month; getting it processed was his problem. After helping several companies set up in-house systems for handling their telephone bills, grudgingly made available on tape from the telephone company, or happily offered in various states of disarray by interconnect vendors, I decided to write down some of the simpler things that should be known by anybody starting out on such a task in the future. This article, which ran in the January-February, 1978, BCR, is the result.

***

Call detail recording is available today built into many of the new PBXs; in the form of an external monitor, it can also be added to older switching equipment. Such recording systems capture the calling extension, the called number, the date, time and duration of each call and, sometimes, the identity of the facility used. So far, so good. But at the end of the month, the corporate communication manager finds himself in possession of a tape which must be processed before it can be of any value to him.

Some consulting companies process call recorder tapes for a fee, but many PBX users with in-house computer facilities can process their tapes themselves at a considerable saving. Because the cost of a consultant's program can be prorated over many clients, considerable sophistication can be built in. Often, however, such sophistication is not needed. This chapter describes the simplest useful processing approaches that provide for basic cost allocation and communication management needs. Obviously, it is possible to go far beyond the techniques described here—but it is not always necessary.

In general, processing a call detail recorder tape consists of two different kinds of sort: sorting on the calling extension, and sorting on the dialed number. The former is useful for cost allocation, and the latter permits analysis of calling patterns, selection of cost-saving facilities, and management of such facilities once they are installed. However, before any meaningful information can be obtained, certain data base information must be made available.

Determining the cost of calls

To process call detail information, the first step is usually to convert the tape (or other output) obtained from the telephone system into a form which can be read by the local computer. This step is shown at the top left of the flow chart in Fig. 1; if the system output is compatible directly with the computer, this step can be omitted.

Once the data is in computer-usable form, one piece of information must be added to each call: the cost of that call. This requires the construction of a data base (Data Base I in the flow chart) that relates each called number to a cost calculating rule defined by a tariff. Costs depend on the time of day (8 a.m.-5 p.m., 5-11 p.m. and 11 p.m.-8 a.m. on weekdays), type of call (DDD, operator handled, person to person) and distance between the calling and called party. It is also desirable to add some sort of discount factor for calls known to have used WATS lines, FX lines or other cost-saving facilities.

When many locations originate calls, as is the case when the telephone company, a consultant, or a large business user with many locations processes many different tapes, a general program must be developed to calculate distances between all possible pairs of calling/called locations. A smaller customer, with one or two locations, need not go to this kind of trouble. It is usually sufficient to find an average distance to each remote area code and use that distance to select a rate-zone.

As a specific example, there are 14 rate zones in the continental United States (excluding Alaska). All calls that go between 1,911 and 3,000 miles are in rate zone 14 and cost 54 cents for the first minute, DDD, during the day, and 38 cents per minute thereafter. If your PBX is located on the east coast, every area code in California, Washington, Oregon and a number of other western states will cost this amount to call. Draw a circle with a 1,911 mile radius on the map, as is done for New York in Fig. 2, and you'll find very few area codes that are cut in half. In these, of course, you may be in error by as much as two cents per minute, but the impact will almost certainly be negligible. Only when you get to nearby area codes, where the "equal cost circles" come much closer together, is a larger error possible, and even here, it is not all that important.

In any event, each area code is assigned a rate zone, based on the AT&T interstate tariff, and the AT&T cost can easily be calculated without involved distance measurements. This part of Data Base I can be assembled in a few minutes.

For calls to nearby area codes, where distance may be a factor, and for local message unit and intrastate calls, a similar procedure must be followed, but based on office code rather than area code. Even so, a rate zone can be quickly selected. Again let me emphasize that, if you had many call-originating locations, this would not be the way to approach the problem.

Once the rate zones (and WATS and/or specialized common carrier discount factors) are defined and each area (or office) code is assigned to a rate zone, the cost per call can be calculated and added to the record. We are now ready to start producing useful outputs. For the purpose of this discussion, we will start down the left-hand leg of the flow chart, and sort by calling extension.

Once this sort is made, the per-extension bills can be printed. For each extension, each call can be printed out, giving date, time, duration, cost and facility used. There is no particular need to have calls in any particular order, but sometimes it is convenient to lump together all calls to each called number. This obscures the chronology of calls, but if the number of calls and total minutes and cost are presented, just about as much useful information is available and abuse can more easily be detected.

In any event, total calls, total minutes and total dollars should be provided as a "bottom line" for each extension. As in any process, the grand total for all extensions, along with average holding time and average cost per call, should also be calculated.

Turning now to the right-hand branch of the flow chart, the calling extensions are ignored and calls are sorted by called number. Once sorted, all calls to a given number are summarized (number of calls, number of minutes and cost) and only one line per called number is printed out. As an option, the program can be arranged to print out only those numbers that receive more than N calls, where N can be selected as desired.

As part of this report, all calls to a given office code are added up and printed out as one level of subtotal, and the total to each area code is printed out as another level of sub-total. The overall grand totals from the called number sort should, of course, match the grand totals from the extension sort.

A most convenient report that can be obtained with little additional effort is the 20 (or other convenient number) of most-called lines, central offices, and area codes. A fixed number can be selected for each category, or any line, office or area with fewer than a given number of calls can simply be omitted. The selection process can also be made on the number of minutes or the dollar value, rather than the number of calls.

This exhausts the common reports which can be generated without additional data base input.

Company hierarchy

Returning to the left leg of the flow chart, we come to Data Base II. In its simplest form, this data base assigns every extension to a department, every department to a division, etc., with as many hierarchical levels as the structure of the company requires. What we do for the department level report, for instance, is print the bottom line for each extension within the department. Then we print the bottom line for each department in the division report and the division totals. We will ultimately come to the grand totals (calls, minutes, dollars) which should agree with the grand totals previously calculated. While the computer is running, it is also useful to calculate the average cost per call and average number of calls, minutes and dollars per line in each department, division, etc.

For the more intrepid, Data Base II can be expanded to associate names and room numbers with each extension, include department and division names, etc. This makes it possible for the system to print out internal directories when needed, and makes the bills and summaries a lot more convenient to read and deliver. It also requires a lot more programming. On the other hand, if personnel files are already computerized and access can be limited to the pertinent data, the job can be simplified.

Specific numbers

With the left-hand branch of the flow chart completed, there are still a number of things that can be done on the right. An easy and desirable report concerns calls to specific numbers. There can be several lists of such numbers: company branch offices, employee home telephones (perhaps, again, from the personnel file), customers, vendors, trash calls (Off Track Betting, dial-a-joke), etc.

At this point in the flow chart, all the calls have already been sorted by called number and placed in numerical order. If the specified numbers, regardless of list, are also kept in numerical order, with each list identified by a descriptive letter or word (B for branch, C for customer, H for home, T for trash), the matching process in the computer should be fairly simple. Adding the list-identifying letter or word before printing out any reports in the right leg of the chart is desirable; the ability to print out any one specific list as desired, giving numbers called, total calls, total holding time and total cost for each number in the list can provide management with a thoroughly useful tool.

It should be possible to update the lists quickly and easily. Unidentified numbers receiving many calls will immediately be found when the "Most Called Lines" report is generated, and identification of these numbers for future checking may be important in selecting facilities or limiting abuse. Any number in this report that is not identified should be checked immediately.

It is helpful to add list-identifying letters or words to the call records when printing out extension bills in the left leg of the chart. However, the sort-order there may make this difficult.

Area code to WATS translation

The final data base needed for our elementary reports is a translation table that converts area codes to WATS bands. This is a very easy table to make for any given location but it is different, of course, for locations in other states, and often different for locations in other area codes in the same state.

It is desirable to assign all calls to a WATS band, even if synthetic WATS bands have to be created to handle calls to Canada, Europe, 800 numbers, etc. Further, intrastate WATS bands, (beyond the local area) must also be accounted for.

The area code summaries obtained earlier are the source for this translation. One simply adds up the calls, minutes and dollars to each area code in a given WATS band. If some calls are already going WATS, it may be desirable, if the information is available from the call record, to make two summaries: one for calls that did go WATS, and one for calls that should have gone WATS. As usual, always calculate a grand total and check it against grand totals calculated in other ways.

Specialized Common Carriers can be handled the same way, but require Data Base IV to be much larger. It must include the office codes within area codes that can be reached.

Alternate source of information

The upper right-hand corner of the flow chart shows the bill from the telephone company as an alternate source for the right-hand leg of the chart. The bill can be obtained on cards or tape (depending on number of calls), and such information is a good check against the internal recorder. When internal and external bills are compared, however, care must be taken to cover exactly the same time interval.

Any bill from the telephone company will contain classes of calls that cannot be picked up on a call detail recorder tape: credit card calls, third party calls, collect calls, etc. These should be sorted out, along with any person-to-person calls, and a separate printout made directly. Calls for each credit card should be printed out in chronological order; sorting for other expensive calls can be done in any way that is desirable.

The locally dialed calls, including person-to person, can now be sorted via the right leg of the chart. With no calling extension available, the left-hand leg is out of reach. Users should be cautioned against ever using person-to-person calls; violators of this rule can often be identified by printing the call detail recorder tape in time-order, and matching times and called number with the phone bill.

Note that the format of the telephone bill will be quite different from the call detail recorder format.

Further, each state will almost certainly have a different format. It will be necessary to construct various "front ends" to convert different call recorder and telco formats to a standard for program operation. Note, too, that WATS tapes from the telephone company differ considerably from the regular toll bill tapes.

Conclusions

These are only some of the simpler sorts and reports that can be obtained from call detail recorder and related inputs. Many others can be arranged as desired. Those discussed above, however, are the most important for cost allocation and management. It is not even necessary to do everything listed here; the communications manager can cut off the programming at any point desired.

***

In dealing with various programmers (excuse me—systems analysts) during the construction of data systems, Goeller's first law of data processing was revealed to me in a purple flash: Any printout you can't lift is no damn good. The utter simplicity of this basic law reveals the sharp difference between people who build and people who use systems. The builders like the biggest results possible; in the present case, every single telephone call detailed for observation, preferably twice. The user (me), on the other hand, wanted 75,000 records reduced to not more than three pages of summary. A mere three page output, no matter what its contents, is beneath the dignity of anybody who really knows how computers can slosh data around. In these battles, sometimes you win and sometimes you lose.

***

However, I did leave one very important and basic summary out of the article in the interests of simplicity. I'd like to put it back now, because time has shown it is one of the most important pieces of information that can be generated while the computer is still running.

In a telephone system, like almost everything else, business does not come in at a uniform rate. It ebbs and flows, subjecting equipment and people to hurry up and wait situations. The "busy hour" is often used in design to make sure enough trunks are available to handle the calls that must be made. However, not all busy hours are created equal. Some are busier that others, and more trunks are needed, more attendants are required at consoles, agents at automatic call distributors, etc.

When one studies any given company's traffic patterns, cyclic variations leap out. Sometime traffic is heavy at the end of the month and light at the beginning. Sometimes Mondays are very heavy, and the rest of the week is a breeze. But whatever the pattern, there is usually a reason for it; it is seldom a statistical anomaly.

Most data available to a communication manager comes in by the month in the form of bills from the telephone company or reports from his own PBX or stand-alone equipment. There has been a tendency (I have done it myself) to use an "average" busy hour in design, obtained by taking a proportion of the monthly traffic. Although one month is often equal to 22 business days, and one day's traffic often approximates six times the traffic occurring during the busy hour, cyclic variations sometimes make it dangerous to divide monthly traffic by 22 X 6 = 132 to get hourly traffic for use with standard traffic tables.

But what is the alternative? Get the right information, of course. And that is what I left out of the article. Another printout is required, suggested by the blank form on the next page. Here we have days of the month running down the page, and hours of the day running across. If we just count total calls in each hour of each day and put the number in the appropriate spot on the form, we can see our cyclic patterns quite clearly. If we want to get fancy, we can make three such printouts, one for calls (peg count), one for total call duration (in minutes, CCS or hours), and one for cost. We can also divide traffic up by message unit, intra-state toll, and interstate toll. If incoming traffic can somehow be captured, it should be handled separately on a form of its own.

All this gives me a chance to mention Goeller's second law of data processing: always add across and down, and take subtotals and averages at the drop of a hat. For each day, we want to know the total traffic during business hours, during evening hours, and at night when rates in the public network are really low. And we want the daily total, or course. This covers the rows. For the columns, we would like to be able to insert a subtotal and average for each hour in each business week (not shown because weeks vary in terms of date from month to month), and total and average by hour for the entire month. The computer should always do these across and down calculations while the data is in the machine; if you have to reach for your pocket calculator as you study a printout, Goeller's second law has been violated.

[ Top ] [ Next ] [ Table of Contents ]


Copyright 2006 Lee Goeller. All Rights Reserved.