Bulk Import Files
Overview
Section titled “Overview”Bulk import lets you create or update many records at once from a spreadsheet file. Instead of editing records individually, you prepare your data in a CSV or Excel file, upload it, and let the platform process every row.
Common uses include:
- Migrating data from another system (customers, numbers, features)
- Applying price changes across hundreds of features at once
- Recording payments received from an external source
- Adding notes or contacts in bulk after a customer communication exercise
The platform supports 10 import types covering the main record types. Each import follows a two-step test-then-import process that catches errors before any changes reach the database.
Quick Start
Section titled “Quick Start”- Go to Add menu > Bulk Import File
- Upload your CSV or Excel file
- Choose the File Type (e.g. Features) and File Mode (Insert or Update)
- Click Actions > Test File to validate without making changes
- Review the log for errors or warnings
- Click Actions > Import File to apply the changes
The test step checks every row and reports any errors or warnings in the log. Review these before importing.
Import Types
Section titled “Import Types”The File Type dropdown controls which kind of record the file creates or updates.
| File Type | What it imports |
|---|---|
| Customers | Customer accounts with addresses, billing settings, and optional features/notes/payments |
| Numbers | Telephone numbers with tariffs, carriers, CDR matching, and optional features/notes |
| Features | One-off and recurring charges attached to customers, numbers, or services |
| Tariffs | Call tariff rates |
| Standard Features | Standard feature templates |
| Payments | Payment records against customer accounts |
| Number Migrate | Moves numbers between customers |
| Customer Contacts | Contact records with names, addresses, and communication settings |
| Ignore Traffic Numbers | Numbers to exclude from billing |
| Notes | Notes attached to customer accounts |
Processing Modes
Section titled “Processing Modes”The File Mode dropdown controls whether the import creates new records or updates existing ones.
Insert Mode
Section titled “Insert Mode”Creates new records. The platform uses default values for any columns you leave out. If you have saved a default set named Import for the relevant record type, those defaults apply automatically. You can create an Import default set the same way as any other: fill in the fields you want as defaults, then use Default Values > Save and name it “Import”.
Update Mode
Section titled “Update Mode”Modifies existing records. Each row needs a way to identify which record to update. Only the columns you include are changed. Columns not in your file stay as they are.
The record’s own ID (e.g. Feature ID) is the most reliable identifier, but it is not the only option. For customer imports, you can use the Account Number. For number imports, the telephone Number works. For feature imports, a unique feature name can identify the record. As long as the identifier matches exactly one record, the import proceeds. If it matches more than one, you can use Import Rules to control duplicate handling.
The Two-Step Process
Section titled “The Two-Step Process”Every bulk import goes through two stages: test and import. Users with Standard expert level can skip the test step using the Expert menu, but testing first is strongly recommended.
Step 1: Test
Section titled “Step 1: Test”Click Actions > Test File to run validation.
The platform reads every row and checks:
- Column headers match known fields
- Required values are present
- Lookup values (e.g. carrier names, tariff names, status values) match existing records
- Dates are in a recognised format
- Numbers and amounts are valid
- In update mode, the referenced records exist
No changes are saved to the database. The file status changes to Tested and the log shows any errors or warnings found during validation.
What to look for in the log:
- Header warnings: “Header X in column N not matched” means the platform did not recognise a column header. Check for typos, or use Import Rules to map it.
- Line errors: Specific problems with individual rows, showing the line number and what went wrong.
- Summary: Total lines processed, including the header line.
Step 2: Import
Section titled “Step 2: Import”Once you are happy with the test results, click Actions > Import File.
The platform processes every row again, this time saving changes to the database. The file status changes to Imported. Each successful row creates an activity log entry that records:
- Which user performed the import
- Which bulk import file and line number the change came from
- What type of change was made
Both the test and import actions let you fill in optional Reason and Details fields. These appear in the activity log and help with audit trails.
File Activity Tab
Section titled “File Activity Tab”After importing, the bulk import file page shows a File Activity tab listing every change the import made. Each row in the tab shows:
- The customer affected
- Timestamp of the change
- Activity type and reason/details you entered on the import form
- The line number in the source file that produced the change
This gives you a single view of everything the import did, without needing to visit each changed record individually. You can click through to any affected record from here.
Supported File Formats
Section titled “Supported File Formats”The platform accepts three file formats:
| Format | Extension | Notes |
|---|---|---|
| CSV | .csv | Default format. Uses comma separators. UTF-8 encoding recommended. |
| Excel | .xlsx | Modern Excel format. The platform reads the first sheet. |
| Legacy Excel | .xls | Older Excel format. Supported but .xlsx is preferred. |
The platform detects the format from the file extension. You can also force a specific format using Import Rules (see below).
Encoding
Section titled “Encoding”CSV files should use UTF-8 encoding. If your file uses a different encoding (e.g. Windows-1252 or ISO-8859-1), specify it in the Import Rules:
[File Format]Encoding = windows-1252If the platform encounters characters it cannot decode, it logs an encoding error and stops processing.
Column Headers
Section titled “Column Headers”The first row of your file must contain column headers. The platform matches each header to a known field name. Matching is case-insensitive.
How Matching Works
Section titled “How Matching Works”- The platform reads each header and converts it to lowercase
- It looks for a match in the import type’s field name list
- Matched columns are mapped to the corresponding database field
- Unmatched columns generate a warning in the log
Information Only Columns
Section titled “Information Only Columns”Headers ending in (Information Only) are automatically skipped during import. This is useful when your file contains reference data alongside the columns you want to import. For example, the Service Charges Report Annual Increase Bulk Update format uses this convention to include context columns that help you review the data without accidentally importing them.
You can also prefix a header with DNI or Do Not Import to skip it.
Multiple Names for the Same Field
Section titled “Multiple Names for the Same Field”Most fields accept several header names. For example, all of these map to the recurring charge field on a feature import:
Recurring ChargeService ChargeFeature Recurring ChargeRecurring Charge (£)
Check the column reference tables below for the accepted header names for each import type.
Import Rules
Section titled “Import Rules”The Import Rules field accepts INI-style configuration that gives you extra control over how the file is processed.
File Format Section
Section titled “File Format Section”Control file format and encoding:
[File Format]Format = excelEncoding = utf-8-sigFormat values: csv (default), excel / xlsx, legacy excel / xls
Headers Section
Section titled “Headers Section”Remap column headers when your file uses non-standard names:
[Headers]recurring charge = Monthly Feestatus = Current StateThe left side is the platform’s field name. The right side is the header in your file. This lets you import files from external systems without renaming columns.
Set a header to do not import to skip a column:
[Headers]do not import = Internal NotesColumns Section
Section titled “Columns Section”Map fields by column position instead of header name. Useful for files without headers:
[Columns]account number = 1recurring charge = 3start date = 4Value Mapping Sections
Section titled “Value Mapping Sections”Remap lookup values when your file uses different terminology:
[Status Values]active = live, enableddropped = cancelled, terminatedThe left side is the platform’s value. The right side lists your file’s values (comma-separated).
Column Reference
Section titled “Column Reference”The tables below list the most commonly used columns for each import type. All header names are case-insensitive.
Customers
Section titled “Customers”| Column header | Field | Notes |
|---|---|---|
| Account Number | Account number | Identifies the customer for updates |
| Customer Name | Company/trading name | |
| Title | Contact title | Mr, Mrs, Miss, Dr, etc. |
| First Name | First name | |
| Surname | Surname | |
| Address 1-5 | Address lines | |
| Postcode | Postcode | |
| Email address | ||
| Status | Customer status | Matches status name or short name |
| Billing Cycle | Billing cycle | Matches cycle name |
| Account Manager | Account manager | Matches user name |
| Commission Holder | Commission holder | Matches user name |
The customer import can also create features, notes, payments, and direct debit details in the same file. Prefix the column header with the object type (e.g. Feature Service Charge, Note Subject, Payment Amount).
Numbers
Section titled “Numbers”| Column header | Field | Notes |
|---|---|---|
| Number ID | Number record ID | Preferred identifier for updates |
| Account Number / Customer | Customer account number | Required for inserts |
| Number | Telephone number | |
| Extension | Extension | |
| Number Type | Number type | Geographic, Mobile, Non-Geographic, etc. |
| Status | Number status | |
| Alternate CDR Number | CDR matching number | |
| Call Carrier | Call carrier | Matches carrier name |
| Line Carrier | Line carrier | |
| Inbound Tariff | Inbound call tariff | Matches tariff name |
| National Tariff | National call tariff | |
| Mobile Tariff | Mobile call tariff | |
| International Tariff | International call tariff | |
| Sold By | Sold by user | |
| Date Sold | Date sold | |
| Calls Start Date | When billing starts |
The number import can also create features, call plans, and notes. Use prefixed headers like Feature Service Charge, Feature Standard Feature, or Note Subject.
Features
Section titled “Features”| Column header | Field | Notes |
|---|---|---|
| Feature ID / ID | Feature record ID | Preferred identifier for updates |
| Account Number | Customer account number | For inserts; identifies the customer |
| Number | Telephone number | For inserts; attaches feature to this number |
| Number ID | Number record ID | Alternative to Number |
| Standard Feature | Standard feature template | Matches standard feature name |
| Description | Feature description | |
| Feature Type | Feature type | |
| Recurring Charge | Recurring charge amount | |
| One-Off Charge | One-off/connection charge | |
| Recurring Interval | Billing interval | Monthly, Quarterly, etc. |
| Feature Count | Feature count/quantity | |
| Status | Feature status | |
| Start Date | Feature start date | |
| End Date | Feature end date | |
| Sold Date | Date feature was sold | |
| Due Date | Next billing due date | |
| Change Effective From | Effective date for charge changes | Maps to the updated date field |
| Annual Increase Reference Date | Next annual increase due | |
| Annual Increase Profile | Increase profile | CPI, RPI, Fixed Amount, None |
| Carrier | Feature carrier | |
| Carrier Recurring Charge | Wholesale recurring charge | |
| Carrier One-Off Charge | Wholesale one-off charge | |
| Fixed Fee Tariff | Fixed fee tariff | Matches tariff name |
| Inbound Tariff | Inbound call tariff | |
| National Tariff | National call tariff | |
| Discount Plan 1 | First discount plan |
Payments
Section titled “Payments”| Column header | Field | Notes |
|---|---|---|
| Payment ID / ID | Payment record ID | Preferred identifier for updates |
| Account Number | Customer account number | |
| Payment Date / Date | Payment date | |
| Payment Amount / Amount | Payment amount | |
| Payment Method / Type | Payment method | Matches payment type name |
| Our Reference / Reference | Your reference | |
| Customer Reference | Customer’s reference |
| Column header | Field | Notes |
|---|---|---|
| Note ID / ID | Note record ID | Preferred identifier for updates |
| Account Number | Customer account number | |
| Note Type / Type | Note type | Matches note type name |
| Subject | Note subject | |
| Body | Note body (plain text) | |
| Body (HTML) | Note body (HTML) | |
| Owner | Note owner | Matches user name |
| Departments | Department | Matches department name |
| Status | Note status | |
| Action Required Date | Date action is required by |
Customer Contacts
Section titled “Customer Contacts”| Column header | Field | Notes |
|---|---|---|
| Account Number | Customer account number | |
| Contact Type | Contact type | |
| Title | Title | Mr, Mrs, Miss, Dr, etc. |
| First Name | First name | |
| Surname | Last name | |
| Name / Customer Name | Full name | Alternative to separate first/surname |
| Company Name | Company name | |
| Address 1-5 | Address lines | |
| Postcode | Postcode | |
| Country | Country | |
| Email address | ||
| Phone 1 / Phone 2 | Phone numbers | |
| Phone 1 Type | Phone type | Phone, Mobile, Fax, Home |
Validation and Error Handling
Section titled “Validation and Error Handling”What the Test Step Checks
Section titled “What the Test Step Checks”- Header matching: Every column header is checked against the import type’s known field names. Unmatched headers appear as warnings.
- Required fields: Insert mode checks that essential fields are present (e.g. Account Number for customer imports).
- Lookup values: Values that reference other records (carriers, tariffs, statuses) are checked against the database. Misspelt or missing values are flagged.
- Data types: Dates, numbers, and currency amounts are validated for format.
- Record existence: In update mode, the platform checks that each referenced record exists.
- Empty rows: Blank lines are reported in the log.
Common Error Patterns
Section titled “Common Error Patterns”“Header X not matched”: The column header was not recognised. Check spelling, or add a header mapping in Import Rules.
“Lookup value not found”: A value like a carrier name or tariff name did not match any record. Check the exact spelling, including case (lookups are case-insensitive, but the value must exist).
“Record not found”: In update mode, the ID in a row did not match an existing record. Check that the IDs are correct and the records have not been deleted.
Encoding errors: If the file contains characters outside the expected encoding, the import stops with an encoding error. Save the file as UTF-8, or specify the correct encoding in Import Rules.
Tips and Best Practices
Section titled “Tips and Best Practices”Always test first. The test step catches problems before they affect live data. Review the log carefully, even when it looks clean.
Start small. Import a handful of rows first and check the results. Once you are confident the file is correct, import the full dataset.
Check for duplicates. Before inserting new records, export existing data and compare. Duplicate numbers or features can cause billing conflicts.
Use the activity fields. Fill in the Import Reason and Import Details fields on the import form. These appear in the activity log and make it much easier to trace changes months later.
Save your files. Keep a copy of every import file you process. The platform stores the file, but having your own copy makes troubleshooting easier.
Verify after importing. Spot-check a few records to confirm the import worked as expected. For large imports, re-run the relevant report and compare with your source data.
File Fields
Section titled “File Fields”The fields below make up a bulk import file record, including its processing status and any logged errors.
File Details
Section titled “File Details”File upload and basic information about the bulk import file including filename and upload date.
| Field | Description |
|---|---|
| Filename | Name of the uploaded bulk import file |
| Date Uploaded | Date when the bulk import file was uploaded |
Import Details
Section titled “Import Details”Configuration for processing the bulk import file including file type, mode, status, and import rules.
| Field | Description |
|---|---|
| File Status | Current processing status of the bulk import file |
| File Type | Type of data contained in the bulk import file |
| File Mode | Processing mode for the bulk import file (insert or update) |
| Import Rules | Specific rules and configuration for processing this bulk import file |
Information
Section titled “Information”Additional notes and processing log information for the bulk import file.
| Field | Description |
|---|---|
| Notes | Additional notes about this bulk import file |
| Log | Processing log and status information for this bulk import file |
System Information
Section titled “System Information”| Field | Description |
|---|---|
| Last Modified | Timestamp of the most recent modification to this bulk import file |
| Created | Timestamp when this bulk import file was created |
Related Pages
Section titled “Related Pages”- Managing Annual Price Increases: end-to-end workflow for applying annual price increases using bulk import
- Customers: customer record fields and management
- Numbers: number record fields and management
- Features: feature record fields and management
- Payments: payment processing and recording
- Contacts: customer contact management