2021 Change Log
Date
State
Type
Notes
12/29/2021
OR
Registration
- Error: Parsing framework logged the error "Unexpected line encountered in dynamic content"
- Cause: The state sent records containing a new line "DEAF OR HARD OF HEARING: N" the parser had not encountered.
- Solution: Refactored HandleDynamicLines and MapFields to detect and process the hearing indicator line and place it in AdditionalInformation in the resulting PRR.
12/20/2021
LA
Driver
- Error: The parsing framework logged "Not enough Lines in DR to parse" and "Unable to parse message content"
- Cause: This is part of an ongoing issue where the state is sending "continuation DRs" that are from multi-page records in their DMV system. In this case, the parser was not detecting continuation DRs where the second line starts with "TEMP ISSUED ".
- Solution: Refactored IsContinuationDR to also detect second lines that start with "TEMP ISSUED ".
12/14/2021
WI
Driver
- Error: Parsing framework logged the error "Message marked as fullytagged XML contains a response text element that is not an indication of record not on file"
- Cause: State sent records containing an error notification string "WDOT FILE IS DOWN" the fully tagged parser had not yet seen.
- Solution: Added the error notification string to the Parsers.xml configuration file for the ORI.
12/14/2021
LA
Driver
- Error: The parsing framework logged the related errors "the CLS/OLN/DISC line has incorrect number of fields" and "Unable to parse message content"
- Cause: The state is sometimes sending multiple DRs per DQ. When that happens, every DR after the first is the result of a continuation page from the state DMV record (these have “MORE” at the bottom). The last DR is from the page with “END*” at the bottom. These "continuation DRs" contain content that is out of scope for DR messages and/or is unlinked to the original DQ.
- Solution: Refactored GetDRType to detect any DR that does not contain valid DR content and set the OutOfScopeContent flag to true, thereby short-circuiting the parsing process and adding an out-of-scope caveat to the resulting PDR.
12/14/2021
TX
Driver
- Error: The parsing framework logged "Unexpected Content Encountered in MultHit"
- Cause: The state sent multi-hit records containing "OVER 50 MATCHING RECORDS FOUND" in the first line that the parser had not yet seen.
- Solution: Refactored HandleMultHit to detect and process the number of matching records indicator.
12/13/2021
MD
Driver
- Error: Parsing framework logged the error "Message marked as ResponseText payload contains ether a DriverStatus, DriverMatch or a DriversHistory element parser may need updating"
- Cause: The state converted from TEXT DRs to fully tagged XML DRs.
- Solution: Updated the Parsers.xml configuration file to move the MD DR information from a TEXT based parser to the fully tagged XML parser.
12/04/2021
MD
Driver
- Error: Parsing framework logged the error "Message being handled by default parser, a new parser might be needed"
- Cause: The state began sending DRs using a new ORI that the parsing framework was not configured to recognize for DRs. The DR messages also contained a not on file string "Driver not found" the parser was not configured to recognize.
- Solution: Added the new ORI (MDMVA0000) and the new not on file string to Parsers.xml for the MDDRParser.
12/04/2021
NM
Registration
- Error: Unexpected Content encountered in dynamic lines
- Cause: The state sent records where the LIEN information was in the line beginning with TITLE, but the parser expected LIEN on its own line.
- Solution: Refactored HandleStaticLines to extract the LIEN information from either a line beginning with "LIEN/" or from a line beginning with "TITLE/".
12/04/2021
NM
Registration
- Error: General Error Thrown: System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
- Cause: The state sent a record where the owner address was non-standard (contained two commas) which caused the address parsing logic to fail.
- Solution: Refactored HandleStaticLines to handle the case where the string split on comma results in more or less than two elements.
12/04/2021
IL
Registration
- Error: Parsing framework logged the error "Unexpected line encountered in dynamic content - HandleStandardResponse"
- Cause: The state sent records containing strings the parser had not seen:
(A) Non-standard OLN "D-- L532-0167-9274" (B) "VIN ERROR" (C) "BEAT AUTO THEFT (B.A.T.)"
- Solution: Refactored HandleSOSRecordLines to detect and process the text
12/04/2021
IL
Driver
- Error: Unknown line encountered in HandleSOSRecordLines
- Cause: The state sent records containing the text " RELOCATED TO " that the parser had not yet encountered.
- Solution: Refactored HandleSOSRecordLines to detect and process the text
12/04/2021
IL
Driver
- Error: General Error Thrown: System.ArgumentException: An item with the same key has already been added.
- Cause: The state sent records with the text "DL/IP STA/NO VALID IL LIC" that the parser had not yet encountered
- Solution: Refactored GetDRTypeParseNotOnFile to detect the new variation of the DL/IP STA/ line with the abbreviated text so the record would process normally rather than as a not-on-file record.
11/30/2021
CO
Registration
- Error: Refactored HandleFULL_LEGAL_NAME to detect dangling name fragments and append to the full name from the previous line.
- Cause: The state sent records containing the not on file string "NO RECORD FOUND" and the error notification string containing "Remote Server returned the following error" that the parser had not yet seen. The state also changed the original query tag from "LIC/" to "REG/" which made the parser unable to extract the original query value.
- Solution: Added the new NOF and EN strings to Parsers.xml for the CORRParser. Refactored HandleNotOnFileOrErrorNotification to also look for "REG/" when extracting the original query value.
11/30/2021
VA
Driver
- Error: Unexpected Content Encountered in Dynamic Lines
- Cause: The state sent records where the "FULL LEGAL NAME" spilled to the next line and the parser was unable to process the name fragment.
- Solution: Refactored HandleFULL_LEGAL_NAME to detect dangling name fragments and append to the full name from the previous line.
11/30/2021
VA
Driver
- Error: A CITY/STATE/ZIP line has incorrect number of fields
- Cause: The state sent records where street address was unparsable with the existing logic.
- Solution: Refactored HandleStaticLines to more simply detect and process address lines and refactored HandleContactInformation to more robustly parse city/state/zip using a regular expression based on the various formats the state uses for CSZ.
11/30/2021
VA
Driver
- Error: Multiple errors (same cause):
SEX/DOB/HEIGHT/WEIGHT/HAIR/EYES line could not be substringed SOC/SSN line could not be substringed EXP line could not be substringed General Error Thrown: System.ArgumentException: An item with the same key has already been added.
- Cause: The state sent a record that contained a line such as "HULM:P PRPL:O FEET:023 INCH:03" that the parser had not yet seen.
- Solution: Refactored GetDRType to be able to process multi-hit records. Refactored HandleDynamicLines to detect the line that separates individual hits and extract its original query information.
11/22/2021
CA
Driver
- Error: Unexpected line encountered in dynamic content.
- Cause: There were two causes:
(A) The state sent a record with a line such as "EXPIRES:10/10/23*" after the Hazardous Materials Endorsement line that the parser had not yet seen. (B) The state sent a record containing a driving time restriction caveat the parser had not yet seen which included the text "AGE 20 AND MAY NOT DRIVE BETWEEN THE HOURS OF 11:00 PM AND 5:00 AM" and "WITHOUT PARENT/OTHER DRIVER AS SPECIFIED IN SECTION 12814.6 CVC"
- Solution: (A) Refactored HandleDynamicLines to detect lines beginning with "EXPIRES:" after the hazmat endorsement line.
(B) Refactored HandleRestrictions to detect the driving hours restriction text.
11/22/2021
CA
Driver
- Error: General Error Thrown: System.ArgumentException: An item with the same key has already been added.
- Cause: The state sent records where there were two types of commercial status text the parser had seen, but not in the same record, and the parser was trying to write to the same key in a dictionary.
- Solution: Refactored HandleDynamicLines to include a counter in the key when writing commercial status text to the Fields dictionary and refactored MapFields to iterate through commercial status text using the counter.
11/15/2021
CA
Registration
- Error: Parsing framework logging the error "Unexpected line encountered in dynamic content"
- Cause: The state sent a record that contained a line such as "HULM:P PRPL:O FEET:023 INCH:03" that the parser had not yet seen.
- Solution: Refactored HandleDynamicLines to detect lines beginning with "HULM:", process its fields, and put the information into AdditionalInformation fields in the resulting RR object. Note: HULM refers to Hull Material, PRPL refers to Propulsion, and FEET/INCH refer to the vessel length. Refer to the CA DMV form at https://www.dmv.ca.gov/portal/uploads/2020/03/boat101.pdf for details.
11/8/2021
ME
Registration
- Unexpected Content on second line of not on file RR.; Cause: The state sent a record containing NOT ON FILE but without the expected line containing the original query information (LIC, LIT, LIY or VIN) which caused the parser to become out of sync with the expected lines.; Solution: Refactored HandleNotOnFile to detect the presence of LIC/ or VIN/ on the expected original query line. If not present, it adjusts the Groups index to one less than expected to properly process subsequent content (i.e., the specific not on file text).
- Leftover content found in mult hit query line.; Cause: Caused by the parser trying to parse a not on file record that is missing the original query information.; Solution: Fixed by the refactoring in 1.
- Unexpected line encountered in dynamic content.; Cause: The state sent a record where there was a second organization name listed after the primary ORGANIZATION, but without the customary DBA: tag which the parser was not prepared to handle.; Solution: Refactored HandleDynamicLines by adding logic to the line that looks for the DBA tag to also test for a new bool lookForDBA being set to true and the line beginning with several spaces. If that is true, it treats the line as a DBA organization and processes it as usual.
- Unexpected line encountered in REGISTERED TO content.; Cause: The state sent a record containing a name in the REGISTERED TO line that did not have the expected DOB tag on the following line which the parser was not prepared to handle.; Solution: Refactored HandleREGISTERED_TO to include a new bool expectedDOBNext that gets set to true after encountering the REGISTERED TO: line. If the next line is empty instead of containing DOB:, the parser now checks if expectedDOBNext is also set to true and, if so, sets the flag to check for a new owner back to true, effectively conceding there was no line containing DOB:.
- Though not a flagged error, the parsing framework was not properly parsing not-on-file original query LIC strings containing spaces, e.g., ONE LIFE would become just ONE.; Cause: Any not on file record containing LIC strings with spaces, e.g., ONE LIFE was getting parsed with only the first word (ONE).; Solution: Refactored GetOriginalQuery to use GetFields with a / delimiter rather than GetSlashDotFields which required special handling for LIC strings with spaces..
11/8/2021
OH
Registration
• Parsing framework logged the error "General Error Thrown: System.ArgumentException: An item with the same key has already been added." Cause: The state sent records where the address line was malformed by including extra city, state, zip information, e.g., "XXXXX AAAA ST, LAKE ON, OH, 44429, LAKE MILTON, OH 44429"; Solution: HandleStaticLines already had logic to handle the case where the address did not fit the expected pattern but was not incrementing the dictionary key counter for these cases, but simply continued. Removed the continue statement so it would increment the counter as needed for each owner encountered.
11/8/2021
MX
Driver
• Cause: State sent records containing "DRIVER RECORD NOT FOUND" that the parser had not yet seen; Solution: Added the error notification text to Parsers.xml for the ORI.
11/8/2021
ME
Driver
• Cause: State sent records containing "THE NAME HAS BEEN CHANGED" that the parser had not yet seen; Solution: Added the error notification text to Parsers.xml for the ORI.
11/8/2021
AL
Driver
• Cause: State sent records containing "THE DATABASE IS TEMPORARILY NOT AVAILABLE" that the parser had not yet seen; Solution: Added the error notification text to Parsers.xml for the ORI.
11/2/2021
LA
Driver
• Cause: State sent multi-hit DR records containing lines starting with "SUSPENDED" that now also contain "BLOOD TYPE:" on the same line and the parser was only looking for an exact match to "SUSPENDED"; Solution: Refactored HandleDynamicLines to detect lines that start with "SUSPENDED" and process the line accordingly.
• Cause: The state sent records containing either error notification strings or not on file strings the parser had not yet seen, including "INSUFFICIENT NAM", "NON-ALPHA NAME", and "NAME INQ END". The INSUFFICIENT NAM line also contained original query information; Solution: Refactored the isNoRecordFound || isStateErrorNotification logic in the Parse method to include logic that checks whether the ContentToParse contains any one of the strings for which there is original query information. If so, it calls a new method GetOriginalQuery that parses the original query information. Added the new Error Notification strings to Parsers.xml settings file
11/2/2021
LA
Registration
Parser logging the error "General Error Thown: System.ArgumentOutOfRangeException: Index and length must refer to a location within the string". Refactored HandleStaticLines to check the length of the DAQ field and TRDA field before parsing the content.
10/28/2021
TN
Driver
- Parser logged the error Unexpected Content Encountered in LienHolder Section when state sent record where there was a Temporary Operating Permit (TOP) line after a LHR ADDR or LSR ADDR line, a location the parser had not yet seen. Solution was to refactor HandleLienHolder to use the presence of "TOP/" to return control to HandleDynamicLines which can process the TOP line.
- Parser logged General Error Thrown: System.ArgumentException: An item with the same key has already been added when the state sent records containing multiple TOP blocks and the parser expected only one. Solution was to refactor HandleDynamicLines to add a counter to the TOP key when inserting into the working dictionary and refactored MapFields to loop through all corresponding TOP keys.
- Parser logged the error Unexpected content encountered in Commercial Vehicle response dynamic lines when the state sent a record with a line containing "Axle\Seats" that did not begin with "FUEL TYPE" as expected. Solution was to refactor HandleCommericalVehicles to detect lines starting with "Axle\Seats".
- Parser logged the error Leftover content encountered in fields dictionary when the state sent a record containing two names in the TOP block and the parser was not extracting the second name. Solution was to refactor MapFields to detect and extract a second owner name when processing TOP blocks.
- Parser logged the error Not enough components in ADDR Line 2 to parse when the state sent a record where the LHR1 address had two spaces for the state which caused the parser regex to fail. Solution was to refactor LIEN_LEASE_ADDRLine1 to detect missing state abbreviations from address lines and reformat the address so it parses properly in HandleADDRLine2.
- Parser logged the error Unexpected Content encountered in dynamic content when the state sent an incomplete record that ended with "OWNER" that the parser was not detecting. Solution was to refactor HandleDynamicLines and HandleHolder to detect lines beginning with "OWNER" (without the slash).
10/28/2021
WA
Driver
- Parser logged the error "Address contains incorrect number of fields" when state sent records with a Canadian mailing address the parser was not equipped to handle. Solution was to refactor HandleADDR to detect and parse addresses with Canadian postal codes of the form ADADAD where A is an alpha and D is a digit while continuing to parse addresses with US postal codes (DDDDD with optional -DDDD).
- Parser logged General Error Thrown: System.ArgumentException: An item with the same key has already been added when state sent a record with multiple DRIVER RESTRICTION lines when the parser was configured to handle only one occurrence per record. Solution was to refactor HandleSTATE_DEPARTMENTDynamicLines to use a counter when writing driver restriction text into the Fields dictionary.
10/28/2021
NJ
Driver
Parser logged the error "UNKNOWN RECORD TYPE" when state sent records containing "NJ DMV Responses Unavailable at this time". Solution was to add the error notification text to Parsers.xml for the ORI.
10/28/2021
NV
Driver
Parser throwing the error "An error occurred while receiving" "General Error Thown: System.NullReferenceException: Object reference not set to an instance of an object." Solution was to add the error notification string to Parsers.xml for the ORI.
10/21/2021
VI
Driver
Parsing framework logged the error "Message being handled by default parser, a new parser might be needed". Created a new parser (VIDRParser) that will process only NO RECORD FOUND messages; otherwise, it will log an error to indicate there is content to parse. At that point, we can add parsing logic based on the structure of the VI DR responses.
10/19/2021
SD
Driver
State added the line "INITIAL PERMIT ISSUE DATE:" that the parser had not yet seen. State also added field names and colon delimiters for the NAME and ADDRESS lines that formerly had no field names or delimiters. Refactored HandleDynamicLines to detect and process the "INITIAL PERMIT ISSUE DATE:" line. Refactored HandleStaticLines to detect and process the colon-delimited NAME: and ADDRESS: lines.
10/19/2021
IL
Registration
State added a line "TBD OWNER" that the parser had not yet seen. Refactored HandleStaticLines to detect and parse the "TBD OWNER NAME" line.
10/05/2021
WV
Registration
Changed to fully tagged
10/05/2021
TN
Registration
Changed to fully tagged
10/05/2021
NY
Driver
Changed to fully tagged
10/05/2021
MI
Driver
Changed to fully tagged
10/05/2021
NB
Registration
The state sent a DR with an unparsable residential address line that caused the AddressParser class to throw an exception by trying to access an array element that did not exist.
10/05/2021
NB
Driver
The state sent error response RRs containing a string the parser had not yet seen and where the original query information included LIY and LIT in addition to LIC.
10/05/2021
IL
Driver
The state sent a multi-hit DR which contained the known not-on-file string "NO VALID ILLINOIS LICENSE" in one of the hits which caused the parser to flag the entire message as a not on file which directed the parser down an invalid path.
09/24/2021
CA
Driver
State added a caveat line to multi hit responses the parser had not yet seen.
09/24/2021
HI
Driver
State sent records where the AN/PN field contained "SN" which the parser had not yet seen.
09/24/2021
WA
Driver
State began sending multi-hit responses the parser was not programmed to handle. Some records had an extra comma in the address line (, APT 123) the parser was not programmed to handle.
09/21/2021
SD
Driver
State changed the content of their multi-hit responses and the "DATE OF BIRTH" line became "DATE-OF-BIRTH" and the parser wasn't handling it. The new record also changed the structure of the name line.
09/21/2021
NJ
Driver
State changed the format of their single hit record (Nov 2020) and added a multi-hit record (Jan 2021) that have not shown up until now when DCICE1414 began receiving parsed DRs from states.
09/20/2021
FL
Registration
The state changed the format of the "DECAL/YR" content to be a 4-digit year
09/13/2021
OK
Registration
Parser was not handling a record where the address line contained only state and zip (no street or city).
09/13/2021
WY
Driver
Parser was not handling the line "VICT 2020/07/09" after the MORE DATA line.
09/13/2021
NB
Registration
There were records where the text ", #6" and ", #28" appeared after the VST line and the parser was unable to handle those lines. Turns out, those lines are part of the address later in the record...most likely an error in the DMV record. There were records where the VMO content was "---" and "-----". The parser was checking for "---" as an indicator of a new section in the record.
09/08/2021
OK
Registration
Parser was not handling the line "For additional vehicle information, contact Oklahoma Tax Commission at: OKLIC0000". Parser was not handling records with the line "ZIP/0" in the Lien area. Parser was not handling records where the line should have started with "MAKE/" and contained "YEAR/ and VIN/", but actually started with "YEAR/" and contained "VIN/"
09/08/2021
WY
Driver
Parser was logging the error "Unexpected Content Encountered in REMARKS section"