# 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-0000000 → 28034).
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: '<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.
← CaseManager Cicero →