State Response Format Changes

From Nlets Wiki
Revision as of 17:30, 5 December 2022 by Cxy23809 (talk | contribs) (Driver/Registration Parser Change Log)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page will house the State Response Format Changes that Nlets is aware of.


Driver/Registration Parser Change Log

- Date State Type Notes
12/5/2022 VA Driver
  • 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 with two separate problems:

1. Records containing two instances of lines with the text "RETURNED RSN" that goes into a Dictionary as the key. 2. Records containing multiple instances of "RESTRICTED" lines that goes into a Dictionary as the key.

  • Solution: Refactored HandleDynamicLines to create unique key names for each instance of the text and refactored MapFields to differentiate between the different instances.
12/5/2022 WY Registration
  • Error: Parsing framework logged the error "Unexpected content found in Not On File RR"
  • Cause: The state sent records beginning with the text "====== Apportioned Plate Response =====" and containing a different structure than their normal responses that parser had not yet encountered.
  • Solution: Refactored the WYRRParser to detect the Apportioned Plate Response records and process them accordingly. This meant refactoring GetRRType to use function delegates, refactoring GetOriginalQuery, and adding new methods: ConfigureFunctionDelegates, HandleStaticLinesApportioned, MapFieldsApportioned, IsApportionedPlateResponse, and ParseApportionedAddress.
11/1/2022 TN Registration
  • Error: Parsing framework logged the errors "Unexpected content encountered in Holder Section" and "Unexpected Content Encountered in LienHolder Section"
  • Cause: For both errors, the state sent records containing a line such as "DECAL/225 CLSCD/1021 ISSYR/1994 CO-OF-REG/State" followed by "EXP/" that the parser had not yet encountered.
  • Solution: Refactored HandleHolder and HandleLienHolder to detect and process the lines "DECAL/225 CLSCD/1021 ISSYR/1994 CO-OF-REG/State" and "EXP/".
11/1/2022 LA Driver
  • Error: Parsing framework logged the error "General Error Thrown: System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string."
  • Cause: The state sent records containing the line "INSUFFICIENT NAM / DOB" that the parser was unable to process, as there was no content after the NAM tag, after the /, and after the DOB tag as expected.
  • Solution: Refactored GetOriginalQuery to be able to handle "INSUFFICIENT NAM" lines with or without content.
10/12/2022 SC Registration
  • 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: The state sent records containing the error text "3320 - Driver Record PDF generation error" that the parser configuration does not detect.
  • Solution: Added the error string "3320 - Driver Record PDF generation error" to the Parsers.xml configuration file for the SC ORI.
10/5/2022 IA Registration
  • Error: Parsing framework logged the error "Organization Holder has unplaceable DOB or OLN"
  • Cause: The state sent records in two categories that was causing the GetHolder method to (A) misidentify the lessee holder ID for organizations and (B) misidentify certain lessee person names and treat them as an organization, which caused the same failure as (A).

Examples: (A) ORGANIZATION NAME LLC with a SOC-OLN field having 10 digits or digits+letters. (B) LAST1 LAST2 LAST3 LAST4, FNAME (more than two name parts in the last name) and O'BRIEN, FNAME MNAME (apostrophe in last name)

  • Solution: (A) In the IARRParser, refactored GetHolder to use either what GetSSN_OLN identifies as SSN or as OLN for the holder ID when the lessee is an organization, starting with SSN and, if null, then use the OLN.

(B) In the Nlets.MessageParsing.Parsers.Utilities project, ParseingUtils class, refactored IsName to include the apostrophe character in the regex for last name and refactored IsLatinName to allow for more than two name parts in the last name, with or without hyphens.

10/5/2022 NH Driver
  • Error: Discovered that the NHDRParser was not detecting and adding the record restriction caveat to PDR messages for "NEW HAMPSHIRE DRIVER STATUS RESPONSE" type DRs.
  • Cause: The method DRTypeII_HandleDynamicLines was not programmed to detect the caveat containing the text "*RESTRICTED - PURSUANT TO RSA 260:14, III, ANY RECORDS RECEIVED SHALL NOT BE FURTHER TRANSFERRED..." so PDR messages did not contain the caveat in the XML (it is still always in the OriginalResponseText element).
  • Solution: Refactored DRTypeII_HandleDynamicLines to detect the record restriction caveat and MapFields to add it to an AdditionalInformation element in the XML.
09/19/2022 NJ Registration
  • Error: The parser logged the error "Unexpected address format encountered (likely contains more than one comma)"
  • Cause: The state sent records where the address line had multiple commas in the street address (e.g., 123 MAIN ST, APT 7, NORTH, SMALLVILLE NJ 01234) that the parser was unable to handle.
  • Solution: Refactored ParseZipStateStreetCityFromAddressLine to use more robust logic for parsing the various address format the state sends. It now uses only the last comma as the delimiter between street and city/state/zip rather than string splitting as implemented previously.
09/12/2022 VA Vehicle
  • Error 1: Unexpected content encountered in HandleStaticLines
  • Cause 1: The state sent records where the vehicle address line began with "VEHADDR:" tag without a space rather than the expected "VEH ADDR:" tag with a space.
  • Solution 1: Refactored HandleStaticLines to detect the "VEHADDR:" tag and process accordingly.
  • Error 2: General Error Thrown: System.ArgumentOutOfRangeException: Length cannot be less than zero.
  • Cause 2: The state sent records where the city/state/zip line after the VEH ADDR line contained no spaces between the city, state, or zip, e.g. "LORTONVA234625500" that the parser was unable to handle.
  • Solution 2: Refactored GetCustomerAddress and GetVehicleAddress to use a regular expression to process the city/state/zip line where the regex allows for spaces or no spaces between the components. Added a separate method ProcessCSZ to extract the components. Refactored MapFields to process city/state/zip lines where one or more of the components is missing altogether.
09/12/2022 KY Driver
  • Error: The parsing framework logged the error "Unexpected line encountered in dynamic content"
  • Cause: The state sent records containing a line beginning with "NAME CITY EXEMPTION/" that the parser had not yet encountered.
  • Solution: Refactored HandleDynamicLines to detect and process lines beginning with "NAME CITY EXEMPTION/" and MapFields to add its content to an AdditionalInformation element.
08/30/2022 ID Registration
  • Error 1: General Error Thrown: System.ArgumentException: An item with the same key has already been added. (line 544)
  • Cause 1: The state sent a multi-hit/ResponseText record where the original query was by VIN which the parser had not yet seen. This caused the flag _lookForNewHit to not get set causing the parser to fail to detect the next hit.
  • Solution 1: Refactored HandleMultiHit_RareUncommon to detect query by VIN and HandleIndividualHit_RareUncommon to include logic to detect hit separation for query by VIN or query by LIC/LIY/LIT.
  • Error 2: General Error Thrown: System.ArgumentException: An item with the same key has already been added. (line 787)
  • Cause 2: The state sent records containing multiple Registered Party blocks, each with both a physical address and a mailing address that the parser was not configured to handle.
  • Solution 2: Refactored HandleRegisteredParty and HandleAddress_REGISTERED_PARTY to handle lines starting with "Mailing Address:" within the Registered Party block and refactored MapFields_RareUncommon to process mailing addresses for multiple Registered Party blocks.
  • Error 3: 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 3: The state sent records containing an unknown error string containing "Vehicle client caught exception:" that the parser had not yet seen.
  • Solution 3: Added the error string to the Parsers.xml config file for the ORI.
08/30/2022 FL Driver
  • Error: The parsing framework logged the error "The TEMP_TYPE line could not be substringed"
  • Cause: The state sent records containing "TEMP TYPE LIC:" lines that contained RESTRICTION: tags that the parger was not consuming properly.
  • Solution: Refactored HandleTEMP_TYPE_LIC to include the RESTRICTIONS: tag when parsing and MapFields to include the content in the resulting XML.
08/22/2022 KY Registration
  • Error: General Error Thrown: System.NullReferenceException: Object reference not set to an instance of an object.
  • Cause: The state sent records where the street address contained the word "ADDRESS" (e.g., "NOT AT THIS ADDRESS") that caused the logic in GetAddressComponents to fail.
  • Solution: Refactored GetAddressComponents to check that the passed-in address line contains "ADDRESS:" rather than just "ADDRESS" to detect lines more positively with the actual "ADDRESS:" tag rather than the word ADDRESS in the line.
08/22/2022 KY Registration
  • Error: Unexpected line encountered in dynamic content
  • Cause: The state began sending RR messages containing a line like "CODE REG TYPE/VETERAN RENEWAL REG WEIGHT/PC010" that the parser had not yet encountered.
  • Solution: Refactored HandleDynamicLines to detect and process lines beginning with "CODE REG TYPE/" and MapFields to place the information in AdditionalInformation elements in the XML.
08/15/2022 HI Driver
  • Error: Parsing framework logged the error: Not Enough Lines in the DR to Successfully parse.
  • Cause: State sent records with the message "FILE IS CURRENTLY UNAVAILABLE" that the parser configuration did not recognize as a NOT ON FILE response, so it attempted to process the DR and failed.
  • Solution: Added the string "FILE IS CURRENTLY UNAVAILABLE" to the NOT ON FILE strings for the HIDRParser in the Parsers.xml configuration.
08/15/2022 WV Registration
  • 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 containing "TEMPORARILY UNAVAILABLE" the fully-tagged RR parser had not yet seen.
  • Solution: Added the error notification string "TEMPORARILY UNAVAILABLE" to Parsers.xml for the WV ORI.
08/15/2022 CO Registration
  • Error: Parsing framework logged the error "Unexpected content encountered in dynamic lines HandleDynamicLines_NAME"
  • Cause: State sent records containing the two lines "DISABLED OWNER: NO" and "DISABLED PASSENGER: NO" that the parser had not yet seen.
  • Solution: Refactored HandleDynamicLines_NAME to detect and process lines containing the strings "DISABLED OWNER: NO" and "DISABLED PASSENGER: NO" and MapFields to add the information to AdditionalInformation elements in the XML.
08/15/2022 OK Registration
  • Error 1: Unexpected line encountered in dynamic content_TribalResponse
  • Cause 1: The state sent records containing more lease holder lines than the parser expected.
  • Solution 1: Refactored TribalResponse_HandleIndividualHit to detect and process the "STATE/" line and refactored GetRegistration to add the state as Additionalinformation as "RECORD STATE" in the returned Registration object.
  • Error 2: General Error Thrown: System.ArgumentException: An item with the same key has already been added.
  • Cause 2: The state sent a record with a line "2ND CITY/CLASSIC" in the Lien area that the parser had not yet seen.
  • Solution 2: Refactored HandleTRIBAL_LIEN_INFO to detect lines containing "CITY/" but where the prior line did not contain "ADDRESS/" as an additional information tag and place its contents in an AdditionalInformation element in the XML.
  • Error 3: General Error Thrown: System.ArgumentException: An item with the same key has already been added.
  • Cause 3: State sent records where the LIEN address line containing the city/state/zip had the format "2ND ADDRESS <city <state> <zip>" instead of the expected format "1ST CITY/<city> STATE/<state> ZIP/<zip>".
  • Solution 3: Refactored HandleTRIBAL_LIEN_INFO to call a new method HandleLienAddressLine that can detect and parse the two different city/state/zip formats.
  • Error 4: General Error Thrown: System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
  • Cause 4: The state sent NO RECORD FOUND responses for queried names that contained the string "VIN" which caused the parser to interpret the original query as having been a VIN query and try to substring using an index based on "VIN/" which did not exist, hence the indexing error.
  • Solution 4:Refactored GetOriginalQuery to use the method GetFieldsAndTrim that more robustly extracts slash-delimited fields.
  • Error 5: Unexpected line encountered in LIEN_INFO
  • Cause 5: Same problem with the lone "STATE/" line, but it occurred after the Lien address information, so the HandleTRIBAL_LIEN_INFO method logged the error.
  • Solution 5: Refactored HandleTRIBAL_LIEN_INFO to detect and process lines beginning with "STATE/" and treat them as additional information with the "RECORD STATE" name and the state as the value.
08/01/2022 AZ Registration
  • Error: General Error Thrown: Unexpected Content Encountered in LienHolder Section
  • Cause: The state sent records containing more lease holder lines than the parser expected.
  • Solution: Refactored TNRRParser to use a settings key "LHRLSRIndexUpperLimit" that contains an upper limit for the index of LHR/LSR tags the parser will detect. Created a method PopulateLHRLSRTags that reads the setting and creates a string array of tags the parser can use when parsing lines containing LHR/ and LSR/.
08/01/2022 AZ Registration
  • Error: General Error Thrown: System.ArgumentOutOfRangeException: Length cannot be less than zero
  • Cause: The state sent VEHICLE INFO records (commerical vehicle) where the REGISTERED NAME did not contain a STATUS tag, which caused the parser substring method to fail.
  • Solution: Refactored HandleCommericalVehicles to use the GetFields method on the REGISTERED NAME line which is robust against missing fields.
08/01/2022 AZ Registration
  • Error: Not enough components in ADDR Line 2 to parse.
  • Cause: The state sent an address that was missing a ZIP code that the parser was unable to handle.
  • Solution: Refactored HandleADDRLine2 to call PrepareCSZ which identifies the missing component in an address and replaces it with a dummy string so the address handler can parse it properly.
08/01/2022 AZ Registration
  • Error: The parsing framework logged the error: "Message marked as ResponseText payload contains either a DriverStatus, DriverMatch or a DriversHistory element parser may need updating"
  • Cause: The ORI IDIDMV000 was formerly sending unstructured text DRs but is now sending structured XML DRs and needs to be moved to the FullyTaggedDRParser and the IDDRParser needs to be retired.
  • Solution: Updated the Parsers.xml config file to remove the IDDRParser settings, migrate the not on file and error notification settings for the ORI IDIDMV000 to the FullyTaggedDRParser settings, and add the ORI IDIDMV000 to the FullyTaggedDRParser identification group.
07/05/2022 MT Registration
  • Error: Parsing framework logged the error "Unexpected content found in dynamic lines"
  • Cause: The state sent records containing the strings "FOR PHOTO TRY OLN QUERY" and "IMG/" the parser had not yet seen.
  • Solution: Refactored HandleDynamicLines to detect and process lines containing the strings "FOR PHOTO TRY OLN QUERY" and "IMG/"
07/05/2022 AZ Registration
  • Error 1: A CITY/STATE/ZIP line has incorrect number of fields
  • Cause: The state sent records where the address lines had a street address, a unit/apartment number, but no subsequent city/state/zip line.
  • Solution: Refactored HandleContactInformation to check the second address line for a match to the city/state/zip regular expression. If it passes, the line is C/S/Z, otherwise the parser considers it a unit/apartment line.
  • Error 2: Not Enough Lines in DR to parse
  • Cause: The state sent not on file records with a different structure than the parser had seen. The file contained the person's sex code and full name with a string "X - CUSTOMER NAME NOT FOU".
  • Solution: Refactored HandleNotOnFile to detect the "X - CUSTOMER NAME NOT FOU" string and create a DQType with the person's sex and name so the returned DRType has the original query information. Updated Parsers.xml to detect this not on file string.
07/05/2022 CT Registration
  • Error: Parser logging 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 with error notification strings containing "REPORT TO CONNECTICUT STATE POLICE" the fully-tagged parser had not yet seen.
  • Solution: Added the error notification strings to Parsers.xml for the ORIs CTLIC0000 and CTVIN0000.
07/05/2022 AZ Driver
  • Error: Parser logging 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 with error notification strings containing "failed due to" the fully-tagged parser had not yet seen.
  • Solution: Added the error notification strings to Parsers.xml for the ORI OKDMV0000.
07/05/2022 AZ Registration
  • Error: The parsing framework logged the error "Unexpected content encountered in dynamic lines HandleDynamicLines_NAME"
  • Cause: The state began sending records with a line starting with "LEIN:" the parser had not yet seen.
  • Solution: Refactored HandleDynamicLines_NAME to detect lines starting with "LEIN:" and extract the start date and holder and refactored MapFields to place the information in a LienHolder object.
06/27/2022 TX Registration
  • Error 1: Unable to parse city/state/zip
  • Cause: The state sent records where the address contained a comma, but the comma was not used as a delimiter between the street and city. This caused the ParseZipStateStreetCityFromAddressLine method to go down an incorrect path.
  • Solution: Refactored the logic of ParseZipStateStreetCityFromAddressLine to better detect the actual address structure and process accordingly.
  • Error 2: Content remaining in Fields dictionary after MapFields
  • Cause: The state sent a record where the lessee name and DLN were empty, but the address line contained a comma which caused the address components to end up on the Fields dictionary which caused MapFields_TEMPTAG to log an error for keys remaining in the Fields dictionary.
  • Solution: Refactored MapFields_TEMPTAG to SafeRemove the address components from the Fields dictionary when the vehicle is not leased.
06/27/2022 TX Driver
  • Error 1: Unable to extract photo type from PID field (line has no OLT)
  • Cause: State sent records where the PID line did not contain OLT and the logic of HandlePID failed and records where the PID line also contained OLC that HandlePID was not expecting.
  • Solution: Refactored the logic of HandlePID to process a PID line with or without OLT and/or OLC tags.
  • Error 2: Unknown line in HandleCONVICTIONS
  • Cause: State sent a record where the text DIGITAL ISSUE did not precede PERMIT INFORMATION, so HandleCONVICTIONS method did not know where to end.
  • Solution: Refactored HandleCONVICTIONS to include PERMIT INFORMATION as a string to indicate the end of the section.
06/14/2022 AL 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 sends two types of DRs depending on whether the DQ requested an image or not: (A) If the DQ did not request an image, the DR is fully tagged XML and (B) If the DQ requested an image, the DR contains the binary base 64 image in an XML element, but the rest of the DR content is unstructured text, which the parsing framework was not configured to handle.
  • Solution: Reconfigured the parsing framework to use an individual ALDRParser rather than the FullyTaggedDRParser. Created the ALDRParser class and updated the Parsers.xml configuration to move the ALDLR0000 ORI to the ALDRParser. Created logic in the Parser method to detect fully tagged XML or unstructured text and process accordingly. Built out all the logic to parse unstructured text, both for single hit records and multi hit records.
06/06/2022 AZ Registration
  • Error1: Not enough Lines in DR to parse
  • Cause: The state sent a new type of "Continuation DR" with the second line having the text "MORE HITS  ?" that the parser had not yet seen.
  • Solution: Refactored IsContinuationDR to detect the presence of "MORE HIT  ?" and when present, treat the record as a Continuation DR.
  • Error2: the CLS/OLN/DISC line has incorrect number of fields
  • Cause: The state sent records with a header line containing the text "NLETS-DL" that the parser was not configured to handle.
  • Solution: Refactored IsHeaderLine so the regex allows for other text in the section after the control number.
  • Error3: Unexpected Content in dynamic content
  • Cause: The state sent records with the last line containing the text "IMG/" when the DR contained an image and the parser was not configured to detect and process the text.
  • Solution: Refactored HandleDynamicLines to detect "IMG/" and create an Additional Information element with IMAGE INDICATOR as the key.
06/06/2022 AZ Registration
  • Error1: The ISSUED/EXPIRED line could not be substringed
  • Cause: The state sent records where the CURRENT ID ISSUED line did not also have an EXPIRED field which the parser expected to be present, causing the substring map to fail.
  • Solution: Refactored HandleStaticLines to include logic for the case where the CURRENT ID ISSUED line does not also contain an EXPIRES field.
  • Error2: Restriction did not contain a code
  • Cause: The state sent records where the RESTRICTIONS line contained a hyphen in the restriction text which caused the parser to log an error when trying to split on dash.
  • Solution: Refactored HandleRESTRICTIONS to split on the string " - ", which is the actual separator between the single letter code and the text, rather than splitting on only the presence of a dash.
  • Error3: The TEMP_TYPE line could not be substringed
  • Cause: The state sent a record with two TEMP TYPE LIC lines and the parser was only configured to handle one such line.
  • Solution: Refactored HandleTEMP_TYPE_LIC and MapFields to handle records containing multiple TEMP TYPE LIC lines.
06/03/2022 AZ Registration
  • Error: Parsing framework logged the error "Unexpected line encountered in dynamic lines"
  • Cause: The state created a new RR format for what appears to be temporary tags that the parser was not configured to handle. The first date of the new format was 2022-05-25 05:55:10.073.
  • Solution: Refactored GetRRType method to differentiate the type of record (regular RR, legacy RR, or temporary tag RR) based on the content of the first line, then redirect to the appropriate handler method for parsing. Created the handler "HandleStaticLines_TEMPTAG" for the temporary records.
06/02/2022 OH Registration
  • Error: User reported that the VIN line is being added to the StreetFullText element of a holder in PRR messages from OH.
  • Cause: The state sent RR messages with two names, but only one address line. This caused the parser to treat the VIN/... line as an address line for the second holder.
  • Solution: Refactored the logic in HandleStaticLines to detect the presence of the VIN/... line before treating the line as an address.
05/23/2022 CA Driver
  • Error: "Unexpected line encountered in dynamic content"
  • Cause: The state sent records containing what looks like a discontinued OLN, e.g., "A1234567 DISCONTINUED" that the parser had not yet encountered.
  • Solution: Refactored HandleDynamicLines to detect the word "DISCONTNUED" and add the OLN to an AdditionalInformation element for the DR.
05/18/2022 AZ Driver
  • 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 parser was configured to receive fully tagged XML from the ORI USOLN0000, but the DOS Plate Lookup service sends TEXT payloads and there was no text parser available.
  • Solution: Created a DR parser "USDRParser" and configured the parsing service to create parsed DR messages for DRs coming from the ORI USOLN0000.
05/18/2022 WY Registration
  • Error1: MC_CERT/MC_ISS/MC_EXP line could not be substringed
  • Cause: The state sent a record containing two MEDCERT lines where one of the lines did not have the standard CERT/ISS/EXP structure the parser expected
  • Solution: Refactored HandleMEDCERT to parse the MEDCERT lines using GetfieldsAndTrim instead of a substring map which expects statically-spaced characters.
  • Error2 : After MORE DATA, Drivers History Date Range contains content other than dates
  • Cause: The state sent a multi-hit record where the final line after "MORE DATA MAY BE AVAILABLE ON FILE!" was not structured as the parser expected.
  • Solution: Refactored HandleDynamicLines to handle the case where the line after "MORE DATA..." does not contain the expected structure.
05/18/2022 AZ Registration
  • Error: "General Error Thrown: System.ArgumentException: An item with the same key has already been added."
  • Cause: State sent multi-hit records with and without the string "*** MULTIPLE VEHICLES RETURNED ***" containing blocks of lines having repeated fields for each hit that the parser was not configured to handle.
  • Solution: Refactored HandleStaticLines to detect and process multi-hit records, either with the *** MULTIPLE VEHICLES RETURNED *** string or without.
05/09/2022 AZ Registration
  • Error: Address line has an unrecognizable postal code (not USA or CAN) or is unparsable into street, city, state.
  • Cause: The state sent records where the RESIDENCE ADDRESS contained the string "NO RESIDENT ADDRESS ON FILE" the parser had not yet encountered.
  • Solution: Refactored HandleADDR to detect the string "NO RESIDENT ADDRESS ON FILE" and MapFields to place the content in an AdditionalInformation element as a caveat.
04/26/2022 NJ Registration
  • Error1: Could not identify section header. Possible new section handler needed.
  • Cause: The state added a section with the header text "Transaction Status Information" that the parser had not yet encountered.
  • Solution: Refactored HandleDynamicLines_NEW to include a check for the presence of the new header and created HandleTransactionStatusInformationBlock to handle the content of the block.
  • Error2: Unhandled content in Additional Owner section
  • Cause: The state added a DOB field to the Additional Owner section that the parser had not yet encountered.
  • Solution: Refactored HandleAdditionalOwnerBlock to detect and process the DOB field in Additional Owner blocks and added the Person.DOB entry to the RRType in MapFields_NEW.
  • Error3: Unhandled content in Lease Information section
  • Cause: The state added a DOB field to the Lease Information section that the parser had not yet encountered.
  • Solution: Refactored HandleLeaseInformationBlock to detect and process the DOB field in Lease Information blocks and added the Person.DOB entry to the RRType in MapFields_NEW.
  • Error4: Unhandled content in REGISTRATION INQUIRY RESULTS section
  • Cause: The state added a DOB field to the REGISTRATION INQUIRY RESULTS section that the parser had not yet encountered.
  • Solution: Refactored HandleRegistrationInquiryResultsBlock to detect and process the DOB field in the REGISTRATION INQUIRY RESULTS block and added the Person.DOB entry to the RRType in MapFields_NEW.
04/26/2022 KY Registration
  • Error: User reported that the city and state are swapped in PRR messages originating from KY RR messages.
  • Cause: The parsing framework had a bug that was reversing the city and state when parsing the LEASEE ADDRESS field only. The framework was processing the address line for the registration holder correctly.
  • Solution: Refactored GetAddressComponents to correctly assign the city and state for the LEASEE ADDRESS line.
04/11/2022 MD Driver
  • Error: Parsing framework logged the error "Message being handled by default parser, a new parser might be needed"
  • Cause: The parsing framework configuration did not contain an entry for the ORI "MDMSP0000".
  • Solution: Added the ORI MDMSP0000 to the Parsers.xml configuration file for the FullyTaggedDRParser.
04/04/2022 OK Driver
  • Error: OK DR
  • Cause: State sent records containing "FAIL Connection reset" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
04/04/2022 VA Registration
  • Error: General Error Thrown: System.IndexOutOfRangeException: Index was outside the bounds of the array.
  • Cause: The state sent records where the LIY and ISS fields had no slashes in their dates which the parser previously expected.
  • Solution: Created a method HandleLIC_LIY_ISS that can handle LIY and ISS dates with or without slashes. Refactored HandleStaticLines to call the new method.
04/04/2022 VA Registration
  • Error: Unexpected content encountered in HandleStaticLines
  • Cause: The state sent records with multiple owner names that spilled to a second line when the parser expected all names on one line.
  • Solution: Refactored HandleStaticLines to have logic that detects the presence of owner names on multiple lines.
04/04/2022 VA Registration
  • Error: Unexpected content encountered in HandleStaticLines
  • Cause: The state sent records containing customer impairment caveat lines the parser had not yet encountered.
  • Solution: Refactored HandleStaticLines to detect lines that start with "CUS IMP/" and any subsequent lines that contain impairment information.
04/04/2022 VA Registration
  • Error: Unexpected content encountered in Handle_HolderOnlyRecord
  • Cause: The state sent records containing a line with a single letter ("D") the parser was unable to handle.
  • Solution: Refactored HandleHolderOnlyRecord to detect lines containing a single upper-case letter.
03/28/2022 OK Driver
  • Error: Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element
  • Cause: State sent records containing "INTERNAL_ERROR" and "FAIL Timeoutconnect timed out" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
03/14/2022 CA Registration
  • Error: General Error Thrown: System.ArgumentException: An item with the same key has already been added.
  • Cause: The state sent a record with vessel information in a different location than the parser expected.
  • Solution: Refactored HandleDynamicLines to change the logic for detecting vessel information.
03/14/2022 CA Registration
  • Error: Unexpected line encountered in dynamic content.
  • Cause: The state sent records containing text the parser had not yet seen: "EXPORTED TEMPORARILY" and "MULTIPLE MOBILEHOME ADDITIONAL VINS:".
  • Solution: Refactored HandleDynamicLines to detect and process the new text into AdditionalInformation elements.
03/14/2022 CA Registration
  • Error: Conflicting Lessors reported. Going with first one.
  • Cause: The state sent a record where the Lessee "NAME:" line ended in LSR but without a comma which the parser expected.
  • Solution: Refactored HandleLESSEE_INFORMATION to include lines that end with "LSR" (no comma) when extracting the Lessee name.
03/1/2022 IL Registration
  • Error: User has reported that the parser is truncating the street number from certain addresses.
  • Cause: When the state sends records where the street address contains a period, e.g. 123 N. MAIN ST, the parsing framework was incorrectly removing everything before the period, leaving an incomplete street address.
  • Solution: Refactored the regular expression in HandleStandardResponse to additionally detect the characters '.', '-', and '&' as being part of the street address.
03/1/2022 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: State sent records containing "Unexpected response from:" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
03/1/2022 NM Driver
  • Error: The parsing framework logged the error "Message marked as fullytagged XML does not contain a DriverStatus or DriverMatch element".
  • Cause: State sent records containing "UNKNOWN EXCEPTION WAS ENCOUNTERED" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
02/22/2022 OK Driver
  • Error: The parsing framework logged the error "Message being handled by default parser, a new parser might be needed".
  • Cause: The state changed from sending TEXT DRs to sending NIEM XML DRs and changed the send ORI from OK00000MS to OKDMV0000. The last DR from the old ORI OK00000MS was at 2022-02-21 08:18:15.753. The first DR from OKDMV0000 was at 2022-02-21 08:18:46.750.
  • Solution: Modified the parsing framework configuration to convert OK DRs to NIEM format for the new ORI OKDMV0000.
02/22/2022 PR Registration
  • Error: Parsing framework logged the error "Unexpected content encountered in dynamic lines".
  • Cause: The state sent records containing an error notification string the parser had not yet encountered.
  • Solution: Refactored Parse to include isStateErrorNotification in the logic to call HandleOriginalQuery. Refactored HandleOriginalQuery and HandleStaticLines to detect a new header string the state began using. Refactored HandleStaticLines to continue when isStateErrorNotification is set.
02/22/2022 TX Driver
  • 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 where the OWNER address line contained the key words "TITLE" and "R-" that have other meanings to the parser which caused it to take an incorrect logic path.
  • Solution: Refactored HandleStaticLines to improve the logic for detecting an actual TITLE line versus an address containing the word TITLE and for more positively detecting an "R-" record by adding the requirement of the record starting with "R-{MMM}/" where MMM is one of the 12-month abbreviations.
02/18/2022 TX Driver
  • Error: The parsing framework logged the error "Message being handled by default parser, a new parser might be needed"
  • Cause: The state changed from TEXT format to NIEM format.
  • Solution: Modified the parsing framework configuration to convert WV to NIEM format.
02/15/2022 TX Registration
  • Error: The parsing framework logged the error "Unexpected line encountered in dynamic content (HandleDynamicLines)"
  • Cause: The state began sending records containing a "SECONDARY EMERGENCY CONTACT" block the parser had not encountered.
  • Solution: Refactored HandleDynamicLines to detect and process the SECONDARY EMERGENCY CONTACT block and refactored Handle_EMERGENCY_CONTACT to process both PRIMARY and SECONDARY emergency contact blocks.
02/15/2021 TX Driver
  • Error: The parsing framework logged the error "Unexpected line encountered in dynamic content (HandleDynamicLines)"
  • Cause: The state began sending records that begin with four lines consisting of an emergency contact information caveat that the parser had not yet encountered. One such record also contained a "PRIMARY EMERGENCY CONTACT" block the parser had not encountered.
  • Solution: Refactored HandleStaticLines to parse the emergency contact caveat lines and HandleDynamicLines to detect and process the PRIMARY EMERGENCY CONTACT block.
01/27/2022 IA Registration
  • Error: The parsing framework logged the error "Unexpected line encountered in dynamic content (HandleDynamicLines)"
  • Cause: The state began sending records that begin with four lines consisting of an emergency contact information caveat that the parser had not yet encountered. One such record also contained a "PRIMARY EMERGENCY CONTACT" block the parser had not encountered.
  • Solution: Refactored HandleStaticLines to parse the emergency contact caveat lines and HandleDynamicLines to detect and process the PRIMARY EMERGENCY CONTACT block.
01/18/2022 ID Registration
  • 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: The state sent records with error notification strings containing the content "Error while fetching the Vehicle Records", "Please enter maximum of 8 characters for IDAHO Plate Number"", and "Bad response:" that the parser had not yet encountered.
  • Solution: Added the error notification strings to the Parsers.xml configuration file for the ORI. Refactored the Parse method to add a check for state error notification.
01/18/2022 SD Driver
  • Error: The parsing framework logged the error "Unexpected Content Encountered in Dynamic Lines"
  • Cause: The state began sending records containing the string "RESTRICTED PERMIT INITIAL ISSUED DATE:" that the parser had not yet seen.
  • Solution: Refactored HandleDynamicLines to detect and process the "RESTRICTED PERMIT INITIAL ISSUED DATE:" line.
01/18/2022 NV Registration
  • Cause: State sent records containing "An error occurred while receiving" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
01/18/2022 MD Driver
  • Cause: State sent records containing "the full last name is required" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI.
01/18/2022 SC Driver
  • Cause: State sent records containing "3301 - The specified User ID does not exist" that the parser had not yet seen.
  • Solution: Added the error notification text to Parsers.xml for the ORI
01/10/2022 AZ Driver
  • Error: Parsing framework logged the error "HandleSTATE_DEPARTMENTDynamicLines"
  • Cause: The state began sending records containing the line "*** MEDICAL ATTESTATION ***" which the parser had not yet seen. Note: We have not yet seen records with content after this line; however, it appears related to a new WA law that went into effect Jan 1, 2022, that allows drivers to add medical designators to their DLs, so we will likely see records with content after this line in the future.
  • Solution: Refactored HandleSTATE_DEPARTMENTDynamicLines to detect and process the new medical attestation string.
01/03/2022 AZ 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 began sending records with a line containing "SPECNEED/" after each owner name that the parser had not yet seen which caused the HandleDynamicLines method to attempt to add an item with the same key to a dictionary.
  • Solution: Refactored HandleHolder to detect and process the new "SPECNEED/" line and MapFields to put the content in an AdditionalInformation element for each owner.
01/03/2022 TN 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 began sending records with a line containing "SPECNEED/" after each owner name that the parser had not yet seen which caused the HandleDynamicLines method to attempt to add an item with the same key to a dictionary.
  • Solution: Refactored HandleHolder to detect and process the new "SPECNEED/" line and MapFields to put the content in an AdditionalInformation element for each owner.
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"

09/08/2020 IL Driver

IL DR parser has been updated to handle additional information on City line, and to sub-string additional information on the PID/ EXP/ ISS/ line.

08/26/2020 OK Registration

OK RR parser has been updated to handle Multi-hit Tribal information. This change for OK only involved the Nlets.MessageParsing.Parsers.Oklahoma.dll

08/26/2020 NM Registration

Added logic to handle lines with owner date of birth DOB and no owner name OWNER information. This change is limited to the Nlets.MessageParsing.Parsers.NewMexico.dll.

08/26/2020 NM Driver

Update to the Parser.xml file for NM DR to handle the following Error Notification messages. This change for the NM DR is limited to the Parser.xml file.

08/26/2020 NC Registration

NC added a line for customers who order multiple plates in series. This was causing an additional information in Dynamic lines error. Added logic to handle this line and separate out the plate count, issue date and expiration date. This change is limited to the Nlets.MessageParsing.Parsers.NorthCarolina.dll.

08/26/2020 MN Registration

Update to the MN RR Parser to handle CTY,STA,ZIP,VYR, VMA and pending forfeiture fields that were appearing causing errors. This change is limited to the Nlets.MessageParsing.Parsers.Minnesota.dll.

08/19/2020 NC Registration

Update to the Parsers.xml file for NC DR to handle the following Not_On_File messages.

08/19/2020 WV Registration

The WV DR parser was erroring with the addition of a new field named "COMM IMP" with no data yet.

8/18/2020 AR Registration

Updated the Nlets.MessageParsing.Parsers.Arkansas.dll. The root cause of the message "The DRIVE_OUT_START_DATE/DRIVE_OUT_START_TIME/DRIVE_OUT_END_DATE/DRIVE_OUT_END_TIM line could not be substringed" is a change in the spacing after the START DATE-TIME: and END DATE-TIME: label. Original map was counting 2 spaces after each label, we only have one space after each in the errored samples.

8/12/2020 OK Registration
  • Updated The OK RR parser was experiencing difficulties with the Secondary Plate Owner that had two names with an "and/or" or "OR". This moved the second name to the line below the first half of the entry. We have recaptured that.
  • Also handed duplicate key issue when we receive Two Secondary Owner Name lines.
8/11/2020 ID Registration

Updated Nlets.MessageParsing.Parsers.Idaho.dll with additional logic to address the changes for error-ing with additional information that needed to be handled.I was able to create output logic for this to handle it.

8/11/2020 CA Registration

Updated and deployed the Nlets.MessageParsing.Parsers.California.dll that contains the fixes addressing returned unhanded Notice Messages, , a New field IDENT: for Off Road Vehicles. Handle Mileage passed in as Kilometers, Handle Registered Owner Information for Mexicali/Mexico Addresses.

8/11/2020 NB Registration

Updated and deployed the Nlets.MessageParsing.Parsers.Nebraska.dll that contains the changes for the following areas: Title Information, Insurance Information, Brand Information, Vehicle Information, Owner Information, Lien/Lien Holder Information

8/04/2020 ME Registration

Updated Parser.xml with additional logic to return specific messages that are appearing on the second line of information from error notification for No Match Found queries.

8/04/2020 MT Registration

Updated Parser.xml with additional logic to allow parser to interpret and return the new Alert message section returned after the restriction of an RR.

8/04/2020 CO Registration

Updated Parser.xml with additional logic for the CO RR parser to return the License or VIN from the original query when Soap Error notification is returned.

8/04/2020 NJ Registration

Updated Parser.xml with additional logic for address issues resulting from unexpected content on the first line of the message due to introduction of a new ORI.

7/22/2020 CT Registration

Updated the Parser.xml file for the CT RR parser to handle a Not On File message.

7/22/2020 NV Registration

Updated the Parser.xml file and Nlets.MessageParsing.Parsers.Nevada.dll for the NV RR parser to handle to handle a Not On File message, Name suffix was not being handled when there was more than one space between the name and the suffix, and to handle an issue when the number of cylinders is presented as "00".

7/22/2020 OR Registration

Updated the Nlets.MessageParsing.Parsers.Oregon.dll file for the OR RR parser to handle to handle a blank Fleet Number.

7/21/2020 NH Registration

Updated Parser.xml with additional logic for address issues resulting from varied character spacing

7/21/2020 SC Driver
  • Updated Parser.xml with better handling for DRs with Error code 3039
  • Updated Parser.xml with better handling for ProvDL, TEMPORARY ALCHOHOL DL and MOPED License Types
7/21/2020 VA Driver

Updated the VA DR parser to handle ID Restrictions, DMV_Restrictions, and logic to handle Dwelling Address that is missing City/State/Zip.

7/17/2020 MD Registration
  • Update to the Parser.xml file for MD RR to handle the MD RR Parser as a FullyTagged parser for the following ORIs and the following Not_On_File messages.
 ORIs
 MD002015V
 MD002016V
 MD002017V
 MD002018V
 MD002019V
 MD002020V
 MD002021V
 MD002022V
 MD002030V
 MD002031V
 MD002032V
 MD002033V
 MD002034V
 MDMVA0000

 Not_On_File messages
 "RECORD NOT FOUND"
 "No vehicle found"
 "SQL ERROR!"
7/17/2020 UT Driver

Update to the Parser.xml file for UT DR to handle a new Not_On_File message of "TEMPORARILY UNAVAILABLE".

7/17/2020 NH Driver
  • Update to the Parser.xml file for NH DR to handle a new Not_On_File message of "UNKNOWNHOSTEXCEPTION".
  • Updated the NH parser Dll to handle additional information Photo Available and Photo Caveat.
7/17/2020 ND Driver

Update to the Parser.xml file for ND DR to handle a new Not_On_File message of "YOUR QUERY FAILED TO EXECUTE".

7/17/2020 VA Registration
  • Notice of Suspension header spelling change
  • Additional Message "PREVIOUS OUT-OF-SERVICE VIOL" on address line.
  • Handle the new fields "MOTORCYCLE INSTR RETURNED/REMAILED" date, and RETURNED RSN status.
  • Added logic to handle addresses with 1/2 numbers in address.
  • Added logic to properly handle APT in address.
  • Updated logic to handle Address2 line parsing
  • Updated logic to handle City State Zip line parsing
7/17/2020 OK Registration
  • CDL Status to handle additional data we are receiving in that Status.
  • No Medical Certificate Message with Medical Certification.
  • License Restrictions
7/16/2020 SC Driver
  • The structure of the OLN / ACN line has been updated
  • The structure of the SEX / HEIGHT / WEIGHT / BIRTH line has been updated
  • The structure of the STATUS / CDL / MED line has been updated
  • The structure of the TYP / CLASS / IIS / ACN line has been updated
  • Parser can now handle Eye Color
  • The parser can now better handle when the TYP / CLASS / IIS / ACN line has been arbitrarily truncated to random lengths
  • Mappers for the following Commerical DL types added: "BP", "CDL", "SR", "CPDL", "BP (R)", "CDL (R)", "SR (R)" and "CPDL (R)"
  • State Error Notification flag added for "3202 - A driver license or ID card number must be 10 or less numeric digits"
  • State Error Notification flag added for "3048 - No Driver's License was found for the DL number entered"
7/16/2020 SC Registration
  • Parser can now handle Responses with two holders
  • Parser can now handle Responses where the street is on the same line as the City, State, and Zip
7/15/2020 ID Registration Added logic to return the original query and additional information when a Not on file error occurs.
7/15/2020 TX Registration Added logic to handle Out of Range Exception for two owners on the vehicle and their combined name length was beyond a specific char count.
7/15/2020 IN Driver Added "** STARS is currently not processing" to the error response section of the IN DR parser.
7/14/2020 CT Registration Added the indicator of "NO DATA FOUND" and "DATA RETRIEVAL ERROR".
7/14/2020 GA Registration Added logic to handle responses containing "Vehicle Not Found".
7/14/2020 AL Registration Added logic to handle new header line: *** DMV REGISTRATION RESPONSE ***
7/14/2020 MI Registration MI parsers updated to handle DRs and RRs from the same MI ORI (MI230015V).
7/14/2020 OH Driver Added "** Error occurred while processing the request." to the error response section of the OH DR parser.
7/9/2020 MS Registration Resolved issue with no County on Vehicle line. Had to pad the string before it could be parsed.
7/9/2020 WY Registration Added logic to handle &/OR in names
7/9/2020 CA Registration City did not have the "CITY:" as a delimiter, also additional information showing up in the dynamic lines. Added logic to handle the message.
7/9/2020 IA Driver Message marked as fully-tagged XML contains a response text element
7/9/2020 OR Driver Unexpected content encountered on first or second line
7/9/2020 OR Registration Unexpected content encountered on first or second line
7/9/2020 AZ Registration Message marked as fully-tagged XML contains a response text element that is not an indication of record not on file
7/9/2020 NM Registration Had to change logic to deal with owner section of the message when an address is not present
6/22/2020 OK Registration OK Parser update for two new fields in RR Messages
6/22/2020 ID Registration ID Parser update for positional start of text logic for LIC line in RR Messages
6/22/2020 NJ Registration NJ Parser update for the original RR Query in the first line position in RR Messages
6/22/2020 MI Registration MI RR Parser update for Error_Notification and Not_On_File_Text messages
6/22/2020 AZ Registration Adjust for NOT ON FILE messages
6/22/2020 OK Registration The OK RR parser was having issues with the new Vehicle Field "Color: and Dynamic Field Communication Disability."

I have added the logic in the Parser to handle the two new fields above.

6/22/2020 ID Registration The ID RR message have started to appear with SingleFile and MultiHit files Both have intermittent LIC/ Line starting on line 0 rather than line 1.

I have added changes to make code more dynamic to handle the possibility of the two situations, in the two file types.

06/3/2020 DE Registration Update to holder parsing
06/2/2020 AK Driver Update to address parsing
06/2/2020 CA Driver Update to handle additional caveat lines
06/2/2020 CA Registration Update to handle additional caveat lines
06/2/2020 DE Registration Update to LIC handling
06/2/2020 HI Driver Update to Med Field indicator
06/2/2020 ME Registration Additional Caveat handling
05/27/2020 OR Registration "Update to handle new BRAND field. Update to support new Holder codes. Major refactoring to the parsing of address
05/27/2020 OR Driver Update to address handling and to account for new “USE THIS NO” address
05/27/2020 TX Registration Update to handle new COMM IMPED field
05/27/2020 OH Registration Updates to address parsing to account for addresses with two street lines
05/27/2020 NM Registration Can now handle responses that indicate an State specific error has occurred
05/27/2020 NB Driver Multi-hit address parsing update
05/27/2020 WI Registration Addition of a new NOF strings to configuration
05/27/2020 NM Registration Addition of a new State Error Notification strings to configuration
05/22/2020 AZ Driver AZ is now sending fully-tagged NIEM
05/22/2020 AZ Registration AZ is now sending fully-tagged NIEM
05/22/2020 KS Driver Update to restriction handling
05/22/2020 KS Registration Can now handle responses that indicate an State specific error has occurred
05/22/2020 XX Driver Addition of a new State Error Notification string to configuration
05/14/2020 AZ Driver Addition of a new NOF string to configuration
05/13/2020 KY Driver Update to handle owners with "AND/OR"
05/13/2020 KY Registration Update to the processing Next of Kin
05/13/2020 FL Registration Can now handle responses that indicate an State specific error has occurred
05/13/2020 AR Driver Update to address parsing
05/13/2020 AR Registration Update to Insurance Parsing, State Error Notification Handling
05/13/2020 NJ Driver Update to handle Age
05/13/2020 TX Driver Update to handle person description
05/13/2020 TX Registration Update to handle empty EXP dates
05/13/2020 AL Driver AL switched to fully tagged responses
05/13/2020 AZ Driver AZ switched to fully tagged responses
05/13/2020 MI Driver MI switched to fully tagged responses
05/13/2020 NJ Driver New USCIS not authorized string
05/13/2020 AZ Registration AZ switched to fully tagged responses
05/13/2020 FL Registration New NOF strings added to config
05/13/2020 MO Registration MO switched to fully tagged responses
05/13/2020 MI Registration MI switched to fully tagged responses
05/13/2020 CT Registration CT switched to fully tagged responses
04/10/2020 MI Registration New NOF strings added to the configuration
04/10/2020 SD Driver Update to support safe extraction from fields dictionary Update to endorsement handling Update to MedCert handling
04/10/2020 AZ Driver Handle responses with "No matching drivers found" in the body
04/10/2020 AZ Driver Can now handle responses that indicate an State specific error has occurred
04/10/2020 AZ Registration Addition of a new MSC field
04/10/2020 MI Driver MI switched to fully tagged responses
03/26/2020 TX Driver Can now handle responses with "UNKNOWN NDLS RESPONSE" in the body
03/23/2020 CO Registration This resolved an issue with parsing CO mult-hit responses
03/23/2020 CO Registration CO started using a NEW ORI
03/23/2020 Al Driver Flag added for No Record Found or State Error Notification
03/23/2020 GA Driver GA switched to fully tagged responses
03/23/2020 AZ Driver AZ switched to fully tagged responses
03/23/2020 CO Registration CO switched to fully tagged responses

Top

Common Abbreviations

Abbreviation Description
EXP Expiration or Expiration Date
NOF Not on File

Top