SFTP CSV File Imports

Prev Next

An SFTP server is available to enterprise plan users at no additional cost, providing a secure method for bulk importing data into Agility Blue. After connecting to the SFTP server, you can upload CSV files to designated folders monitored by the system. The folder you choose determines which object the data will be imported into—detailed instructions are provided below.

While importing data ad hoc is a common use case for uploading bulk information, the SFTP server is often used with automation tools to upload client, matter, and contact data on a scheduled basis, ensuring your information stays synchronized with matter management systems.

Connecting to the SFTP Server

For our enterprise customers, an SFTP CSV file import service is available . Contact support@sadiebluesoftware.com to request the credentials needed to connect to your instance.

Protocol: SFTP – SSH File Transfer Protocol
Port: 22
Logon Type: Normal/UserPass
Username, password, and host information will be provided by support.

Once connected, you will see a list of folders representing the objects where CSV files can be uploaded and imported.

Folder

Description

$logs

All activity recorded in the last 7 days. You can use the logs to view information about your imports or to help troubleshoot issues you’re having with uploading the data.

$processed

Files that have been processed and imported will be copied to this folder and retained for 7 days.

billingentries

Use this folder to import billing entry records.

billingnarrativetypes

Use this folder to import the workspace-level billing narrative types.

billingtypeproperties

Use this folder to import billing type properties. Billing type properties are the individual records that make billing profiles that can be set on a per client, matter, or project basis.

billingtypes

Use this folder to import the workspace-level billing types available to all billing profiles.

clients

Use this folder to import clients.

contacts

Use this folder to import contacts.

customobjects

Use this folder to import records for any custom object.

matters

Use this folder to import matters.

medialogentries

Use this folder to import media log entries.

mediatypes

Use this folder to import the workspace-level media types.

tags

Use this folder to import the workspace-level tags.

volumeranges

Use this folder to import volume ranges associated with existing volumes.

volumes

Use this folder to import volumes.

Notice

All SFTP connections are initially tested using WinSCP and FileZilla clients though you may use any client that supports the ability to connect to an SFTP service. Please note that while we can’t train or troubleshoot the use of these third-party clients, we will make sure you can get connected to the service.

Example: Connect to the SFTP Using the FileZilla Client

To connect to the SFTP using the FileZilla client, first make sure that you have FileZilla installed on your computer. You can find the latest version here.

After FileZilla has been installed, run it and click on the Site Manager button. This is the first button on the toolbar. Once the site manager is open you will see the following:

image.png

  • For Protocol, select "SFTP - SSH File Transfer Protocol"

  • For Host, enter in your specific host address that was provided to you by support

  • For Port, you can leave it blank, or put in 22 (the default port)

  • For Logon Type, select "Normal"

  • For User, enter in your specific username that was provided to you by support

  • For Password, enter in your specific password that was provided to you by support

Click on the "Connect" button. You may be presented with a "Unknown Host Key" window the first time you connect to your SFTP. If you do, click on the checkbox labeled "Always trust this host, add this key to the cache" and click the OK button to continue.

You should now see the following folders in the center bottom panel:

You have now successfully connected to the SFTP and can proceed to drag and drop your CSV files from your computer into the appropriate folder on the SFTP. Continue reading the existing sections for detailed information about the file format the SFTP service accepts.

General Import Guidelines

The CSV file may be named however you want to name it, It’s the folder the file is uploaded in that determines where they get imported. The CSV files do need headers with the field names. The service is setup to use the RFC-4180 standard with UTF-8 file encoding to import Quote-Comma delimited CSV files.

  • The service will not create references to other objects that don’t exist. For example, clients must already exist within the system in order to import matters that reference them.

  • Custom fields need to be named exactly as they appear within Agility Blue and must already exist before importing them. The service will not create fields that don't already exist.

  • Blank entries are interpreted as NULL values by the system.

  • Quotes around values are required if there are quotes or commas as part of the value itself. For example, the following value: ABC, Inc. (An “Alphabetical” Company) would need quotes around it: “ABC, Inc. (“Alphabetical” company)”.

  • Clients need to exist before importing new matters, so be sure to upload the clients file first. The system will queue files in the order they are uploaded and will perform imports one at a time.

  • The service will also not create references of any objects other than the one being imported into. Task, project, matter, or client references must already exist when other objects reference them.

  • Multiple choice values must be separated with an escaped newline character: \n

  • The service will create new entries or update existing entries based on the guidelines set forth for the object you are importing data into.

  • When creating new entries, fields that are omitted will be Null unless explicitly stated in the object’s field table.

  • When updating existing entries, fields that are omitted will be ignored. This allows you to patch-update specific fields in your CSV without having to worry about affecting the values of fields you aren’t providing.

Date Fields

In Agility Blue, you can pick between a date only field and a date and time field. When choosing these types of fields, the time being omitted or not refers to the formatting as they are displayed to end users in the browser, however, they are both stored with a time and time zone offset component regardless of which one is selected. If a date is provided without a time or time zone offset, they will default to UTC 00:00:00+00:00. Because of this, you should be mindful of how the time component can affect users that may exist in time zones other than UTC/GMT. Agility Blue will always display times local to the end user’s time zone based on their computer’s time zone setting. If you don’t want to have to worry about the time component for a date-only field, consider setting the time component to 12:00 noon so the dates don’t appear to shift around for daylight savings.

For example:

  • 2025-09-24 would represent as 7 PM on the 23rd of September, 2025 for someone viewing the date in Agility Blue where their computer is set to the Central Standard Time zone.

  • 9/24/2025 12:00 PM -05:00 or the ISO 8601-compliant 2025-09-24T12:00:00-05:00 would represent as Noon on the 24th of September, 2025 for someone viewing the date in Agility Blue where their computer is set to the Central Standard Time zone.

Reference Fields

You may import data into Reference fields using the following guide:

  • Values can only be referenced by their unique Agility Blue ID (the “Id” column in the app).

  • The IDs of the values being referenced must already exist within Agility Blue. If a value does not exist, it will be ignored.

  • Duplicate values are removed prior to import.

  • Existing values are replaced when updating data.

  • Multiple values must be separated with an escaped newline character: \n

The sample image below shows a "Billing Contacts" custom field that references the contact object. The values 12 and 28 within the data represent the Agility Blue Ids for two different contacts that already exist within the system. The last three records showcase how multiple values can be imported with the \n separator.

image.png

The results of this import in Agility Blue for the billing contacts field:

image.png

Folder Details

The following folders are available for you to import your data into. Each object has their own set of guidelines and rules to follow, so be sure to review them prior to uploading your file to help avoid issues from cropping up during the process.

$logs

The $logs folder is used by the system to place daily log files of activity. This is the place to go to check on the status of an import and to perform any troubleshooting. Any errors that ocurred during the import will be listed in the log file.

$processed

The $processed folder is used by the system to place previously processed files. Import files are held for up to 7 days and then removed.

billingentries

The billingentries folder is where you may place a CSV file that contains billing entry records.

CSV required fields to create new records:

  • "Billing Type Id" (Number-based), OR "Billing Type Billing Code" (Text-based), OR "Billing Type Description" (Text-based - The global billing type description, not an overridden profile description)

  • "Unit Price" (Decimal-based)

Optional fields:

  • "Client Id" (Number-based)

  • "Client Name" (Text-based)

  • "Client Reference" (Text-based)

  • "Matter Id" (Number-based)

  • "Matter Name" (Text-based)

  • "Matter Reference" (Text-based)

  • “Project Id” (Number-based).

  • "Task Id" (Number-based).

  • "Date" (Date-based).

  • "Quantity" (Decimal-based).

  • "Billing Type Description Override" (Text-based).

  • "Narrative" (Text-based).

  • "Notes" (Text-based).

  • Any custom fields defined for the object.

Rules:

  • If updating an existing billing entry, the "Billing Entry Id" field must be provided (a system-generated id in Agility Blue).

  • If the billing type needs to be updated on an existing billing entry, be sure to include the Billing Type Id field. If you only have the billing type code or description, each billing type id field should be empty or set to 0.

  • To associate a billing entry with an existing client, provide one of the following fields:

    • Client Id (a system-generated id located in Agility Blue)

    • Client Name

    • Client Reference

  • If the client needs to be updated on an existing billing entry, be sure to include the Client Id field. If you are only providing the client name or reference, each client id field should be empty or set to 0.

  • To associate a billing entry with an existing matter, provide one of the following:

    • The Matter Id (a system-generated id located in Agility Blue)

    • The Matter Name

    • The Matter Reference

    • The Client Id + The Matter Name (2 separate fields)

    • The Client Name + The Matter Name (2 separate fields)

    • The Client Reference + The Matter Name (2 separate fields)

    • The Client Id + The Matter Reference (2 separate fields)

    • The Client Name + The Matter Reference (2 separate fields)

    • The Client Reference + The Matter Reference (2 separate fields

  • If the matter needs to be updated, be sure to include the Matter Id field. If you are only providing the matter name or reference, each matter id field should be empty or set to 0.

  • To associate a billing entry with an existing project, the Project Id field must be provided (a system-generated id in Agility Blue).

  • To associate a billing entry with an existing task, the Task Id field must be provided (a system-generated id in Agility Blue).

  • If multiple association levels are present (client, matter, project, and task fields), the order of priority is bottom-up, meaning the task fields will get the highest priority.

  • If any provided association is not found or more than one instance is found for the association, the billing entry will not be created or updated and an error will be issued for the record.

billingtypeproperties

The billingtypeproperties folder is where you may place a CSV file that contains the individual billing types that make up a billing profile.

To identify which billing type to target, provide one of the following fields:

Field

Type

Details

Requirement

Billing Type Id

Number

Agility Blue Id field for billing types.

One of the fields in this table is required.

Billing Type

Text

A billing type description. This description must be how it appears at the highest workspace level (no overrides).

One of the fields in this table is required.

Billing Code

Text

A billing type billing code.

One of the fields in this table is required.

To identify what type of object it is, provide the Object field:

Field

Type

Details

Requirement

Object

String

Must be one of these values:

  • Client

  • Matter

  • Project

Required

To identify the targeted parent client, matter, or project billing profile, use the following field table:

Field

Type

Details

Requirement

Id

Number

An Agility Blue Client Id, a Matter Id, or a Project Id. Which Id to use is based on the object being targeted.

See notes below.

Client Name

Text

The client’s name. Allowed when targeting a client or matter.

See notes below.

Client Reference

Text

The client’s reference. Allowed when targeting a client or a matter.

See notes below.

Matter Name

Text

The matter’s name. Allowed when targeting a matter.

See notes below.

Matter Reference

Text

The matter’s reference. Allowed when targeting a matter.

See notes below.

Notes:

  • If you are providing an Id, do not provide any of the other fields from this table.

  • If you are targeting a client billing profile, you can provide the Client Name and/or the Client Reference fields to help identify your client.

  • If you are targeting a matter billing profile, you can provide any combination of Client Name, Client Reference, Matter Name, and/or the Matter Reference fields to help identify your matter.

  • If you are targeting a project billing profile, you must provide the project’s id as the Id field.

To update properties of a billing type, refer to the following table:

Field

Type

Details

Requirement

Description

Text

Used to override a billing type’s description.

Optional

Unit Price

Decimal

Used to override a billing type’s unit price.

Optional

Visible

Boolean

Used to override a billing type’s visibility. Visibility helps control whether the billing type is available when a billing entry is being created. Acceptable values: True, False, Yes, No, 1, 0.

Optional

Notes:

  • If you don’t need to update a billing type property field, such as the description or visibility, you don’t need to include it in the CSV file

Example

Object,Billing Type,Client Name,Unit Price,Visible
Client,Processing,"ABC Mfg., Inc.",3.75,Yes
Client,Tech Data Processing: EDD Indexing,"ABC Mfg., Inc.",,No
Client,Processing,Beta Manufacturing Ltd.,3.95,Yes
Client,Tech Data Processing: EDD Indexing,Beta Manufacturing Ltd.,,No

Points of interest related to this example

  • This example showcases how a CSV file could look like that for updating a couple of clients with billing types prices and visibility.

  • In this example, there are 2 clients, one named "ABC Mfg., Inc." and another named "Beta Manufacturing Ltd.". Since they are clients, we provide "Client" as the object, and we're interested in updating 2 billing types that are found on their profiles: "Processing" and "Tech Data Processing: EDD Indexing". For processing, we're updating the unit price with different amounts and we're turning off the visibility for tech data processing.

billingtypes

The billingtypes folder is where you may place a CSV file that contains billing type records to import using the following field table.

Field

Type

Details

Requirement

Description

Text (Unique with Unit)

The billing type description. The description combined with the unit make up a unique billing type.

Required

Unit

Text (Unique with Description)

The billing type’s unit (e.g. “Hour”, “GB”, etc.). The unit combined with the description make up a unique billing type.

Required

Code

Text

The billing type code.

Optional

Category

Text

The billing type category.

Optional

Standard Unit Price

Decimal

The billing type standard unit price.

Optional

Date Required

Boolean

Indicates that the billing entry date is required when a user chooses the billing type. Acceptable values: True, False, Yes, No, 1, 0.

Optional

Narrative Required

Boolean

Indicates that the billing entry narrative field is required when a user chooses the billing type. Acceptable values: True, False, Yes, No, 1, 0.

Optional

Visible

Boolean

Indicates if the billing type is visible in the billing types selection list. Visibility helps control whether the billing type is available when a billing entry is being created. Acceptable values: True, False, Yes, No, 1, 0.

Optional (defaults to True)

Guidelines

  • The system requires that billing types are unique when the billing type description and unit match.

  • When updating existing billing types, you must provide the Description and Unit fields. Any other field not provided is ignored (data is not overwritten unless you explicitly provide the field).

Example

Description,Unit,Category,Standard Unit Price,Date Required,Narrative Required,Visible
Consulting,Day,Time Entry,2000,Yes,Yes,Yes
Hourly Technical Work,Hour,175,Yes,Yes,Yes
Processing,GB,3.50,Yes,No,Yes

Points of interest related to this example

  • The first 2 records (Consulting and Hourly Technical Work) already exist in the workspace and we are updating the Standard Unit Price, Date Required, Narrative Required, and Visible fields for those records.

  • The last record (Processing) does not exist in the workspace, so it will be created.

clients

The clients folder is where you may place a CSV file that contains client records to import using the following field table.

Field

Type

Details

Requirement

Client Id

Number

Agility Blue Id field for clients.

Optional

Client Name

Text (Unique)

The name of the client. This field is required and must be unique.

Required

Client Reference

Text

A reference identifier for the client. Can be used to update existing clients.

Optional

Active

Boolean

Indicates if the client is active. Acceptable values: True, False, Yes, No, 1, 0. Defaults to True if not provided.

Optional

Custom Fields

Varies by definition

Any custom fields defined for the object. Ensure the column name in the CSV matches exactly to the field name in Agility Blue.

Optional

Guidelines

  • The system requires that all client names must be unique.

  • When updating existing clients, you may provide either the Client Name field or the Client Reference field to locate an existing entry.

Example

Client Name,Client Reference,Client Address,Status
AGM Widget Corporation,1024,"123 Main Street, Somewhere, USA",Active
Frederick Construction Co,1025,"555 Everywhere, Nowhere, USA",Held
Omega Glass Company,1026,,Archived

Points of interest related to this example

  • There are 2 custom fields defined on the client object that we are importing data into (shown in purple text above for clarity): Client Address (a rich text field), and Status (a single choice field).

  • For the 3rd entry (Omega Glass Company), the Client Address field will be imported as Null, because there is no text being provided.

  • Note that the Client Address field is surrounded by double quotes because the value contains commas (shown more clearly on the Text tab).

contacts

The contacts folder is where you may place a CSV file that contains contact records to import using the following field table.

Field

Type

Details

Requirement

Contact Id

Number (Unique)

Agility Blue Id field for contacts.

Optional

Email

Text (Unique)

The contact’s email address. This field is required and must be unique.

Required

First Name

Text

The contact’s first name.

Optional

Last Name

Text

The contact’s last name.

Optional

Phone Number

Text

The contact’s phone number.

Optional

Enable Notifications

Boolean

Enables project notifications for a contact. Acceptable values: True, False, Yes, No, 1, 0. Defaults to False if not provided. Be sure to understand what kind of information is sent to an external user when this is enabled.

Optional

Time Zone Identifier

Text

Windows Time Zone Name. If the contact has notifications enabled, setting their time zone may be useful for dates displayed in the email if they are not in the workspace-defined time zone (examples: “Eastern Standard Time”, “Central Standard Time”, etc.).

Optional

Custom Fields

Varies by definition

Any custom fields defined for the object. Ensure the column name in the CSV matches exactly to the field name in Agility Blue.

Optional

Guidelines

  • The system requires that all email addresses must be unique.

  • When updating existing contacts, you must provide the Email Address field to locate an existing entry.

Example

Email,First Name,Last Name,Office Location,Skills
abutler@abdemo.com,Adele,Butler,Minneapolis,1
dtayler@agilitybluedemo.com,Donna,Taylor,Dallas,1\n2

Points of interest related to this example

  • There are 2 custom fields defined on the contact object that we are importing data into (shown in purple text above for clarity): Office Location (a single choice field), and Skills (a custom object reference field).

  • The Skills object reference field requires the Id to reference the objects. For multiple values, a \n (escaped new-line character) must separate the them. In the example, the custom object Skill has Document Review for entry Id 1 and Analytics for entry Id 2. For more details, read the section on Reference fields.  

customobjects

The customobjects folder is where you may place a CSV file that contains custom object entry records to import using the following field table.

Field

Type

Details

Requirement

Object Id

Number

The object’s Id (not the record Id). This is necessary so the system understands which custom object you want to import data into.

Required

Id

Number (Unique)

The Agility Blue ID field for an entry. Necessary for updating existing entries.

Optional

Custom Fields

Varies by definition

Any custom fields defined for the object. Ensure the column name in the CSV matches exactly to the field name in Agility Blue.

Optional

Guidelines

  • The required Object Id field is used to determine which custom object the data belongs to. This value should be the same for every record in the CSV (do not mix and match object ids). To locate your object id within the app within your workspace: click on the settings gear icon on the top right navigation bar, and choose Objects. Ensure that the Id field is in view - this will be the value you use for each CSV record.

  • This folder is only for creating/updating custom object entries. Do not try to use system object ids - it won't work.

  • If updating existing custom object entries, the Id field must be provided (a system-generated id in Agility Blue). No other fields may be used to identify an existing custom object entry.

Example

Object Id,Name,Notes,Locations,Media Log Entries
14,Mary White,"Custodian Imported on 1/1/2025",MN,62
14,Casey Copeland,"Custodian Imported on 1/1/2025<br />Imported by R.C.W.",MN\nFL,13\n14

Points of interest related to this example

  • In this example, we’ve created a custom object in Agility Blue named Custodian that has been assigned an object id of 14. We’ve created the following fields:

    • Name, a basic text field that we indicate as the reference link field.

    • Notes, a rich text field to store information about a custodian.

    • Locations, a multiple choice field used to indicate where a custodian resides.

    • Media Log Entries, a media log entry reference field where we link media log entries that a custodian is associated with.

  • Note that we are using the same object, 14, for each record in the CSV to tell Agility Blue which custom object it is we’re interested in importing data into.

  • On the second record (Casey Copeland), for the notes field, you may notice the text <br /> - this is an HTML line break character that causes the browser to show information on a separate line. Rich text fields may contain some HTML to help format data.

  • The multiple choice Locations field requires a \n (escaped new-line character) to separate the values.

  • The media log entry object reference field requires the Id to reference the objects. For multiple values, a \n (escaped new-line character) must separate the them. For more details, read the section on Reference fields.  

matters

The matters folder is where you may place a CSV file that contains matter records using the following field table. The service does not create clients that do not already exist, so it's important to import clients first so that they exist for the matters to reference.

Field

Type

Details

Requirement

Matter Id

Number

Agility Blue Id field for matters.

Optional

Matter Name

Text, Unique per Client

The name of the matter. This field is required and must be unique per client.

Required

Matter Reference

Text

A reference identifier for the matter. Can be used to update existing matters.

Optional

Client Id

Number

Agility Blue Id field for clients. Can be used to associate an existing client.

Optional

Client Name

Text (Unique)

The name of the client. Can be used to associate an existing client.

Optional

Client Reference

Text

A reference identifier for the client. Can be used to associate an existing client.

Optional

Active

Boolean

Indicates if the client is active. Acceptable values: True, False, Yes, No, 1, 0. Defaults to True if not provided.

Optional

Custom Fields

Varies by definition

Any custom fields defined for the object. Ensure the column name in the CSV matches exactly to the field name in Agility Blue.

Optional

Guidelines

  • The system requires that all matter names are unique per client, meaning you may have the same matter name across different clients but you cannot have duplicate matter names on the same client.

  • Because matters require an existing client to be associated with. You may provide any one of the following fields. If this field is not provided, or the client does not exist, an error will be logged.

    • Client Name

    • Client Reference

    • Client Id

  • When updating existing matters, you may provide either the Matter Name field or the Matter Reference field to locate an existing entry.

Example

Matter Name,Matter Reference,Client Name,Status,ESI Protocol Available,Billing Contact Email
AGM Widget Corp. vs. MGM Manufacturing Inc.,000001,AGM Widget Corporation,Open,Yes,abutler@abdemo.com
Moonrise vs. Johnson Analytics,000001,Frederick Construction Co,Open,Yes,dtayler@agilitybluedemo.com
"National Fencing v. Epsilon Construction, et al.",000002,Frederick Construction Co,Open,No,econnor@agilitybluedemo.com

Points of interest related to this example

  • There are 3 custom fields defined on the matter object that we are importing data into (shown in purple text above for clarity): Status (a single choice field), ESI Protocol Available (a yes/no field) and Billing Contact Email (a basic text field).

  • We are providing the Client Name field to associate these matters with to the existing clients in the system.

  • Note that the Matter Name field is surrounded by double quotes for the 3rd entry (National Fencidng v. Epsilon Construction, et al.) because this value contains commas (shown more clearly on the CSV tab).

medialogentries

The medialogentries folder is where you may place a CSV file that contains media log entry records.

CSV required fields to create new records:

  • "Media Type Id" (Number-based) OR "Media Type Name" (Text-based)

Optional fields:

  • "Client Id" (Number-based)

  • "Client Name" (Text-based)

  • "Client Reference" (Text-based)

  • "Matter Id" (Number-based)

  • "Matter Name" (Text-based)

  • "Matter Reference" (Text-based)

  • "Project Id" (Number-based)

  • "Task Id" (Number-based)

  • "From" (Text-based)

  • "To" (Text-based)

  • "Reference" (Text-based)

  • "Location" (Text-based)

  • "Custodian" (Text-based)

  • "Notes" (Text-based)

  • "Date" (Date-based)

  • Any custom fields defined for the object.

Rules:

  • Any combination of system fields may be used for the purposes of updating existing media log entries.

  • If the media type needs to be updated on an existing media log entry, be sure to include the MediaTypeId field. If you only have the media type name, each media type id field should be empty or set to 0.

  • To associate a media log entry with an existing client, provide one of the following fields:

    • Client Id (a system-generated id located in Agility Blue)

    • Client Name

    • Client Reference

  • If the client needs to be updated on an existing media log entry, be sure to include the ClientId field. If you are only providing the client name or reference, each client id field should be empty or set to 0.

  • To associate a media log entry with an existing matter, provide one of the following:

    • The Matter Id (a system-generated id located in Agility Blue)

    • The Matter Name

    • The Matter Reference

    • The Client Id + The Matter Name (2 separate fields)

    • The Client Name + The Matter Name (2 separate fields)

    • The Client Reference + The Matter Name (2 separate fields)

    • The Client Id + The Matter Reference (2 separate fields)

    • The Client Name + The Matter Reference (2 separate fields)

    • The Client Reference + The Matter Reference (2 separate fields

  • If the matter needs to be updated, be sure to include the MatterId field. If you are only providing the matter name or reference, each matter id field should be empty or set to 0.

  • To associate a media log entry with an existing project, the Project Id field must be provided (a system-generated id in Agility Blue).

  • To associate a media log entry with an existing task, the Task Id field must be provided (a system-generated id in Agility Blue).

  • If multiple association levels are present (client, matter, project, and task fields), the order of priority is bottom-up, meaning the task fields will get the highest priority.

  • If any provided association is not found or more than one instance is found for the association, the media log entry will not be created or updated and an error will be issued for the record.