# Centerbase

This plugin will periodically query the Centerbase API for new and updated matters based on the last run date/time. For each matter found, the plugin maps Centerbase fields to SharePoint client/matter fields and writes the result to the monitor directory for processing by the provisioning service.

Copy the dll files from the Plugins\Centerbase directory to the site provisioning directory. Restart the service to activate the plugin.

Start the configurator and browse to CustomSettings to configure the Centerbase plugin.

Specify the Url
The base URL of the Centerbase instance.
Example: https://epona.centerbase.com (opens new window)

Specify the Username
The Centerbase username used to authenticate. The value is stored encrypted and can also be provided via Azure Key Vault (secret name: Centerbase.Username).

Specify the Password
The Centerbase password used to authenticate. The value is stored encrypted and can also be provided via Azure Key Vault (secret name: Centerbase.Password).

Enable the Centerbase Schedule
Configure the interval schedule and set Enabled to true. The plugin will not start unless the schedule is enabled.

The following optional properties can be set:

TestMapping
If enabled, move the parsed json to the Test subfolder of the monitor directory and don't update the last run datetime. The plugin also writes raw_<item-id>.json next to each mapped output, containing the full Centerbase response shape (field-info + field-data). Use these files to discover which field IDs and labels the tenant exposes before finalising the mapping.

Client Id
Centerbase field or template expression to match the SharePoint client id field.
Default: split(1001:1083,"-",0) — extracts the prefix from the standard {ClientNumber}-{MatterCode} Matter Number convention (e.g. 28034-000000028034).

Client Code
Centerbase field or template expression to match the SharePoint client code field.
Default: split(1001:1083,"-",0).

Client Name
Centerbase field or template expression to match the SharePoint client name field.
Default: 1001:1000022|Client.

Client Field Mapping
Optional field that maps Centerbase client properties to SharePoint fields with syntax: sharepointname1=name1;sharepointname2=name2.
Use the character | for "or" conditions if null.
Example: ClientStatus=Matter Status;ClientNumber=Client Number

Fetch Client Item
If enabled, the plugin loads every client of Client Item Type once per run via a paged item/exists call and attaches the matching client to each matter. With a client attached, mappings can read client-only fields via the client(<field>) expression. Enable this when the matter response does not carry the data you need (for example a Client Number or other field that lives on the client item).
Default: false. Cost: one paged API call per run, regardless of how many matters were returned.

Client Item Type
The Centerbase item-type number used to load clients. Only used when Fetch Client Item is enabled.
Default: 1004 (the standard Centerbase template).

Client Lookup Field
The lookup field on the matter that points at the client. Its value is the client's display name, which the plugin uses to find the matching Client item. Accepts a field ID (e.g. 1001:1000022) or its tenant label (e.g. Client). Only used when Fetch Client Item is enabled.
Default: 1001:1000022.

Client Requested Fields
Semicolon-separated list of Centerbase field IDs to include in the Client item response (e.g. 1004:1;1004:1026;1004:1081;1004:4000). Only used when Fetch Client Item is enabled. Empty means Centerbase returns its default field set. Only fields listed here are available to client(<field>) expressions.

Matter Id
Centerbase field or template expression to match the SharePoint matter id field.
Default: item-id.

Matter Code
Centerbase field or template expression to match the SharePoint matter code field.
Default: 1001:1083|Matter Number.

Matter Name
Centerbase field or template expression to match the SharePoint matter name field.
Default: 1001:1026|Matter Name|name.

Matter Field Mapping
Optional field that maps Centerbase matter properties to SharePoint fields with syntax: sharepointname1=name1;sharepointname2=name2.
Use the character | for "or" conditions if null.
Example: MatterOpenDate=Matter Open Date;PracticeArea=Practice Area;ResponsibleAttorney=Responsible Attorney;ClientNumber=client(1001:1081)|split(1001:1083,"-",0)

Requested Fields
Semicolon-separated list of Centerbase field IDs to include in the API response. Fields use the format <item-type>:<field-id> (e.g. 1001:1026 for Matter Name). Only the fields listed here are returned by the API. See the Matter Field Reference below for available field IDs.
Example: 1001:1026;1001:1083;1001:1000022;1001:1000049;1001:1055

Active Status
Specifies which matters are returned: Active, Inactive, or Both. Defaults to Active when not set.

Matter Filter
Optional. Specify one or more filters in the format <centerbaseApiField>=<value>;. These filters are applied client-side after fetching from the API — matters not matching the filter are skipped before export.
Example: Practice Area=Litigation;


# Field Mapping Syntax

Field values in Client Id, Client Code, Client Name, Matter Id, Matter Code, Matter Name, Client Field Mapping, and Matter Field Mapping support the following syntax.

Field ID
Reference a Centerbase field by its ID using the <item-type>:<field-id> format. Field IDs from the Centerbase default template are stable across tenants, so prefer field IDs over labels when the field is part of the standard template.
Example: 1001:1026

Simple field reference (label)
Use the field label as returned by the Centerbase API. Labels are tenant-editable and case- and space-sensitive — tenants can rename them.
Example: Matter Number

Fallback with pipe |
Try the first value; if empty, fall back to the next. Centerbase omits empty fields from the response, so multi-step fallbacks are normal.
Example: 1001:1026|Matter Name|name

Literal string
Wrap a value in double-quotes to use it as a fixed value:
Example: "Active"

Template variables
Use {fieldName} to compose a value from multiple fields:
Example: {Client Number}-{Matter Number}

Zero-padding
Use <padChar>:<length>{field} to left-pad a field value with a character:
Example: 0:4{Matter Number} — produces 0042 when Matter Number is 42

split(<field>,"<separator>",<index>)
Splits the field's value on <separator> and returns the segment at <index> (zero-based). Returns null on missing field, empty separator, or out-of-range index, so it can chain with |.
Example: split(1001:1083,"-",0) — yields 28034 from a Matter Number 28034-0000000.

client(<field>)
Reads <field> from the linked Client item attached by Fetch Client Item. Returns null when no client is attached, allowing | fallbacks. Requires Fetch Client Item = true; only fields listed in Client Requested Fields (or the Centerbase default for the client item type) are available.
Example: client(1001:1081)

Arrays
When a Centerbase field returns an array of values (e.g. responsible attorneys), the values are joined with a semicolon (;) into a single string.

Combining expressions
Fallbacks compose freely with split() and client(). The example below reads the Client Number from the linked Client item; if the client item is not loaded or the field is empty, falls back to extracting the prefix from the Matter Number:

client(1001:1081)|split(1001:1083,"-",0)

# Diagnosing unresolved mappings

Every time a mapping segment fails to resolve, the plugin writes an NLog warning with the matter's item-id and the actual property names available on that matter. Search the service log for:

Centerbase mapping: '&lt;key>' did not resolve

A single warning tells you whether the field is missing from the response (add it to Requested Fields) or whether the label/ID is wrong.

To discover the field IDs and labels for a tenant, run once with TestMapping = true and inspect the raw_<item-id>.json files that are written alongside the mapped output.


# Matter Field Reference

The plugin queries Centerbase item type 1001 (Matter). Fields are identified as <item-type>:<field-id>. The following are the standard Matter fields available from Centerbase. For the full list of all item types and field IDs see Centerbase Item Types (opens new window).

Field ID Field Name
1001:1026 Matter Name
1001:1027 Billing Partner
1001:1045 Bill to Email Address(s)
1001:1047 Inherit Client Email Billing Settings
1001:1048 Client Accepts Bill by Email?
1001:1050 Matter Open Date
1001:1051 Matter Close Date
1001:1052 Referral Source Text
1001:1053 Referral Type
1001:1054 Practice Area
1001:1055 Responsible Attorney
1001:1056 Bill To Contact Name
1001:1057 Bill To Company Name
1001:1058 Bill To Address
1001:1059 Bill To Phone
1001:1060 Inherit Bill To Settings From Client
1001:1070 Claim Number
1001:1071 Claim Representative
1001:1072 Client Matter Id
1001:1073 Splits Bill
1001:1074 Billing is Split To?
1001:1075 LawToolBox State Code
1001:1076 LawToolBox ToolSetID
1001:1077 Referral Source
1001:1083 Matter Number
1001:4000 Key
1001:1000013 Alternate Address
1001:1000014 Matter Detailed Description
1001:1000022 Client
1001:1000049 Matter Status
1001:1000087 Matter #
1001:1000399 Primary Email
1001:1000400 Phone
1001:1000429 Trust Balance
1001:1000508 Conflict Check
1001:1000558 Quick Notes
1001:1000572 Custom Text 5
1001:1000850 Last Bill
1001:1000852 Last Slip
1001:1000912 Referred By
1001:1000955 Last Payment
1001:1000965 Paralegal
1001:1000971 Fee Discount %
1001:1000985 Admin
1001:1000986 Other Staff
1001:1000987 Associate
1001:1001000 Matter Short Description
1001:1001009 Formula - Total Fees Received

The default RequestedFields also includes 1001:1, 1001:2, 1001:3, and 1001:4. These are low-numbered system fields whose labels are not listed in the Centerbase item types reference. Field 1001:4 is used internally as the modification date for incremental sync (the criteria filter). Their labels are resolved at runtime from the field-info returned by the API.

Custom fields defined in the firm's Centerbase configuration have IDs starting from 1001:1000000.


# Centerbase API

The plugin uses the following Centerbase REST API endpoints. For the full API reference see Centerbase Public API (opens new window) or the live API help page (opens new window). All calls go to:

https://epona.centerbase.com/mobile/api.svc/json/

Login (POST /mobile/api.svc/json/login)
Authenticates using username and password. Returns a session-id required by all subsequent calls.

Item Exists (PUT /mobile/api.svc/json/item/exists) — API reference (opens new window)
Returns a list of items of the requested item type that were created or modified since the last run date. Supports filtering, pagination (500 records per page), and field selection via requested-fields. On the first page of a matter sync, a criteria filter on field 1001:4 (Date Modified) is applied. Subsequent pages use the results-id from the previous response to continue the query. The plugin uses the same endpoint to load clients when Fetch Client Item is enabled, with the configured Client Item Type and no modification-date criteria.

# Retry Behavior

If the API call times out due to a socket exception, the plugin automatically retries up to 10 times, logging a warning on each retry. Any other exception stops retrying immediately.

# Error Handling

The Centerbase API returns HTTP 200 even when an error occurs. All responses include an error-code and error-message. If error-code is not 0, the plugin throws an exception with the returned message.

Code Name Description
32 Validation exception One or more input parameters are not valid.
42 Security exception The current user does not have rights to perform the requested operation.
52 Not logged in The session ID is no longer valid.
62 Invalid login The username/password combination is invalid.
-1 Operation failed Any other error condition.

# Extension Point: IConvertFromCenterbase

The plugin exposes the IConvertFromCenterbase interface for custom post-processing of mapped matter data before export:

public interface IConvertFromCenterbase {
    CreateUpdateClientMatterSimple Execute(
        CreateUpdateClientMatterSimple info,
        Connection connection,
        JObject matter
    );
}

Register your implementation with StructureMap in a companion plugin assembly. The method receives the mapped client/matter data (info), the active Centerbase connection, and the raw Centerbase matter JSON (with fields already resolved to their labels). Return the modified info object.

Last Updated: 5/6/2026, 12:03:19 PM