# ContactManager Import Types — Consultant Guide

This guide describes every import type available in the ContactManager import tool, written for technical and functional consultants who prepare import files and run imports. For each import type you will find what it does, which columns to put in your file, the options that affect it, the status messages you may see, and the things to watch out for.

You do not need any programming knowledge to use this guide. Everything here is expressed in terms of the import screen, the option checkboxes, and the column headers in your spreadsheet.


# Contents


# How an import works

  1. You open the import screen, choose a file (.xls or .xlsx) and the sheet to read.
  2. You pick an import type from the dropdown. The import type decides what each row in your file will do — create a contact, assign a tag, set permissions, remove a link, and so on.
  3. The first row of the sheet holds the column headers. Every column is read by its header name (case is ignored). The names this guide shows in code font are the exact header names to use.
  4. You tick the option checkboxes you need (see The option checkboxes) and start the import. It runs as a background job.
  5. Each row is processed independently. When the job finishes, your file is saved back with extra result columns (see Reading the results).

A few things happen automatically for the whole run:

  • Full-text indexing is paused during the import and resumes when it finishes.
  • Synchronisation to external applications is governed by the Mark as changed checkbox (see below).
  • Each row runs in its own transaction. If one row fails, only that row is rolled back; its error text appears in that row's Result column and the import continues with the next row.

# Shared concepts

These mechanisms are reused by most import types. They are explained once here and referenced from each import type.

# Identifying the record (CM_ID and external keys)

Most import types must first locate the ContactManager record the row applies to. They look for it in this order:

Column Meaning
CM_ID The internal ContactManager ID of the record. If present and valid, it is used directly — the fastest and most reliable key.
ExternalApplication + ExternalApplicationID The name of an external application and the record's ID in that application. Used to find the record by its external link when CM_ID is not given.
ExternalType Tells the import which kind of record to look for (e.g. a contact, a company, a matter, a lookup item) when resolving by external key.
CM_CODE A code key used by some import types (matter code, client code, lookup code).

Special ExternalType values you can use:

  • Leave ExternalType empty and the import assumes a contact.
  • PersonCompany, CompanyPerson or Client → "find a company or a person" by the external key.
  • For an employee, an ExternalApplicationID written as companyId@@personId locates the employee from both halves.

Note on spelling: both CM_CODE and CM_Code are accepted (column names are matched case-insensitively). Use whichever your template already uses.

Standard "not found" status messages produced here include No Record found, No contact found, Company not found, No Matter found and Record not found.

# The option checkboxes

Option What it does
Mark as changed Controls whether the imported records are flagged for synchronisation to external applications. Leaving it unchecked switches synchronisation tracking off for the whole import run — useful for bulk loads you do not want pushed out. Tick it when the import should propagate to connected systems.
Clear collections For import types that fill a collection (tags, categories, attendees, …), empties the target collection before adding. The reset happens once per record per run — if several rows target the same record, the collection is cleared on the first of those rows and the later rows add to it. See Assigning lookup collections.
Always update Intended to mean "overwrite existing values, not only fill empty ones". Important: for plain text/number/date fields the value is overwritten on every import regardless of this setting. The option only makes a difference for lookup references, user references and translated text, which are otherwise filled only when empty. See Things to watch out for.
Disable address validation Skips address validation when importing addresses.

# Reading the results

Each row gets a Result value written back into the saved file:

  • Empty Result → the row succeeded.
  • Any text in Result → a status or error message for that row (also collected into a summary log).

When the import finishes, the original file is replaced by an .xlsx copy containing your original columns plus:

  • the Result column,
  • any IDs the import resolved and wrote back (for example CM_ID, Result_CM_ID, PersonCM_ID, CompanyCM_ID, EmployeeCM_ID),
  • for matching imports, extra columns prefixed with _.

If you imported an .xls file, the saved copy will be .xlsx. A summary log file is written next to it.

# Assigning lookup collections

Several import types add lookup values (tags, categories, segments, …) to a record's collection. They all work the same way:

  1. Locate the record (see Identifying the record).
  2. If Clear collections is on, empty the target collection once for this record.
  3. Read the value column, split it into multiple values where supported, and add each value that is not already present.

A lookup value can usually be given either as a plain code, or as an external reference using companion columns <Column>ExternalApplication and <Column>ExternalApplicationID.

An external-application link records that a ContactManager record corresponds to a record in an external system. Each link has an application name (e.g. a CRM or finance system), an external ID and an optional external code. A record can carry several links, one per application. Some import types create these links, one removes a single link, and the Mark as changed option decides whether changes are pushed back to those applications.


# Import type index

Pick the import type from the dropdown that matches your goal.

# Contacts, people & companies

Import type What it does
Contact Create/update a person, company, employee, department, user and shortcuts from one row
MatchContact Find existing contacts for each row and write their IDs back (creates nothing)
CompanyDepartment Create/update a department of a company
Address Add/update an address for a contact (plus company location / employee department)
ContactRelation Create a relationship between two contacts
ContactInfoInternal Update internal contact info (phone, fax, secretary, spouse, …)
Identification Create/update a person's identity document, optionally attaching a file
CommunicationItem Add/update a communication item (e.g. phone, e-mail) on a contact
Owner Set the owner of a contact or matter
OwnerSub Set the sub-owner of a contact or matter
Photo Import a person photo or company logo from a file
User Create/update a login user and optionally link it to a contact

# Classification & lookup values

Import type What it does
Category Assign categories to a contact
Interest Assign interests to a contact
Tag Assign tags to a contact
Tag2 Assign secondary tags (semicolon-separated)
MatterType Assign matter types to a contact (semicolon-separated)
Segment Assign segments to a contact (semicolon-separated)
Referral Assign referrals to a contact
Responsibility Assign responsibilities to an employee
StockExchange Assign stock exchanges to a company
SubscriptionStatusPermission Assign subscription-status permissions to a contact
Industry Assign industries to a company
IndustryCode Assign industry codes (SBI/SIC) to a company
LookupFieldValue Assign values to a custom lookup field
EntityType Set a company's entity type
EmployeeSize Set a company's employee-size band
ChamberOfCommerce Set a company's Chamber-of-Commerce number
DUNS Set a company's DUNS number
ContactType Set a contact's contact type
EmployeeJobInformation Update an employee's job title / function
CompanyUltimateMember Set a company's parent / ultimate parent
LookupRegion Create regions and region postal-code ranges
LookupIndustryCodeIndustry Link an industry code to an industry
LookupItem Create/update any kind of lookup item
RemoveLinkedLookupItem Remove lookup values from a record's collections

# Matters, activities & subscriptions

Import type What it does
Matter Create/update a matter
Activity Create/update an activity for a contact
Attendee Create/update an activity attendee
MatterPayor Create/update a matter payor
Shortcut Place a contact (or subscription item) into a folder
Import type What it does
SynchronizableRecord Create, rename/re-point or flag an external-application link
RemoveSynchronizableRecord Remove one external-application link, keeping the record

# Enrichment & external services

Import type What it does
DnB Dun & Bradstreet enrichment of companies
ChamberOfCommerceUpdateService Drive an external Chamber-of-Commerce service for a company

# Security & permissions

Import type What it does
Permissions Set or reset permissions on a record/folder
ReassignSecurity Re-apply default permissions to a record
RoleMembers Add a user or role as a member of a role

# Maintenance, review & removal

Import type What it does
Update Generic updater — every column is treated as a field to set
ReviewUpdate Record proposed changes for later human review (does not apply them)
DeDuplication Merge duplicate records into a master
RemoveObjects Delete the whole record
OutlookFolderSync Add or remove an Outlook sync folder for a user

# Contacts, people & companies

# Contact

Purpose. The all-in-one contact importer. From a single row it can create or update a person and/or a company, an employee that links them, optionally a company department, a login user, folder shortcuts, a "contact-of" relationship, and all the lookup-value collections.

Columns to provide. Use the prefixed column families for each entity you want to load:

Area Example columns
Person PersonLastName, PersonFirstName, PersonLastNamePrefixLastName, PersonLanguage, PersonExternalApplication/PersonExternalApplicationID, …
Company CompanyName, CompanyLanguage, CompanyExternalApplication/CompanyExternalApplicationID, …
Employee EmployeeExternalApplication/EmployeeExternalApplicationID, job columns, …
Department EmployeeDepartment…
Location CompanyLocation…
User UserName, Password
Folders FolderPath, FolderType, FolderOwner, and numbered FolderPath0FolderPath99
Contact-of ContactOf…
Lookups collection columns prefixed Person, Company, Employee, CompanyDepartment

What it does. Detects which entities the row contains (based on a name, a …CM_ID, or an external application + id), then creates/updates company → person → employee → department, followed by the user, shortcuts, the contact-of relationship and lookup values. Resolved IDs are written back to PersonCM_ID, CompanyCM_ID, EmployeeCM_ID, CompanyDepartmentCM_ID.

Options. Honours Always update and Mark as changed.

Status messages. No person, company and employee found. Skipping row when the row contained none of the three.

Watch out for.

  • The row's language column drives language-specific parsing/validation while the record is created.
  • Anti cross-link guard: if an existing person/company/employee already carries a link for the row's ExternalApplication, that match is discarded and a new record is created instead — this prevents two different external records from being merged onto one ContactManager record.
  • Dutch surname prefixes are split out of PersonLastNamePrefixLastName only for Dutch-language rows.
  • Creating a new employee requires both a company and a person, otherwise the row fails.
  • Creating a user switches the contact's contact type to the configured internal-employee type.
  • Folder shortcuts are read from FolderPath0 through FolderPath99.

# MatchContact

Purpose. Read-only matching. Finds the existing contact(s) for each row and writes their IDs and names back. It creates nothing — use it to enrich a file with ContactManager IDs or to detect duplicates before a real import.

Columns to provide. Name, e-mail and phone columns (person/employee/company variants are accepted), plus CompanyName/Company.

What it does (writes back). _CM_ID, _Name, _EmailAddress, _PersonCM_ID, _CompanyCM_ID, _CompanyName, _EmployeeCM_ID, _CompanyDepartmentCM_ID.

Status messages. Empty for a single match; Duplicate when several contacts share the e-mail address.

Watch out for.

  • When an e-mail matches several contacts, the row is duplicated in the output — one extra row per match — and each is marked Duplicate.
  • If any matched contact is active, inactive matches are dropped.
  • A Dutch surname prefix is split out of LastName when the system is configured to show prefixes and no explicit prefix column is present.

# CompanyDepartment

Purpose. Create or update a department of a company.

Columns to provide. Identify the company with CompanyCM_ID or CompanyExternalApplication/CompanyExternalApplicationID; department fields via Department… columns; a CompanyDepartment flag wraps the department.

Status messages. Company not found; otherwise empty.

# Address

Purpose. Add or update an address for a contact (plus a location for companies and a department address for employees).

Columns to provide. Identify the contact with CM_ID or Contact… external columns; CompanyDepartment; EmployeeAddressLine; the Address… field family.

Options. Disable address validation skips validation.

Status messages. Contact not found; otherwise empty.

Watch out for.

  • A combined street line is split into street / number / extension according to the country's format and the system's street-number convention.
  • The row fails if a matching address already belongs to a different contact.

# ContactRelation

Purpose. Create a relationship from one contact to another.

Columns to provide. From side: FromCM_ID or ContactFrom…. To side: ContactToCM_ID or ContactTo…. Plus ContactRelationType and Comments.

Status messages. Detailed messages naming the missing side when an endpoint cannot be found; otherwise empty.

Watch out for. The relationship is only created when the configured rules allow it. Comments is always updated.

# ContactInfoInternal

Purpose. Update a contact's internal contact information (phone, fax, secretary, "works for", spouse).

Status messages. No Contact found, or No ContactInfoInternal found when the contact has none.

# Identification

Purpose. Create or update a person's identity document, optionally attaching a scanned file.

Columns to provide. Identify the contact with CM_ID or Contact…; then IdentificationType, Nationality, Number, FileName, Date, DateExpire/ExpireDate, City, CitizensServiceNumber.

Status messages. No Contact found; the row fails if FileName points to a missing file.

Watch out for. Employees are routed to their underlying person record. A supplied file is read in and stored with a versioned file name.

# CommunicationItem

Purpose. Add or update a communication item on a contact.

Columns to provide. Identify the contact with CM_ID or Contact…; CommunicationItemType; Value.

Options. Clear collections empties existing communication items first.

Status messages. CommunicationItemType not found, No contact found; otherwise empty.

Watch out for. For single-valued types the existing item is updated; otherwise a new one is added.

# Owner / OwnerSub

Purpose. Set the owner (Owner) or sub-owner (OwnerSub) of a contact, a matter or any owned record.

Columns to provide. If a ContactExternalApplication column is present the target is resolved as a contact via Contact… columns; otherwise any record is resolved via ExternalType/ExternalApplication/ExternalApplicationID. The owner is read from the Owner / OwnerSub column (a user reference — see Always update).

Status messages. No record (contact/matter) found; otherwise empty.

# Photo

Purpose. Load an image file into a person's photo or a company's logo.

Columns to provide. Identify the record with CM_ID or Contact… (when resolving by external key the type defaults to a person); Photo holds the file path.

Status messages. No Person found; File not found when the path is missing; otherwise empty.

Watch out for. An empty Photo path combined with Always update clears the existing photo/logo. The image type is taken from the file extension. Employees are routed to their person record.

# User

Purpose. Create or update a login user, optionally linking it to a contact.

Columns to provide. ID, Name/UserName, Password, LastName/FirstName/LastNamePrefix, EMail/EmailAddress, IsDisabled/InActive, CultureName/Culture, TimeZone, ResetPassword; identify a linked contact with CM_ID or Contact….

Status messages. Empty username; otherwise empty. The user's ID is written back.

Watch out for. The authentication mode defaults to Windows; a Forms-authentication user is assumed when a password is given or the user name has no domain (\). ResetPassword applies only to Forms-authentication users.


# Classification & lookup values

# Collection-assignment import types

These import types all assign lookup values to a collection following the same pattern (see Assigning lookup collections). For each, identify the record, optionally clear the collection (Clear collections), then add each value from the value column.

Import type Adds to Value column (with fallbacks) Multiple values separated by Applies to "Not found" message
Category Categories CategoryTypeCategory comma any contact No contact found
Interest Interests InterestTypeInterest comma any contact No contact found
Tag Tags TagTypeTag comma any contact No contact found
Tag2 Secondary tags Tag2TypeTag2 semicolon any contact No contact found
MatterType Matter types MatterType semicolon any contact No contact found
Segment Segments SegmentTypeSegment semicolon any contact No contact found
Referral Referrals ReferralTypeReferral comma any contact No contact found
Responsibility Responsibilities ResponsibilityType comma employee No contact found
StockExchange Stock exchanges StockExchangeStockExchangeType comma company No company found
SubscriptionStatusPermission Subscription-status permissions SubscriptionStatusPermissionTypeSubscriptionStatusPermission comma any contact No contact found

Extra for SubscriptionStatusPermission: a truthy Subscribe column sets the contact's subscription status to Subscribed.

# Industry / IndustryCode

Purpose. Assign industries (Industry) or industry codes (IndustryCode) to a company.

Columns to provide. Identify the company with CM_ID or Contact…; value column IndustryTypeIndustry, or IndustryCodeSBISIC.

Status messages. No contact found / Company not found.

# LookupFieldValue

Purpose. Assign values to a custom lookup field on a contact, matter or other record.

Columns to provide. CM_ID; ContactExternalTypeExternalType (defaults to a contact when both type and CM_ID are empty); external columns; value column LookupFieldValueLookupValueValueCode; MatterCode.

Status messages. No <type> found.

Watch out for.

  • A MatterCode column forces the target to be a matter and resolves it directly.
  • When the target field allows only one value and the record is a matter, the single value is replaced (older value removed) even without Clear collections.

# Single-field company / contact setters

Each of these sets one field on a company or contact.

Import type Sets Applies to "Not found" message
ChamberOfCommerce Chamber-of-Commerce number company No Company found
DUNS DUNS number (column DUNS) company No Company found
EntityType Entity type company No contact found
EmployeeSize Employee-size band (column EmployeeSize) company No contact found
ContactType Contact type any contact No Contact found

# EmployeeJobInformation

Purpose. Update an employee's job title and job function.

Status messages. No Employee found. Uses the employee's language while updating.

# CompanyUltimateMember

Purpose. Set a company's parent / ultimate-parent ("member of") and the related lock fields.

Columns to provide. Identify the company with CM_ID/Contact…; the parent with MemberOfCM_ID, MemberOfExternalApplication/MemberOfExternalApplicationID, or MemberOfDUNS; lock fields MemberOfLocked, MemberOfLockedUser/MemberLockedUser, MemberOfLockedComments.

Status messages. Parent / Member Of member not found, Parent / Member Of company has been cleared, or Company with ID … not found; otherwise empty.

Watch out for.

  • MemberOfDUNS resolves the parent by DUNS and fails if several companies share that number.
  • With Always update and no parent given, the existing parent is cleared.
  • With Always update (and when the system is configured for a single member-of level), the company's existing affiliates are re-pointed to the new ultimate parent.
  • MemberOfLocked accepts many truthy/falsy spellings (y/yes/j/ja/true/t/1, n/nee/no/0) or a lock date.

# LookupRegion

Purpose. Find or create a region and add a postal-code range for a country.

Columns to provide. Code, Name, Country, PostalCodeStart, PostalCodeEnd.

Options. Clear collections resets the region's postal-code ranges first.

Status messages. region or country not found/created; otherwise empty.

# LookupIndustryCodeIndustry

Purpose. Link an industry to an industry code.

Columns to provide. IndustryCode, Industry.

Status messages. IndustryCode not found, Industry not found (unless Clear collections is on); otherwise empty.

# LookupItem

Purpose. Create or update any kind of lookup item.

Columns to provide. CM_ID, Type/ExternalType, external columns, Code/CM_Code, Name, InActive, Parent…, plus columns specific to the lookup type.

What it does. Resolves by ID, then external key, then code; creates the lookup item if it still does not exist. Handles many specialised lookup types (links to companies/persons/departments/employees, matter and subscription links, activity roles, person titles, contact types, subscription-item statuses, custom field values, industry codes, job functions). The resolved CM_ID is written back.

Watch out for. A Parent… reference that is supplied but cannot be found makes the row fail.

# RemoveLinkedLookupItem

Purpose. Remove lookup values from a record's collections — the inverse of the assignment import types.

Columns to provide. Identify the record with CM_ID or Contact…. Then add a column named after each collection you want to prune — for example Interest(s), Segment(s), Category/Categories, Tag(s), Tag2(s), MatterType(s), Referral(s), IndustryCode(s)/SBI/SIC, Industry/Industries, LookupField[Value][s]. Each cell lists the values to remove.

Status messages. No contact found; otherwise empty.

Watch out for. The columns you include decide which collections are touched; the record must actually support that collection.


# Matters, activities & subscriptions

# Matter

Purpose. Create or update a matter.

Columns to provide. ID, external columns, Code/MatterCode, Name/LongName, Contact…, office/department external columns, originator/referral contact columns, dates and text fields, owner columns.

Resolution order. ID → external application + id → MatterCode.

Watch out for.

  • If you do not supply explicit Owner/OwnerSub columns, the owner is taken from a column named RTK and the sub-owner from BTK (Dutch role codes). Add RTK/BTK columns, or Owner/OwnerSub, accordingly.
  • A CloseDate column is stored as the matter's follow-up date (matters have no close date).
  • Office and department are matched first by external id, then by code against the internal companies list.
  • Supports Originator, OriginatorSub/Originator2, ReferralContact, ReferralContactSub. The resolved CM_ID is written back.

# Activity

Purpose. Create or update an activity for a contact.

Columns to provide. ID, external columns; Name or Description (used as the name — HTML is stripped and it is truncated to 200 characters); Contact… for the owning contact; Owner, ActivityType, dates and flags.

Status messages. No Activity found. The row fails if the owning contact cannot be resolved when creating. The ID is written back.

# Attendee / MatterPayor

Purpose. Link a contact to an activity (Attendee) or to a matter as a payor (MatterPayor).

Columns to provide. ID, external columns; to resolve the activity/matter: ActivityID/MatterID/MatterCode/Activity…/Matter…; Contact… for the attendee; ActivityRole, ContactPercentage/Percentage, AttendeeReference/Reference, AdditionalInformation. MatterPayor additionally accepts Address…, Department…, Currency, Percentage, BillReference, BillEmailAddress, DunningEmailAddress, distribution/dunning contact columns.

Options. Clear collections empties the activity's attendees first.

Watch out for.

  • The activity can be resolved by several keys, including a matter (this is how MatterPayor reuses the attendee logic).
  • When no external id is given, an existing attendee is matched on activity + contact + role + type.
  • MatterPayor fails if a supplied address or department belongs to a different contact than the payor.

# Shortcut

Purpose. Place a contact (or a subscription item) into a folder, creating folders along the path if needed.

Columns to provide. ID; CM_ID or Contact… external columns; FolderPath, FolderType, FolderOwner. For subscription items: SubscriptionItemStatus, PaymentStatus, SubscriptionStatus, SubscriptionItemOwner/SubscriptionItemOwnerUserName, NumberOfPersons, PartnerNames.

Options. Clear collections resets the subscription-item owners.

Status messages. No Contact found with CM_ID:… when a key was given but resolved nothing; otherwise empty.

Watch out for.

  • A numeric FolderPath is treated as a folder ID; otherwise the folder tree is walked/created under the Workspace root. A non-empty FolderType (other than 0) creates a subscription folder of that type.
  • NumberOfPersons overwrites the default of 1 only when it differs (or with Always update).
  • Owners may be a ;/,-separated list.

See External-application links for the concept.

# SynchronizableRecord

Purpose. Create, rename/re-point, or flag-for-sync an external-application link on a record.

Columns to provide. Identification: CM_ID, CM_CODE, ExternalType, ExternalApplication, ExternalApplicationID. Optional rename columns: NewExternalApplication, NewExternalApplicationID, NewExternalApplicationCode.

Options. Mark as changed flags the link (see below).

Status messages. No Record found; otherwise empty.

Watch out for.

  • The resolved record's ID is written into a Result_CM_ID column (empty when not found).
  • Supplying NewExternalApplication finds/creates the link under the new name and updates its external id/code — effectively renaming or re-keying a link.
  • With Mark as changed on: the matching link is flagged for synchronisation; if there is no matching link, every sync-enabled link on the record is flagged.

# RemoveSynchronizableRecord

Purpose. Remove a single external-application link from a record without deleting the record (contrast with RemoveObjects).

Columns to provide.

Column Role
CM_ID, CM_CODE, ExternalType, ExternalApplication, ExternalApplicationID Identify the record (same as SynchronizableRecord).
Application The link to remove. Names which external-application link to drop. If left empty, falls back to ExternalApplication.

Status messages. Application is required (when neither Application nor ExternalApplication is set), ExternalType is required when CM ID is not specified, No Record found, No link found (the record exists but has no link for that application); otherwise empty.

Watch out for. Identification is deliberately separate from the removal target: you can find a record by one application's external id and remove a different application's link. Only that one link is removed — the record and its other links stay.


# Enrichment & external services

# DnB

Purpose. Dun & Bradstreet enrichment — find or create a company, then fill DUNS, Chamber-of-Commerce, tax number, owner, ultimate parent, and SIC codes.

Columns to provide. CM_ID/Contact…; DUNS, Name, OfficialName, ChamberOfCommerce, TaxNumber, Owner, Language, address columns, MemberOf…, and SIC1SIC10.

Status messages. Company with ID … not found; otherwise empty.

Watch out for. The company's industry codes are always cleared and reloaded (this is not controlled by Clear collections). Up to ten SIC# columns are imported, the parent information is always refreshed, and the company is re-verified at the end.

# ChamberOfCommerceUpdateService

Purpose. Drive an external Chamber-of-Commerce service for a company.

Columns to provide. Identify the company with CM_ID/Contact… or ChamberOfCommerce; Action (remove/1, update/2, addandupdate/3, default → add); AutomaticSyncForFields.

Status messages. No UpdateService found, Company not found; resolving by Chamber-of-Commerce number fails if several companies match; otherwise empty.

Watch out for. For the Dutch Chamber of Commerce (KvK), a missing establishment number is filled in before the company is added.


# Security & permissions

# Permissions

Purpose. Set or reset permissions on a record or folder.

Columns to provide. Identify the target with CM_ID/ExternalType/ExternalApplication/ExternalApplicationID, or with FolderPath/FolderType. Then PermissionType (reset, resetchilds, deny/denied, remove/removed, allow/allowed, default allow); Inherited; UserRole; Permission (a comma/semicolon list).

Status messages. Record not found; on any other error the message is returned as <action>:<message>; otherwise empty.

Watch out for. Errors are reported in the row's Result and the import continues. remove deletes the matching permission entries. Clear collections resets the target to inherited permissions first.

# Permission names for the Permission column

These are the permission names the Permission column accepts. Some are granted automatically by another permission — the Implied by column says which, so you do not need to list them separately.

Record permissions — apply to an individual record:

Permission Required to Implied by
AdministrationPermission Do anything — every permission demand succeeds when this is allowed.
OwnerPermission Marks the user or group as owner of the record.
ChangePermission Change any property of the record. OwnerPermission
ChangePermissionsPermission Change the record's Permissions property. OwnerPermission
ReadPermission Read any property of the record. OwnerPermission
ReadPermissionsPermission Read the record's Permissions property. OwnerPermission
RemovePermission Remove the record. OwnerPermission
ChangePasswordPermission Use SetPassword on a particular User.
ChangeFullTextDataPermission Change full-text indexing data (IFtObject, FtRecord). Used by the system — you do not need to assign it.
SerializationPermission Serialize the record. Not required in practice. OwnerPermission
ChildrenDeserializationPermission Deserialize the record's child objects. Not required in practice. OwnerPermission
ChildrenPermissionsDeserializationPermission Deserialize the child objects' permissions. Not required in practice. OwnerPermission

OwnerPermission implicitly grants ChangePermission, ChangePermissionsPermission, ReadPermission, ReadPermissionsPermission, RemovePermission, ChildrenDeserializationPermission, ChildrenPermissionsDeserializationPermission and SerializationPermission.

Node and folder permissions — apply to a record's position in the tree, and to folders:

Permission Required to Implied by
CreateChildNodesPermission Create a new child within a node. OwnerPermission
EnumerateChildNodesPermission Read the child nodes of a node. OwnerPermission, ChangePermission, ReadPermission
ReadSummaryInfoPermission Read the main properties of a node. OwnerPermission, ChangePermission, ReadPermission
CreateFolderPermission Create a new folder. OwnerPermission
RemoveChildNodesPermission Remove items from a folder. OwnerPermission, RemovePermission
RemoveFolderPermission Remove a contact folder, subscription folder or contact search folder.

ContactManager-specific permissions:

Permission Required to Implied by
ChangeCompanyNamePermission Change specific company properties: Name, OfficialName, MemberOf, DUNSNumber, ChamberOfCommerce, Owner. OwnerPermission
ChangeMarketingInformationPermission Change specific contact properties: Jobfunction, Categories, Interests, Industries, Responsibilities, StockExchanges, Segments, ContactType. OwnerPermission
VerifyPermission Verify a contact. OwnerPermission

Which permission for which task:

Task Permission
Create new items CreateChildNodesPermission
Create a new folder CreateFolderPermission
Change important information ChangeCompanyNamePermission
List items EnumerateChildNodesPermission
Remove items from a folder RemoveChildNodesPermission
Verify VerifyPermission
Remove a folder RemoveFolderPermission

# ReassignSecurity

Purpose. Re-apply the default permissions to a record.

Columns to provide. CM_ID/ExternalType/ExternalApplication/ExternalApplicationID.

Options. Clear collections resets to inherited permissions first.

Status messages. Record not found; otherwise empty.

# RoleMembers

Purpose. Add a user or role as a member of a role.

Columns to provide. The member: UserID/Contact…/UserName. The role: RoleID/RoleName.

Status messages. User not found; otherwise empty.

Watch out for. The role is created if RoleName does not exist. Clear collections empties the role's members first.


# Maintenance, review & removal

# Update

Purpose. A generic updater: every column in the file is treated as a field name to set on the resolved record. Use it when there is no dedicated import type for the field you need.

Columns to provide. Identification: CM_ID/ID, CM_Code, ExternalType/Type, ExternalApplication/ExternalApplicationID. Every other column is treated as a field to update.

What it does. Resolves the record by ID, then by external link, then by type-specific key (client code, matter code, lookup code) — and may update several matching records, joining their IDs back into CM_ID.

Columns that are never treated as fields: ID, CM_ID, CM_Code, ExternalType, Type, Result, ExternalApplicationID, ExternalApplication, any column ending in ExternalApplication, and any column whose name starts with Column or __.

Watch out for.

  • A column ending in …ExternalApplicationID means "resolve this reference field by its external id" (the suffix is stripped to get the field name).
  • Special handling: CloseDate → follow-up date for matters; Note/Notes/Comment/Comments append a note rather than setting a field; a User column sets the contact's login user; Password sets a login password; reference fields are resolved by ID, lookup or user; collection fields support Clear collections; a Field-<culture> column writes a translation.
  • A column that maps to no field on the resolved record makes the row fail.

# ReviewUpdate

Purpose. Record proposed field changes for later human review, instead of applying them immediately.

Columns to provide. CM_ID, CM_Code, ExternalType, ExternalApplication/ExternalApplicationID; ReviewUpdateType, CreateDate, Field, Value.

Status messages. Record not found; otherwise empty.

Watch out for. Consecutive rows for the same record are grouped into a single review entry, so keep a record's rows together in the file.

# DeDuplication

Purpose. Merge one or more duplicate records into a master record.

Columns to provide. The master: MasterCM_ID or Master… external columns. The duplicates: DuplicateCM_ID (a comma-separated list of IDs) or Duplicate… external columns. Action chooses how duplicates are handled (default: remove).

Status messages. master, ExternalType is required when CM ID is not specified, Duplicate, ExternalType is required …, No Record found, or type not supported for record types that cannot be de-duplicated; otherwise empty.

Watch out for. Only contacts, addresses and subscription items can be de-duplicated; other types report type not supported.

# RemoveObjects

Purpose. Delete the entire record.

Columns to provide. CM_ID, ExternalType, ExternalApplication, ExternalApplicationID.

Status messages. No Record found; the row fails with ExternalType is required when CM ID is not specified when neither a CM_ID nor a resolvable type is given; otherwise empty.

Watch out for. This deletes the whole record. To remove only an external-application link and keep the record, use RemoveSynchronizableRecord.

# OutlookFolderSync

Purpose. Add or remove an Outlook synchronisation folder for a user.

Columns to provide. UserName/User; FolderPath/Folder; Remove/RemoveFolder (a flag).

Status messages. User … not found, Folder … not found; otherwise empty.

Watch out for. Idempotent: the folder is added if absent (and Remove is not set), or removed if present and Remove is set.


# Things to watch out for

The behaviours most likely to surprise you, collected in one place:

  1. "Always update" does not protect plain text fields. Text, number and date fields are overwritten on every import, whether or not Always update is ticked. The option only affects lookup references, user references and translated text, which are otherwise filled only when empty. Re-running an import can therefore clobber manually-edited plain fields.
  2. "Mark as changed" controls synchronisation for the whole run. Unchecked ⇒ no changes are pushed to external applications. Tick it when the import should propagate.
  3. Your source file is replaced by an .xlsx copy with result columns added (Result, resolved IDs, _-prefixed match columns) and, for matching imports, duplicated rows. Keep a backup of the original.
  4. One bad row does not stop the import. The failing row is rolled back, its error appears in its Result, and processing continues.
  5. Special ExternalType values: PersonCompany / CompanyPerson / Client mean "company or person"; an employee external id companyId@@personId resolves the employee; an empty type means "contact".
  6. RemoveObjects deletes the whole record; RemoveSynchronizableRecord removes only one link. Choose deliberately.
  7. RemoveSynchronizableRecord separates identification from the removal target: ExternalApplication finds the record, while the separate Application column says which link to drop (falling back to ExternalApplication).
  8. DeDuplication only supports contacts, addresses and subscription items — other types report type not supported. DuplicateCM_ID accepts a comma-separated list.
  9. Matter defaults its owner columns to the Dutch role codes RTK (owner) and BTK (sub-owner) unless you supply explicit Owner/OwnerSub columns, and stores CloseDate as the follow-up date.
  10. Clear collections clears once per record per run. If several rows target the same record, the collection is reset on the first row and later rows add to it.
  11. Contact will create a new record instead of updating a match when the matched record already carries a link for the row's external application (the anti cross-link guard).
  12. DnB always clears and reloads industry codes, ignoring the Clear collections option.
  13. Status messages vary in wording and casing (e.g. No contact found vs No Contact found) and are shown exactly as written.
  14. Column names are matched case-insensitively, so both CM_CODE and CM_Code work; different templates use different conventions.
Last Updated: 9/8/2026, 2:26:35 PM