Topics on this page

Configure ISO VINMASTER in BriteSuite

VINMASTER allows you to locate the correct ISO statistical symbols, as well as other relevant insurance information, for vehicles that are contained in ISO’s symbol and identification manual.

You can search the database by either VIN (vehicle identification number) or by the model name/description of the vehicle. VINMASTER also offers a trailer dataset that uses different search parameters (year_built and price_new).

VINMASTER files are flat files that are loaded into a table to look up the information. Unlike other integrations that call out to the vendor each time, this integration only involves calling out to the table(s). 

VINMASTER offers several benefits:

  • Saves time during application intake.
  • Makes risk assessment much easier and more accurate.  
  • Increases data management efficiency.

Implement ISO VINMASTER

You have two options to implement VINMASTER with your BriteSuite:

  • Use BriteCore’s LexisNexis C.L.U.E. plugin to provide vehicle 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 available only 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 VINMASTER in BriteCore if you want to write your own plugin. It can also help you understand how VINMASTER integrates with BriteSuite.

VINMASTER functionality

This section provides an overview of how VINMASTER works in BriteQuote.

Vehicle screen (Request data)

The VINMASTER button (labeled Lookup Vehicle) is located on the Vehicles screen of the quote flow. The required request parameters include:

  • VIN
  • Vehicle year
  • State
  • Policy effective date

Note: The Make and Model fields are blank when a new vehicle is added and prior to calling VINMASTER, Vehicle Performance has a default value of “Standard,” and Anti-lock brakes has a default value of “No.”

VINMASTER will update the default values if needed.

This response data from VINMASTER is updated on the Vehicles screen.

Note:  This integration does not run automatically. The Agent must initiate the VINMASTER request by selecting the Lookup Vehicle button.

Vehicle screen (Response data)

The data returned from VINMASTER updates the following fields:

  1. VINMASTER updates the following fields: 
    • Make 
    • Model
  2. To continue, select the Primary Driver Assignment (a required field). 
  3. VINMASTER updates the following additional fields:
    • Performance
    • Anti-lock brakes 
  4. Select Comprehensive Coverage. VINMASTER updates the Comprehensive Symbol and the Anti-Theft Code so they can be used in rating.
  5. Select Collision Coverage. VINMASTER updates the Collision Symbol so it also can be used in rating.

Set up VINMASTER in BriteSuite

To set up VINMASTER  in BriteSuite, you need to do the following:

Step 1: Obtain your VINMASTER license

Once you sign up with VINMASTER you will receive your licensed data. VINMASTER will send the data to BriteCore directly. The datasets are updated quarterly.

Step 2: Contact your BriteCore support team

BriteCore will load and deploy the data files to your site.  Since this requires AWS access, a BriteCore engineer will handle this.

Step 3: Consider your configuration options

Consider your configuration options and fill out the VINMASTER configuration questionnaire.

Step 4: Load VINMASTER data files into production

VINMASTER Physical Damage data files are stored in an Amazon S3 bucket with the prefix vinmaster-vehiclefilesbucket.

  1. Navigate to the  Google Drive link and download some of the VINMASTER data files. They are the files that end with the .prn extension and the trailer_symbols.yaml file.
  2. Create a folder named new_vehicle_files in the root the your S3 bucket. Note: Make sure you use the bucket that was created by the VINMASTER service. You can access it by going to: Service Catalog > Provisioned Products > VINMASTER > CloudformationStackARN > VehicleFilesBucket.
  3. Upload the vehicle data files to the new_vehicle_files folder. Note: Do not upload too many files at once, it will create errors and not all VINs would it make it to the database. Upload 5 or so at a time allowing time to process.
  4. The VINMASTER Integration will parse and load the files into the database. When the file is processed it is automatically moved to parsed_files folder and removed from new_vehicle_files.

For more information refer to the VINMASTER vendor web service Readme.

Note: You must be authorized to access the repo.

Step 5: Create the data mapping

Map the data from VINMASTER to your lines configuration. In this step, you are taking your specific user-defined fields from lines and mapping them to the data you are receiving from VINMASTER. (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": "vinmaster_vehicle",
            "to": "quote",
            "mapping": {
			“template”: "””
{% set has_anti_lock = source.anti_lock_brake_indicator == 'S'%}
{% if source.anti_theft_indicator %}
    {% set anti_theft_code = source.anti_theft_indicator|lower %}
    {% else %}
    {% set anti_theft_code = 'None' %}
    {% endif %}
{% set performance = {
    '1': 'performance_intermediate',
    '2': 'performance_high',
    '3': 'performance_sports',
    '4': 'performance_sportsPremium'
    }[source.performance_indicator] | default('performance_standard') %}
{
    \"model\": \"{{source.basic_model_name}}\",
    \"comprehensiveSymbol\": \"comprehensiveSymbol_{{source.comprehensive_rating_symbol}}\",
    \"collisionSymbol\": \"collisionSymbol_{{source.collision_rating_symbol | int}}\",
    \"hasAntiLock\": {{has_anti_lock}},
    \"antiTheftCode\": \"antiTheftCode_{{anti_theft_code}}\",    \"grossWeight\": {% if source.gross_vehicle_weight is not none %} \"{{source.gross_vehicle_weight}}\" {% else %} 0 {% endif %},
    \"bodyStyle\": \"{{source.body_style}}\",
    \"performance\": \"{{performance}}\",
    \"circular_number\": \"{{source.circular_number}}\",
    \"class_code\": \"{{source.class_code}}\",
    \"combined_symbol\": \"{{source.combined_symbol}}\",
    \"curb_weight\": \"{{source.curb_weight}}\",
    \"daytime_running_lights\": \"{{source.daytime_running_lights}}\",
    \"effective_date\": \"{{source.effective_date}}\",
    \"electronic_stability_control_indicator\": \"{{source.electronic_stability_control_indicator}}\",
    \"engine_cylinders\": \"{{source.engine_cylinders}}\",
    \"engine_size\": \"{{source.engine_size}}\",
    \"engine_type\": \"{{source.engine_type}}\",
    \"field_change_indicator\": \"{{source.field_change_indicator}}\",
    \"four_wheel_drive_indicator\": \"{{source.four_wheel_drive_indicator}}\",
    \"full_model_name\": \"{{source.full_model_name}}\",
    \"height\": \"{{source.height}}\",
    \"horsepower\": \"{{source.horsepower}}\",
    \"iso_make_code\": \"{{source.iso_make_code}}\",
    \"make\": \"{{source.make}}\",
    \"model_year\": \"{{source.model_year}}\",
    \"ncic_make_code\": \"{{source.ncic_make_code}}\",
    \"payload_capacity\": \"{{source.payload_capacity}}\",
    \"price_new_symbol\": \"{{source.price_new_symbol}}\",
    \"price_new_symbol_one_position\": \"{{source.price_new_symbol_one_position}}\",
    \"restraint_indicator\": \"{{source.restraint_indicator}}\",
    \"special_information_selector\": \"{{source.special_information_selector}}\",
    \"state_exception\": \"{{source.state_exception}}\",
    \"symbol_change_indicator\": \"{{source.symbol_change_indicator}}\",
    \"tonnage_indicator\": \"{{source.tonnage_indicator}}\",
    \"vehicle_series_rating_symbol\": \"{{source.vehicle_series_rating_symbol}}\",
    \"vin\": \"{{source.vin}}\",
    \"vin_change_indicator\": \"{{source.vin_change_indicator}}\",
    \"wheelbase\": \"{{source.wheelbase}}\",
    \"wmi\": \"{{source.wmi}}\"
    }"””
}
        }
    }
}

Sample data mapping for trailers

View code
{
    "data": {
        "type": "mapping",
        "attributes": {
            "from": "vinmaster_trailer",
            "to": "quote",
            "mapping": {
                "template":
                    """{\"collisionSymbol\": \"collisionSymbol_{{source.two_position_symbol|sub(\"^0+\", \"\")}}\", \"comprehensiveSymbol\": \"comprehensiveSymbol_{{source.two_position_symbol|sub(\"^0+\", \"\")}}\"}"""
            },
        },
    }
}

Step 6: Write the plugin

If you are using BriteCore’s VINMASTER  plugin, skip this step.

To write your own plugin, interface with VINMASTER at:

View code
POST <integrations url>/vinmaster/physical-damage/search-by-vin/

For trailers:

View code
POST <integrations url>/vinmaster/physical-damage/search-trailers/

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 { enabled, visible, onClick, plugin } from './lib';

plugin.initialize({
  "button-row": {
    buttons: [
      {
        text: "Lookup Vehicle",
        callback: onClick,
        visible: visible,
        enabled: enabled,
      },
    ],
  },
});

Sample response from VINMASTER

View code
{
  "data": {
    "anti_lock_brake_indicator": "S",
    "anti_theft_indicator": "P",
    "basic_model_name": "C230",
    "body_style": "SEDAN 4D",
    "circular_number": "0708",
    "class_code": "34",
    "collision_rating_symbol": "18",
    "combined_symbol": "1818",
    "comprehensive_rating_symbol": "18",
    "curb_weight": 3405.0,
    "daytime_running_lights": "S",
    "effective_date": "2007-10-01",
    "electronic_stability_control_indicator": "S",
    "engine_cylinders": "6",
    "engine_size": "2.5",
    "engine_type": null,
    "field_change_indicator": null,
    "four_wheel_drive_indicator": null,
    "full_model_name": "C230 SPORT",
    "gross_vehicle_weight": 0.0,
    "height": 55.6,
    "horsepower": 201.0,
    "iso_make_code": "MBNZ",
    "make": "Mercedes Benz",
    "model_year": 2006,
    "ncic_make_code": "MERZ",
    "payload_capacity": 0.0,
    "performance_indicator": null,
    "price_new_symbol": null,
    "price_new_symbol_one_position": "L",
    "restraint_indicator": "R",
    "special_information_selector": null,
    "state_exception": null,
    "symbol_change_indicator": null,
    "tonnage_indicator": "S",
    "vehicle_series_rating_symbol": "L",
    "vin": "WDBRF52H&6",
    "vin_change_indicator": null,
    "wheelbase": 106.9,
    "wmi": "WDB"
  }
}
}

Sample response for trailers

View code
{
 "data": {
   "model_year_from": 1990,
   "model_year_to": 2010,
   "one_position_symbol": "1",
   "price_bracket_from": 0,
   "price_bracket_to": 6500,
   "two_position_symbol": "01"
 }
}

Step 7: Host your plugin in a public location

If you are using BriteCore’s VINMASTER 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 8: Register the plugin in BriteIntegrations

If you are using BriteCore’s VINMASTER plugin, BriteCore registers the plugin for you. Otherwise, you can register your plugin using our Plugin Manager web UI.