New Features and Enhancements
Claims Summary in the Claims AI Copilot (BC-22294)
Getting oriented on a claim meant reading the full file, since the loss description, adjuster notes, exposures, and payment activity lived in separate places with no consolidated view. The Claims AI Copilot now generates a written summary of the claim on the claim itself, covering what happened and what has been done so far, and regenerates it as new activity is added.
Policy Summary in the AI Copilot (BC-20789)
Understanding what a policy covers meant reading through the declarations and coverage screens and assembling the picture manually. The AI Copilot now provides a written policy summary covering the insured, applicable coverages, limits, deductibles, and endorsements. The summary appears on the policy itself and in the claim section that describes the policy, so an adjuster can confirm coverage without leaving the claim.
Validation for Commission Adjustment Dates (BC-24397)
The commission adjustment entry placed no upper bound on its period end date, so a future-dated or mistyped period could create a commission payable dated years away. BriteCore added validation that rejects a period end beyond the current month and a start date later than the end date, preventing accidental future-dated commission entries.
Payment Distribution Rules Settings and Automatic Application (BC-24375)
Rules for automatically handling overpayments and underpayments could previously only be edited as raw configuration, and the Daily Cash Receipt screen still sent every over- or underpayment for manual distribution even when a rule already covered it. BriteCore added a Settings editor for these payment distribution rules, expanded the conditions they can match to include policy status, and now lets a matching rule apply automatically.
12-Hour Time Display for Claim Note Alerts (BC-24560)
The Add Alert and Edit Alert dialogs under Claims Notes were the last place in the product that captured time in 24-hour format. The alert time now displays in 12-hour AM/PM format while still storing the time accurately, making alerts easier to set and read.
Audit Trail for Flag Changes on Policies, Claims, Contacts, and Properties (BC-24391)
Setting a flag on a policy, claim, contact, or property, and the way that flag cascades to related records, was not recorded anywhere, so support could not tell who set a flag or why a related record became flagged. BriteCore now writes a system note on each affected record whenever a flag changes, capturing who made the change and which record triggered the cascade.
Faster Notes Loading Across Policies, Claims, and Reports (BC-24541)
Notes lists retrieved the entire history for a record on every request instead of only the page being shown, which made notes pages slow to load on accounts with large note volumes. BriteCore added indexing and paged the query so it reads only what it returns. Notes now load quickly even on the largest accounts.
Faster Quote to Bind Report Execution (BC-24658)
The Quote to Bind reports resolved the newest revision of each policy term with a query that re-sorted data for every candidate row, producing very long run times on large books that could exceed three hours. BriteCore added an index tuned to that lookup, and the reports now complete substantially faster.
Bug Fixes
Complete Commission Totals for Ranges Spanning a Year or More (BC-24396)
When a commission date range covered twelve months or more, an error in the month calculation could drop up to twenty-three months of exported commission from the totals. BriteCore corrected the calculation so every month in the range is counted, and commission exports and reports now report the full amount for long date ranges.
Complete Multi-Year Commission Projections and Faster Agent Portal Listing (BC-24421)
Forward-looking commission projections that spanned more than one year could silently drop months that shared a calendar month with another year, and the agent portal's commission listing recalculated commissions once for every policy. BriteCore corrected the projection to track each year and month distinctly and reworked the listing to calculate all policies in a single pass. Multi-year projections are now complete and the agent portal listing loads faster.
Accurate Commission Statement Totals for Multi-Branch Agencies (BC-24385)
When an agency spanned more than one group branch, such as after a mid-period group change, each branch's commission statement printed the full agency-wide total instead of the total for that branch. BriteCore now scopes report and year-to-date totals to each agency and group branch, so every statement reflects only the amounts that belong to it.
Quote Report Links Open in a New Tab (BC-24742)
In the admin quote wizard, clicking a driver's Motor Vehicle Report or another attachment link navigated the entire window away to the attachment, removing the user from the quote with no way back. These report and attachment links now open in a new tab, so users stay in the quote while reviewing the document.
Multi-Rule Suspensions No Longer Hide Available Policy Types (BC-24614)
A suspension that combines conditions, such as a ZIP code together with a policy type, is meant to apply only where all of its conditions match, but the policy-type pickers in the agent experience and the quote wizard treated any single matching condition as a full suspension and hid policy types that should have remained available. BriteCore corrected the pickers to honor the combined conditions, so policy types are suppressed only where every condition of a suspension applies.
Valid Quotes No Longer Rejected by Mandatory Coverage Value Copying (BC-24429)
When the unified quote engine automatically added a mandatory coverage item, it copied an answer from any item sharing the same category name without checking the value was valid for the receiving item, and because category names are not unique across items, the borrowed value could fail validation and reject an otherwise valid quote. BriteCore now copies a value only when the receiving item accepts it, so these quotes rate successfully.
Mortgagees Remain Visible After Refreshing the Quote Wizard (BC-24488)
On the Mortgagees step of the quote wizard, mortgagees added to a policy disappeared from the step after a page refresh, showing none were added even though the data was retained. BriteCore now reloads the saved mortgagees on refresh, so they remain visible.
Billing Contact Validated Before Policy Number Assignment (BC-24699)
When committing a revision, the newer commit process assigned a policy number and marked the application before confirming that the term's billing contact was valid, which could advance the policy number sequence for a revision that then failed validation. BriteCore moved the billing contact check to the start of the commit, so a policy number is assigned only after validation passes.
Inland Flood Refresh Persists Only for the Current Address (BC-24559)
When a property address was saved, a deferred inland flood evaluation could run afterward and commit vendor results, or remove Inland Flood Coverage, for an address the property no longer had if a second address save landed in between. BriteCore now persists the inland flood refresh only when it still matches the property's current address.
Reduced Locking During Property Address Edits (BC-24552)
Editing a property's ZIP code held a database lock on the policy revision across an external geocoding call and a search index write, which could block other work on that revision. BriteCore deferred that write until the external calls complete, releasing the lock sooner and reducing contention during address edits.
State Changes Trigger an Inland Flood Coverage Refresh (BC-24538)
On accounts with multi-state properties enabled, changing only a property's state did not re-evaluate inland flood standing, so cached eligibility could keep an ineligible Inland Flood Coverage line item attached. BriteCore now treats a state change as an address change and refreshes inland flood coverage when the state is edited.
Duplicate County Prevention in Business Locations Settings (BC-24402)
The Business Locations settings screen and the county reload path allowed a state's county list to save with duplicate counties, colliding codes, or malformed identifiers, with no uniqueness validation, causing downstream data-integrity problems. BriteCore added validation, so counties save with unique names, codes, and identifiers, and stopped the tools that could create duplicate county records.
Location Numbers Renumber When a Building Group Is Removed (BC-24743)
With property grouping enabled, deleting the only building at a Location removed the group but left the higher Locations at their original numbers, leaving a permanent gap that carried into every later revision. BriteCore now renumbers the remaining Locations when a building group is removed, matching the behavior of the location-level delete.
A Stalled Renewal No Longer Halts the Nightly Renewal Batch (BC-24724)
During nightly renewal processing, a single policy whose eligibility check never returned could consume the entire time budget and abort the whole batch. BriteCore now isolates a stalled eligibility check and continues processing the remaining renewals, so one policy cannot stop the nightly run.
Cancellation Retry Recognizes the Term Where the Cancellation Landed (BC-24692)
When an immediate cancellation's effective date fell outside the requested term, the cancellation was recorded on the term containing that date, but a retry looked for the existing cancellation on the originally requested term and missed it, producing a user-facing error. BriteCore now checks for the canceled revision on the term where the cancellation actually landed, so retries are recognized.
Final Cancellation Completes for Policies in Cancellation Pending (BC-24685)
When a policy already had a committed Cancellation Pending revision with the same date and reason, a final cancellation treated the policy as already canceled and did nothing, leaving it stuck in Cancellation Pending with no canceled revision. BriteCore no longer treats a Cancellation Pending revision as proof of cancellation, so the final cancellation completes.
Reliable Default Primary Property Assignment Under Concurrent Edits (BC-24544)
When a revision had no primary property set, two simultaneous edits could each find the slot empty and both write to it, with the second overwriting the first while both reported success. BriteCore now fills the default primary property with a guarded update, so concurrent edits no longer conflict.
Location Deletion Works After Import When Property Grouping Is Disabled (BC-24551)
On accounts with property grouping disabled, importing a revision copied each property's group reference but did not recreate the matching group record on the new revision, leaving property references pointing at an older revision and causing location deletion to fail. BriteCore now remaps property groups on import, so location deletion works on the imported revision.
Payment Method Import Records the Correct Processing Integration (BC-24675)
When importing a stored payment method, BriteCore recorded the payment processor integration from the most recent unrestricted response rather than the one that owns the method, which could tie a payment method to the wrong processor. The import now records the owning integration, keeping stored payment methods bound to the processor that manages them.
Fallback Charges Blocked on Processor-Owned Payment Methods (BC-24674)
When no payment processor integration was connected, a charge could fall back to a default path that bypassed the ownership check, allowing a payment method tied to one processor to be charged through another. BriteCore now refuses that fallback charge for processor-owned payment methods, so charges run only through the processor that owns the method.
Pending Payment Approvals Bound to the Owning Integration (BC-24669)
The endpoints that approve or decline a pending payment validated the calling integration but did not confirm that it owned the payment being acted on, so one payment integration could approve or decline a payment belonging to another. BriteCore now binds each approval and decline to the integration that owns the payment.
Named Insureds With an Agency Role Can Select Their Own Payment Method (BC-24491)
When a contact both held an agency role and was the named insured on a policy, their own payment methods did not appear in the recurring and automatic payment options, because the contact was treated only as agency-billed. BriteCore now includes the contact's own payment methods in that case, so they can be selected for recurring and automatic payments.
Reinstatement From Cancellation Pending Updates Policy Status (BC-24272)
A policy that fully paid off a Cancellation Pending, Non-Payment balance could remain shown in that status even though the system logged that it had been reinstated, because the status was written to the account history without being saved to the policy. BriteCore restructured the reinstatement so the policy status is set to Active when the balance is cleared.
Pending Payment Settlement Listing Scoped to the Calling Integration (BC-24711)
The endpoint that lists pending payments for settlement validated the calling integration but then returned every pending payment on the account, so one payment processor could see another processor's pending payments. BriteCore now scopes the listing to the integration that made the request.
Committing a Due Cancellation Pending Revision No Longer Reactivates the Policy (BC-24697)
Committing an open revision on a policy in Cancellation Pending, Non-Payment whose cancellation date had already passed could silently return the policy to Active, clear its cancellation date, and re-bill it as an endorsement. BriteCore now keeps such a revision in its cancellation-pending status instead of reactivating and re-billing the policy.
Stored Payment Method Charges Restricted to the Owning Processor (BC-24671)
When two payment processors were connected, charging a stored payment method was delivered to every connected processor rather than only the one that owns the method, risking a double charge. BriteCore now restricts each charge to the processor that owns the payment method.
Correct Prorated Refund When Canceling Off a Pending Revision (BC-24656)
When a policy was canceled mid-term while its in-force revision was still in a pending state with no committed baseline, the cancellation rated with zero written premium and refunded the entire annual premium instead of the prorated unearned amount. BriteCore now includes the pending revision in rating history, so the cancellation returns only the correct prorated amount.
Billing Step No Longer Errors on an Unresolvable Payment Method (BC-24727)
The quote wizard billing step returned an application error when a billing contact had a saved payment method identifier that no longer pointed to a valid record. BriteCore now handles a missing payment method gracefully, so the billing step loads instead of erroring.
Payment Times Recorded for Third-Party Portal Payments (BC-24707)
Payments received through the third-party payment portal were recorded with a date but no time and defaulted to midnight, so on a day with a full cancellation, the payment could sort ahead of same-day cancellation entries in the account ledger. BriteCore now records the actual payment time, so these entries sort in the correct order.
Correct Due Date When Changing From Monthly to Escrow Billing (BC-24681)
Changing a term's billing schedule from Monthly to Escrow could generate a catch-up installment whose due date was copied from the last unpaid monthly invoice, placing it nearly a year out. BriteCore now uses the nearest upcoming unpaid due date for that catch-up invoice, so the due date is correct.
Payment Storage Failures Surface After an Integration Charge (BC-24668)
On the payment processor integration path, a charge that succeeded at the vendor still reported overall success even when saving the payment locally failed, so a completed charge could go unrecorded without any error. BriteCore now surfaces the storage failure after the charge, so the discrepancy is reported.
Convenience Fee Charged Once on Multi-Term Payments (BC-24461)
When a single card payment from a legacy processor was applied across two or more policy terms, the payment receipt stamped the convenience fee on each term and summed them, overstating the convenience fee total and the grand total. BriteCore now charges the convenience fee once per payment on these receipts, so the totals are correct.
Claim Note Alert Dates Saved to the Correct Calendar Day (BC-24313)
In the Add Alert and Edit Alert dialog under Claims Notes, the selected date was converted to universal time before saving, so a user working in the evening in a time zone behind universal time could store an alert dated one day later than the date shown. BriteCore now saves the alert using the local calendar day shown in the picker.
Correct Values When Editing a Claim Note Alert (BC-24312)
In the Claims Notes Edit Alert dialog, the field that loads an existing alert was tied to a shared value rather than to the alert being edited, which could cause it to populate from the wrong source. BriteCore bound the dialog to the specific alert being edited, so it now shows the correct existing values.
Claim Payment Dates Stored on the Correct Day to Keep Reserves Editable (BC-24141)
Claim payment and recovery dates were stored one calendar day ahead of the local entry date, so after an evening payment the claim could reject reserve and exposure edits with a date-ordering error until the clock caught up. BriteCore now stores claim payment dates on the local calendar day, so reserves and exposures remain editable.
Declaration Generation Handles Encrypted Policy Form Documents (BC-24352)
Declaration package generation could fail while processing certain policy form documents because it did not decrypt encrypted form files before merging them. BriteCore now decrypts policy form documents before merging them, so declaration packages generate successfully.
Preserved Credit Score Applied on Endorsement Rating (BC-24703)
On an effective-date endorsement, rating could fall back to a default credit tier even when the policy term already held a valid credit score, because one rating path read a separate first-revision credit lookup that found no report. BriteCore now falls back to the preserved term credit score on that path, so endorsements rate with the credit score already on the term.
Quote Rate Cleared Correctly When Re-Rating Is Needed (BC-24643)
A quote with an annual premium but no written premium wasn't cleared when its rate should have reset, so it kept appearing as rated in the quote wizard. BriteCore aligned the reset to the same premium value the wizard uses to determine rated status, so quotes reset and re-rate as expected.
Readable Audit Notes for Integration Policy Type Changes (BC-24611)
When an integration instance's assigned policy types changed, the Settings audit note listed the entire before and after sets as raw identifiers, often thousands of characters, without naming the instance or showing what actually changed. BriteCore rewrote the note to identify the instance and show only the policy types added and removed, making the change easy to read.
Calculated Selection No Longer Flags a Term Credit Score as Manual (BC-24564)
Choosing the calculated option in the Term Credit Score prompt still marked the term's credit score as manually updated, which pinned the score and prevented it from recalculating. BriteCore now clears the manual flag when the calculated option is chosen, so the term uses its calculated credit score.
Automatic Credit Refetch Restored in the Auto Quote Wizard (BC-24641)
In the Auto Quote Wizard, the automatic credit-score refetch that should run after a named insured is edited had stopped firing because it read a field name that was no longer provided. BriteCore corrected the field name, so the credit score refetches automatically after a named insured change.
Commercial Flood Eligibility Handles Multiple Locations in One Request (BC-24598)
Commercial flood eligibility checks batch properties into groups, and when a single request returned more than one location, an indexing error stopped the check. BriteCore corrected how it matches responses to properties, so eligibility completes when multiple locations are returned together.
Flood Eligibility Cache Refreshes a Stale Property Record (BC-24575)
When a property qualified to carry forward previously retrieved flood eligibility but already had a stored eligibility record whose address key no longer matched, the stale record was left in place, so every later check missed the cache and repeated the lookup. BriteCore now updates the stored eligibility record in that case, so the cached result is reused.
Flood Vendor Reauthorizes After an Expired Token (BC-24574)
When the flood eligibility vendor rejected an expired or invalid authorization token, the logic meant to refresh the token and retry never executed, so the request simply failed. BriteCore made the token refresh and retry reachable, so an expired vendor token is renewed and the request retried automatically.
Credit Tier Lookup No Longer Overwrites a Historical Term's Score (BC-24563)
A credit tier lookup meant only to read data could, under certain conditions, save a credit score onto a policy term, and for a committed revision on an older term it could overwrite that term's historical credit score with a later term's value. BriteCore changed the lookup so it no longer persists credit scores, leaving historical term scores intact.
Agency Validated Before a Credit Report Is Ordered (BC-24702)
On the unified quote path, a billable credit report could be ordered before the quote's agency was validated, so the wrong agency could be billed for the credit pull. BriteCore now resolves and validates the agency before ordering the credit report, so the correct agency is billed.
City Selection for Multi-City ZIP Codes Across Contact Screens (BC-24296)
For a ZIP code that maps to more than one city, the city selection list appeared only on the quote New Contact screen, while adding an additional interest or editing an existing contact card offered no usable city choice. BriteCore now presents the full city list wherever such an address is entered or edited, so the correct city can be chosen consistently.
Primary and Non-Primary Property Rules Re-Evaluate When the Primary Changes (BC-24184)
On an endorsement, changing which property is primary, including when deleting the primary property promoted another, did not re-run rules scoped to primary or non-primary properties, so line items from the previous primary remained. BriteCore now re-evaluates property-scoped rules whenever the primary property changes, so added and removed line items reflect the current primary.
Motor Vehicle Report Prefill No Longer Drops a Driver's Violations (BC-24925)
When several drivers' Motor Vehicle Reports returned at nearly the same time during prefill, one driver's result could be dropped while that driver was still marked complete, causing an empty report with no violations to be saved and then reused for the driver on later quotes for the full validity window. As a result, violations the vendor actually returned could be missing from rating. BriteCore corrected the prefill so every driver's result is captured before the reports are stored, so returned violations are recorded and used in rating.
Property Details Step Loads in All Quote Wizard Configurations (BC-24929)
A recent addition of the property rail to the Property Details step could leave that step blank in quote wizard configurations that use a customized property section, because the customization replaced the shared section without the new bindings and stopped the page from rendering. BriteCore moved the shared Property Details behavior into a common component that every configuration loads, so the Property Details step renders correctly everywhere.