New Features and Enhancements
Duplicate Form Listings on Policies With Two Named Insureds (BC-24741)
On a policy with two named insureds, every form appeared twice on the Attachments tab under each endorsement's Declarations, because a separate copy of each form is attached for each Declaration recipient. The two copies were identical apart from the recipient they belonged to, so the tab looked as though it was listing the same form in error. Each copy is now labeled with the recipient of the Declaration it belongs to, making it clear why both appear and which recipient each one is for.
Faster Quoting Through Longer Policy Type Configuration Caching (BC-24529)
The cached policy type configuration that quoting reads expired every ten minutes, so stable policy types paid a full rebuild from the database several times an hour. That cache now holds for a week and is cleared explicitly whenever a line configuration is written or published, including through the newer line configuration API endpoints. Quoting avoids the repeated rebuilds while configuration changes still take effect immediately.
Check Number, Check Date, and Cleared Date Writeback for Outbound Payments (BC-24593)
Carriers export outbound checks from the return premium, claim payment, and commission payment queues, but the three types did not carry the same check details, and there was no way to record those details after an export had already run. Return premiums now store a check date, commission payments store a check number, check date, and cleared date, and a new API endpoint writes all three values back for any of the three payment types in a single batch. Carriers can reconcile outstanding checks and manage escheatment from one consistent set of fields.
Large Report Downloads No Longer Exhaust Server Memory (BC-24916)
Downloading a large report sent the whole file through the web server, which could exhaust the available memory and interrupt not only that download but every other request the server was handling at the time. Report downloads, including the link in the report summary email, are now served through a temporary direct download address rather than being held in memory first. Large reports download reliably and no longer affect other users working in the system.
Monitoring and Alerts for Long-Running Background Jobs (BC-20381)
BriteCore added internal monitoring for background jobs, including an alert that fires when a job runs longer than expected. New dashboards show the status of report jobs and of all jobs in one place. Long-running or stalled jobs are now identified and addressed sooner.
Embedded Payment Method Entry for Funding Sources (BC-23257)
Funding source setup now collects card and bank details through a payment form shown directly in the page rather than in a separate window. Once the details are confirmed, the list of saved funding sources refreshes on its own. The control that opens this form arrives in a later update.
Reliable Status Responses for Asynchronous Quote Creation (BC-23395)
When a quote is created asynchronously, checking its status could fail with a data error on larger quotes because the stored result exceeded the size the system could read back. The stored response is now kept small, so status checks return successfully. Agents and integrations that poll for quote completion no longer hit that error.
More Accurate Address Location and County Candidates (BC-23924)
Property addresses can now be resolved through a geolocation service that returns coordinates along with a ranked list of the most likely counties. The accuracy rating for the resolved address is now always recorded with the address, so an edited address no longer carries the previous address's rating into underwriting rules and the property map. The county selection screens that use this information follow in a later update.
Single ISO ClaimSearch Request When a Claim Address Changes (BC-24137)
Editing a claim address sent three requests to ISO ClaimSearch, one for each part of the address that changed, including two unnecessary replacement requests. An address edit is now treated as a single change, so exactly one request is sent. Claims staff see one submission per address update in the integration activity.
New Payments Module in the Main Navigation (BC-24409)
A Payments module is now available in the main navigation, between Claims and Reports, grouping payment pages under Incoming and Outgoing headings. It contains Payment Log, Daily Cash Receipt, Return Premium, Commission Payments, and Agency Commissions, with Payment Log as the landing page. Users see only the pages their role permits, and carriers that have not enabled the module see no change.
Payment Pages Moved to Their Own Web Addresses (BC-24410)
The five payment pages are now reachable under their own Payments web addresses, and the previous Policies addresses redirect to them automatically with any parameters preserved. The Policies menu entries point into the new module and page behavior is unchanged. This also corrects a case where completing a payment from Daily Cash Receipt could leave the user on a missing page.
Quote Changes No Longer Overwritten by Another Session (BC-24442)
In the Quote Wizard, saving a loss payee sent the entire stored quote back to the server, so a change made in another browser, on another device, or by an integration could be silently replaced with older values. Each save now sends only the information it owns and the server merges it in. Property characteristics no longer revert after an unrelated save when more than one person is working the same quote.
Manually Entered Values Protected From Integration Updates (BC-24444)
When a user types a value into a property field, the system now records that a person entered it and holds that value, so a later integration run does not replace it. If an integration proposes a different value for a held field, a line is added to the policy notes naming the field, the value being held, and the value the vendor proposed. The option to revert a held value back to the vendor value arrives in a later update.
Replacement Cost Prefill No Longer Overwrites an Existing Value (BC-24446)
The automatic property prefill wrote a replacement cost estimate on every save, which could replace a refined valuation with a lower automated estimate. It now fills replacement cost only when no value is stored, and it no longer adds a policy note when the value has not actually changed. Renewals remain the exception: the prefill still refreshes replacement cost at renewal so the figure keeps pace with inflation.
Groundwork for Detailed Fee Tracking (BC-24972)
Preparatory data structures were added to support future reporting on which fee produced a given charge and which payment settled it. The new structures are empty and nothing reads or writes them yet, so billing, invoicing, and accounting behave exactly as before. This is the foundation for later work in this area.
Reports Workspace With Multiple Schedules Per Report (BC-24927)
Report Workbench is now called Reports, and its run activity and scheduling views have become two pages of their own, Executions and Schedules. A report can now carry more than one schedule, or cadence, so a single report definition can run on several timetables instead of being limited to one. The workspace also adds export, import, and duplicate for report definitions, reorders the Configuration, Documentation, Prior Runs, and Permissions tabs, and remembers filters such as hiding drafts, making the reporting tools easier to reach.
Separate Payment Fees and Distribution Rules Settings Pages (BC-25302)
Settings > Payments was a single page carrying two unrelated configurations, Payment Distribution Rules and Convenience Fees, as tabs, and a recent change had made Distribution Rules the default tab, so a long standing bookmark to that address opened the wrong configuration. Payments is now a menu section with Payment Fees and Distribution Rules as separate pages, each reachable and selectable in the navigation. The original Settings > Payments address serves the fee configuration again.
Bug Fixes
Application Left Issued With a Quote Number After a Failed Commit (BC-24604)
During straight through processing, an application was marked Active before the background task that actually issues the policy had run. If that task then failed, the record stayed Issued and Active while still carrying its quote number and an open revision, and the duplicate submission guard blocked any retry until underwriting reset the application to Unsubmitted. The change to Active now happens inside the same transaction that issues the policy, so a failed commit no longer leaves the application stranded.
Server Error Opening a Policy With a Double Encoded Builder Value (BC-24712)
One of the paths that reads a policy's builder data decoded the stored value only once, so a cell that had been saved in an already encoded form came back as plain text instead of structured data and the request failed with a server error in the builder and the Quote Wizard. That read now applies the same correction already used on the other paths, so the affected policies open normally.
Underwriting Review Queue Missing Policies With an Open Revision (BC-24779)
A policy that had already been issued and also had a separate open revision sitting in underwriting review did not appear when the Policy List was filtered by Review State, because the search index recorded only the issued revision's review state. Underwriters had no way to find those policies from the list. The review state of an open revision is now indexed as well, so these policies appear in the queue.
Empty Policy Listing for a Contact Whose Only Record Is a Quote (BC-24798)
Listing the policies attached to a contact returned the same empty result whether the contact had no records, had only quotes, or did not exist at all, so a newly quoted named insured appeared to have nothing on file and the caller could not tell the three cases apart. The response now reports whether the contact was found, so an empty result can be distinguished from an unknown contact.
Renewal Forms Left Out of the Printed Declaration After a Second Revision (BC-24821)
Where conversion forms print only when staff select that option as the revision is committed, committing a second revision before the declaration printed lost that selection, so the declaration mailed without its form packet and staff had to generate the package by hand. The selection is now recorded on the policy term and honored by later revisions, so the forms print with the declaration.
Agency Emailed a Superseded Declaration After a Second Revision (BC-24825)
When a renewal was revised again before its declaration was due to be emailed, the agency's copy from the first revision was never marked as superseded, so on the send date the agency was emailed the outdated declaration. The superseded agency copy is now suppressed in the same way as the printed copies, so the agency receives only the current declaration.
Current Declaration Marked Do Not Print by a Delayed Revision (BC-24897)
The step that supersedes an earlier declaration had no guard on the order in which revisions were processed, so a delayed background task belonging to an earlier revision could mark the current revision's declaration as do not print. That declaration would then never print at all. Supersession is now scoped to the policy term and ordered, so only genuinely superseded declarations are suppressed.
Error Opening the Policy Builder for a Property Without Coordinates (BC-24904)
Where waterway polygon lookups are enabled, the policy builder built its location query straight from the property's coordinates without checking whether they were present. A property whose coordinates had not been resolved, which happens whenever a geocode returns no result or an ambiguous one, produced an invalid query and an error. Properties without coordinates now skip the lookup.
Alert Dialog Opening on a Note No Longer in the List (BC-24910)
On the alert notes page, creating a note that also stages an alert queues the alert dialog to open as soon as any dialog already on screen is closed. The list was refreshed in the meantime, so the dialog could open against a note row that was no longer part of the list behind it. The dialog now waits for the created note to reappear in the refreshed list before opening.
Duplicate Note Row After Creating a Note (BC-24911)
The notes list is emptied as soon as a refresh starts but refilled only once the server responds, so a refresh that began before a new note was saved could return afterwards and add a second copy of that note to the list. Responses belonging to a list that has already been replaced are now ignored, and repeated rows are discarded, so a newly created note appears once.
Scheduled Item Limits Understated by Comma Formatted Amounts (BC-25018)
In the agent quote wizard, the total limit for a blanket or scheduled inventory item was added up in a way that stopped reading each amount at its first comma, so an amount saved as a formatted currency value counted only the digits before that comma. The resulting total fell well below the sum of the itemized rows, which produced a credit or refund instead of the expected additional premium. Amounts are now read in full regardless of how they are formatted, so the total matches the rows it is built from.
Repeated Prior Term Revisions From Nightly Non Payment Processing (BC-25071)
Nightly processing selects a policy term by its unpaid invoice, so where a carrier bills ahead of inception it could pick up a future renewal on the day that renewal invoice fell due and then record the non payment against newly created revisions in the prior term. Policies already pending cancellation for underwriting reasons gained a new committed revision every morning. Non payment activity for a renewal invoice now stays on the renewal term and leaves the prior term untouched.
Notes Recorded Against the Wrong User (BC-25076)
Background tasks run on long lived workers that did not reset the acting user between tasks, so a task recording a note without naming a user could attribute it to whoever the previous task ran as, in some cases an agent from an unrelated agency. Notes such as print state changes and application submissions showed the wrong name in the entered by field. The acting user is now cleared at the start and end of every background task, so notes are attributed to the right person.
Reinstatement Failure When the Cancellation Reason Was Deleted (BC-25078)
Deleting a cancellation reason in Settings removes the reason itself but leaves existing revisions still pointing at it. For carriers that enforce underwriting cancellation, reinstating a policy in Cancellation Pending status then failed with a system error. The reinstatement check now handles a cancellation reason that no longer exists, so these policies can be reinstated.
Underwriter Review Report Failing on a Deleted Cancellation Reason (BC-25147)
The Underwriter Review report looked up the cancellation or nonrenewal reason recorded on a revision and used the result without checking that the reason still existed. Where that reason had since been deleted in Settings, running the report for the policy term failed. The report now handles a missing reason and completes.
Policy Cancellation Failing When the Reason Was Deleted During the Session (BC-25148)
If a cancellation reason was deleted in Settings after the cancel policy dialog had loaded its list but before the cancellation was submitted, both the dialog and the programmatic cancellation path failed with an error. Both paths now check that the selected reason still exists rather than failing partway through.
Quote Wizard Ignoring a Policy Type's Configured Term (BC-24700)
When a policy type had exactly one enabled quote term, the Quote Wizard showed no term selector at all and created the quote on a fixed one year term, even where the configured term was something else and the policy type card displayed that other term to the agent. There was nothing on the Policy Setup step to reveal the difference. The Quote Wizard now applies the configured term when only one is enabled.
Disabled Deductible Option Left Selected in the Policy Builder (BC-24836)
When an underwriting rule disabled more than one deductible option and one of the disabled options was processed after the option currently selected, the check that notices the selected option is no longer available was overwritten. The automatic switch to the first available option was skipped, and the quote kept a deductible the rule had removed. That check now holds once any disabled option is found to be selected, so an available option is always chosen.
Duplicate Installments From a Double Submission in the Billing Wizard (BC-24913)
The request that rebuilds a policy term's installment schedule had no protection against running twice at once, so two requests arriving together each cleared and re-created the future invoices without seeing the other's work. The term was left with two live copies of every remaining installment. Schedule rebuilds are now handled one at a time per policy, and a second simultaneous request is refused rather than duplicating the schedule.
Declined Electronic Commission Payments Returned to Pending (BC-25024)
Electronic commission payments are marked as exported when they are queued, before the nightly submission reaches the bank. When the bank confirmed a decline and no funds moved, the payment stayed in Exported status and could not be reprocessed without help from BriteCore. A confirmed decline now clears the export status and releases the payment link, so the commission returns to Pending and the carrier can reprocess it.
Invoices Billing the Prior Premium After a Same Day Endorsement (BC-25077)
When a policy term held more than one live revision sharing an effective date, the step that identifies the current revision had no defined way to choose between them. If it selected the earlier revision, the rebuilt invoices were sized from the previous written premium while still being attached to the newer one, so Policy Details showed the corrected premium while accounts receivable kept billing the old amount. The current revision is now resolved consistently, so invoices are built from the correct premium.
Duplicate Postings of External Payments From a Payment Vendor (BC-25230)
When an external payment vendor sent a payment it had already delivered a second time, the endpoint that records those payments had no check on the vendor's own transaction identifier, so a second payment record was created and the policy was credited twice. Carriers using this integration saw doubled credits and reconciliation totals that did not agree. Recording an external payment is now tied to the vendor transaction identifier, so a repeated delivery of the same transaction is recorded only once.
Unlabeled and Missing Fields When Generating a Custom Deliverable (BC-19547)
When an agent generated a custom deliverable from a quote, fields whose underlying controls carried no name were merged together, so the prompt showed a single unlabeled dropdown offering another field's options while several expected questions never appeared at all. Answers then landed against the wrong questions on the finished document. Every field in a custom deliverable prompt is now kept separate, so agents see each question with its own label and its own options.
Insured Phone Numbers Missing From the Loss Notice (BC-24747)
A phone number saved without a phone type was left off the Loss Notice, even though it appeared on the claim's Parties tab and on the contact record. Phone type is optional throughout the system, so any contact saved without one lost their number on the document. Deliverables now include contact phone numbers whether or not a type has been set.
Duplicate Forms Sent to Print on Policies With Multiple Recipients (BC-24886)
When a new Declaration was generated, the step that suppresses the previous set of form attachments was not limited to the affected recipient and did not reach every record it needed to, so superseded forms stayed eligible for printing. Policies with more than one Declaration recipient could send duplicate sets of forms to the print vendor, including some that had been marked do not print. That suppression is now scoped to the recipient and applied consistently, so only the current set of forms prints.
Duplicate Printing of Regenerated Billing Statements (BC-24887)
When a paper billing statement was generated again, the copy it replaced was never marked as superseded, so both versions printed and were mailed. Suppression had only ever applied to Declarations, and a regenerated statement never reached it. A regenerated paper deliverable now supersedes the copy it replaces, so only the latest version prints.
Superseded Declaration From an Earlier Revision Still Printing (BC-24888)
When a policy was endorsed before its existing Declaration had printed, the older Declaration was not always suppressed, because the check matched only on the document title or the revision and missed the earlier copy. Both Declarations then printed for the same recipient. Suppression now matches within the policy term, so a Declaration replaced by a later revision no longer prints.
Declaration Generation Failure on Forms Uploaded Without Metadata (BC-24938)
A policy type form uploaded before its form code, edition number, and description were filled in left those values empty, and the step that builds the list of forms for a revision combined the three without allowing for empty values. Generating a Declaration for that policy type then failed outright. Forms that have no metadata yet are now handled safely, so Declaration generation completes.
Electronic Document Delivery Silently Skipping Policies (BC-25010)
When a policy's line had no system tags configured, building the electronic document file for that policy raised an error that was caught and discarded, so the policy's documents were left out of the nightly upload to the delivery vendor. Nothing surfaced the failure and the job still reported success, which made the missing documents difficult to notice. A line with no system tags is now handled, so those policies are included in the upload.
Large Reports Failing to Produce a Spreadsheet File (BC-24762)
A SQL Editor report whose results were large enough to push the staged spreadsheet past the size limit of the standard archive format failed while the workbook was being packaged, after hours of query time, and produced no file at all. Report workbooks are now written with large archive support enabled, so oversized reports complete and deliver their output.
Parameter Placeholders Removed From Imported Report Queries (BC-25202)
Importing a report definition passed the sheet query through the same cleaning that is applied to free text, which read a parameter placeholder as markup and removed it. The damaged query still saved and passed validation, so the problem surfaced only when someone ran the report. The query is now preserved exactly as written on import, while descriptions and other free text are still cleaned.
Error Saving a Line Item That Uses a Referenced Category (BC-24406)
Saving a line item whose changed category was a Referenced Category failed with an error and discarded the entire save whenever that category was also used by other line items. Only some category types supply a default option when saved, but the system expected one in every case. The default option is now applied only when it is supplied, so these line items save successfully.
Removing a Producer License From a Contact (BC-23809)
On the Contact Information page, selecting the red remove icon beside a producer license had no effect and the license stayed on the record. The control never triggered the removal, so the request was never sent. Selecting the remove icon now deletes the license as expected.
Activation Code Not Emailed After a Username Correction (BC-24673)
On sites using legacy authentication, correcting a contact's username shortly after the invitation was sent issued a new confirmation code, but the follow-up Login Updated email did not include it. The code the contact was already holding stopped working, and activation failed with a message saying the confirmation code did not match. The email sent after a login update now carries the current confirmation code and activation link, so new contacts can activate their account without anyone resending the invitation.
Return Premium Export Failing on Contact Names With Extra Spaces (BC-19341)
A contact name stored with a trailing space does not look any different on screen, but when names were joined together for an outbound accounting export the extra space became a double space that the receiving system rejected, so the return premium export failed. The usual workarounds of changing the payee before or after the export failed as well. Repeated spaces are now collapsed on outbound accounting names, so these exports complete without a data correction.
Policy Note Wording When a Credit Pull Is Skipped (BC-25102)
When a credit pull was skipped or failed, the note written to the policy said the default credit tier would be applied during rating. Rating actually continues to use each named insured's existing admissible report where one is available, so the note overstated what happened and could mislead anyone later reviewing why a policy rated as it did. The note now describes what the system actually does in each case.
Flood Standing Saved Against a Previous Address (BC-24573)
The flood eligibility lookup saved its vendor result as soon as the response came back, without confirming that the property's address still matched the one the lookup had been made for. After an address change made at the same time, a slower lookup for the earlier address could finish last and store flood standing that no longer applied to the property. The result is now saved only once the address is confirmed unchanged.
Document Uploads Rejected by the Document Management Vendor (BC-25072)
The destination filename for documents uploaded to the document management vendor was built directly from the policy, account, agency, and label values, only one of which was cleaned first. A record containing a tab, a line break, or a backslash produced a path the vendor could not accept, and the upload failed and was retried each night. Every part of the filename is now cleaned before the path is built, so these documents upload successfully.
Report Descriptions Readable in the New Report UI (BC-24720)
Carriers use a report's description to record important notes, such as an instruction not to run a report manually, but the Report Workbench collapsed that text into a single run-on paragraph where those notes were easy to miss. Descriptions now keep their original line breaks and basic formatting, and longer text is shortened with a Show more control. The notes read the way they were written.
Editing a Report Description in the New Report UI (BC-24721)
The New Report UIcould show a report's description but offered no way to change it, so carriers had to go back to the older report list to keep those notes current. An Edit description control on the Documentation tab now opens the existing text for editing and saves it back to the report. Report notes can be maintained in the same place the report itself is managed.
Left Navigation Panel Loading Hidden (BC-24654)
Where the left navigation panel had been collapsed, narrowing the browser past the width at which the mobile layout takes over forced the panel open, and returning to a wider window never restored the saved setting, so the panel sat off screen until the window was resized again. The saved setting is now reapplied when the layout returns to the wider view, and the panel appears as expected.
Explanation When Calculate Premium Is Unavailable on an Endorsement (BC-18013)
When an agent made an endorsement that does not affect rating, such as a mortgagee change, the Calculate Premium button did not appear and nothing explained why, so the only way forward was to change an unrelated value on the rating page to force the button to show. The page now tells the agent which locations still need attention and that opening them is what makes rating available. Agents can act on what is missing instead of guessing whether the page is broken.
Quote Wizard Review Status Continuing to Poll After a Session Expires (BC-25090)
On the Review Status step of the Quote Wizard, the page checked for underwriting review updates every few seconds and carried on checking after the user's session had expired, producing a steady stream of rejected requests against the server. The page now stops checking once the session is no longer valid.
Renewal Premium Attributed to the Wrong Effective Month (BC-25283)
On the Policy Schedule sheet of the stock Premium Written Earned Unearned report, a renewed policy produced one row covering all of its terms instead of one row per term, stamped with whichever term effective date the database happened to return first. Renewal premium was therefore counted in the prior term's effective month, and the date could change from one run of the report to the next. The sheet now returns one row per policy term, so each term's premium stays on its own effective date; grand totals are unchanged and only the date attribution is corrected.
Saving a Note Failing on Sites Using the Legacy Note Path (BC-25370)
On sites where notes are served through the older gateway path, saving a new note on a policy or a claim failed with an application error, and editing an existing note failed in the same way. A permission wrapper added around the endpoint changed the signature that the gateway inspects, so the request body was handed over as a single value rather than being expanded into the arguments the endpoint expected. The wrapper now preserves that signature, and note saving works on those sites again.
Agents Unable to Save the Loss Description on a New Claim (BC-25372)
An agent filing a new claim could not save the Loss Description: typing into the field and clicking away raised a permission message followed by a saving error, and the field was left showing an error state. A newly added permission check tested for an administrative permission path that agent roles do not carry, so it refused every agent. The check now evaluates against the caller's own permissions, so agents can file a claim and record the loss description.
Claim Exposures Saved Against the Wrong Policy Term (BC-25107)
When a claim was created in the agent portal and the policy was attached before the loss date was entered, the coverage and location choices offered were drawn from the term in force that day rather than the term covering the loss. Entering the loss date afterwards did not refresh those choices, so the exposures were stored against the wrong term, and any later attempt to add or remove a coverage failed with a message about zeroing reserve amounts that could not be cleared. Saving the loss date now rebuilds the coverage and location lists for the correct term, so exposures are recorded against the term the loss falls in.
Credit Report Requests Failing on the Unified Quote Engine (BC-25334)
On the unified quote engine, the date of birth sent to the credit reporting service could carry a time component or arrive as an unparsed string, a shape the service rejects when it splits the value into day, month, and year. Credit report enrichment could therefore fail without surfacing an error. The date of birth is now reduced to a plain date before the request is built, so credit pulls complete.
Commission Statements Showing Another Carrier's Branding (BC-25528)
Carriers using the per-site commission statement templates could have their month-end agent commission statements rendered with another carrier's logo and address, or with no logo at all. The template folder is chosen from a site identifier that takes a different form depending on whether the statement is generated on demand or on a schedule, and a mismatch fell back silently to a shared template carrying another carrier's details. That identifier is now normalized on both paths, and a fallback is recorded so a future mismatch is visible rather than silent.
Support Ticket Access for Authorized Users (BC-16015)
Some users who were set up to submit support tickets from inside BriteCore lost that access, because the list of authorized users was held as a single record that was rewritten in full on every change, so authorizing one user could drop another. Affected users found the in-application support option missing, or their submission failed without an explanation. That list is now updated one change at a time so entries are no longer lost, and a ticket is filed using the requester's email address rather than a stored vendor account reference, so access no longer depends on the list being complete.
Copying a Quote for a Contact Without a Social Security Number (BC-16087)
Copying a quote or rewriting a policy into a term that fell in a different calendar year was treated as a renewal, which triggered a vendor credit report lookup that requires a Social Security number. For carriers that do not pull credit, copying a quote for a commercial or other contact without that number failed with a vendor integration error. A copy or a rewrite is now treated as new business on its own first term, so those quotes can be created normally.
Erroneous Nightly Vendor Upload Alerts for Claims (BC-16295)
Carriers using the IVANS claims integration received a nightly vendor upload error email on dates that genuinely had no claim transactions or change logs, and the same alert repeated across weekends and holidays. A date with no claim activity is now treated as a normal empty result and no longer produces an alert. Genuine build failures still report as before.
Property Map Pin Location (BC-16537)
The map on the Property tab of a policy could place the red pin somewhere other than the property address, in some cases in an entirely different city. The map already declined to use stored coordinates recorded with poor accuracy, but that check was never applied on the Open Map path, so poorly located coordinates were used anyway. Those coordinates are now recognized and the map locates the property from its address instead, so the pin displays at the property address.
Session Timeout Handling in the SQL Editor (BC-16737)
The SQL Editor did not act on an expired session, so a user who left a query open and came back later received an unauthorized message when they tried to run it. The page now follows the same inactivity timeout as the rest of BriteCore and prompts the user to sign in again. Users no longer have to interpret an authorization error to realize their session had ended.
Blank Payee Name on the Return Premium Check Export (BC-16829)
When a payment was made on a policy in submitted status and that policy was later rejected, the name field came back blank in the Sungard return premium check export, so the resulting check printed with no payee. The name is now populated for those records. Accounting staff can print return premium checks from the export without correcting them by hand.
Notification When the Nightly Escrow File Is Not Generated (BC-16869)
A nightly escrow and mortgagee file could fail to generate without sending any alert, leaving staff unaware until someone noticed the file was missing. Affected carriers now receive a processing errors email when printed escrow and mortgagee invoices exist for a date but no file was produced. Dates with no qualifying activity stay silent, so the alert does not add noise.
Property Limit Enforced While Quoting (BC-16881)
In the legacy agent quoting flow, the limit on the number of properties configured for a policy type was not applied, so agents could add more properties to a quote than the policy type allowed. That limit is now enforced while quoting. Underwriters no longer receive quotes carrying more properties than their policy type permits.
Application Error When Opening a Policy or Creating a Revision (BC-16916)
Some policies could not be opened and no new revision could be created, returning only a generic application error message. An oversized error detail saved by a failed background process was too large to be read back, which blocked the policy page from loading. That detail is now limited in size so affected policies open and revise normally.
Policies Stuck in Pending E-Signature After Docusign Completion (BC-17221)
After an agent completed a Docusign signature request, some quotes stayed in Pending E-signature instead of moving to Submitted and receiving a policy number. Because no active signature request remained, users also could not void the request to recover. Completed signature requests now advance the policy status and assign the policy number as expected.
Pre-Authorized Payment Schedule Missing Payments (BC-17463)
The automatically generated Pre-Authorized Payment Schedule sometimes listed only a single payment instead of the full schedule, forcing users to regenerate the document by hand. The initial schedule now prints every unpaid installment when it is generated automatically.
Separate Agency Experience Results for Agencies With the Same Name (BC-17545)
The Agency Experience report grouped its output by agency display name, so two agencies with the same name were combined into one document and email routing between them was ambiguous. A new option in the report's configuration groups the output by contact instead, prefixes each file with the agency or producer number, and shows those numbers in the recipient list. The option is off by default, so existing runs are unchanged until a carrier turns it on, and the same screen now exposes the existing setting for generating audit files.
Agency Credit Score Account Used When Pulling Credit Scores (BC-18273)
When a credit score was pulled for an insured on a quote or policy, the carrier's account was sometimes billed instead of the Credit Score Account set up for the agency. The pull now uses the account of the agency on the quote or policy, and bills the carrier only when no agency account can be determined. This keeps credit report charges with the agency that requested them.
Clearing the Default LexisNexis Credit Reporting Configuration Removed Other Settings (BC-18409)
In the LexisNexis Credit Reporting configuration, clearing the default configuration also erased credit tier settings saved at the policy type level. Saving a default configuration now updates only default entries and leaves policy type settings untouched. The same protection applies to the ISO Credit Scoring configuration.
Duplicate Emails for Alerts Sent Immediately From Notes (BC-18435)
When a user created an alert on a note and chose to send it immediately, the system sent the email right away and then sent the same alert again the following day. Alerts sent immediately are now marked as sent, so a single email goes out. This prevents duplicate tasks in external systems that are triggered by alert emails.
Rating Error When Policy Wide Evaluations Reference Primary Exposures (BC-18715)
In the Quote Wizard, an evaluation rate object in the Policy Wide section that referenced an item in Primary Exposures failed to rate and returned an attribute error, even though the same configuration rated successfully in legacy quoting. Policy Wide evaluations can now read values from Primary Exposures, so quotes built on this setup rate as expected.
Invoice Cloud Upload Rejected for a Missing Customer Name (BC-19138)
The daily invoice file sent to Invoice Cloud was rejected when an unpaid invoice remained attached to an archived revision with no usable named insured, leaving the customer name blank on that row. The file now takes a usable name from the invoice's own revision or the closest prior committed revision, and omits a single account rather than failing the whole upload. Any omitted account is recorded in the run log so it can be reviewed.
Credit Report Pull Time Shown as an Hour Old Outside Central Time (BC-19274)
In the Quote Wizard, a credit report pulled by a user outside Central time showed as pulled an hour ago immediately after it ran. The stored pull time is now read as Central time before the relative age is calculated, so a fresh pull reads as a few seconds ago. The same correction applies to the past reports window and the Contacts view.
Files Marked Do Not Print Were Still Sent to the Print Vendor (BC-19350)
Policy documents that a user marked as Do Not Print were still picked up and printed by the print vendor the following day. Setting the print status on an attachment now also updates the underlying form record that printing selects from, so files marked Do Not Print are skipped. This avoids unnecessary print and mailing costs.
Note Alerts Not Saved When Added to a New Note (BC-19553)
When a user set up an alert while creating a new note, the alert was not saved with the note and had to be added again afterward. Alerts composed on a new note now persist the first time the note is saved.
Payment Processor Timeouts Reported as Card Failures (BC-19626)
When the payment processor timed out or returned an internal error, the payment was recorded as a declined card and a Card Failure Notice was generated, even for payments drawn from a bank account. These failures are now classified as a payment processor error, so the card failure notice is not produced and the payment note reflects the actual cause.
Marking a Payment NSF on a Cancellation Pending Policy (BC-19653)
Marking a payment as insufficient funds on a policy already in Cancellation Pending returned an error and left the status unchanged instead of moving it to Cancellation Pending, Non-Payment of Premium. A date comparison problem while creating the new revision caused the failure. The status now updates correctly whether or not the policy is already in Cancellation Pending.
Saving a Contact Role Blocked by an Unrelated Confirmation Email (BC-19941)
Assigning an agency group to an agency contact failed with a message that the confirmation email was already in use, for an address the user had never edited and, on some sites, could not see. The Roles tab posts every field the role owns on each save, and the stored username and confirmation email were checked for uniqueness even when they had not changed, so one pre-existing duplicate blocked every later save on that contact. Only the fields a user is actually changing are now validated, and the message names the address in question and the contact holding it.
Underwriting Cancellation Date Replaced by the Non-Payment Date (BC-20281)
For carriers using the setting that enforces the underwriting cancellation date when the non-payment date is later, a policy manually set to cancel for an underwriting reason reverted to the non-payment cancellation date and status. Nightly processing now keeps the Cancellation Pending status and the underwriting cancellation date when that setting applies, so a manually set cancellation date holds.
Application Error When Submitting a Quote With No Agency Email (BC-20849)
When a quote was set to go to the agency and the agency contact had no email address on file, submitting the quote returned a generic application error. Submission now returns a clear message that an email address is required, so users can correct the contact and continue.
HazardHub No-Data Response Blocked Rating in the Agency Portal (BC-21324)
When an agent rated a quote in the Agency Portal and HazardHub returned no data or was unavailable, rating failed with a blocking error and the quote could not be submitted. Rating now continues when HazardHub returns a not-found or server error, adds the vendor message to the quote's alerts, and records a HazardHub unavailable note. Missing addresses and genuine rating errors still stop the rate.
Removing Login Credentials From a Contact Role (BC-21476)
In Contacts, clearing the username, password, and email under a role's Login Information did not persist: the values returned after saving and reloading the page. Cleared login credentials are now saved as blank, so administrators can disable a user's access without deleting the entire role.
Quote Submissions Reverting to an Unsubmitted State (BC-21589)
In the quote flow, a submitted quote could intermittently revert to an unsubmitted state, with the assigned number reverting to the original quote number. This happened when a request was interrupted partway through saving and partial work was still committed. Interrupted requests are now rolled back cleanly, so a quote either submits fully or remains in its prior state.
Application Question Answers Carrying Forward to Renewal Terms (BC-21659)
On renewal terms, answers entered in Application Questions for a property could appear blank or show No answer provided. This affected policies where the property had been added by endorsement during the prior term. Completed answers now carry forward to the renewal term.
Lines Import Failing After an Item Form Was Changed (BC-21936)
When importing lines configuration, the import failed if a form in the package shared a title with an existing form but carried a different identifier, returning an error about conflicting names and identifiers. The import now completes in this situation, so configuration can be moved between sites after a form has been changed.
Updated Mortgagee Not Reflected on Related Claims (BC-21992)
On claims for policies set to pull the current mortgagee, changing the mortgagee on the policy did not update the mortgagee shown on the claim, and the labels indicating whether a mortgagee changed since the date of loss were missing. The claim continued to display the previous mortgagee. Claims now reflect the current mortgagee from the policy.
All Reinsurance Contracts Listed in the Edit Reinsurance Window (BC-22036)
When adding reinsurance contracts to a claim, the Edit Reinsurance window listed only the first 25 contracts, so carriers with more than 25 could not select the remaining ones. The window now lists every available reinsurance contract.
Pay by Card and Pay by ACH Options Missing on the Electronic Payment Page (BC-22166)
On the policy electronic payment page, the Pay by Card and Pay by ACH options did not appear for some policies until the payment schedule was toggled, and the processing fee message was missing as well. Both payment options and their fee details now display when the page first loads.
Policy Types Not Open to Quoting Appearing During Policy Creation (BC-22338)
When creating a new policy, the list of selectable policy types could include types that were not open to quoting, and in some states it included types carried over from earlier lines effective dates. The rule that determines which policy types may be offered now applies on every path that builds the list, so the options match the selected effective date and state.
Extra Quotes Added to Saved Report Parameter Defaults (BC-22494)
In SQL Editor reports, a numeric parameter saved with a default value was substituted at run time with an extra pair of single quotes, producing invalid SQL. Reports that ran successfully in interactive mode then failed in batch mode with only a generic failure status. Saved defaults now substitute as the value alone, so batch runs match interactive runs.
Property Save Failing on the Risks Screen (BC-22587)
On the Risks screen in the agent experience, selecting Save Property failed immediately with a property lookup error on some quotes. The failure occurred when the policy revision could not resolve its policy type, which could happen after a lines effective date was moved. Properties now save successfully from this screen.
Contact Edits on the Claim Parties Tab Changing the Contact Record (BC-22672)
In the claims experience, selecting Edit on the Parties tab allowed a contact's details to be changed, and those changes were written back to the contact record shared by every policy, claim, and agent that references it. Editing that record from the claim party dialog is now governed by its own permission, while claim level roles and party level fields stay editable. Social Security number and date of birth can also now be entered on a party whose contact record has them blank, which the dialog previously prevented.
Page Navigation in the Commission Payment Queue (BC-22679)
In the Commission Payment Queue, selecting page 2 from the page numbers showed an empty list and removed the pagination controls, leaving a page refresh as the only way to recover. Users can now move between pages using either the page numbers or the arrow controls, and the controls remain visible throughout.
Terminated Agencies Selectable in the Quote Flow (BC-22730)
In the quote flow, agents could see and select agencies they were not assigned to, including agencies that had been discontinued. The agency list now shows only the active agencies an agent is assigned to.
Approved Card Payments Missing From the Payment Log (BC-22859)
When a card payment was approved by the payment processor but the step that applies it to the account did not complete, the payment was stored without appearing anywhere in BriteCore, so an insured could be charged without any record staff could see. Such a payment is now saved in an incomplete state and appears in the Payment Log, making the charge visible for follow up.
Loss Address Selection Failing on Some Claims (BC-22920)
On some claims, selecting the loss address listed on the policy failed and returned a generic error in place of a readable message. The problem affected certain claims rather than all of them, which made it hard to anticipate. The loss address on the policy can now be selected as expected.
Error Handling for E-Signature Updates With Unrecognized Envelopes (BC-23313)
When an electronic signature provider sent a status update for an envelope with no matching signature record in BriteCore, the request failed with a server error and the provider could retry it repeatedly, leaving policies waiting on signature in a pending state. The request now returns a structured error and records a warning with enough detail to investigate, while valid signature updates continue to process unchanged.
Mouse Back, Forward, and Middle-Click Navigation in Claims (BC-23363)
In the claims experience, the Back and Forward mouse buttons no longer moved between pages and middle-clicking a section did not open it in a new browser tab. This began when the separate claim pages became tabs within a single page. Standard browser navigation now works across the claim tabs again.
Document Template Downloads Failing on Special Characters in the Filename (BC-23506)
Downloading a custom document template returned an internal server error when the template filename contained a character outside the standard set, such as an en dash or a curly quote. The failure happened every time for an affected template, regardless of the file itself. The download now converts the filename to standard characters before sending it, so these templates download successfully and the stored filename does not have to be changed. The same correction applies to the other document downloads that shared the defect.
Reinsurance Contract Details in the Add Recovery Window (BC-23873)
When adding a recovery to a claim with a category of Reinsurance, the Reinsurer list showed only the reinsurer name, so several contracts with the same reinsurer appeared as identical entries. The list now includes the contract identifier and description alongside the reinsurer name, so the intended contract can be selected with confidence.
Missing Dates and Times in Billing Engine History (BC-23884)
In Support Tools, the Billing Engine State and Events screens showed blank values where dates and times should appear, so the Recent transitions list and the Billing State History page gave no indication of when each change happened. Values recorded with fractional seconds were discarded when read back, while sorting stayed correct because ordering happened in the database. Dates and times now display correctly on those screens, and any value that cannot be converted is logged instead of being silently dropped.
Incorrect Year of Policy Inception on Renewal Credits (BC-24189)
On policies renewing under newer line effective dates, the Year of Policy Inception category on the Claim Free Credit line item was filled in automatically with a fixed configured value rather than the policy's actual inception year, so the credit rated against the wrong year. Renewals on earlier effective dates were not affected. When the rate chain does not specify a default, the value is now left unset and flagged for an underwriter to complete in Persistent Builder instead of being pre-filled with a static value.
Permission Enforcement for Claim Status, Description, and Document Emails (BC-24302)
Changing a claim's status, editing the claim description, and emailing a document attached to a claim were not checked against the role permissions configured under Settings > System Wide > Permissions, so any signed-in user could perform them. For the description, the permission settings controlled only whether the field was visible, not whether the change could be saved. All three actions now enforce the same role-based permission checks already applied elsewhere in claims, so configured restrictions take effect.
Internal Cleanup of Unused InsVista File-Building Code (BC-24308)
BriteCore removed an unused routine in the InsVista integration whose documentation incorrectly described it as the code behind the Build File button on Policies > Processing > InsVista. That button reopens the file already written, keeps only the rows the user selected, and re-uploads it, and the file building itself continues to run through the nightly job. There is no change to how InsVista files are produced; the change removes unreachable code and corrects the related documentation.
Cancellation Commits Blocked by Unrelated Policy Revisions (BC-24315)
When a policy in Cancellation Pending also had another open revision on it, the cancellation commit was refused because the check for active Persistent Builder work looked across every revision on the policy rather than the one being committed. Support teams then deleted the blocking revision and committed the pending cancellation by hand, which returned the policy to Active and generated a new invoice instead of canceling it. The check is now scoped to the revision being committed, so the cancellation commits and the policy cancels as expected.
Missing Policy Application Document on Automatically Issued Policies (BC-24340)
Policies issued automatically through straight-through processing did not produce the Policy Application document, so it never appeared under Attachments and the issuance email carried only the Declaration. Policies bound manually were unaffected, which made the gap specific to automatic issuance. Automatically issued policies now generate and attach the Policy Application the same way manually bound policies do.
Document Generation Error When a Custom Deliverable Has No Business Location (BC-24378)
Generating a custom deliverable failed with a generic application error when its report location had no business location assigned, which stopped previews as well as final documents. A missing business location is now handled so the document generates as expected.
Payments Accepted in the Policyholder Portal Despite Poor Payment History Restrictions (BC-24420)
On sites configured to disallow external payments against policies in Cancellation Pending for Non-Payment that carry the Poor Payment History tag, the BriteApps Policyholder Portal still showed a balance and an active payment button. Payments made there were charged, applied to accounts receivable, and moved the policy out of cancellation pending, reversing the underwriting decision. The portal now honors that Non-Pay life cycle setting, so a restricted policy is not offered a payment path and a submitted payment is refused.
Contact System Tags Missing on Additional Interests (BC-24456)
On the policy Information tab, configured contact system tags such as a membership identifier stopped appearing on Additional Interest entries, even though the same tags still displayed for Named Insureds on the same screen and on the contact record itself. Agents who cannot open contact records had no way to see the value and could create a duplicate membership as a result. System tags now display on Additional Interest cards, including property-level interests and the quoting wizard, matching how they appear for Named Insureds.
False Agency Save Error on the Policy Setup Screen (BC-24464)
Agents linked to more than one agency saw a red message reading "There was an error saving the agency" when they opened the Policy Setup screen on an active policy, without taking any action and without anything actually failing. The screen was attempting to re-save the agency as it loaded, against a committed revision that cannot be edited, and treated the response as a failure. The screen no longer attempts that save on a committed revision, so the misleading error no longer appears.
Limited Assignee Options in the Underwriting Workbench Task Queue (BC-24469)
On the All Tasks, Submissions, and Triage tabs of the Underwriting Workbench task queue, the Reassign and New Task assignee pickers offered only a fixed set of twenty people selected alphabetically, so most colleagues, and often the signed-in user, could not be chosen. Typing a missing name returned nothing because the search only filtered within that short list. The pickers now always include the signed-in user, list the most recently assigned people, and search the full set of eligible assignees.
Address Suggestions Without Entering a ZIP Code in the Homeowners Quote Flow (BC-24528)
In the Homeowners quote flow, address fields on screens such as Named Insured and Risk Details returned address suggestions only after a ZIP code was entered, while the Auto quote flow returned them right away. Address pre-fill now behaves consistently across both products, so suggestions appear as the address is typed without requiring the ZIP code first.
Broken Attachment Left Behind When a Document Fails to Generate (BC-24572)
When generating a document such as an Endorsement Summary failed partway through, an empty attachment entry was still left in the policy's attachments list. Opening it spun for several seconds and then reported that the file could not be found, and no automatic cleanup ever removed it. A failed generation now removes the placeholder entry it created, so it no longer leaves a permanently broken attachment behind.
Failed Cancellations Leaving Partial Accounting Behind (BC-24695)
When a policy cancellation could not be completed, the premium adjustment and the revision created during the attempt were kept even though the policy was never canceled, leaving it in a state no one intended. The failure was also silent, recorded only in system logs. A failed cancellation now leaves the policy exactly as it was, and the failure is surfaced through a Policy Cancellation Failed note and the nightly administrator alerts email.
Return Premium Check Export Reads the Payee From the Wrong Term (BC-24757)
In the Sungard return premium check export, the payee was resolved from whichever policy term was current on the transaction date rather than the term the return premium is recorded against. On a policy with more than one term, this could read the payee from a different term than the one the money belongs to. The export now uses the term recorded on the return premium, and keeps the previous behavior when that term has no readable revision.
Report Schedule Tables Install Cleanly on Older Report History (BC-24784)
A database update that adds the report cadence and schedule tables was reviewed for sites whose report run history still points at reports or output files that were removed years ago. The update now clears those dangling references and reports how many it cleaned before completing. Report scheduling installs without interrupting a release deployment.
Print Date Recorded in a Single Place (BC-24804)
When a declaration and its attached forms were marked as printed, the system attempted to store a print date on an internal record that has no field for it, so the value was silently discarded. That unused write was removed. The print date is still recorded where reports and print integrations read it, so print reporting is unchanged.
Relabeling Limited to Eligible Attachments (BC-24805)
The label applied to an uploaded photo or attachment could be saved onto any file on the site, including read-only generated documents such as an issued policy's declaration, and the activity note that followed described the change as a photo relabel. Relabeling is now limited to claim, policy and property attachments, rejects read-only files, and records an accurate note. A label is also saved only when it actually changes.
Option to Refund Small Credits on Canceled Terms (BC-24869)
The nightly return premium sweep skips credits at or below the configured credit threshold, which is meant to leave small lingering credits on live policies alone but also left small unearned premium credits on canceled terms unrefunded. A new setting lets carriers refund whatever credit remains on a term whose latest committed revision is canceled, while live terms continue to use the threshold. The setting ships turned off, so current behavior is unchanged until a carrier opts in.
Nightly Renewal Processing Stalling Partway Through (BC-24905)
Nightly renewal processing could hang indefinitely while checking which policies were eligible to renew, which stopped the entire batch for that night and required a manual re-run. The stall came from how database connections were shared when the job started its parallel workers rather than from any particular policy, which is why the affected policy differed each night and always processed normally on retry. Connections are now reset before those workers start, so the eligibility check completes and the renewal batch runs to the end.
Stricter Validation of True and False Values on Property Location Requests (BC-25014)
When updating a property location through the API, sending the primary or copy address flag as text rather than as a true or false value was treated as true, so a request asking not to make a property primary did the opposite. Those values are now validated on the property location update and quote creation endpoints, and a request that does not send a true or false value is rejected rather than acted on incorrectly. Requoting also validates the stored quote's locations before removing the existing policy, so an invalid value no longer causes a removal that is then refused.
More Reliable Caching of Compiled Rules (BC-25025)
BriteCore corrected how compiled rule code is addressed in the shared cache, where the same rule could be stored under different keys in different application processes. That allowed redundant cache entries to build up and prevented processes from reusing each other's compiled results. Rules now resolve to a single stable cache entry.