Topics on this page

Configure LexisNexis National Credit File in BriteSuite

LexisNexis National Credit File (NCF), or LexisNexis Credit, provides consumer credit history reports from a national repository of consumer credit records from three major credit bureaus. These reports may contain the following sections:

  • Summary
  • Identification
  • Employment
  • Public record
  • Collection
  • Trade account activity
  • Consumer statement
  • Inquiry history

LexisNexis Credit offers several benefits:

  • You can pull in an applicant’s credit reports during the new business quote flow for auto policies in addition to property and liability policies.
  • Identifies potential underwriting risks. 
  • Makes risk assessment much easier and more accurate.  
  • Increases data management efficiency.

Implement LexisNexis Credit

You have two options to implement LexisNexis Credit with BriteSuite:

  • Use BriteCore’s LexisNexis Credit plugin to provide claims history information. If you choose to use our pre-written plugin, all you need to do is map your data (Steps 2 and 3).

Note: Our team provides data mapping as an additional service.

  • You can write your own plugin using custom logic.

Note: At this point, plugins are only available in the quote flow for auto policy.

To learn more about plugins please refer to BriteCore’s plugins documentation.

This tutorial walks you through implementing LexisNexis Credit in BriteCore if you want to write your own plugin. It can also help you understand how LexisNexis Credit integrates with BriteSuite.

LexisNexis Credit functionality

This section provides an overview of how LexisNexis Credit works in BriteQuote.

Setup screen (Request data)

The Get Credit History button is located on the Setup screen of the quote flow. The required fields include:

  • Policyholder’s full name
  • Current address

Note: It’s recommended to include the insured’s Social Security number (SSN) and date of birth (DOB) for best matching results. However, Britecore requires only the insured’s full name and address.

On the Setup screen, the Insurance Score box defaults to NO HIT until the LexisNexis button is selected. When you select the button, a pop-up window will ask you to validate you received permission to pull the credit report. When you validate the permission, the Insurance Score box will display the insurance score.

Note: This integration doesn’t run automatically. The agent must initiate LexisNexis Credit by selecting the button. 

Review screen

 A PDF copy of the insured’s credit report is attached to the Review screen. The credit report PDF will open in a new tab.

Alert messages

LexisNexis may return the following alert messages in the results:

  • Security freeze
  • Fraud alert 
  • Identify theft
  • Legal hold (associated with a data dispute flag)

Error handling

BriteCore displays error messages directly from LexisNexis. These error messages include, but aren’t limited to: 

  • Missing Mandatory fields for report ordering.
  • Connection errors.
  • Configuration errors.

Set up LexisNexis Credit in BriteSuite

Step 1: Contact LexisNexis

Contact LexisNexis to complete the paperwork and set up an account. LexisNexis will provide the following information:

  • Client ID
  • PNC account number
  • Carrier account ID
  • Carrier account number
  • Rule plan ID

Step 2: Contact your BriteCore support team

Provide your LexisNexis information to the BriteCore support team. The BriteCore staff will set up the configuration in BriteDeploy and provide you with the URL to the service’s HTTP endpoint.

Step 3: Consider your configuration options

Consider your configuration options and fill out the LexisNexis Credit Questionnaire.

Step 4: Create the data mapping

Map the data from LexisNexis to your lines configuration. In this step, take your specific user-defined fields from lines and map them to the data you receive from LexisNexis Credit (and back).

To learn more about how data mapping works in BriteCore, please refer to our data mapping documentation.

Sample data for a POST/mappings request.

View code
{
  "data":{
    "type":"mapping",
    "attributes":{
      "from":"quote",
      "to":"lexisnexis-ncf",
      "mapping":{
        "template":"""{\n\"subject\": {\n\"first_name\": \"{{source.firstNameNI}}\",\n        \"middle_name\": \"{{source.middleInitialNI}}\",\n\"last_name\": \"{{source.lastNameNI}}\",\n \"date_of_birth\": \"{{source.dateOfBirthNI}}\",\n        \"ssn\": \"{{source.socialSecurityNumberNI}}\"\n },\n \"address\": {\n \"street\": \"{{source.streetAddressNI|sub('[^0-9]', '')|trim}}\",\n \"house\": \"{{source.streetAddressNI|sub('[0-9]', '')|trim|default(1)}}\",\n \"city\": \"{{source.cityNI}}\",\n  \"state\": \"{{source.stateOfNI.split('_')[1][0:2].upper()}}\",\n        \"postal_code\": {{source.zipCodeNI or 0}}\n  },\n  \"drivers_license\": {\n        \"number\": \"{{source.licenseNumberNI}}\",\n   \"state\": \"{{source.licenseStateNI.split('_')[1][0:2].upper()}}\",\n \"type\": \"personal\"\n    },\n    \"policy\": {\n \"number\": \"{{source.otherPolicyNumberId}}\"\n }\n}"""
      },
      
    },
    
  }
}{
  "data":{
    "type":"mapping",
    "attributes":{
      "from":"lexisnexis-ncf",
      "to":"quote",
      "mapping":{
        "template":"""{% set ncf_reference = source.reports[0].product_reference %}
{% set ln_scoring = source.reports[0].scoring[0] %}
{% set score_field = namespace(name="insuranceScoreNI", options=[]) %}
{% set score_field_option = namespace(name=None, label=None, min_score=0, max_score=0) %}
{% set ncf_permission = source.reports[0].ncf_permission %}

{% for field in source.riskTypeState.fields %}
    {% if field.name ==  score_field.name%}
        {% set score_field.options = field.options %}
    {% endif %}
{% endfor %}

{% for option in score_field.options %}
    {% if option.label|lower == ln_scoring.status|lower %}
        {% set score_field_option.name = option.name %}
    {% elif '-' in option.label %}
        {% set score_field_option.min_score = option.label.split('-')[0]|int %}
        {% set score_field_option.max_score = option.label.split('-')[1]|int %}
            {% if
            not score_field_option.name and
            score_field_option.min_score <= ln_scoring.score|int and
            score_field_option.max_score >= ln_scoring.score|int
            %}
                {% set score_field_option.name = option.name %}
            {% endif %}
    {% endif %}
{% endfor %}

{
    "riskPatchData": {
        "insuranceScoreLastRetrieved": "{
          {
            ln_scoring.date_request_received
          }
        }",
        "insuranceScoreNI": "{
          {
            score_field_option.name
          }
        }",
        "ncfReference": "{
          {
            ncf_reference
          }
        }",
        "ncfPermission": "{
          {
            ncf_permission
          }
        }"
    },
    "riskQuotesData": {
        "reasonCodes": {{ln_scoring.reason_codes}}
    }
}"""
      },
      
    },
    
  }
},

Sample request to LexisNexis Credit

View code
{
		"subject": {
			"first_name": "Maurice",
			"middle_name": "",
			"last_name": "Weber",
			"date_of_birth": "1958-10-11",
			"ssn": "666-47-1492",
			"gender": "male"
		},
		"drivers_license": {
			"number": "A63406970",
			"state": "VA",
			"type": "personal"
		},		
		"address": {
			"house": "725",
			"street": "Harpersville Rd",
			"city": "Newport News",
			"state": "VA",
			"postal_code": 23601
		}
	}
]

Sample response from LexisNexis Credit

View code
{
  "b64_pdf_reports": [],
  "meta": {
    "messages": [
      "ORDER NUMBER: 146XGSN"
    ],
    "transaction": {
      "final": true,
      "id": "146XGSN",
      "timestamp": "2021-08-12T17:43:21.918-04:00"
    },
    "warnings": []
  },
  "reports": [
    {
      "alerts": [],
      "is_possible_mismatch": false,
      "licenses": [
        {
          "class": null,
          "expiration_date": "2021-05-22",
          "issue_date": "2018-07-07",
          "state": "VA",
          "status": "LICENSED"
        }
      ],
      "possible_mismatch_fields": [],
      "status": "Hit - Activity Found",
      "subject_identification": {
        "address": "ROBERT, WILLIAM F, 1611 MARTIN AVE, CHESAPEAKE VA 233243221",
        "also_known_as": null,
        "date_of_birth": "1963-12-02",
        "eye_color": null,
        "gender": "",
        "hair_color": null,
        "height": null,
        "lex_id": "888809049575",
        "license_number": "A62-44-8144",
        "ssn": "666-40-3362",
        "subject_id": "S1",
        "weight": null
      },
      "total_violation_points": 4,
      "violations": [
        {
          "consumer_narrative": null,
          "conviction_date": "2019-09-27",
          "description": "FAIL STOP/YIELD ENTERING HWY",
          "points": "4",
          "standard_violations": [
            {
              "additional_underwriting": null,
              "classification": "Speeding and Other Traffic-related Violations",
              "code": "32100 E",
              "commercial_hazardous": null,
              "customer_specific_code": null,
              "description": "FAIL TO YLD, GENERALLY",
              "points_assignment": null,
              "speeding": {
                "limit": null,
                "over_limit": null
              },
              "violation_severity_code": null
            }
          ],
          "state_violation_code": null,
          "suspension_date": "2019-07-18",
          "type": {
            "code": "CONV",
            "description": "Conviction"
          }
        },
        {
          "consumer_narrative": null,
          "conviction_date": "2019-03-04",
          "description": "OFF RELATING TO REG/LICENSING/TITLING",
          "points": "0",
          "standard_violations": [
            {
              "additional_underwriting": null,
              "classification": "Registration, Titling and Licensing",
              "code": "11100 A",
              "commercial_hazardous": null,
              "customer_specific_code": null,
              "description": "REG VIOL, GENERALLY",
              "points_assignment": null,
              "speeding": {
                "limit": null,
                "over_limit": null
              },
              "violation_severity_code": null
            }
          ],
          "state_violation_code": null,
          "suspension_date": "2019-02-15",
          "type": {
            "code": "CONV",
            "description": "Conviction"
          }
        },
        {
          "consumer_narrative": null,
          "conviction_date": "2019-02-18",
          "description": "OFF RELATING TO REG/LICENSING/TITLING",
          "points": "0",
          "standard_violations": [
            {
              "additional_underwriting": null,
              "classification": "Registration, Titling and Licensing",
              "code": "11100 A",
              "commercial_hazardous": null,
              "customer_specific_code": null,
              "description": "REG VIOL, GENERALLY",
              "points_assignment": null,
              "speeding": {
                "limit": null,
                "over_limit": null
              },
              "violation_severity_code": null
            }
          ],
          "state_violation_code": null,
          "suspension_date": "2019-01-06",
          "type": {
            "code": "CONV",
            "description": "Conviction"
          }
        }
      ]
    }
  ],
  "timestamp": "2021-08-12T17:43:21.918-04:00"
}

Step 5: Write the plugin

If you’re using BriteCore’s LexisNexis Credit plugin, skip this step.

To write your own plugin, interface with LexisNexis Credit at:

View code
POST <integrations url>/lexisnexis/national-credit-file/

Add this following script to the header of your HTML file:

View code
<script src="https://unpkg.com/@britecore/ui-plugins-client"> </script>

You can now use the BriteCorePlugin helper so your plugin can communicate with BriteCore:

View code
import {
  fetchCreditScore,
  plugin
} from './lib.js'

plugin.initialize({
  "markup": {
    template: `
      <div>
        <el-dialog
          title="Confirmation required"
          :visible.sync="ncfPrompt"
          max-width="30rem">
          <span v-html='promptText'></span>
          <span slot="footer" class="dialog-footer">
            <el-button type="secondary" @click="closeDialog()">No</el-button>
            <el-button type="primary" @click="confirmFetchCreditScore()">Yes</el-button>
          </span>
        </el-dialog>
        <el-button class="u-mt3" @click="openDialog()" :loading="componentLoadingIndicator" v-loading.fullscreen.lock="fullscreenLoadingIndicator">Get credit score</el-button>
      </div>
    `,
    data: {
      ncfPrompt: false,
      componentLoadingIndicator: false,
      fullscreenLoadingIndicator: false,
      contextData: null,
      promptText: ''
      
    },
    methods: {
      async confirmFetchCreditScore() {
        this.parent.setData({componentLoadingIndicator: true})
        this.closeDialog()
        const boundFetchCreditScore = fetchCreditScore.bind(this)
        await boundFetchCreditScore(this.contextData)
        this.parent.setData({componentLoadingIndicator: false})
      },
      async openDialog() {
        if (!this.promptText){
          this.contextData = await this.parent.getData('context')
          this.parent.setData({promptText: this.contextData.pluginConfig.prompt_text})
        }
        this.parent.setData({ncfPrompt: true})
      },
      closeDialog() {
        this.parent.setData({ncfPrompt: false})
      }
    }
  }
});

 

Step 6: Host your plugin in a public location

If you’re using BriteCore’s LexisNexis Credit plugin, BriteCore hosts the plugin for you. 

Otherwise, each plugin is a HTML document rendered in a hidden iframe. BriteCore’s UI queries the plugins available and renders any plugin on the specified pages.

Since BriteCore’s UI runs in a browser, the request for the plugin must occur without credentials to a publicly available location, or BriteCore must host the plugin placing the HTML file behind our authentication.

Step 7: Register the plugin in BriteIntegrations

If you’re using BriteCore’s LexisNexis Credit plugin, BriteCore registers the plugin for you. 

Otherwise, send an API call to BriteIntegrations using the /plugins/ endpoint to POST.

Sample request payload

View code
{
    "type": "plugin",
    "attributes": {
      "name": "LexisNexis Credit",
      "base_url": "integrations.integrations-sandbox.britecore.com",
      "plugin_slots": [
        {
          "location": {
            "type": "bottom-row"
          },
          "plugin_file_path": "/lexisnexis/national-credit-file/plugin",
          "slot_name": "britequote:risk-edit:button-row"
        }
      ],
      "configuration": {}
    }
  }