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 TypeWhat it imports
CustomersCustomer accounts with addresses, billing settings, and optional features/notes/payments
NumbersTelephone numbers with tariffs, carriers, CDR matching, and optional features/notes
FeaturesOne-off and recurring charges attached to customers, numbers, or services
TariffsCall tariff rates
Standard FeaturesStandard feature templates
PaymentsPayment records against customer accounts
Number MigrateMoves numbers between customers
Customer ContactsContact records with names, addresses, and communication settings
Ignore Traffic NumbersNumbers to exclude from billing
NotesNotes 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:

FormatExtensionNotes
CSV.csvDefault format. Uses comma separators. UTF-8 encoding recommended.
Excel.xlsxModern Excel format. The platform reads the first sheet.
Legacy Excel.xlsOlder 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 headerFieldNotes
Account NumberAccount numberIdentifies the customer for updates
Customer NameCompany/trading name
TitleContact titleMr, Mrs, Miss, Dr, etc.
First NameFirst name
SurnameSurname
Address 1-5Address lines
PostcodePostcode
EmailEmail address
StatusCustomer statusMatches status name or short name
Billing CycleBilling cycleMatches cycle name
Account ManagerAccount managerMatches user name
Commission HolderCommission holderMatches 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 headerFieldNotes
Number IDNumber record IDPreferred identifier for updates
Account Number / CustomerCustomer account numberRequired for inserts
NumberTelephone number
ExtensionExtension
Number TypeNumber typeGeographic, Mobile, Non-Geographic, etc.
StatusNumber status
Alternate CDR NumberCDR matching number
Call CarrierCall carrierMatches carrier name
Line CarrierLine carrier
Inbound TariffInbound call tariffMatches tariff name
National TariffNational call tariff
Mobile TariffMobile call tariff
International TariffInternational call tariff
Sold BySold by user
Date SoldDate sold
Calls Start DateWhen 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 headerFieldNotes
Feature ID / IDFeature record IDPreferred identifier for updates
Account NumberCustomer account numberFor inserts; identifies the customer
NumberTelephone numberFor inserts; attaches feature to this number
Number IDNumber record IDAlternative to Number
Standard FeatureStandard feature templateMatches standard feature name
DescriptionFeature description
Feature TypeFeature type
Recurring ChargeRecurring charge amount
One-Off ChargeOne-off/connection charge
Recurring IntervalBilling intervalMonthly, Quarterly, etc.
Feature CountFeature count/quantity
StatusFeature status
Start DateFeature start date
End DateFeature end date
Sold DateDate feature was sold
Due DateNext billing due date
Change Effective FromEffective date for charge changesMaps to the updated date field
Annual Increase Reference DateNext annual increase due
Annual Increase ProfileIncrease profileCPI, RPI, Fixed Amount, None
CarrierFeature carrier
Carrier Recurring ChargeWholesale recurring charge
Carrier One-Off ChargeWholesale one-off charge
Fixed Fee TariffFixed fee tariffMatches tariff name
Inbound TariffInbound call tariff
National TariffNational call tariff
Discount Plan 1First discount plan

Payments

Column headerFieldNotes
Payment ID / IDPayment record IDPreferred identifier for updates
Account NumberCustomer account number
Payment Date / DatePayment date
Payment Amount / AmountPayment amount
Payment Method / TypePayment methodMatches payment type name
Our Reference / ReferenceYour reference
Customer ReferenceCustomer’s reference

Notes

Column headerFieldNotes
Note ID / IDNote record IDPreferred identifier for updates
Account NumberCustomer account number
Note Type / TypeNote typeMatches note type name
SubjectNote subject
BodyNote body (plain text)
Body (HTML)Note body (HTML)
OwnerNote ownerMatches user name
DepartmentsDepartmentMatches department name
StatusNote status
Action Required DateDate action is required by

Customer Contacts

Column headerFieldNotes
Account NumberCustomer account number
Contact TypeContact type
TitleTitleMr, Mrs, Miss, Dr, etc.
First NameFirst name
SurnameLast name
Name / Customer NameFull nameAlternative to separate first/surname
Company NameCompany name
Address 1-5Address lines
PostcodePostcode
CountryCountry
EmailEmail address
Phone 1 / Phone 2Phone numbers
Phone 1 TypePhone typePhone, 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