What is Laurel Connect?
Laurel Connect allows Laurel to import and export timekeeping from a PMS that is not directly connected via integrations (e.g., Aderant, 3E). The service allows firms to upload their timekeeping data (client initiatives, etc.) and receive exports of released timekeeping data on a scheduled basis.
Laurel Connect imports timekeeping data (client initiatives, timekeepers, codes, etc.) on a "triggered by upload basis" using Laurel's import format through a SFTP service.
Laurel Connect exports released time (timekeeper, hours, narratives etc.) on a scheduled basis in Laurel's export format for firms to upload into their PMS through an SFTP service.
Laurel Connect Import
Importing timekeeping data (clients, initiatives, etc.) into Laurel is done through upload of several files via SFTP. Timekeeping data will be made available to timekeepers in Laurel within 60 minutes from successful upload.
You will be provided the SFTP endpoint and credentials during onboarding.
All files must be put into a single ZIP file and placed in the
imports
folder.Naming of the ZIP file must not contain any special characters such as !@#$% ^&*() or whitespace. If in doubt name it
data.zip
.Import files must be formatted to instructions below for successful upload and be in UTF-8 standard.
Import files must have headers in the exact order specified.
Do not add multiple zip files to the
imports
folder.Uploads will be completed in an upsert manner for updating existing or adding new data.
Closed Initiatives will continue to be searchable unless marked
status = inactive
on the initiatives.csv file
Please work with your Solutions Engineer to ensure the data your timekeepers need for keeping time with Laurel is supported.
Data | File Name / Type | Supported Mappings | Notes |
Clients | clients.csv | - | Required. |
Initiatives | initiatives.csv | Clients | Required. |
Codes | codes.csv | Code Types | Not Required. These are the codes used at a initiative and attached to time entries. |
Code Types | code-types.csv | - | Not Required. These specify what type of codes Currently, Laurel supports: phase, task, location, action, activity, and currency types and should be listed as such. |
1) Data: Clients
Filename: clients.csv
Filetype: Comma separated values (CSV)
The clients file provides all information related to clients that need to be available in Laurel to your timekeepers. The file must be formatted with the constraints outlined below.
CSV Example
id,callSign,description,name
1,1,General Client,General Client
Column Name | Data Type | Description |
id | string | Required: The client code identifier (sometimes set as externalId or client code). This can't be modified in future imports. |
callSign | string | Required: Generally, the client code (ex. |
description | string | Required: Generally, the name of the client (ex. Laurel Inc). It can be identical to the |
name | string | Required Generally the name or short-name of the client (ex. Laurel). |
2) Data: Initiatives
The initiatives file provides all information related to matters/projects that need to be available in Laurel to your timekeepers. The file must be formatted with the constraints outlined below.
Filename: initiatives.csv
Filetype: Comma separated values (CSV)
Note: We do not support restricted initiatives at this time.
CSV Example:
id,clientId,name,description,unitIncrements,callSign,billingType,status
1,1,General Matter,General Matter,360,00001,billable,active
2,1,Old General Matter,Old General Matter,360,00002,billable,inactive
3,1,Nonbillable General Matter,Nonbillable General Matter,360,00003,non-billable,active
Column Name | Data Type | Description |
id | string | Required: |
clientId | string | Required: |
name | string | Required: |
description | string | Required: |
unitIncrements | int | Required: |
callSign | string | Required: |
billingType | string | Optional: |
status | string | Optional: |
3) Data: Work Codes
The codes and code-types file provides all information related to billing codes that need to be available to be set in Laurel to your timekeepers. The file must be formatted with the constraints outlined below.
Filename: codes.csv
Filetype: Comma separated values (CSV)
CSV Example:
id,codeTypeId,name,description
A101,activity,A101,Plan and prepare for
Column Name | Data Type | Description |
id | string | Required: A unique identifier for this code, sometimes known as an externalId or the code itself. This can't be modified in future imports. |
codeTypeId | string | Required: The |
name | string | Required: A name, which in general is the code. For example, it may be |
description | string | Required: The description of the code. |
Filename: code-types.csv
Filetype: Comma separated values (CSV)
CSV Example:
id,name
activity,activity-code
Column Name | Data Type | Description |
id | string | Required: A unique identifier for this code type, sometimes known as an externalId. This can't be modified in future imports. |
name | string | Required: The type of code
Must be one of the following: |
Laurel Connect Export
As timekeepers use Laurel to track and release their time, released time data will be made available to firms on a hourly basis via an export file SFTP.
When not connected to a billing system, we provide multiple options to retrieve released time data:
For the more tech savvy, you have the option to integrate your system directly with our Laurel Connect Export API. Please contact us for API credentials and documentation
Have a scheduled export to the
export
folder which can be accessed using the same SFTP credentials provided for import.
For option #2, note the following
Export files will be formatted to Laurel's standard. You are able to customize this on request.
The export will occur daily
Export files will be available for 14 days before being deleted.
Please work with your Solutions Engineer to ensure you are able to access the export files. Firms will be required to translate export data for their upload into the billing system.
Note on export quotation escaping
For CSV exports we escape quotations using a outer quotes and double inner quotes. For example:
This is a "test" narrative for "Carl"
Will export as:
"This is a ""test"" narrative for ""Carl"""
Export File
The export file provides all information related to released time from timekeepers using Laurel. Each file is formatted as laid out below.
Filename: fromISOdate-TO-toISOdate.csv
Filetype: Comma separated values (CSV)
Column Name | Data Type | Description |
_id | string | A unique id for this entry in Laurel's db. It will usually look like an ObjectId such as |
clientId | string | The identifier for the Client assigned to time entry |
date | datetime | The date that the time entry was worked on; in ISO 8601 format (ex.: 2023-01-05T09:30+00Z ). Also known as "Transaction Date" in some systems. |
initiativeId | string | The identifier for the initiative assigned to time entry |
summary | string | The narrative assigned to time entry in text format with encoding considered |
unitIncrements | int | The initiative's increments in seconds (ex.: 360). |
unitIncrementsCount | int | The number of increments (ex: 3). The total duration in seconds is calculated by multiply this number by |
userId | string | Timekeeper identifier for which the time entry is assigned (ex.: 12) |
Here's a sample of an export with just the default headers:
We also expose other fields that you can request to be in the output or in lieu of the default fields.
Column Name | Data Type | Description |
clientCallSign | string | Generally, the client code (ex. |
clientName | string | Generally the name or short-name of the client (ex. Laurel). |
initiativeName | string | Generally, the name or short-name of the initiative (ex. General). |
totalDurationHours | decimal | The total duration for the entry in hours, rounded to 4 decimal places if increments are not used. |
totalDurationMinutes | decimal | The total duration for the entry in minutes, rounded to 4 decimal places if increments are not used. |
totalDurationSeconds | int | The total duration for the entry in seconds. |
Here's a sample of an export with some custom headers:
Additionally, the released entry may have some or many of the following codes if a timekeeper attached codes
Column Name | Data Type | Description |
phase-code | string | The phase code assigned to time entry, in non-description format if possible |
task-code | string | The phase code assigned to time entry, in non-description format if possible |
action-code | string | The action code assigned to time entry (ex.: A108). |
activity-code | string | The activity code assigned to time entry (ex.:). |
currency-code | string | The currency code assigned to time entry (ex.: ). |
location-code | string | The location code assigned to time entry (ex.: NYC1). |