IDOT CVISN Documentation Project |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
International Registration Plan (IRP)BackgroundFrom: http://www.icc.illinois.gov/mc/EOSSirp.aspx (Credential information updated by communications with Mick Ramirez) The IRP is an agreement among 48 states, 10 Canadian Provinces and the District of Columbia whereby a motor carrier can register commercial vehicle fleets for travel in all IRP jurisdictions by filing the paperwork with the home (base) jurisdiction. Interstate commercial vehicles legally based in Illinois must be registered under the International Registration Plan (IRP). The Office of the Secretary of State Commercial and Farm Truck Division administers IRP in Illinois. The IRP is a registration reciprocity agreement among jurisdictions in the United States and Canada, which provides for payment of license fees on the basis of fleet miles operated in various jurisdictions. The unique feature of the IRP Plan is that only one license plate and one cab card is issued for each fleet vehicle even though license fees are paid to the various jurisdictions in which fleet vehicles are operated. A fleet vehicle may be operated both inter-jurisdictionally and intra-jurisdictionally. The IRP registration cycle in Illinois is April 1 through March 31 each year and the renewal period extends from December until March. In 2006, the Secretary of State issued 165,810 IRP credentials to Illinois-based carriers. Contacts
Registration SystemsThere are two sources of registration information of commercial vehicles at the Secretary of State. The IRP system is documented here. There is also the Motor Vehicle Registration (MVR) system for intrastate vehicles. The documentation of the MVR system is documented on the MVR tab. Database EnvironmentThe database server is an IBM DB2 database environment. There are the following tables:
MappingThe standard general mappings on the home tab need to be applied. Dates are of the form ccyymmdd format which will need to be converted to yyyy-mm-dd format. IRP Account (T0020V1)
Notes: 1) The status code maps from the legacy system of one character to the following three digit codes:
2) The COUNTRY[MA] is determined by the MAIL_STATE. If the MAIL_STATE is MX then COUNTRY[MA] IS MX. If the MAIL_STATE is a Canadian Province or Territory then the COUNTRY[MA] IS CA, otherwise the COUNTRY[MA] is US. See Jurisdiction Mappings below for valid Canadian Jurisdictions IRP FLEET (T0021V1)Note: Fleet information has no name or address - only fleet number
IRP CAB (T0022V2)
1) If LESSOR exists then OWNER_NAME is LESSOR, otherwise OWNER_NAME is FIRM_NAME. 2) The vehicle type mapping codes used in Illinois IRP are similar but have slightly different mappings. Below is the table to convert IL codes to SAFER/CVIEW codes:
3) In addition to date mapping documented above the expiration date is either IR_VEHICLE.STATUS_DATE if the IR_VEHICLE.STATUS_CODE is "I" or March 31 of the year associated IR_FINANCE.PAY_DATE. 4) The
weights allowed in various jurisdictions are explained in more detail
in note 6 (see below). One uses the IR_VEHICLE.WTG_GRP to
determine
which weight group is appropriate for this vehicle. To find
the Illinois weight, consult the field IR_WEIGHT.STATE_WEIGHT_10_18
character positions 37-42. 5) The mapping of JURISDICTION in TITLE_JURISDICTION or IRP_PRORATION is a full jurisdiction which is 4 characters in size. The first two characters are the country code (US, CA, MX) and the last two are the state/province code (et IL, CA, ...). Examples:
6) The mapping of IRP_WEIGHT for IRP_PRORATION is accomplished by first looking at the IR_VEHICLE.WTG_GRP to determine which weight group is appropriate. There are fields of the form IR_WEIGHT.STATE_WEIGHT_X_Y where X is the starting jurisdiction index (1, 10, 19, 28, 37, 46, 55) and Y is X+8 (9, 18, 27, 36, 45, 54, 63). The jurisdiction index is given below. To find the weight for a particular jurisdiction one first determines the jurisdiction index then consults the appropriate STATE_WEIGHT_X_Y field. This is the smallest X which is greater or equal to the jurisdiction index. One then subtracts the X from the jurisdiction index and multiplies by 6 then add 1 to get the starting character offset in the STATE_WEIGHT_X_Y field. Then 6 characters starting at that position is the weight. As an example case: IL is index 16. This indicates STATE_WEIGHT_10_18 is the appropriate STATE_WEIGHT field to consult. (16-10)*6 + 1 = 37 as the starting character position. 37-42 is where the weight is stored for IL. Jurisdiction Mappings
TriggersThe trigger field for transactions are as follows:
US_DOT Cross Reference MappingAccording to Marinda Beccue in a conversation on 10/23/2006, all carrier IRP registrations or renewals now require a US_DOT Carrier ID. This was implemented at least one year ago so all carriers who are current with their IRP have a US_DOT Carrier ID. Based on this information, the US_DOT Cross Reference Mapping is complete. XML Creation ScriptBelow is a php script which was used to generate T0020, T0021, and T0022 transactions which were then applied to XCVIEW implementation of CVIEW. A database was created and minimally populated with test data. The application of the test cases were successful and the scripts could be used as the basis for an implementation of a XML creation script for the IRP system. The $Host, $Username, $Password, "LSI_IRP" database would need to be adjusted to reflect the actual IRP database. This script assumes the IRP database is a MS-SQL 2005 database. This is not the case and minor modifications to the script are required to operate with the DB2 database. <?php XML TransactionsThere are three CVIEW transactions in the IRP system. The three transactions are IRP Carrier account (T0020), IRP Fleet account (T0021) and IRP cab (T0022) - the first two deal with possibly groups of vehicles while the cab transaction corresponds to one vehicle. T0020V1.xsd<schema xmlns="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.safersys.org/namespaces/T0020V1" xmlns:ts="http://www.safersys.org/namespaces/T0020V1" elementFormDefault="qualified"> <!-- IRP Account Input Transaction, T0020, version 1 --> <include schemaLocation="globalTypes.xsd"/> <!-- Root element --> <element name="T0020" type="ts:T0020V1Type"/> <!-- Root element type --> <complexType name="T0020V1Type"> <sequence> <element name="INTERFACE" type="ts:interfaceHeaderType"/> <element name="TRANSACTION" type="ts:transHeaderType"/> <element name="IRP_ACCOUNT" type="ts:IRPAccountType" minOccurs="1" maxOccurs="5000"/> </sequence> </complexType> <!-- Interface Header type --> <complexType name="interfaceHeaderType"> <sequence> <element name="NAME" type="string" fixed="SAFER"/> <element name="VERSION" type="string" fixed="04.02"/> </sequence> </complexType> <!-- Transaction Header type --> <complexType name="transHeaderType"> <sequence> <element name="VERSION" type="string" fixed="01.00"/> <element name="OPERATION" type="string" fixed="REPLACE"/> <element name="DATE_TIME" type="dateTime"/> <element name="TZ" type="ts:globalTimeZoneType"/> </sequence> </complexType> <!-- IRP Account type --> <complexType name="IRPAccountType"> <sequence> <element name="IRP_CARRIER_ID_NUMBER" type="ts:globalOptCarrierIdNumberType" minOccurs="0"/> <element name="IRP_BASE_COUNTRY" type="ts:globalCountryType"/> <element name="IRP_BASE_STATE" type="ts:globalJurisdictionType"/> <element name="IRP_ACCOUNT_NUMBER"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="32"/> </restriction> </simpleType> </element> <element name="IRP_ACCOUNT_TYPE" type="ts:globalIRPAccountTypeValues" minOccurs= "1"/> <element name="IRP_STATUS_CODE" type="ts:globalIRPStatusCodeType"/> <element name="IRP_STATUS_DATE" type="date"/> <element name="IRP_UPDATE_DATE" type="date"/> <element name="IRP_NAME" type="ts:IRPNameType" minOccurs="0" maxOccurs="2"/> </sequence> </complexType> <!-- IRP Name type --> <complexType name="IRPNameType"> <sequence> <element name="NAME_TYPE" type="ts:globalNameTypeValues"/> <element name="NAME"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="120"/> </restriction> </simpleType> </element> <element name="IRP_ADDRESS" type="ts:IRPAddressType" minOccurs="0" maxOccurs="2"/> </sequence> </complexType> <!-- IRP Address type --> <complexType name="IRPAddressType"> <sequence> <element name="ADDRESS_TYPE" type="ts:globalAddressTypeValues"/> <!--Business rules check that at least one of STREET_LINE_1, STREET_LINE_2, and PO_BOX is present --> <element name="STREET_LINE_1" type="ts:globalOptString90Type" minOccurs="0"/> <element name="STREET_LINE_2" type="ts:globalOptString90Type" minOccurs="0"/> <element name="PO_BOX" type="ts:globalOptString90Type" minOccurs="0"/> <element name="CITY" type="ts:globalString90Type"/> <element name="STATE" type="ts:globalJurisdictionType"/> <element name="ZIP_CODE" type="ts:globalZipType"/> <element name="COUNTY" type="ts:globalOptString90Type" minOccurs="0"/> <element name="COLONIA" type="ts:globalOptString90Type" minOccurs="0"/> <element name="COUNTRY" type="ts:globalOptCountryType" minOccurs="0"/> </sequence> </complexType> </schema> T0021V1.xsd - IRP Fleet Account<?xml version="1.0"?><schema targetNamespace="http://www.safersys.org/namespaces/T0021V1" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ts="http://www.safersys.org/namespaces/T0021V1" elementFormDefault="qualified"> <!-- IRP Fleet Input Transaction, T0021V1, Version 1 --> <include schemaLocation="globalTypes.xsd"/> <!-- Root element --> <element name="T0021" type="ts:T0021V1Type"/> <!-- Root element type --> <complexType name="T0021V1Type"> <sequence> <element name="INTERFACE" type="ts:interfaceHeaderType"/> <element name="TRANSACTION" type="ts:transHeaderType"/> <element name="FLEET_ACCOUNT" type="ts:FleetAccountType" minOccurs="1" maxOccurs="5000"/> </sequence> </complexType> <!-- Interface header type --> <complexType name="interfaceHeaderType"> <sequence> <element name="NAME" type="string" fixed="SAFER"/> <element name="VERSION" type="string" fixed="04.02"/> </sequence> </complexType> <!-- Transaction header type --> <complexType name="transHeaderType"> <sequence> <element name="VERSION" type="string" fixed="01.00"/> <element name="OPERATION" type="string" fixed="REPLACE"/> <element name="DATE_TIME" type="dateTime"/> <element name="TZ" type="ts:globalTimeZoneType"/> </sequence> </complexType> <!-- Transaction data element type --> <complexType name="FleetAccountType"> <sequence> <element name="IRP_ACCOUNT_NUMBER"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="32"/> </restriction> </simpleType> </element> <element name="IRP_BASE_COUNTRY" type="ts:globalCountryType"/> <element name="IRP_BASE_STATE" type="ts:globalJurisdictionType"/> <element name="FLEET_NUMBER"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="15"/> </restriction> </simpleType> </element> <element name="FLEET_STATUS_CODE" type="ts:globalIRPStatusCodeType"/> <element name="FLEET_STATUS_DATE" type="date"/> <element name="FLEET_EXPIRE_DATE" type="date"/> <element name="FLEET_UPDATE_DATE" type="date"/> <element name="FLEET_NAME" type="ts:FleetNameType" minOccurs="0" maxOccurs="2"/> </sequence> </complexType> <!-- Fleet name element type --> <complexType name="FleetNameType"> <sequence> <element name="NAME_TYPE" type="ts:globalNameTypeValues"/> <element name="NAME"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="120"/> </restriction> </simpleType> </element> <element name="FLEET_ADDRESS" type="ts:FleetAddressType" minOccurs="0" maxOccurs="2"/> </sequence> </complexType> <!-- Fleet address element type --> <complexType name="FleetAddressType"> <sequence> <element name="ADDRESS_TYPE" type="ts:globalAddressTypeValues"/> <!--Business rules check that at least one of STREET_LINE_1, STREET_LINE_2, and PO_BOX is present --> <element name="STREET_LINE_1" type="ts:globalOptString90Type" minOccurs="0"/> <element name="STREET_LINE_2" type="ts:globalOptString90Type" minOccurs="0"/> <element name="PO_BOX" type="ts:globalOptString90Type" minOccurs="0"/> <element name="CITY" type="ts:globalString90Type"/> <element name="STATE" type="ts:globalJurisdictionType"/> <element name="CITY" type="ts:globalString90Type"/> <element name="STATE" type="ts:globalJurisdictionType"/> <element name="ZIP_CODE" type="ts:globalZipType"/> <element name="COUNTY" type="ts:globalOptString90Type" minOccurs="0"/> <element name="COLONIA" type="ts:globalOptString90Type" minOccurs="0"/> <element name="COUNTRY" type="ts:globalOptCountryType" minOccurs="0"/> </sequence> </complexType> </schema> T0022V2.xsd - IRP Cab<?xml version="1.0"?><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.safersys.org/namespaces/T0022V2" xmlns:ts="http://www.safersys.org/namespaces/T0022V2" elementFormDefault="qualified"> <!-- IRP Registration (Cab Card) Input Transaction, T0022, version 2 --> <include schemaLocation="globalTypes.xsd"/> <!-- Root element --> <element name="T0022" type="ts:T0022V2Type"/> <!-- Root element type --> <complexType name="T0022V2Type"> <sequence> <element name="INTERFACE" type="ts:interfaceHeaderType"/> <element name="TRANSACTION" type="ts:transHeaderType"/> <element name="IRP_REGISTRATION" type="ts:IRPRegType" minOccurs="1" maxOccurs="5000"/> </sequence> </complexType> <!-- Interface Header type --> <complexType name="interfaceHeaderType"> <sequence> <element name="NAME" type="string" fixed="SAFER"/> <element name="VERSION" type="string" fixed="04.02"/> </sequence> </complexType> <!-- Transaction Header type --> <complexType name="transHeaderType"> <sequence> <element name="VERSION" type="string" fixed="02.00"/> <element name="OPERATION" type="string" fixed="REPLACE"/> <element name="DATE_TIME" type="dateTime"/> <element name="TZ" type="ts:globalTimeZoneType"/> </sequence> </complexType> <!-- IRP Registration type --> <complexType name="IRPRegType"> <sequence> <element name="VIN"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="30"/> </restriction> </simpleType> </element> <element name="TITLE_NUMBER" minOccurs="0"> <simpleType> <restriction base="string"> <maxLength value="17"/> </restriction> </simpleType> </element> <element name="TITLE_JURISDICTION" type="ts:globalFullJurisdictionType" minOccurs="0"/> <element name="OWNER_NAME" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="120"/></restriction> </simpleType> </element> <element name="MODEL_YEAR" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="4"/></restriction> </simpleType> </element> <element name="MAKE" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="10"/></restriction> </simpleType> </element> <element name="TYPE" type="ts:globalVehicleUseType" minOccurs="0"/> <element name="MODEL" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="3"/></restriction> </simpleType> </element> <element name="FUEL" type="ts:globalPowerCodeType" minOccurs="0"/> <element name="UNLADEN_WEIGHT" minOccurs="0"> <simpleType> <restriction base="integer"><totalDigits value="8"/></restriction> </simpleType> </element> <element name="NUMBER_OF_AXLES" minOccurs="0"> <simpleType> <restriction base="integer"><totalDigits value="2"/></restriction> </simpleType> </element> <element name="LICENSE_PLATE_NUMBER"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="12"/> </restriction> </simpleType> </element> <element name="IRP_BASE_COUNTRY" type="ts:globalVEHCountryType"/> <element name="IRP_BASE_STATE" type="ts:globalJurisdictionType"/> <element name="UNIT_NUMBER" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="20"/></restriction> </simpleType> </element> <element name="LAST_UPDATE_DATE" type="date"/> <element name="INTERSTATE_FLAG"> <simpleType> <restriction base="string"> <enumeration value="0"/> <!-- Intrastate --> <enumeration value="1"/> <!-- Interstate --> </restriction> </simpleType> </element> <element name="IRP_STATUS_CODE" type="ts:globalIRPStatusCodeType"/> <element name="IRP_STATUS_DATE" type="date"/> <element name="IRP_ACCOUNT_NUMBER" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="32"/></restriction> </simpleType> </element> <element name="IRP_FLEET_NUMBER" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="15"/></restriction> </simpleType> </element> <element name="REGISTRATION_START_DATE" minOccurs="0" type="ts:globalOptionalDateType"/> <element name="REGISTRATION_EXPIRE_DATE" minOccurs="0" type="ts:globalOptionalDateType"/> <element name="OPERATOR_NAME" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="55"/></restriction> </simpleType> </element> <!-- CVIS_DEFAULT_CARRIER has tag SAFETY_CARRIER --> <element name="SAFETY_CARRIER" minOccurs="0" type="ts:globalCarrierIdNumberType"/> <element name="IRP_CARRIER_ID_NUMBER" type="ts:globalOptCarrierIdNumberType" minOccurs="0"/> <element name="IFTA_LICENSE_NUMBER" minOccurs="0"> <simpleType> <restriction base="string"><maxLength value="18"/></restriction> </simpleType> </element> <element name="GVW" minOccurs="0"> <simpleType> <restriction base="integer"><totalDigits value="8"/></restriction> </simpleType> </element> <element name="GVW_EXPIRE_DATE" type="ts:globalOptionalDateType" minOccurs="0"/> <element name="IRP_PRORATION" type="ts:IRPProrationType" maxOccurs="unbounded"/> </sequence> </complexType> <!-- IRP Proration type --> <complexType name="IRPProrationType"> <sequence> <element name="IRP_JURISDICTION" type="ts:globalFullJurisdictionType"/> <element name="IRP_WEIGHT_CARRIED"> <simpleType> <restriction base="string"> <minLength value="1"/> <maxLength value="8"/> </restriction> </simpleType> </element> <element name="IRP_WEIGHT_EXPIRE_DATE" type="date"/> </sequence> </complexType> </schema> JavaScript Menu Powered by Milonic |