VOS3000 CDR Text File Export Complete Pipe-Delimited Format Guide
๐ Every VoIP operator needs reliable call data โ and the VOS3000 CDR text file export is the backbone of billing accuracy, traffic analysis, and regulatory compliance. When enabled, VOS3000 generates pipe-delimited text files containing every call detail record, ready for ingestion by external billing systems, analytics platforms, and fraud detection tools. Yet many operators never configure this powerful feature correctly, leaving critical data trapped inside the VOS3000 database with no external backup or integration path. ๐
โ๏ธ The two parameters that control this entire process โ SS_CDR_RECORD_TO_FILE and SS_CDR_RECORD_NONCONNECT โ are straightforward to configure, but their implications for disk space, data completeness, and billing accuracy are often misunderstood. Setting SS_CDR_RECORD_TO_FILE to On creates an hourly CDR text file in the softswitch’s cdr/ directory, while SS_CDR_RECORD_NONCONNECT determines whether zero-duration calls (failed attempts, busy signals, no-answer) are included in that export. The difference between having these records and not having them can mean the difference between catching a fraud pattern early and discovering it weeks too late. ๐
๐ฏ This guide provides a complete walkthrough of the VOS3000 CDR text file export system: how to enable it, how the pipe-delimited format is structured, how file naming and rotation work, and how to integrate the exported data with external systems. All parameter details are sourced from the official VOS3000 2.1.8.0/2.1.9.07 English manual, ยง4.3.5.1 (page 225) and ยง4.4 (pages 241โ243). ๐
Table of Contents
๐ What Is VOS3000 CDR Text File Export?
๐ The VOS3000 CDR text file export is a softswitch-level feature that writes call detail records to flat text files on the server filesystem. Unlike CDR records stored in the MySQL database โ which require the VOS3000 client or web interface to query โ text file exports provide a continuous, externally accessible stream of call data that can be consumed by any system capable of parsing pipe-delimited text. ๐
๐ก Why text file export matters:
- ๐ External billing integration: Feed CDR data directly into third-party billing platforms without database access
- ๐ก๏ธ Backup redundancy: Maintain a file-based CDR copy independent of the MySQL database
- ๐ Analytics pipeline: Pipe-delimited files are easily consumed by Python, Excel, BigQuery, and custom tools
- ๐ Fraud detection: Real-time or near-real-time CDR analysis on exported files catches anomalies faster
- ๐ Regulatory compliance: Many telecom regulators require CDR archival in a portable, non-proprietary format
- ๐ System migration: Export historical CDR data when migrating to a new billing or CRM system
๐ Parameter location in VOS3000 Client: Operation management โ Softswitch management โ Additional settings โ Softswitch parameter
๐ SS_CDR_RECORD_TO_FILE โ The Master Switch
๐ง SS_CDR_RECORD_TO_FILE is the primary parameter that enables or disables the entire text file CDR export. When set to On, VOS3000 creates hourly text files containing all CDR records in pipe-delimited format.
| Attribute | Value |
|---|---|
| ๐ Parameter Name | SS_CDR_RECORD_TO_FILE |
| ๐ข Default Value | Off |
| โ๏ธ Valid Values | On / Off |
| ๐ Description | Save CDR as TXT (per VOS3000 manual ยง4.3.5.1, page 225) |
| ๐ Location | Operation management โ Softswitch management โ Additional settings โ Softswitch parameter |
โ ๏ธ Critical note: This parameter is Off by default. Many VOS3000 deployments run for years without CDR text file export enabled, which means no file-based CDR backup exists. If the MySQL database becomes corrupted or the server experiences a disk failure, all historical CDR data stored only in the database may be lost. Enabling SS_CDR_RECORD_TO_FILE provides a critical safety net.
๐ SS_CDR_RECORD_NONCONNECT โ Zero-Duration Call Export
๐ SS_CDR_RECORD_NONCONNECT controls whether non-connected calls โ those with zero hold time โ are included in the text file export. This includes busy signals, no-answer attempts, failed calls, and other call attempts that never established a two-way audio path.
| Attribute | Value |
|---|---|
| ๐ Parameter Name | SS_CDR_RECORD_NONCONNECT |
| ๐ข Default Value | Off |
| โ๏ธ Valid Values | On / Off |
| ๐ Description | When saving CDR as TXT, contains CDR which hold time is 0s (per VOS3000 manual ยง4.3.5.1, page 225) |
| ๐ Location | Operation management โ Softswitch management โ Additional settings โ Softswitch parameter |
๐ก Why you might want non-connected CDRs: While zero-duration calls generate no revenue, they carry essential operational intelligence. High volumes of busy signals from a specific gateway may indicate capacity problems. Repeated no-answer attempts to a destination could signal a routing misconfiguration. Patterns of failed calls from unauthorized IPs โ tracked by SS_CDR_RECORD_ILLEGAL โ are often the first sign of toll fraud. Without SS_CDR_RECORD_NONCONNECT enabled, all of this intelligence is excluded from your text file export.
๐ CDR Text File Naming and Storage
๐ When SS_CDR_RECORD_TO_FILE is enabled, VOS3000 creates CDR text files in the cdr/ directory under the VOS3000 installation path. The naming convention follows a precise hourly pattern documented in the official manual ยง4.4 (page 241):
๐ File Naming Convention
| Attribute | Detail |
|---|---|
| ๐ Format | YYYYMMDDHH.txt |
| ๐ Directory | cdr/ under VOS3000 installation path |
| โฐ Granularity | One file per hour |
| ๐ Example | 2013103112.txt contains CDRs ending between 12:00:00 and 12:59:59 |
๐ How the hourly file system works: Each CDR is written to the file corresponding to the hour in which the call ended (stop time). A call that starts at 11:45 and ends at 12:10 will be recorded in the 12:00 hour file, not the 11:00 hour file. This means each file contains a self-contained set of CDRs that can be processed independently without worrying about time-overlap between files.
๐ CDR File Rotation and Retention
๐ VOS3000 manages CDR text file rotation using two server-level parameters that control how long files are retained and how many are kept on disk:
| Parameter | Default | Range | Purpose |
|---|---|---|---|
| SERVER_CDR_FILE_WRITE_INTERVAL | None | 60โ86400 seconds | Time interval for creating new CDR files |
| SERVER_CDR_FILE_WRITE_MAX | 2048 | 10โ4096 files | Maximum number of CDR files retained on disk |
๐ Disk space planning: With the default SERVER_CDR_FILE_WRITE_MAX of 2048 files and one file per hour, VOS3000 retains approximately 85 days of CDR text files. For high-traffic systems, monitor disk usage closely โ each hourly file can range from a few KB on a low-traffic system to hundreds of MB on a system processing thousands of concurrent calls. To learn more about CDR file rotation and backup strategies, see our guide on VOS3000 CDR analysis and billing.
๐ Pipe-Delimited CDR Format Overview
๐ Each line in the VOS3000 CDR text file represents one call detail record, with fields separated by the pipe character (|). The format is documented in the official VOS3000 manual ยง4.4 (pages 241โ243). Understanding this format is essential for parsing CDR data into external systems.
๐ CDR Line Format Structure
callerE164|calleeE164|startTime|stopTime|holdTime|endReason| endDirection|callerGatewayId|calleeGatewayId|callerIp|calleeIp| callerAccessE164|calleeAccessE164|callerToGatewayE164| calleeToGatewayE164|calleeBilling|billingMode|callerPdd|calleePdd
๐ Field count note: The VOS3000 manual ยง4.4 documents the pipe-delimited format with 18 pipe separators, resulting in 19 columns of data. The first 18 fields (through billingMode) are the core CDR fields present in all versions, while the callerPdd and calleePdd fields provide Post-Dial Delay metrics that were added in later revisions of the software.
๐ Key CDR Fields at a Glance
| # | Field | Description | Example |
|---|---|---|---|
| 1 | callerE164 | The caller ID | 12125551234 |
| 2 | calleeE164 | The callee ID | 18005559876 |
| 3 | startTime | Call begin time | 2018-12-20 11:20:18 |
| 4 | stopTime | Call end time | 2018-12-20 16:34:09 |
| 5 | holdTime | Call duration in milliseconds | 45000 |
| 6 | endReason | End reason code | 200 |
| 7 | endDirection | Hangup side (0=caller, 1=callee, 2=server) | 0 |
| 17 | billingMode | Charge mode (-1=no billing, 0=phone, 1=gateway, 3=phone card) | 0 |
๐ Key observations: The holdTime field records call duration in milliseconds, not seconds. This is critical for billing calculations โ a holdTime of 45000 means 45 seconds, not 45000 seconds. The endDirection field identifies who terminated the call (caller, callee, or server), which is essential for call termination analysis. The billingMode field determines how the call was charged and whether billing was applied at all.
โ๏ธ Step-by-Step VOS3000 CDR Text File Export Configuration
๐ฅ๏ธ Follow these steps to enable and configure the VOS3000 CDR text file export on your softswitch:
Step 1: Enable CDR Text File Export ๐
- ๐ Log in to VOS3000 Client with administrator credentials
- ๐ Navigate: Operation management โ Softswitch management โ Additional settings โ Softswitch parameter
- ๐ Locate SS_CDR_RECORD_TO_FILE in the parameter list
- โ๏ธ Change the value from Off to On
- ๐พ Click Save to apply the configuration
โ ๏ธ Important: After enabling SS_CDR_RECORD_TO_FILE, VOS3000 will begin writing CDR text files starting from the next hourly interval. Historical CDR data from before the parameter was enabled is not retroactively exported. If you need historical data, use the CDR query interface in the VOS3000 client to export it manually, as described in our CDR analysis guide.
Step 2: Configure Non-Connected Call Recording ๐
- ๐ In the same Softswitch parameter section, locate SS_CDR_RECORD_NONCONNECT
- โ๏ธ Change the value from Off to On if you need zero-duration call records in the export
- ๐พ Save the configuration
๐ก Recommendation: Enable SS_CDR_RECORD_NONCONNECT for most deployments. The additional disk space consumed by zero-duration CDRs is minimal compared to the operational value they provide. However, during a DDoS or flood attack, the volume of zero-duration CDRs can spike dramatically. If disk space is a concern during such events, you can temporarily disable this parameter to prevent disk overflow.
Step 3: Configure File Rotation Parameters ๐
- ๐ Navigate: Operation management โ Server management โ Server parameter
- ๐ Review SERVER_CDR_FILE_WRITE_INTERVAL โ set the hourly interval for new file creation (default: one file per hour)
- ๐ Review SERVER_CDR_FILE_WRITE_MAX โ set the maximum number of CDR files to retain (default: 2048)
- ๐พ Save and restart the VOS3000 service for changes to take effect
| Scenario | WRITE_INTERVAL | WRITE_MAX | Result |
|---|---|---|---|
| โ Default (most deployments) | 3600 (1 hour) | 2048 | ~85 days of CDR files retained |
| ๐ High-traffic analytics | 1800 (30 min) | 4096 | ~85 days with finer granularity |
| ๐พ Low disk space | 3600 (1 hour) | 720 | ~30 days of retention |
| ๐ก๏ธ Long-term compliance | 3600 (1 hour) | 4096 | ~170 days of retention |
๐ Related CDR Parameter: SS_CDR_RECORD_ILLEGAL
๐ก๏ธ Another important softswitch parameter that affects CDR text file content is SS_CDR_RECORD_ILLEGAL. This parameter controls whether CDRs are generated for calls originating from unauthorized IP addresses โ calls that VOS3000 rejects as illegal or unauthorized.
| Attribute | Value |
|---|---|
| ๐ Parameter Name | SS_CDR_RECORD_ILLEGAL |
| ๐ข Default Value | On |
| ๐ Description | Record illegal call (per VOS3000 manual ยง4.3.5.1, page 225) |
๐ Unlike SS_CDR_RECORD_NONCONNECT (which defaults to Off), SS_CDR_RECORD_ILLEGAL defaults to On. This means VOS3000 is configured by default to record CDRs for hack attempts and unauthorized call attempts. These records appear in the text file export with a special billing mode code of -1 (no billing), making them easy to filter and analyze separately. For more details on how VOS3000 handles unauthorized calls, see our guide on illegal call detection and prevention.
๐ ๏ธ Parsing VOS3000 CDR Text Files for External Systems
๐ Once the VOS3000 CDR text file export is configured, the next step is integrating the exported data with your external systems. The pipe-delimited format is universally supported by programming languages, databases, and analytics tools.
๐ Parsing Methods Comparison
| Method | Best For | Complexity | Real-Time |
|---|---|---|---|
| ๐ Python script | Custom analytics, billing import | Medium | Near-real-time (cron) |
| ๐๏ธ MySQL LOAD DATA | Database import, reporting | Low | Batch (hourly) |
| ๐ Excel/CSV conversion | Manual review, one-time analysis | Low | Manual |
| ๐ Logstash/Fluentd | Elasticsearch, SIEM integration | High | Near-real-time |
๐ Python Parsing Example
import csv
# VOS3000 CDR field names (per manual ยง4.4)
CDR_FIELDS = [
'callerE164', 'calleeE164', 'startTime', 'stopTime',
'holdTime', 'endReason', 'endDirection',
'callerGatewayId', 'calleeGatewayId',
'callerIp', 'calleeIp',
'callerAccessE164', 'calleeAccessE164',
'callerToGatewayE164', 'calleeToGatewayE164',
'calleeBilling', 'billingMode',
'callerPdd', 'calleePdd'
]
def parse_cdr_file(filepath):
"""Parse VOS3000 CDR text file into list of dictionaries."""
records = []
with open(filepath, 'r') as f:
reader = csv.reader(f, delimiter='|')
for row in reader:
if len(row) >= 17: # Minimum core fields
record = dict(zip(CDR_FIELDS[:len(row)], row))
records.append(record)
return records
# Usage: Parse a CDR file and filter connected calls
cdr_data = parse_cdr_file('/home/vos3000/cdr/2026042612.txt')
connected = [r for r in cdr_data if int(r.get('holdTime', 0)) > 0]
print(f"Total CDRs: {len(cdr_data)}, Connected: {len(connected)}")
๐ก๏ธ Common VOS3000 CDR Text File Export Problems and Solutions
โ ๏ธ Misconfigurations and misunderstandings about the CDR text file export can lead to data loss, disk space issues, or incomplete records. Here are the most common problems and their solutions:
โ Problem 1: No CDR Text Files Being Generated
๐ Symptom: The cdr/ directory is empty or does not contain the expected hourly text files.
๐ก Cause: SS_CDR_RECORD_TO_FILE is still set to Off (the default value). Many operators assume CDR files are generated automatically, but this feature must be explicitly enabled.
โ Solution:
- ๐ง Navigate to Softswitch parameter and set SS_CDR_RECORD_TO_FILE = On
- ๐พ Save the configuration and wait for the next hourly interval
- ๐ Verify the
cdr/directory exists and has proper write permissions - ๐ Confirm with the VOS3000 system parameter guide that no other settings are blocking file creation
โ Problem 2: Missing Zero-Duration Call Records
๐ Symptom: The CDR text files only contain records for connected calls. Failed calls, busy signals, and no-answer attempts are absent.
๐ก Cause: SS_CDR_RECORD_NONCONNECT is set to Off (default), which excludes zero-duration calls from the text file export.
โ Solution:
- ๐ Set SS_CDR_RECORD_NONCONNECT = On in Softswitch parameter
- ๐ Be aware this increases file sizes โ monitor disk usage after enabling
- ๐ For fraud detection purposes, this setting is strongly recommended
โ Problem 3: Disk Space Exhaustion from CDR Files
๐ Symptom: The server runs low on disk space, and the cdr/ directory contains thousands of large CDR text files.
๐ก Cause: SERVER_CDR_FILE_WRITE_MAX is set too high, or an external script is not archiving and cleaning up old CDR files.
โ Solution:
- ๐ Reduce SERVER_CDR_FILE_WRITE_MAX to a lower value (e.g., 720 for ~30 days)
- ๐ Implement a cron job to move CDR files older than X days to archive storage
- ๐ Monitor disk usage with the VOS3000 disk alarm feature
- ๐พ Consider compressing older CDR files with gzip to save space
โ Problem 4: Parsing Errors Due to Extra Pipe Characters
๐ Symptom: External parsing scripts produce incorrect field alignment or data corruption.
๐ก Cause: Caller or callee E164 fields contain unexpected characters, or the number of pipe separators varies between CDR records.
โ Solution:
- ๐ง Use a robust parser that handles variable field counts gracefully
- ๐ Always validate the number of fields per line before processing
- ๐ Reference the official VOS3000 manual ยง4.4 (page 241) for the exact field specification
๐ก VOS3000 CDR Text File Export Best Practices
๐ฏ Follow these best practices to get the most from your VOS3000 CDR text file export configuration:
| Best Practice | Recommendation | Reason |
|---|---|---|
| ๐ Always enable SS_CDR_RECORD_TO_FILE | Set to On | โ Provides file-based CDR backup independent of MySQL |
| ๐ Enable SS_CDR_RECORD_NONCONNECT | Set to On for most deployments | ๐ Captures failed call data for fraud detection and quality analysis |
| ๐ Archive CDR files regularly | Move files older than 30 days to archive | ๐พ Prevents disk space exhaustion on active server |
| ๐ Validate CDR data daily | Check record counts and file sizes | ๐ก๏ธ Early detection of data export problems |
| ๐ Set proper file permissions | Restrict cdr/ directory access | ๐ CDR files contain sensitive call data and IP addresses |
| ๐ก Consider real-time forwarding | Use SERVER_CDR_REAL_TIME_REPORT_SERVER | โก For immediate CDR delivery to external billing systems |
๐ก Pro tip: The VOS3000 CDR text file export works best as part of a comprehensive data strategy. Combine the text file export with the VOS3000 billing system for complete revenue tracking, and use the exported data to build custom dashboards that go beyond what the VOS3000 client interface provides. For operators who need real-time CDR delivery rather than hourly file batches, the SERVER_CDR_REAL_TIME_REPORT_SERVER parameter provides an alternative integration path.
๐ Complete VOS3000 CDR Export Parameter Reference
๐ Here is the complete reference table for all parameters related to CDR text file export, sourced from the official VOS3000 2.1.8.0/2.1.9.07 English manual:
| Parameter | Default | Category | Purpose |
|---|---|---|---|
| SS_CDR_RECORD_TO_FILE | Off | Softswitch | Enable CDR text file export |
| SS_CDR_RECORD_NONCONNECT | Off | Softswitch | Include zero-duration calls in export |
| SS_CDR_RECORD_ILLEGAL | On | Softswitch | Record illegal/unauthorized call CDRs |
| SERVER_CDR_FILE_WRITE_INTERVAL | None | Server | CDR file creation interval (60โ86400 seconds) |
| SERVER_CDR_FILE_WRITE_MAX | 2048 | Server | Maximum CDR files retained (10โ4096) |
| SERVER_CDR_REAL_TIME_REPORT_SERVER | (blank) | Server | Real-time CDR forwarding server address |
| SERVER_QUERY_CDR_DENY_TIME | (blank) | Server | No CDR query time (blackout hours) |
| SERVER_QUERY_CDR_MAX_DAY_INTERVAL | 31 | Server | Maximum CDR query date range (days) |
| SERVER_MAX_CDR_PENDING_LIST_LENGTH | 100000 | Server | CDR queue length limit (10000โ100000) |
โ Frequently Asked Questions
โ How do I enable VOS3000 CDR text file export?
๐ To enable the VOS3000 CDR text file export, navigate to Operation management โ Softswitch management โ Additional settings โ Softswitch parameter and set SS_CDR_RECORD_TO_FILE to On. This parameter is Off by default, so it must be explicitly enabled. After saving the configuration, VOS3000 will begin creating hourly CDR text files in the cdr/ directory starting from the next hourly interval. The files follow the naming convention YYYYMMDDHH.txt as documented in the VOS3000 manual ยง4.4.
โ What is the difference between SS_CDR_RECORD_TO_FILE and SS_CDR_RECORD_NONCONNECT?
๐ง SS_CDR_RECORD_TO_FILE is the master switch that enables CDR text file export entirely. Without it set to On, no CDR text files are created at all. SS_CDR_RECORD_NONCONNECT only takes effect when SS_CDR_RECORD_TO_FILE is already On โ it controls whether zero-duration call records (failed calls, busy signals, no-answer attempts) are included in the exported text files. When SS_CDR_RECORD_NONCONNECT is Off, only connected calls with non-zero hold time appear in the export.
โ Where are VOS3000 CDR text files stored?
๐ VOS3000 CDR text files are stored in the cdr/ directory under the VOS3000 installation path. Each file is named using the format YYYYMMDDHH.txt, where each file contains all CDRs for calls that ended during that specific hour. For example, the file 2026042612.txt contains all CDRs for calls that ended between 12:00:00 and 12:59:59 on April 26, 2026. This file structure is documented in the official VOS3000 manual ยง4.4 (page 241).
โ Can I export historical CDR data that was generated before enabling text file export?
๐ No, the VOS3000 CDR text file export only generates files for new calls after the feature is enabled. Historical CDR data that was generated while SS_CDR_RECORD_TO_FILE was Off is only available through the VOS3000 client CDR query interface or by querying the MySQL database directly. If you need to export historical data, use the CDR query function in the client and export the results manually. This is why it is strongly recommended to enable SS_CDR_RECORD_TO_FILE from the very first day of deployment.
โ How much disk space do VOS3000 CDR text files consume?
๐พ Disk space consumption depends entirely on your call volume. Each CDR record is approximately 200โ350 bytes in the pipe-delimited text format. A system processing 100,000 calls per day would generate roughly 25โ35 MB of CDR text data per day, or about 1 GB per month. With the default SERVER_CDR_FILE_WRITE_MAX of 2048 files (roughly 85 days of retention), a mid-traffic system would need approximately 3โ4 GB of dedicated disk space for CDR files. Always monitor disk usage and configure VOS3000 disk alarms to receive alerts before space runs out.
โ What is the pipe delimiter character used in VOS3000 CDR text files?
๐ The VOS3000 CDR text file format uses the vertical bar or pipe character (|, ASCII 124) as the field delimiter. Each line in the file represents one call detail record, with fields separated by pipe characters. This format is widely supported by data processing tools, programming languages (Python, PHP, Perl), database import utilities (MySQL LOAD DATA INFILE), and spreadsheet applications. When parsing, always split on the pipe character and validate the expected field count.
๐ Need Expert Help with VOS3000 CDR Text File Export?
๐ง Proper VOS3000 CDR text file export configuration ensures your billing data is complete, your audit trail is intact, and your external systems receive the call data they need. Whether you are setting up CDR export for the first time, troubleshooting missing records, or integrating CDR data with an external billing platform, expert guidance saves time and prevents costly data gaps. ๐
๐ฌ WhatsApp: +8801911119966 โ Get immediate assistance with VOS3000 CDR text file export setup, parsing, and integration. Our team specializes in VOS3000 softswitch configuration, billing system integration, and custom CDR analytics solutions. ๐ง
๐ Learn more about related VOS3000 CDR and billing configurations:
- VOS3000 CDR Analysis and Billing โ Complete guide to analyzing CDR data for revenue optimization
- VOS3000 Billing System โ Overview of the entire VOS3000 billing architecture
- VOS3000 Zero Duration CDR โ Managing zero-duration call records during DDoS and flood attacks
- Illegal Call Detection in VOS3000 โ How SS_CDR_RECORD_ILLEGAL captures unauthorized call attempts
- VOS3000 CDR Billing Discrepancy โ Troubleshooting billing differences between CDR and rate tables
- VOS3000 Data Report โ Using VOS3000 reporting tools for traffic and revenue analysis
๐ Need Professional VOS3000 Setup Support?
For professional VOS3000 installations and deployment, VOS3000 Server Rental Solution:
๐ฑ WhatsApp: +8801911119966
๐ Website: www.vos3000.com
๐ Blog: multahost.com/blog
๐ฅ Downloads: VOS3000 Downloads
![]() | ![]() | ![]() |



