Handling BOR Disputes: Contest Workflow, Resolution, and Account-Level History
How InsightUW manages Broker of Record contests through a structured modal workflow, a defined status state machine, and a searchable account-level history — replacing ad hoc emails and spreadsheet notes with auditable resolution.
The Problem
When an incumbent broker contests a Broker of Record change, most carriers enter a gray zone. The contest arrives as an email, gets forwarded to the underwriter, who replies to the operations manager, who updates a spreadsheet — maybe. There is no structured way to capture who contested, why, what the resolution was, or how it affects the grace period countdown. When regulators or auditors ask about a contested BOR from six months ago, the carrier scrambles through email archives and shared drives to reconstruct what happened.
Worse, the lack of a defined status machine means BOR records get stuck in limbo. Is this BOR still active? Was it denied? Did the countdown pause? Nobody knows without reading the email thread.
The InsightUW Approach
InsightUW provides a structured contest workflow with a dedicated modal interface (no JavaScript prompt dialogs), a defined status state machine with clear transitions, automatic countdown pausing, underwriter notification, and a searchable BORHistory log for account-level tracking. Every action creates an audit trail entry, and every resolution is captured with who decided, when, and why.
Status State Machine
The Bor model's status field follows a defined state machine with six possible values and controlled transitions:
| Current Status | Allowed Transitions | Trigger |
|---|---|---|
pending |
active |
Grace period start time reached |
active |
expired, contested |
Countdown reaches zero, or incumbent files contest |
expired |
completed, contested |
UW approves finalization, or late contest filed |
contested |
completed, denied, withdrawn |
UW resolves the contest |
completed |
— (terminal) | Broker change finalized |
denied |
— (terminal) | Contest upheld, BOR rejected |
withdrawn |
— (terminal) | New broker withdraws BOR request |
Invalid transitions are rejected by the API with a 400 Bad Request and a descriptive error message. The state machine is enforced server-side — the UI simply reflects allowed actions based on current status.
Contest Modal
When the "Contest" action is selected from the BOR detail modal, InsightUW opens a structured contest form — not a JavaScript prompt dialog. The modal captures:
| Field | Type | Required | Description |
|---|---|---|---|
| Contested By | Text input | Yes | Name of the party filing the contest (e.g., "Lockton Risk Advisors") |
| Contest Reason | Textarea | Yes | Detailed reason for the contest (e.g., "Valid appointment letter on file, signed BOR not received from insured") |
On submission, the system:
- Updates BOR status from
activeorexpiredtocontested - Records contested by and contest reason on the BOR record
- Pauses the grace period countdown (remaining time is frozen)
- Sends a critical (red) notification to the assigned underwriter
- Creates an audit trail entry:
bor_contested | {contested_by} | {reason} - Creates a BORHistory entry for account-level tracking
Contest Review and Resolution
The assigned underwriter reviews the contest from the BOR detail modal, which now shows the contest information prominently:
| Section | Content |
|---|---|
| Contest Banner | Red banner at top: "This BOR is contested by {contested_by}" |
| Contest Details | Contested by, reason, date filed |
| Resolution Actions | Three buttons: Approve & Finalize, Deny BOR, Mark as Withdrawn |
Each resolution action opens a confirmation modal with a required "Resolution Notes" field:
Approve & Finalize (status: completed)
The UW determines the new broker's BOR is valid despite the contest. The broker change is finalized, and the BOR moves to completed status. The incumbent broker's contest is overruled.
Deny BOR (status: denied)
The UW determines the contest has merit — the incumbent broker retains the account. The BOR is denied, the new broker is notified, and the account remains with the incumbent.
Mark as Withdrawn (status: withdrawn)
The new broker voluntarily withdraws the BOR request. This can happen when the new broker learns the insured did not actually sign the BOR letter, or when the contest reveals a valid existing appointment.
Account-Level History: BORHistory
Every BOR action — creation, status change, contest, resolution — generates a BORHistory record. This provides a complete, searchable history of all BOR activity for any given insured account.
| Field | Type | Description |
|---|---|---|
id |
Integer | Auto-increment primary key |
| bor id | ForeignKey | Link to the Bor record |
| insured name | String | Denormalized for search performance |
action |
String | bor_created, countdown_started, grace_expired, contested, approved, denied, withdrawn |
| performed by | String | User who performed the action |
details |
Text | JSON blob with contextual data (broker names, reason, notes) |
| created at | DateTime | Timestamp of the action |
History Tab
The BOR dashboard's "Account History" tab provides a searchable list of all BORHistory entries:
- Search by insured name — type-ahead search filters history entries by insured
- Chronological display — entries shown newest first with action badges
- Expandable details — click any entry to see full context (broker names, contest reason, resolution notes)
- Export — download history for an insured as CSV for compliance reporting
This is particularly valuable when an account has multiple BOR changes over time. The history tab shows every change, every contest, and every resolution in a single searchable view.
Audit Trail Integration
Every BOR action creates an audit trail entry in the standard InsightUW audit log:
Workers Compensation: Ironclad Construction Services
Scenario: Gallagher Specialty Group files a BOR letter to take over the Workers Compensation account for Ironclad Construction Services, currently brokered by Lockton Risk Advisors. The assigned underwriter is Jennifer Walsh.
| Field | Value |
|---|---|
| Insured | Ironclad Construction Services |
| LOB | Workers Compensation |
| Policy Number | POL-2026-WC-0893 |
| Incumbent Broker | Lockton Risk Advisors (Marcus Cole, m.cole@lockton.com) |
| New Broker | Gallagher Specialty Group (Anna Reeves, a.reeves@gallagher.com) |
| Grace Period | April 20 - April 25, 2026 |
| Assigned UW | Jennifer Walsh |
Timeline:
| Day | Event | Status | Action |
|---|---|---|---|
| Monday Apr 20 | BOR created | pending → active |
Jennifer notified: "Do not quote Gallagher" |
| Wednesday Apr 22 | Lockton files contest | active → contested |
Countdown paused at 2.0 days remaining |
| Wednesday Apr 22 | Jennifer reviews contest | contested |
Contest modal shows: "Lockton has valid appointment letter signed by insured on Jan 15, 2026. BOR letter from Gallagher not countersigned by insured." |
| Thursday Apr 23 | Jennifer denies BOR | contested → denied |
Resolution notes: "Lockton appointment verified via signed letter dated Jan 15, 2026. Gallagher BOR lacks insured countersignature. Account remains with Lockton." |
What the History Tab shows for "Ironclad Construction Services":
| Timestamp | Action | Performed By | Details |
|---|---|---|---|
| Apr 23, 10:30 AM | BOR Denied | Jennifer Walsh | Lockton appointment verified, Gallagher BOR lacks countersignature |
| Apr 22, 2:15 PM | BOR Contested | System | Contested by Lockton — valid appointment letter on file |
| Apr 20, 9:01 AM | Countdown Started | System | Grace period: Apr 20 - Apr 25 |
| Apr 20, 9:00 AM | BOR Created | System | Gallagher replacing Lockton, WC, Ironclad Construction |
What This Means for Underwriters
-
Structured contest capture — the contest modal with required "Contested By" and "Reason" fields replaces ad hoc emails and ensures every contest is recorded with full context from the moment it is filed.
-
Clear status machine — six defined statuses with controlled transitions eliminate ambiguity about where a BOR stands, and invalid transitions are blocked server-side so the UI always reflects reality.
-
Automatic countdown pause — when a contest is filed, the grace period countdown freezes immediately, preventing the BOR from expiring while the dispute is under review.
-
Account-level history — the BORHistory log and searchable History tab give underwriters a complete chronological view of every BOR change, contest, and resolution for any insured, across all time.
-
Auditable resolution — every contest resolution requires notes, every action creates an audit trail entry, and every status change is logged with who, when, and why — ready for regulatory review.
What's Next
In the next post, we will explore the BOR dashboard — how underwriters track every active countdown, filter BOR records by status, and manage their entire BOR book from a single page with summary cards, detail modals, and broker transition indicators.
InsightUW is an AI-powered underwriting workstation for P&C carriers. Request a demo to see the BOR contest workflow in action.