2023 Change Log
- Date
State
Type
Notes
12/29/2023
ME
Registration
- Error: Parsing framework logged the error “the VCO/VYR/VMA/VMO/VST/ line could not be substring”
- Cause: The state added an additional character padding the VMO text in this line of the RR.
- Solution: Refactored MERRParser.dll to account for the additional padding.
12/14/2023
AL
Registration
- Error: Users noticed that the ZIP code for AL was being combined into the State Name line in the parsed XML.
- Cause: At some point AL removed a comma that was separating the state from the ZIP that the parser was using to separate the two values.
- Solution: Refactored ALRRParser.dll to separate the State and ZIP on the space between them rather than on a comma. Separating on the comma does still parse as well.
11/27/2023
KS
Driver
- Error 1: Parsing framework logged the error " Unhandled content in dynamic lines"
- Cause 1: The state has begun sending multiple licenses in some DRs rather than just the one they were previously sending.
- Solution 1: Refactored KSDRParser.dll to account for there being more than one license. Additional licenses, if there are any, are stored in separate individual license objects in the DR.
- Error 2: Parsing framework logged the error " Restriction or Endorsement contains incorrect number of fields"
- Cause 2: A change in the DR test resulted in some Endorsements ending in “:” with nothing after it. Causing the parser to expect multiple pieces of endorsement data on the line instead of one.
- Solution 2: Refactored HandleENDORAndRSTR to remove the “:” if there is nothing after it in the line.
11/27/2023
MT
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. may contain unparsed Data”
- Cause: With the change to fully tagged xml some response text values have changed and need to be added to Parsers.xml.
- Solution: Added allowed response texts to Parsers.xml are "FELONY PROBATION" and "SR-22 REQUIRED".
10/25/2023
CA
Driver
- Error 1: Parsing framework logged the error "Unexpected line encountered in dynamic content
- Cause 1: The state added a new self certification information section to DRs. They also began to separate descriptive text onto two lines instead of it being on one. They also included a suffix category for the medical examiners name.
- Solution 1: Refactored HandleDynamicLines to deal with the new section and to process the descriptive text into a single value rather than two separate lines. The suffix category was also added for the medical examiners name.
- Error 2: Parsing framework logged the error " MultiHit Name Line has more that one field"
- Cause 2: The OLN was missing, resulting in there being only a single value when two values were being checked for.
- Solution 2: Refactored HandleMultHit to allow for there to be less than two parts, and to only populate the OLN if a value is present.
10/25/2023
WA
Driver
- Error 1: Parsing framework logged the error: "Unexpected line encountered in dynamic content: HandleSTATE_DEPARTMENTDynamicLines"
- Cause 1: The state added content after the category “MEDICAL ATTESTATION”.
- Solution 1: Refactored HandleSTATE_DEPARTMENTDynamicLines to deal with the new content added to the DRs.
- Error 2: Parsing framework logged the error: "Address line has an unrecognizable postal code (not USA or CAN) or is unparsable into street, city, state.".
- Cause 2: A CAN zip code was entered incorrectly and did not match the expected formatting for a CAN zip code.
- Solution 2: Refactored HandleADDR to only qualify a CAN zip code’s letter characters on being A-Z rather than what is actually allowed by CAN.
10/17/2023
MT
Driver
- Error: Parsing framework logged the error "Unhandled content in dynamic lines"
- Cause: The state sent records containing a new photo caveat that the parser was not programed to recognize. “FOR PHOTO SEND REQUEST TO DRIVER SERVICES ORI/MT025015V”
- Solution: Refactored HandleDynamicLines to detect and process the new caveat string.
10/17/2023
WV
Driver
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records containing a ResponseText element with a string containing "TEMPORARILY UNAVAILABLE" that the parser was not yet configured to recognize.
- Solution: Added the error notification string to Parsers.xml for the ORI.
10/12/2023
OK
Registration
- Error: 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 containing address structures that caused the regular expression for parsing city/state/zip in HandleLienAddressLine to match on street address lines of the form "PO BO 12345" or "PO BX 12345" (two-letter typo on "BOX").
- Solution: Refactored HandleLienAddressLine to more concretely detect whether the line is a street address line or city/state/zip line based on the line's tag, i.e. "1ST ADDRESS".
10/12/2023
KS
Driver
- Error: Parsing framework logged the error "Unhandled content in dynamic lines"
- Cause: The state sent records containing a new structure for endorsements. The new structure is identical to the structure for restrictions.
- Solution: Refactrored HandleRSTR to a new method HandleENDORAndRSTR that handles both endorsements (of the new structure) and restrictions by taking in a new parameter for the type. Refactored HandleDynamicLines to detect the new endorsement structure.
10/12/2023
ID
Driver
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records containing a ResponseText element with strings containing "401Unauthorized" and “503Service Unavailable” that the parser was not yet configured to recognize.
- Solution: Added the error notification string to Parsers.xml for the ORI.
10/12/2023
MD
Registration
- Error: The 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. may contain unparsed Data
- Cause: The state sent records containing a ResponseText element with the string containing "In Inventory- Unissued for Plate" the parser was not yet configured to recognize.
- Solution: Added the permitted response text string to Parsers.xml for the ORI.
10/2/2023
WV
Registration
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records with an error notification string containing "SERVICE UNAVAILABLE" the parser was not yet configured to recognize.
- Solution: Added the error notification string for the ORI
10/2/2023
ID
Driver
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records with an error notification string containing "Connection refused" the parser was not yet configured to recognize.
- Solution: Added the error notification string for the ORI
09/18/2023
SC
Driver
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records with an error notification string the parser was not yet configured to recognize.
- Solution: Added the error notification string for the ORI
09/11/2023
NY
Driver
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: The state sent records with an error notification string the parser was not yet configured to recognize.
- Solution: Added the error notification string for the ORI
08/30/2023
NY
Registration
- Error: The parsing framework logged the errors:
Issue Encountered: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data
Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element.
- Cause: The state sent records with an error notification string the parser was not yet configured to recognize.
- Solution: Added the error notification string for the ORI
08/28/2023
VT
Registration
- Error: General Error Thrown: System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
- Cause: The state sent records where the address line either had no zip code or contained a double comma, both of which caused the address line parsing logic to fail.
- Solution: Refactored HandleStaticLines to replace double commas with a single comma and refactored MapFields to check for null before calling .Trim on all lines.
08/28/2023
TX
Registration
- Error: General Error Thrown: System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
- Cause: The state began sending records with a new type of "REG CLASS" line that does not contain a dollar amount which caused the parsing logic for that line to break due to the substringing it used.
- Solution: Refactored HandleStaticLines to parse out the REG CLASS value and the cost value in a more robust way than substringing to handle the two types of lines.
07/27/2023
OK
Registration
- Error: Holder information from the OWNER/REGISTRANT/ADDRESS lines omitted in the PRR.
- Cause: For commercial vehicle RR messages, the parser placed the registration holder information in an instance of the CommercialVehicle class, which inherits from the Vehicle class. Because the RR schema does not support holder information for the CommercialVehicle element, the PRR mapper was not including the holder information in the final RRType object that becomes the PRR.
- Solution: Refactored ComercialResponse_MapFields to assign the CommercialVehicle.Registrations property to the RRType.Registrations property so the PRR mapper will include the holder information.
07/27/2023
NJ
Registration
- Error: Address from the ADDR: line not appearing in the PRR.
- Cause: NJ recently updated the structure of the address to be comma-delimited between the street, city, state, and zip and the parser was not programmed to handle this format.
- Solution: Refactored ParseZipStateStreetCityFromAddressLine, HandleStreetCityStateZipLine, and MapFields_NEW to account for the new structure.
07/27/2023
CA
Registration
- Error: Registered owner address not appearing in PRR message for some RR messages.
- Cause: When CA sends RR messages with a "MAILING ADDRESS:" block, the parser was not adding the holder information to the registration due to a missing line of code in AddHolders. When the MAILING ADDRESS block is absent, the parser was working properly, hence the intermittent problem.
- Solution: Refactored AddHolders to add the holder information to the Registration object it builds and returns.
07/26/2023
CA
Registration
- Error: Conflicting Lessors reported. Going with first one.
- Cause: The state sent records where the LSR names extracted from the "R/O" and "L/O" lines are different and the parser was programmed to log a parsing error in that case.
- Solution: Refactored GetOrganization to change the LogParsingIssue line to create an AdditionalInformation element that reports the conflicting lessor names.
07/26/2023
CA
Registration
- Error: General Error Thown: System.ArgumentException: An item with the same key has already been added.
- Cause: The state sent records containing the lines "NO DATE SALVAGE CERTIFICATE ISSUED" and "CONTACT DMV SACRAMENTO FOR NEW OWNER INFORMATION" after the REC STATUS line that the parser had not yet seen.
- Solution: Refactored HandleREC_STATUS to detect the "NO DATE..." and "CONTACT DMV..." lines.
07/26/2023
CA
Registration
- Error: Unexpected line encountered in dynamic content
- Cause: The state sent records containing the text "$300.00 NON RESIDENT SMOG IMPACT FEE IS DUE" and a record with a line containing a VIN with no tag sandwiches between "MULTIPLE VIN'S INS FILE NOT CHECKED" and "ELECTRONIC SMOG ON VIN/RESTRAINT FILE HON" that the parser was unable to process.
- Solution: Refactored HandleDynamicLines to detect the smog impact fee line and add it as AdditionalInformation. Refactored the if block that handles IsNoticeContent to detect the VIN sandwiched between the "MULTIPLE VIN'S..." line and "ELECTRONIC SMOG..." line.
07/26/2023
CA
Registration
- Error: ODOMETER number 1 KILOMETERS ACTUAL MILEAGE not a decimal
- Cause: The state sent a multi-hit record where one of the records reported the odometer reading in kilometers and the other reported in miles, but the parser code was searching the entire record to determine the measurement units rather than the current line.
- Solution: Refactored HandleDynamicLines to use the current line for detecting the word "MILES" rather than the entire record.
07/11/2023
AR
Registration
- Error: The parsing framework logged the errors "The LIEN_HOLDER/LIEN_DATE line could not be substringed" and "The REG_STREET/REG_CITY line could not be substringed"
- Cause: The state sent records where the tags in the ADDR line and LIEN HOLDER line were spaced differently than the parser code expected.
- Solution: Refactored HandleOWNER_INFORMATION and HandleLIEN_INFORMATION to use GetFieldsAndTrim instead of substring maps to more robustly identify the relevant tags.
07/11/2023
NV
Driver
- Cause: State sent records containing "ERRORnReasonCode" that the parser had not yet seen.
- Solution: Added the error notification text to Parsers.xml for the ORI.
5/30/2023
SC
Driver
- Cause: State sent records containing "Input string was not in a correct format" that the parser had not yet seen.
- Solution: Added the error notification text to Parsers.xml for the ORI.
5/15/2023
NH
Driver
- Cause: The state sent records with error notification strings the parser had not yet encountered, containing test such as "CONNECTION REFUSED", "DRIVER FIRSTNAME REQUIRED", and "LOGIN FAILED".
- Solution: Added the error notification text to Parsers.xml for the ORI.
4/24/2023
LA
Registration
- Error: 1. "Unexpected content found in Not On File RR" 2. "General Error Thrown: System.FormatException: Input string was not in a correct format."
- Cause: 1. The state sent not on file records having a header starter the parser had not yet seen, e.g., "B4 .AZNLETS84...." and "====== Apportioned Plate Response =====". 2. The state sent records where the "TTA" line had non-standard spacing between "TTA" and "TRDA" which caused the parsing of the TRDA date to throw an error.
- Solution: 1. Refactored HandleNotOnFile to identify the header starter using the Parsers.xml configuration file rather than a hard-coded array of starters and to determine whether the format of the header is dot-delimited or not. 2. Refactored HandleStaticLines to use a more flexible method of parsing that does not rely on the Substring method. Added parsing for "TRDB".
4/10/2023
NB
Driver
- Error: Parsing framework logged the error "Unexpected content in MedCert Area"
- Cause: The state sent records with a format of the CDL Medical Certificate line the parser had not yet seen: "CDL Medical Certificate: DRIVER NOT CERTIFIED" when it is usually "CDL Medical Certificate: DRIVER IS CERTIFIED Medical Examiner Info"
- Solution: Refactored HandleMedCert to not continue parsing the Med Cert block when "DRIVER NOT CERTIFIED" is present, as there is no Med Cert block to parse.
3/27/2023
NJ
Registration
- Error: Parsing framework logged the error "The string parsed for zip is not a valid zip code in DDDDD or DDDDD-DDDD format"
- Cause: The states sent records with non-standard address lines the parser had not encountered, such as Canadian ZIP codes and addresses with no ZIP code or a malformed ZIP code.
- Solution: Refactored the address regular expressions to handle both US and Canadian ZIP codes. Refactored HandleAddress_NOCOMMA to call a new method, ParseNonStandardCSZ when the state/zip code is non-standard (i.e., no or malformed ZIP). ParseNonStandardCSZ attempts to parse the string and if it fails, puts the entire address line in the street address.
3/27/2023
CO
Registration
- Error: Parsing framework logged the error "The string parsed for zip is not a valid zip code in DDDDD or DDDDD-DDDD format"
- Cause: The state sent records where the CIS line contained non-standard information the parser had not yet seen, such as Canadian ZIP codes of the form A1A1A1, Mexican state names (e.g., "CHIH"), different permutations of the word "ADDRESS" between the two CIS tags, and malformed ZIP codes.
- Solution: Refactored the regex in HandleCIS to detect Canadian ZIP codes and to allow for 4-letter state lengths. Added a ParseNonStandardCIS method to handle the case where the CIS line does not match the defined regex for city/state/zip.
3/27/2023
KY
Registration
- Error: Parsing framework logged the error "Unexpected line encountered in dynamic content"
- Cause: The state began sending messages where the normal "==>DUPLICATE<==" header arrived unescaped as "==>DUPLICATE<==" which caused the HandleDynamicLines method to fail.
- Solution: Refactored GetRRType to replace ">" with ">" and replace "<" with "<" in ContentToParse before handing off the text to be parsed.
3/27/2023
SC
Registration
- Error: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. may contain unparsed Data Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
- Cause: State sent records containing "170 - Title record not found" that the parser had not yet seen.
- Solution: Added the error notification text to Parsers.xml for the ORI.
3/27/2023
HI
Driver
- Error: Parsing framework logged the error "The PLUT field contains unknown value (1624)"
- Cause: The state sent records where some of the name lines contained an escaped apostrophe string "'" which caused the parsing of fields to fail.
- Solution: Refactored the GetDRType method to check for the presence of "'" and replace with an apostrophe character. This puts the corresponding lines back into a format the parser can process.
3/15/2023
DC
Registration
- 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 DR and RR messages to fully tagged XML.
- Solution: Updated the Parsers.xml configuration file to convert DC DR and RR messages to be processed as XML rather than TEXT.
3/10/2023
CO
Registration
- Error: Parsing framework logged the error "Unexpected content encountered in dynamic lines HandleDynamicLines_NAME"
- Cause: The state changed the format of the city/state/zip line from:
"CITY: WESTMINSTER STATE: CO ZIP: 80031 CITY: ARVADA STATE: CO ZIP: 80001" to: "CIS: WALSH, CO 81090 CIS: SPRINGFIELD, CO 81073" which caused the parser to throw an error for unrecognized content.
- Solution: Refactored HandleDynamicLines_NAME to detect the new CIS line and created method HandleCIS to parsing the new format of the city/state/zip line.
2/27/2023
NY
Registration
- Error: Message marked as fullytagged XML contains a response text element that is not an indication of record not on file. May contain unparsed Data Issue Encountered: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element.
- Cause: State sent records containing "INTERNAL APP SERVER ERROR" that the parser had not yet seen.
- Solution: Added the error notification text to Parsers.xml for the ORI.
1/31/2023
SC
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: The state sent records containing the error text "3071 - A license does not exist" that the parser configuration does not detect.
- Solution: Added the error string "3071 - A license does not exist" to the Parsers.xml configuration file for the SC ORI.
1/31/2023
SD
Driver/Registration
- Error: Parsing framework logged the error "Message marked as ResponseText payload does not contain a response text element"
- Cause: The state changed from sending TEXT DRs to sending NIEM XML DRs.
- Solution: Modified the parsing framework configuration to convert SD DRs and RRs to NIEM format for their respective ORIs, SDDLP0000 and SDLIC0000.