Build My Lines for the First Time

Preliminary Work

Project Lead

Dedicate a resource to this project who fully understands your product offerings and rates.

Manuals and Rates

  1. Compile and review rating and underwriting manuals to verify the information is current and relevant
  2. Notate sections that do not apply or should not be included in BriteCore
  3. Save time and minimize errors during data entry by using rates in electronic format, if possible
  4. Compile rating worksheets or manually rated policies that outline rating order or special calculations

Legacy Policies

Compile sample Declarations, around 10, for each line of business and form to guide setup and verify rating.

Key Questions

The answers to these questions will impact your lines setup. Even if you build your own lines, you may want review these questions with an IWS Content Analyst. Additional questions may arise once a Content Analyst reviews your rate manuals.

Manuals and Rates

  • Will you use homegrown, a rating bureau (AAIS, ISO), or a combination of the two?
  • Are your rates final or do you apply a loss cost multiplier?


  • In what order shall the lines of business be built?

Start with the simplest line of business with the fewest policies

  • Do you allow multiple properties on a single policy for each line of business?
  • How should the system handle items marked Refer to company for rating? For example, will underwriting manually rate those items?
  • Should premiums be rounded to the nearest penny or dollar?
  • Should limits be rounded to the nearest one, hundred, or thousand?
  • Will the rounding be different by coverage?
  • What are your default values for categories, deductibles, and limits?
  • If you have a line item that has a premium of $0, do you want to show as Incl. or $0.00 on the Declaration?
  • Does each form within a line of business have it’s own minimum limit? If yes, different sublines are needed for each form

Naming Conventions

What naming conventions will you follow: your own, a rating bureau's, a reinsurer's suggestion? For example, below are ways to name Coverage A in BriteCore. Once you decide upon a naming convention, keep it consistent across the system:

  • Cov. A
  • Coverage A
  • Coverage A - Dwelling
  • Coverage A - Residence

General Procedure

Unless you are building your own lines, an IWS Content Analyst will be assigned to your project. The Content Analyst will review the documents from your Preliminary Work. You will be presented with a sample build then review various settings in order to provide direction to the project. Then, the setup process can begin.

Settings > System Wide > Business Locations

Add your business locations in Settings > System wide > Business Locations. Learn more about business locations. To add your business locations,

  1. Check the box next to the State(s) in which you write
  2. Enter the County Name and Code in the Counties section. The Code does not serve a particular purpose
  3. If you divide your counties into smaller, ratable units (e.g., beach, non-beach), complete the County Specifications section directly underneath the Counties section

Lines > Effective Date

Add your first effective date with the description First effective date.

Make your first effective date today's date. That way, it will be locked tomorrow to avoid accidental deletion from that point forward.

Lines > Lines and Policy Types

Add a line then add a policy type for that line. For example, create a Homeowners line with a Homeowners policy type.

Complete the top section of the policy type.

Text Inputs

  • Description is information agents see while quoting. This can be left blank
  • Underwriting Guidelines is also information agents see while quoting. Many carriers elect to link their manuals here for agent access; see the Add an Agent Manual how-to below
  • Application Form Number allows for the unique identification of policy applications by policy type, which states like Wisconsin require. Once you define your form number, add the {app_id} HTML tag to the Policy Application deliverable in Settings > Deliverables


  • Allow Multiple Properties for this policy type? determines whether more than one property can be written per policy
  • Open to Quoting makes the policy type visible to agents
  • Set Maximum Number of Risks allows carriers to set a maximum number of risks per policy.
  • Requires an Address for risk(s) allows carriers to hide the Risks tab on the new policy wizard and bypass risk address information. This feature is intended for lines of business that do not require risk location information, such as umbrella coverage. Because most current carriers write lines of business that require risk location information, the setting is enabled by default.

To enable this setting:

  1. Navigate to Lines
  2. Click the relevant Effective Date
  3. Under the desired policy type, click the pencil icon to edit the relevant line item
  4. Enter the maximum number of risks you will allow to be written on a policy

Limit Threshold

See the setup for the Limit threshold upon which a policy of this policy type sends an administrative alert setting.


Declarations have forms. This is one location where you may upload any form in PDF format that should appear on the Declaration form list and print with every new business policy. For example, clients typically print a Privacy Policy with every new business policy. Then, use the following checkboxes:

  • Suppress Printing will result in the form never printing. It will appear on the Declaration but not print
  • Always Print on Renewal will cause the form to print with new business and at every renewal
    For greater flexibility, do not upload forms to this section. Rather, create a Mandatory Forms subline (pictured below). A subline offers two advantages
    • Controlling the order forms appear on the Declaration
    • As line items can be defined, the name of the line item can be the form name. This allows agents to view the form names in Builder with no need to generate the Declaration


The most challenging part of the build is knowing how and where to begin. The below steps are one method for initiating your first lines build.

Mandatory Coverages and Forms

  1. Start with mandatory items
  2. Create four new line items for Coverages A, B, C, and D
  3. Create one Mandatory Forms subline
  4. Add your mandatory forms. Each form should be it's own item
  5. Add optional coverages



  • A policy will rate fastest using the flat rate and evaluation rate objects
  • Rate and factor table rate objects tend to rate a policy slowly. When possible, use the evaluation rate object instead
  • Generally, the more steps involved in calculating a rate
    • The longer time a user must wait when rating a policy. For example, Coverage A with 9 steps will rate less quickly than a Coverage A with 3 steps
    • The greater the chance of rating inaccuracies due to dependency issues. As illustrated by the below example, the ML-55 receives it's rate from the base premium; however, the system cannot rate the base premium until it rates the ML-55
      • Coverage A and ML-55 rate off of
        • A base premium, which is comprised of
          • Calculation 1
          • Calculation 2
          • Calculation 3, which uses ML-55's rate
  • The Policy Wide section is for items that apply to the entire policy, regardless of the number of properties. The main case is for policy fees. All other coverages, including liability, should be built in the Primary Exposures section, which is also optimal for using Underwriting Rules

Mobile Homes

Mobile homes are like cars; the 2016 models are available in 2015. This fact should be considered when using the age category. Users will not be able to select 2016 on a policy that is effective in 2015.


See Test Lines below.

Add Supplemental Questions

See Add Underwriting Questions below.

Attach Forms

  1. Navigate to the applicable line item
  2. Click the pencil to edit the line item
  3. Click the Setup box
  4. At the bottom, click Attach Document
  5. Upload the PDF file

Import lines information

Engineers may read PR 5029.

Change My Existing Lines

  1. Review effective dates
  2. Create a new effective date far into the future so as to not affect any current policies
  3. Enter your changes
  4. Test new policies
  5. Test renewals by creating the renewal revision in order to understand how the changes may impact renewals
  6. Notate changes to your policy processing workflow or printing as a result of your changes
  7. Train your staff on how their workflows may change as a result of the lines change
  8. Move the effective date back to just before policies are about to renew

Request IWS Make Changes To My Lines

How to Request an Update

Submit an OOPS! ticket to IWS:

  1. Write a detailed description of the needed changes, including the lines effective date, line of business name, policy type, applicable coverages, and rates
  2. Upload any needed PDF forms to a newly-created folder and either attach to or include a link in the ticket
  3. Include the desired due date
    A minimum of 2 months lead time is required
  4. Indicate whether a call is needed to discuss the changes

What to Expect


IWS will evaluate the request and respond in the ticket with

  • Questions
  • General feedback
  • An estimate of hours to complete the changes
  • A general timeframe for when work will begin


Most, if not all, changes should be tested. Within the ticket, IWS will provide

  • A link to a test site
  • Specific instructions on what to test
  • Processes to be prepared for (e.g., Persistent Builder)

During testing, please keep communication within the Trac ticket.


IWS will offer suggestions for launching the changes.


What priority will be assigned to my request?
The priority depends on the current project queue and capacity of the content team. We will do our best to provide an idea of where the request falls on our priority list.

Can I email a Content Analyst directly with the updates I need?
For a complete audit trail, please keep all communication within the OOPS! ticket.

Can the changes be implemented even if I am unable provide the required lead time?
Possibly, but we cannot guarantee completion by the requested date.

Implement a Rate Adjustment

Core Concepts

  • A rate change is applied on a per effective date basis and should only be implemented on a future effective date
  • Rates may be increased by a flat dollar amount or may be increased/decreased by a factor
    It is important to understand factors
    • A factor of 1.0000 would result in no rate change
    • A factor of 1.2500 would result in a 25% rate increase as you take 1.0000, or 100% of the current rates, then add another 0.2500, or 25%
    • A factor of 0.9500 would result in a 5% reduction in rates as you're taking 95% of the current rates
  • Rate changes may be applied to the policy type or line item levels


  1. Contact IWS for consultation
  2. Create a new effective date far into the future
  3. Navigate to Lines > Effective Date > Utilities > Rate Adjustment
  4. Determine whether to increase by a flat dollar amount or some factor
    • To increase the rate, enter a factor over 1.0000. For example, a 5% rate increase would be a factor of 1.0500
    • To decrease the rate, enter a factor under 1.0000. For example, a 10% rate decrease would be a factor of 0.9000

Applying a Rate Adjustment

  • To apply the rate change to all states and lines of business, check the box across from the States folder
  • To apply the rate change to some states or lines of business, open each folder and check the box across from the applicable state or line of business
    Important notes
    • Recall the Lines module has a Primary Exposures (Property) and Policy Wide (Policy) section. Ensure you reference the correct section according your lines setup when locating line items or sublines
    • Rate changes can be made to parts of a line item's rate chain. For example, you want to increase Coverage A's base rate but not any other factors. Rather than increasing all Coverage A factors (e.g., LCM, premium group relativities), target the base rate specifically
    • This tool does not presently work for lines using the evaluation rate object

Add An Agent Manual

Make a manual available to agents:

  1. Navigate to Lines > Attachments
  2. Create a new folder called Manuals or add to an existing folder
  3. Upload your manual
  4. Once uploaded, click on the manual and copy the URL
  5. Navigate back to the Effective Dates tab
  6. Select the appropriate effective date
  7. Select the appropriate policy type
  8. In the Underwriting Guidelines section of the policy type, copy this HTML syntax
    <a href="PASTE THE URL HERE" onclick="'PASTE THE SAME URL HERE', '_new');return_false;">PUT THE NAME OF THE DOCUMENT HERE</a>
  9. Insert the URL and document wording into the HTML syntax

Add Underwriting Questions

Underwriting questions apply to quotes and applications. They can be broken into two categories: questions that apply regardless of line of business and questions that are line of business specific.

Questions that Apply Regardless of Line of Business

Think of these as introductory questions that all agents must answer for all lines of business. By default, these questions do not appear on the Quote Summary deliverable but do appear on the Policy Application deliverable.

  1. Navigate to Lines > Effective Date > Underwriting > Questions
  2. Add the desired questions that apply across all lines of business
  3. If desired, select an If yes, explain or If no, explain enforcement within the Explain column. When enabled, an agent who answers yes/no but fails to type an explanation will be unable to submit the application; a message for which will display when the agent attempts to submit the application.
  4. If desired, select an If Yes or If No enforcement within the Disallow Application column. When enabled, a The answer selected for question 1 has disqualified this application. Please discontinue and contact underwriting with questions message will appear to the agent and prevent submission of the application.
  5. An optional underwriting message and approval section can be displayed if underwriting approval is needed. In Settings > Modules > BriteQuote > Options, you can elect to Show the “Underwriting Contact” along with a custom message. When the setting is enabled, three inputs will appear: a yes/no question as to whether underwriting was contacted, a date field, and a prepopulated list of underwriters.
    Underwriters must have the role of Underwriter in the Contacts module

Questions that Are Line of Business Specific

  1. For each line of business, create a line item titled Underwriting Questionnaire
  2. Check the following line item options
    • Line item is mandatory for this policy type
    • Show in Builder (BriteCore and BriteQuote)
  3. Build the questions using the supplemental questions documentation

Best Practices and Tradeoffs

  • Questions can be individual or part of a group. If questions are grouped (e.g., questions pertaining to a swimming pool), the Print Options enforcement is for the group as a whole
  • At present, there is no definable relationship between questions. For example, if a user indicates there is no swimming pool on premises, he/she must still answer any other swimming pool questions
  • Given the different setup options within BriteCore, it is best to provide a list of currently used underwriting questions to IWS along with any restrictions (e.g., we do write this, we won’t print this). IWS will then set up the questions, walk through an application, and then update the questions as feedback is provided

Test Lines

General Setup and Rates

  1. Ensure you know the steps to create a policy
  2. Ensure you know how to submit issues via the OOPS! button
  3. Gather a few policies from your legacy system the rates of which you understand
  4. Create policies in BriteCore against the line of business to be tested
  5. The mandatory coverages/endorsements will be on the policy. Test different combinations of limits and deductibles
  6. Rate the policy
  7. Add other coverages/endorsements to the policy
  8. Rate the policy
  9. Generate a copy of the Declaration
  10. Complete the policy checklist
    • Ensure line items and categories are named as you'd like
    • Verify min/max limits and premiums
    • Verify automatic limits are used where appropriate
    • Verify the deductible options and default value
    • Verify deductibles sync when appropriate
    • Verify applicable line items can be added multiple times
    • Verify underwriting rules add and remove line items or categories as intended
  11. Complete the Declaration checklist
    • Verify the Declaration language is correct and error free
    • Ensure line items display in the desired section
    • Ensure the appropriate limit is displayed or not displayed for each line item
    • Ensure the appropriate form numbers are displayed
    • Ensure premium total and fees are correct
    • Ensure rating information displays correctly
    • Ensure schedules and supplemental questions are displayed
  12. Report any inconsistencies in premium or incorrectly setup items to your Content Analyst via the OOPS! button. In the ticket, include a specific description of what you expected and what you actually saw. If possible, include a calculation showing how to get the premium you expected to see. Also include the line item name, values (deductible, limit, rate, etc.) you wanted but did not see, and the policy number you were using to test

Test Against Real Data

  1. Consider starting a spreadsheet to track your testing. Feel free to use this spreadsheet as a starting place. Once accessed, click File > Make a Copy or File > Download As
  2. Pull a policy from your previous processing system and build it in BriteCore, matching coverages, deductibles, adjustments, and limits
  3. Rate the policy
  4. Record the results
  5. Repeat this process for a cross-section of forms and coverages. Focus your time on the most common endorsements, and then complete a few tests with less common endorsements
  6. Report issues to your Content Analyst

Copy Data

Line items and sublines can be copied within or among policy types of the same effective date. Presently users cannot copy data across effective dates or states; contact your Content Analyst. To copy data,

  1. Navigate to Lines > Select an Effective Date > Utilities > Copy Data
  2. Select a state
  3. Navigate to the Locations section
  4. From Policy Type choose the policy type from which data will be copied
  5. To Policy Type choose the policy type to which the data will be copied
  6. Navigate to the Data section
  7. In the Copy What area
    • Select All Information, or
    • Target specific data by first selecting the area from which data will be copied
      Recall that policy types are divided into two sections, Primary Exposures (Property) and Policy Wide (Policy), and within each section are line items and sublines
  8. Select the line item(s) or subline(s) you would like to copy
  9. In the Into What area, select the area into which you want the identified data to copy

Select A Line Item In The Rate Chain Through The Database

  1. Create a new line item and name it something you will remember (e.g., yourName)
  2. Get the yourName line item UUID from the URL, e.g., 1dfafad8-7d98-4339-984d-5fcb32c833ec
  3. Open another browser window so you can see yourName line item and the one you want to update
  4. Set up yourName line item the same way as the item you are wanting to add the new line item to
    Do not set the line item to mandatory
  5. Create the rate chain for yourName line item, like the one you are trying to add the new item to or with just a rate per
  6. Within the rate per dropdown on yourName line item, select the new item you want to add (e.g., ML-342). You need not copy all of the items already on the dropdown of the item you are copying from
  7. Get the line item UUID of the line item you want to copy the new rate chain to
  8. Go the rate_chain_refs table
  9. Filter for chainID using the copied line item UUID for yourNamelineItemID
  10. Change the chainId of those rows to the yourNamechainID. This will move them from the yourName line item to the one you want to copy them to
    An update statement could be used if there are many updates to make
  11. Delete your copied line item (yourName)

Use Shell Tools

Shell tools are for IWS use only and can be accessed in the lines section of the BriteCore shell.


Copy line items from one policyType to another. rateChainRefs are not copied.

Pick an effective date to copy from:
Pick a business location to copy from:
Pick a policy type to copy from:
Pick an effective date to copy to:
Pick a business location to copy to:
Copy Line Items from:


Copy a policy type to a new effective date or another state. Be sure to create the line of business for the new effective date or state before using this command. Enter the dates in the YYYY-MM-DD format.

Policy Type Name:
Effective Date to Copy From:
Current Business Location State Abbv.:
Effective Date to Copy To:
Business Location State Abbv. to Copy To:
(Y/N) Are you sure you wish to do this?


Copy underwriting rules from one business location to another.
underwriting_rules_effects.target_ids and underwriting_rules_triggers.policy_type_item_ids may be inferred by the script based on matching names in the origin and destination policy types, or manually chosen by the user.

Pick an effective date to copy from:
Pick a business location to copy from:
Pick a policy type to copy from:
Pick an effective date to copy to:
Pick a business location to copy to:


Creates a builderdiff mapping to supply persistent builder with an explicit change.

The different types of mappings are

  • category
    • Used when a category's name changes
  • category_option
    • Used when a coverage's option(s) changes, such as when 1 Family and 2 Family becomes 1-2 Family
  • coverage
    • Used when a coverage's name changes, such as when Total Premium Credit becomes Premium Range Credit
  • input_type
    • Used when a supplemental question changes its input type, such as when a single line question becomes a multi-line question
  • policy_type
    • Used when policy type's name changes, such as when Homeowner’s - Form 2 becomes Homeowners
  • sub_line
    • Used when subline's name changes, such as when Homeowner’s - Form 2 becomes Homeowners
  • supp_question
    • Used when a supplemental question's name changes, such as when Describe location becomes Address/Legal Description of Location
  • deductible_removed
    • Used when the deductible's rate object is dropped from an item’s rate chain


Hard-deletes a policy type item.

Line Item Id:


Hard-deletes a line of business and everything related to it (policy type items, sublines, etc.).

Line Name:
Effective Date (YYYY-MM-DD or “all”):
Business Location State Abbv.(MO or “all”):


Exports a line that can be imported into a different BriteCore site. Good for demos or templates.

Line Name:
Effective Date to Copy From: (YYYY-MM-DD)
Current Business Location State Abbv.:
Email to mail the export to: (optional)
(Y/N) Are you sure you wish to do this?


Imports a line from a JSON export file. The function only copies things that are stored on the line level and below; as such, items like Deductible Groups and Forms are not copied. See PR 2987 for more information.

The structure of the JSON object export is

  • line
  • policy_types
    • policy_type
    • sub_lines
    • line_item_groups
    • policy_type_items
      • pt_item
      • item_question_groups
      • item_questions
      • x_line_item_groups_items
      • rate_chain_refs
    • underwriting_rules
      • underwriting_rule
      • underwriting_rules_effects
      • underwriting_rules_triggers

Filepath to export document:
Effective Date to Copy Line Into: (YYYY-MM-DD)
Current Business Location State Abbv.:
(Y/N) Are you sure you wish to do this?


Deletes a BuilderDiffMapping that the user chooses.

Mapping Type: (see help for options and examples)
The name of the object in the current eff date:
The name of the new object:
(Y/N) Are you sure you wish to do this?


Replaces unicode in the chosen table/column.

Table to Clean Up (use model): ex: PolicyTypeItem
Column to Clean Up : ex: name
(Y/N) Are you sure you wish to do this?


Returns a list of rules with either broken triggers or effects.

Policy Type ID (None for all policy types):
(N) Just show rules that are broken due to triggers on items that allow multiples? (Y/N):

Transform Data to JSON for Use in Rate Objects

Follow the directions in this spreadsheet.

Replace a Form Without Going Through the Lines Module

Initial Steps

  • Determine which forms need to replaced and collect this information
    • File title
    • File form code
    • File's edition number
    • The policy_type or policy_type_item to which the form belongs
    • The line's effective date
    • The new form PDFs
  • The query below is a starting point for identifying the correct files and returns the file URLs
    select files.url from files
      inner join x_policy_types_docs
        on = x_policy_types_docs.fileId
      inner join policy_types
        on = files.referenceId
      inner join effective_dates
        on = policy_types.effectiveId
      where x_policy_types_docs.formCode = 'HAL-NC-NTP'
      and effectiveDate = '2016-01-01';

Replace the Files on s3

  1. Retrieve the complete URLs using the below query as a starting point
    select concat('s3://britecorepro/halifax/', files.url) from files
     inner join x_policy_types_docs
       on = x_policy_types_docs.fileId
     inner join policy_types
       on = files.referenceId
     inner join effective_dates
       on = policy_types.effectiveId
     where x_policy_types_docs.formCode = 'HAL-NC-NTP'
     and effectiveDate = '2016-01-01';
  2. Copy the s3 URLs to a file named s3files.txt
  3. Upload the new form PDF to the URLs in the client's s3 bucket using the aws s3 cp command, which takes two arguments: a path to a local file to upload to s3 and the location on s3 that you wish to upload these files to
  4. Run this command for f in 'cat s3files.txt'; do aws cp ~/Downloads/HAL-NC-NTP-2016.pdf $f; done. This command reads every URL out of s3files.txt then uploads the new PDF to that URL. This effectively overwrites the current PDFs

Removing the Local Files

BriteCore caches PDFs when they're viewed to cut down on s3 requests. This means that instead of asking s3 for the PDF, BriteCore will only ask for a PDF at a certain address if that file doesn't exist on disk, and then it saves that file to disk so it doesn't have to ask again. Subsequent requests for the PDF at that address will simply get the copied version that exists on disk. The cached PDF files must be removed because the new PDFs exist at the same address as the old ones; otherwise when someone goes to view the PDF he/she will get the cached version. By removing the cached PDFs it forces BriteCore to request the file from s3 again, thus getting the new PDF:

  1. Access the leader and follower instances
  2. Locate the cached files using the below query as a starting point
    select concat('/srv/www/britecore/', files.url) from files
      inner join x_policy_types_docs
            on = x_policy_types_docs.fileId
      inner join policy_types
            on = files.referenceId
      inner join effective_dates
            on = policy_types.effectiveId
      where x_policy_types_docs.formCode = 'HAL-NC-NTP'
      and effectiveDate = '2016-01-01';
  3. Copy the file names into a file on the disk at /tmp/files.txt
  4. Remove the cached PDFs by running for f in 'cat /tmp/files.txt'; do rm $f; done on both instances. This command may produce some errors about not being able to remove some of the files; this is expected since only some of the files exist on the Leader and some on the Follower
  5. Verify the new form is retrieved by accessing it via the interface in the Lines module
  6. Update the edition number using the below query as a starting point
    update files
      inner join x_policy_types_docs
            on = x_policy_types_docs.fileId
      inner join policy_types
            on = files.referenceId
      inner join effective_dates
            on = policy_types.effectiveId
      set x_policy_types_docs.editionNumber = '(01-16)'
      where x_policy_types_docs.formCode = 'HAL-NC-NTP'
      and effectiveDate = '2016-01-01';

Copy Supplemental Questions

  1. Using the copy utility, copy the line item with the supplemental question
  2. Rename the copied line item to something obvious (e.g., yourName)
  3. Copy the original line item UUID from the URL (e.g., 9abef7a3-b991-4454-9e22-dd36b37f23cb)
  4. Copy the yourName line item UUID
  5. In the database, go to the item_question_groups or item_questions tables as appropriate
  6. Filter for itemId using the yourName line item
  7. Change the itemId’s of those rows to the original itemId. This will move them from the yourName line item to the original line item
  8. Delete the yourName line item

Change the format of a line item on the Declaration

  1. Navigate to Lines > Effective Date > Policy Type
  2. Click the pencil next to the policy type in question
  3. Locate the line item you would like to change
  4. Click the pencil
  5. Open the Setup box
  6. Under Options, locate the Display on Declaration as setting
  7. Update the font size or check the bold or italics checkbox

Use Straight Through Process

Those with access may read PR 5123.


Report unclear or missing documentation.