Skip to main content

ReportBeam (FTP)

This integration connects ReportBeam, an electronic citation system officers use in the field, with eCourtDate. On a recurring schedule, eCourtDate retrieves citation files from your ReportBeam file server over secure FTP and builds the full downstream record for every ticket: the citation, the violator's client profile, a case for each chargeable violation, the court hearing, and the payment. There is no manual entry between the traffic stop and the court record, and every run is safe to repeat.

Who Is This For?

This integration is designed for agencies that meet both criteria:

  1. Officers write citations in ReportBeam and the tickets are exported as CSV files.
  2. The exports land on a file server that eCourtDate can reach over secure FTP, with CSV citation files in a /CSV folder and matching ticket PDFs in a /PDF folder.

How It Works

Each sync run works through these steps for every agency with the integration enabled:

  1. Find enabled agencies: The sync looks up every agency with a ReportBeam integration configured and processes each one in turn.
  2. Check for new files: It connects to your ReportBeam file server over secure FTP and compares the CSV files in /CSV against the files already imported. Only new files are processed. A lookback window (7 days by default) and optional filename filters apply here.
  3. Archive the originals: Each new CSV is copied into eCourtDate's secure cloud storage before processing. When a ticket PDF with a matching filename exists in /PDF, it is stored with every citation from that file.
  4. Create citations: Each CSV row becomes one citation, keyed by its citation number. Rows whose citation number already exists are skipped, never duplicated. Warning tickets are stored, then immediately archived.
  5. Create or match the client: For non-warning citations, the violator becomes a client profile with name, date of birth, phone (saved as a text-message contact), and home address.
  6. Open the case or cases: Each chargeable violation on the ticket gets its own case with an auto-generated case number in your agency's format. Criminal citations keep their court-issued docket instead.
  7. Schedule the hearing: If the ticket lists a court date and time, a court event is created with your agency's default location, judge, and reminder flow.
  8. Bill the fine: Fines across all chargeable violations are combined into a single payment with a due date from your settings (30 days by default). Zero-dollar tickets are not billed.
  9. Report back: Designated staff receive a completion report with everything the run created, plus any errors. The report sends even when something fails.

This is a unidirectional integration: eCourtDate reads files from the ReportBeam server and does not write anything back to ReportBeam.

Entity Relationship

Every row of the ReportBeam export fans out into linked eCourtDate records. The citation is the anchor; everything else references it.

RecordPer CSV rowCreated when
Citation1The row has a citation number. Rows without a citation number are skipped.
Client0 or 1The citation is not a warning and the row has a violator first or last name.
Contact0 or 1The row has a violator phone number. It is saved on the client as the primary text-message contact, marked valid and opted in to notifications.
Address0 or 1The row has a violator street address. It is saved on the client as the home address.
Case0 or moreOne case per violation that has a statute number and is not marked warning-only. Criminal citations keep their court-issued docket and get no generated cases.
Court event0 or 1The row has both a court date and a court time that parse to a valid date.
Payment0 or 1The citation is newly created and the fines on its non-warning violations total more than zero.

Three write-backs keep the records consistent:

  • The client is linked onto the citation.
  • The first generated case number replaces the citation's case number. Criminal citations keep the court-issued docket from the file instead.
  • The payment reads its client and case number from the stored citation, so the payment matches whatever the client and case steps actually saved, including court dockets on criminal citations.

Field Mapping

Column names in the export are normalized before mapping: lowercased, with spaces and symbols replaced by underscores. Any column not listed below is preserved on the citation's data record, so nothing in the export is lost.

Citation

ReportBeam columnCitation fieldNotes
citation_numberReferenceRequired. Rows without a citation number are skipped. This is also the duplicate-detection key.
docketCase Number (initial value)Replaced by the first generated case number once cases are created. Criminal citations keep the docket.
ticket_type or f3_traffic_typeTypeticket_type wins when both are present. Falls back to the agency's default citation type, usually traffic.
stop_date + stop_timeIssued date and timeInterpreted in the agency's timezone and stored in UTC. issue_date is used when stop_date is missing, the time defaults to midnight when stop_time is missing, and the sync date is used when the row has no date at all.
iswarningWarning flagAny non-empty value marks the whole ticket as a warning. Warning citations are stored, then immediately archived.
f3_latitude, f3_longitudeGeolocationCoordinates of the stop.
f3_officer_notesOfficer notesAlso copied onto the court event as its notes.
(agency setting)StatusThe agency's default citation status, usually issued.

Violations

ReportBeam sends one numbered set of columns per charge (statute1_..., statute2_..., and so on) with no fixed limit. Every populated set becomes one violation on the citation.

ReportBeam columnViolation fieldNotes
statute{N}_numberStatuteRequired. A column set without a statute number is not captured as a violation.
base_fine{N}FineShown as the Presumptive Fine on the citation page in the agency app.
violation{N}_descriptionDescriptionAlso used as the description on the case and the court event.
warning{N}_checkboxWarning-only flagA warning-only violation gets no case and its fine is excluded from the payment.
intentional{N}_checkboxIntentional flagStored on the violation.

Violator Details

These columns are stored with the citation and used to build the client profile.

ReportBeam columnStored as
f3_violator_first_name or violator_first_nameFirst name. The f3_ version wins when both are present.
f3_violator_last_name or violator_last_nameLast name. The f3_ version wins when both are present.
violator_dobDate of birth, interpreted in the agency's timezone.
violator_phonePhone, saved as the client's primary text-message contact.
violator_dl_number, violator_dl_state, violator_id_typeID number, ID state, and ID type.
violator_address, violator_city, violator_state, violator_zipHome address.
violator_weight, violator_height, violator_race, violator_gender, violator_sexPhysical description.

Vehicle

Vehicle details are captured only when the row includes a VIN.

ReportBeam columnStored as
f3_vehicle_vinVIN. Required for any vehicle details to be captured.
vehicle_tagLicense plate.
vehicle_make, vehicle_model, vehicle_year, vehicle_colorMake, model, year, and color.

Client

Client fieldWhere it comes from
Client ReferenceThe citation number, not the driver's license number: every citation has a number, but not every violator has a license.
First Name / Last Name / NameThe violator name columns. A client is created only when the row has at least one of the two names.
Date of Birthviolator_dob.
GenderThe first letter of violator_gender, or of violator_sex when gender is missing.
RaceThe first two characters of violator_race.
LanguageAlways English (en).
TypeAlways defendant.
StatusAlways active.
Phone contactviolator_phone, saved as the primary text-message contact, marked valid and opted in to notifications.
Email contactNot created. The ReportBeam export does not carry a violator email address, so no email notifications are sent by this integration. Email reminders begin once an email contact is added to the client in eCourtDate.
Home addressviolator_address, violator_city, violator_state, violator_zip, saved as a home address.
Created ByThe integration's name from the Console.
Phone numbers and reminders

When the export carries violator_phone, text reminders work from the first sync with no staff action. If a ticket has no phone number, the client is still created; reminders begin once a contact is added to the client in eCourtDate.

Case

One case is created per chargeable violation. See Case Number Generation for how numbers are built.

Case fieldWhere it comes from
Case NumberAuto-generated in the agency's format, for example 26-T-0042. Criminal citations skip generation and keep the court-issued docket.
TypeThe citation's type.
StatusThe citation's status.
DescriptionThe violation's description.
Offense DescriptionThe violation's description.
Charge NumberThe violation's statute number.
Offense DateThe citation's issued date.
Created ByThe integration's name from the Console.

Court Event

Event fieldWhere it comes from
Date and Timecourt_date + court_time from the file, interpreted in the agency's timezone. If either is missing or unreadable, no event is created.
Event ReferenceThe citation number.
Case NumberThe first generated case number. Criminal citations use the court-issued docket.
DescriptionThe first violation's description.
NotesThe officer notes (f3_officer_notes).
Location, Portal, FlowThe location, portal, and messaging flow marked as the default for the agency.
TypeThe agency's Default Event Type setting.
JudgeThe agency's Default Judge setting.

Payment

Payment fieldWhere it comes from
AmountThe sum of base_fine{N} across all non-warning violations. Currency symbols and commas are cleaned off, and non-numeric values are ignored. No payment is created when the total is zero.
CitationThe citation number.
Client and Case NumberRead back from the stored citation, so the payment stays consistent even for criminal citations that keep their court-issued docket.
Issued DateThe citation's issued date, in the agency's timezone.
Due DateThe issued date plus the agency's Default Payment Due Date setting (30 days by default).
StatusThe agency's payment status setting, draft by default.
TypeThe agency's payment type setting.
FlowThe payment flow marked as the default for the agency.
Location and PortalThe location and portal marked as the default for the agency.
Payment ReferenceAuto-generated.

Case Number Generation

Generated case numbers follow the agency's configured format, for example 26-T-0042 (two-digit year, type letter, zero-padded sequence). The rules:

  • The type letter comes from the citation type. Types containing "game" or "wildlife" map to G, types containing "traffic" map to T, and types containing "violation" map to V. Other citation types are used as-is in the case number.
  • The number segment is sequential and zero-padded to the agency's configured length (4 digits by default), with an optional configured suffix.
  • The sequence restarts each year and is tracked separately per type, because the year and type letter are part of the number's prefix.
  • A number is never reused. The sequence seeds from the highest number already stored, including deleted cases, and every candidate number is checked against existing cases before it is issued.
  • The sequence can outgrow its padding. After 26-T-9999 comes 26-T-10000; the sequence does not wrap back to zero.
  • Criminal citations are excluded. A citation whose type contains "criminal" is numbered by the court system, so no case is generated and the citation keeps its court-issued docket. The court event is still created so notifications can fire.

The first generated case number is written back onto the citation as its case number.

How Warnings Are Handled

Warnings never create obligations for the person, at two levels:

  • A warning ticket (the iswarning column is set) is stored as a citation for the record, then immediately archived. No client, case, court event, or payment is created for it.
  • A warning-only charge (its warning{N}_checkbox is set) on an otherwise chargeable ticket is excluded from both case generation and the fine total. The rest of the ticket processes normally.

File Processing Rules

  • Folders: CSV citation files are read from /CSV under the configured path on your ReportBeam file server. Ticket PDFs are read from /PDF.
  • PDF matching: A PDF is attached to citations when its filename matches the CSV filename (for example tickets-0714.csv and tickets-0714.pdf). The PDF is stored with every citation that came from that CSV and appears under Attachments on the citation page.
  • New-file detection: The sync compares filenames in /CSV against the files already archived in eCourtDate's cloud storage. A file with a name that was already imported is never processed again, even if its contents changed. Corrected data must arrive under a new filename.
  • Lookback window: Files whose last-modified date is older than the configured window (7 days by default) are skipped. Setting the window to 0 disables the age filter. If the server does not report file dates, files are kept rather than dropped.
  • Filename filters: An optional keyword filter processes only files whose name contains the keyword, and an optional blockword filter skips files whose name contains the blockword. Both are off by default.
  • Row parsing: Column headers are normalized (lowercased, symbols become underscores). A row is parsed only when its column count matches the header row, so truncated or malformed lines are skipped.
  • Connection retries: A failed connection is retried up to 3 times with an increasing delay before the run is marked as Connection Failed in the completion report.

Sync Schedule

The sync runs automatically on a recurring schedule for every agency with the integration configured. The schedule is set by eCourtDate when the integration is configured and varies by customer; no agency action is needed after setup. Every new file inside the lookback window is processed in the same run.

Each run is independent and safe to repeat: anything already imported is recognized and skipped. See Duplicate Prevention and Safeguards.

Prerequisites

Gather the following before setup:

  1. Secure FTP credentials for your ReportBeam file server: host, username, password, port (21 unless your server uses another), and folder path.
  2. Confirmation that exports land in /CSV with PDFs in /PDF: PDF filenames should match their CSV filename so tickets attach to the right citations.
  3. Completion report recipients: one or more staff email addresses to notify after every run.
  4. Your case-number format and agency defaults: case number pattern, default citation type and status, default event type, judge, location, reminder flow, payment window, and payment type.

You must be a Super Admin user in eCourtDate to configure the integration in the Console. We recommend starting with a staging agency to validate the integration before enabling it in production.

Setup Steps

  1. Log in to the eCourtDate Console and open Integrations.
  2. In the Create Integration form, enter a name, choose the region, choose ReportBeam as the integration, and click Create.
  3. Click Edit next to the new integration and complete the form:
    • Default Agency: the agency where citations, clients, cases, events, and payments are created.
    • Alerts: comma-separated staff email addresses that receive notifications of potential issues with the integration.
    • HOST, USERNAME, PASSWORD, PATH: the secure FTP connection details for your ReportBeam file server.
    • NOTIFY COMPLETE: comma-separated staff email addresses that receive the completion report after every run.
  4. Click Save.
  5. Review the agency's behavior settings (timezone, case number format, default citation type and status, default event type and judge, payment window, payment status and type) in the agency's Admin > Settings page, and confirm the agency has a default location, portal, reminder flow, and payment flow. These defaults are stamped onto the court events and payments the sync creates.
  6. After the next scheduled run, confirm the integration's Last Active column on the Integrations page shows a recent time instead of NEVER, and review the completion report.
note

The sync also supports a nonstandard FTP port, filename keyword and blockword filters, and a custom lookback window. Provide those values to eCourtDate when setting up the integration.

note

The generic API fields on the integration form (API Base Endpoint, API Key, API Secret, API Version, Sync Frequency, Batch Size, Batch Time, API Endpoints) are not used by the ReportBeam sync. The ReportBeam schedule is managed by eCourtDate; see Sync Schedule.

Settings Reference

Connection Settings

These live on the integration record in the Console.

SettingWhat it doesDefault
hostHostname of the ReportBeam file server.None (required)
usernameSecure FTP username.None (required)
passwordSecure FTP password.None (required)
portSecure FTP port.21
pathRoot folder on the server. Files are read from /CSV and PDFs from /PDF under this path./
file_keywordOnly process files whose name contains this keyword.Off (all files)
file_blockwordSkip files whose name contains this word.Off
max_file_age_daysLookback window: files whose last-modified date is older than this many days are skipped. Set to 0 to disable the age filter. If the server does not report file dates, files are kept rather than dropped.7 days
notify_completeComma-separated staff email addresses that receive the completion report after every run. These are staff recipients, not violator contact data.Off (no report)

Agency Behavior Settings

These come from the agency's settings, configured in the agency's Admin > Settings page.

SettingWhat it doesDefault
TimezoneTimezone used to interpret every date and time on the ticket before storing in UTC.Agency timezone
Default Citation StatusStatus stamped on new citations.issued
Default Citation TypeFallback type when the file has no ticket_type or f3_traffic_type.traffic
Case Number LengthWidth of the zero-padded number segment in generated case numbers.4 digits
Case Number SuffixOptional suffix appended to generated case numbers.None
Default Event TypeType stamped on created court events.None
Default JudgeJudge name stamped on created court events.None
Default Payment Due DateDays between the citation's issued date and the payment's due date.30 days
Payment StatusStatus stamped on created payments.draft
Payment TypeType stamped on created payments.None
Default location, portal, and flowsThe location, portal, reminder flow, and payment flow marked as the default for the agency are attached to created events and payments.Agency defaults

Completion Report

After every run, each address in the integration's NOTIFY COMPLETE setting receives an email summary with a full PDF report attached. The report sends even when the run fails, so a silent failure never goes unnoticed.

The report includes:

  • Status: Completed, or Connection Failed when the file server could not be reached after 3 attempts.
  • Run details: agency, integration name, region, start time, end time, and duration, shown in the agency's timezone.
  • Summary counts: files processed, citations created, citations already existing, clients created, cases created, payments created, PDFs uploaded, and errors.
  • Per-file breakdown: each processed filename with its citation count and whether a matching PDF was found.
  • Errors: each error with the processing stage where it occurred and its message.

Duplicate Prevention and Safeguards

The sync is designed so a repeated run, a partial failure, or a re-sent file never corrupts your records. Every record type is checked before it is created:

RecordDuplicate check
FileThe filename is compared against the archive of already-imported files. A file with the same name is never processed twice, even if its contents changed.
CitationAn active citation with the same reference (citation number) in the same agency is skipped. Archived and trashed citations do not block a re-import.
ClientAn active client with the same client reference (the citation number) is reused instead of duplicated.
Case numberEvery stored case number, including deleted cases, is checked before a number is issued, so a case number is never reused.
Court eventAn active event with the same client, date, time, and event reference is skipped.
PaymentAn active payment for the same citation number is never billed twice, even when a previously archived citation is re-imported.

Additional safeguards:

  • Errors do not stop the run. A problem with one ticket or one file is logged, included in the completion report, and the job moves on to the rest.
  • Connection attempts retry up to 3 times with an increasing delay.
  • Everything is auditable. Original CSVs and ticket PDFs are archived in secure cloud storage, and all activity is counted in the completion report.
  • Client backfill: if a citation exists but has no linked client (for example, an earlier file was missing the violator's name), a later row with the same citation number links or creates the client, cases, and court event. It does not create a second payment.

Working with Synced Citations

Synced citations appear in the agency app (staging or production) on the Citations page, under the Payments section. The Created By column shows the integration's name, which makes synced citations easy to tell apart from manually entered ones.

On the Citations page you can search by reference, citation type, status, case number, portal, issued date range, and creator. Each citation opens into an edit page that shows everything the sync stored:

  • Citation details: reference, status, type, case number, issued date, officer name and badge number, and officer notes.
  • The stop's location, with address and map coordinates when the file included them.
  • Vehicle details when the file included a VIN.
  • Subject ID information: name, date of birth, ID type, number, and state, and address.
  • Violations, each with description, statute, presumptive fine, and a warning-only checkbox. A total fines summary appears below the list.
  • Attachments, including the ticket PDF when one was matched.
  • The linked client, with its case details and a link to the case.
  • A portal link and QR code the violator can use to enroll for citation notifications.

Manual edits are safe: the sync never updates a citation that already exists, so changes your staff make are not overwritten by later runs.

Troubleshooting

Work through these checks before opening a ticket:

  1. The integration shows NEVER under Last Active. The sync has not created any citations yet. Confirm the host, username, password, and path on the integration, and confirm CSV files exist in the /CSV folder on the server.
  2. The completion report says Connection Failed. The file server could not be reached after 3 attempts. Verify the credentials and port, and confirm the server allows FTP over TLS with passive connections from the internet.
  3. A file on the server was not processed. Check, in order: the file has a .csv extension inside /CSV; its name does not start with a dot; it passes the keyword and blockword filters; its last-modified date is inside the lookback window (7 days by default); and a file with the same name was not already imported. Corrected data must arrive under a new filename.
  4. A row in the file did not become a citation. The row must have a citation_number, and its column count must match the header row. Truncated or malformed lines are skipped.
  5. A citation has no client. The row was missing both violator name columns, or the ticket was a warning. Attach or create the client manually on the citation page; the sync also backfills the client automatically if a later file carries the same citation number with a name.
  6. No court event was created. The row was missing court_date or court_time, or the values did not parse as a valid date.
  7. No payment was created. The non-warning fines totaled zero, the ticket was a warning, or an active payment already existed for that citation number.
  8. The ticket PDF is not attached. The PDF filename in /PDF must exactly match the CSV filename in /CSV apart from the extension.

If you still need help, create a support ticket in the Console: sign in, click the Help button in the bottom-right corner, and complete the Create a Ticket form. Include the integration's name, the filenames involved, the citation numbers affected, the approximate time of the run, and the completion report if you received one.

Frequently Asked Questions

Does eCourtDate write anything back to ReportBeam? No. This is a unidirectional integration. eCourtDate reads files from the ReportBeam server and does not create, modify, or delete anything there.

What happens if the same file is exported twice? A filename that was already imported is skipped, even if the contents changed. To import corrected data, export it under a new filename. Citations in the new file that already exist in eCourtDate are still skipped individually, so a corrected file only adds what is missing.

How are tickets with multiple charges handled? Every populated statute column set (statute1_..., statute2_..., and so on, with no fixed limit) becomes a violation on the citation. Each violation that has a statute number and is not warning-only gets its own case, and all non-warning fines are combined into one payment.

How are criminal citations handled? A citation whose type contains "criminal" keeps its court-issued docket as the case number. No case numbers are generated for it, but the client, court event, and payment are still created so reminders and billing work.

Can staff edit a synced citation? Yes. Synced citations are fully editable on the Citations page in the agency app, and the sync never updates an existing citation, so manual changes persist.

What happens to CSV columns that are not in the field mapping? They are preserved on the citation's data record, so nothing in the export is lost.

Can the sync schedule be changed? The schedule is managed by eCourtDate and set per customer when the integration is configured. To adjust it, create a support ticket in the Console using the Help button in the bottom-right corner. The Sync Frequency field on the Console integration form is not used by ReportBeam.

What happens if a run fails partway through? Anything created before the failure stays, the errors are listed in the completion report, and the next run picks up where things left off. Duplicate checks on every record type make the re-run safe.