Retry Strategy for API Consumption (Exponential Backoff + Jitter)
To handle temporary failures when consuming an API, a retry strategy combining the following was implemented:
Exponential Backoff: Progressively increases wait times between retries (e.g., 10s, 15s, 20s), reducing API load and allowing recovery.
Jitter: Adds randomness (±0.5s) to retry intervals, preventing the thundering herd effect in distributed systems.
Retry Limit: By default, a maximum of 3 retry attempts before marking the process as failed.
Error Classification & Handling
Errors are categorized into 4 types, each with specific handling:
Note: Errors that cannot be processed (with or without retries) are stored in the database for client review.
Error Visibility & Management
Errors can be viewed in:
Error Handling Workflow
Case 1: Incident Export Failure
Validation Failed:
Retries Exhausted:
Case 2: Station/Unit Export Failure
2. Workflows - Add Conditional Logic for Time-Based Fields
- Enables advanced time-based conditional logic within Workflows, similar to existing functionality in ePCR.
How it works:
You can now configure Workflows with the following new conditional options for Date/Time fields:
Greater Than Constant Datetime Between Fields
Greater Or Equal Than Constant Datetime Between the Field and the Current Time
Greater Or Equal Than Constant Datetime Between Fields
Less Than Constant Datetime Between Fields
Less Or Equal Than Constant Datetime Between Fields
Less Or Equal Than Constant Datetime Between the Field and the Current Time
These conditions can be applied when defining workflow rules, enabling more granular control over when actions are triggered based on time intervals.
3. Workflows - Add parameter for Times
- Introduced support for a new workflow parameter that allows referencing only the Time portion of a DateTime (dttm) field, without requiring the full Date and Time input.
How it works:
A new configuration option is introduced within the workflow parameter setup UI.
When defining a workflow, users can select to reference only the Time component of a dttm field.
If the Time-only option is used, the system ignores the Date component when evaluating the condition.
This allows for cleaner, more targeted logic in workflows that are time-sensitive but not date-dependent.
For workflows requiring both Date and Time, the existing parameter setup remains unchanged.
4. OIC Logic
- Enhances the Officer In Charge (OIC) workflow to support scenarios where no department apparatus records an "arrive on scene" time, ensuring accurate OIC assignment.
How it works:
When enabled via settings, the system checks for scenarios where no apparatus has logged an "arrive on scene" time.
If at least one apparatus has a "cleared time" but none have an "arrive on scene" time, the system uses the earliest cleared time to determine the OIC based on the established hierarchy.
If an "arrive on scene" time is later recorded for any apparatus, the OIC is re-evaluated and updated accordingly.
5. Ensure Accurate Printing of All NERIS Fields
- Enhance the print functionality to ensure all newly added and updated NERIS fields are correctly captured and formatted across report types, while maintaining legacy NFIRS behavior for previously authorized reports.
How it works:
The backend print logic has been updated to dynamically include any new NERIS fields introduced.
The system checks the report type and status:
If the report was authorized under NFIRS, the print output will exclude any NERIS-specific data and mirror the legacy NFIRS format.
If the report is under NERIS, all new fields will be printed and formatted according to updated specifications, ensuring complete data capture.
6. Pull Riding Position from Scheduling
- Automatically populate riding positions from the Scheduling module when the "Tie Personnel from Scheduling into NFIRS" setting is enabled.
How it works:
Speak with your Client Success Manager to ensure that "Tie Personnel from Scheduling into NFIRS" is enabled, the system then pulls riding positions from the Scheduling shift board.
For each personnel assigned to a shift, their riding position will be automatically populated based on the Scheduling data.
Create riding positions within Fire Incident Setup > Response > Riding Positions
Once created within Scheduling > Setup > Edit / Create Assignment > assign positions
If the setting is not enabled, users must continue to manually assign riding positions as done previously.
The master list of riding positions is still maintained in the existing Fire Documentation configuration area.