Bulk Import Files

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

  1. Go to Add menu > Bulk Import File
  2. Upload your CSV or Excel file
  3. Choose the File Type (e.g. Features) and File Mode (Insert or Update)
  4. Click Actions > Test File to validate without making changes
  5. Review the log for errors or warnings
  6. 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

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

The File Mode dropdown controls whether the import creates new records or updates existing ones.

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

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

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

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

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

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

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

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-1252

If the platform encounters characters it cannot decode, it logs an encoding error and stops processing.


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

  1. The platform reads each header and converts it to lowercase
  2. It looks for a match in the import type’s field name list
  3. Matched columns are mapped to the corresponding database field
  4. Unmatched columns generate a warning in the log

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

Most fields accept several header names. For example, all of these map to the recurring charge field on a feature import:

  • Recurring Charge
  • Service Charge
  • Feature Recurring Charge
  • Recurring Charge (£)

Check the column reference tables below for the accepted header names for each import type.


Import Rules

The Import Rules field accepts INI-style configuration that gives you extra control over how the file is processed.

File Format Section

Control file format and encoding:

[File Format]
Format = excel
Encoding = utf-8-sig

Format values: csv (default), excel / xlsx, legacy excel / xls

Headers Section

Remap column headers when your file uses non-standard names:

[Headers]
recurring charge = Monthly Fee
status = Current State

The 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 Notes

Columns Section

Map fields by column position instead of header name. Useful for files without headers:

[Columns]
account number = 1
recurring charge = 3
start date = 4

Value Mapping Sections

Remap lookup values when your file uses different terminology:

[Status Values]
active = live, enabled
dropped = cancelled, terminated

The left side is the platform’s value. The right side lists your file’s values (comma-separated).


Column Reference

The tables below list the most commonly used columns for each import type. All header names are case-insensitive.

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 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

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

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

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

Notes

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

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 Email address
Phone 1 / Phone 2 Phone numbers
Phone 1 Type Phone type Phone, Mobile, Fax, Home

Validation and Error Handling

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

“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

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.


Still Didn’t Find Your Answer?

For assistance, please contact us below.

Submit a ticket