Routing Transit Node

The routing transit node must be the first of the payment validation rule nodes in the workflow connections.

Several fields that other payment validation rule nodes use are initialized. Specifically, ibmNprValidationError is initialized to false, ibmNprRecordId is initialized to -1 (X'FF'), and any of the ibmNprValid set of flags (for example, ibmNprValidAmount and ibmNprValidAuxOnUs) not received from the client is initialized to 1 (valid).

Also, if the endorse node is included in the workflow, the default endorse string (ibmIntDefaultEndorseData) is seeded into the endorse field (ibmSpxPrgEndDet). The endorse node overwrites it with the appropriate setting.

The routing transit values as set in Table 1 (refer to ibmIntRTLow and ibmIntRTHigh) are required to be in 4–4 format for the United States documents and in 5–3 format for Canadian documents. The routing transit node converts 9-digit routing transit numbers into 4–4 before performing the lookup.

The routing transit table also requires the record be tagged with the appropriate routing transit format. These will be USD - US RTs and CAD - Canadian RTs. These are the only two currently supported. This setting is determined automatically by the routing transit node as part of its normal function.

The routing transit node also automatically sets the ibmCurrencyCode field with this same value and returns it to the client if the client did not send it. If the client does specify it, the value must be USD or CAD.

Blank routing transit values are not allowed.

The routing transit node is also responsible for initializing the valid flags. All ibmNprValid flags that are received from the client are used as-is. Any that are not received are automatically defaulted to 1 (valid). If the client (for example, a sorter) sends a valid routing transit flag of 0, the table lookup is not performed and the node returns failure.

When the routing transit table record is successfully located and the ibmNprRecordId value has changed, a lookup in the record ID validation table is performed. The fields are validated according to the record ID validation node (see Record ID Validation).

Table Record Layout

Table 1 shows the routing transit node table record layout:
Table 1. Routing Transit Node Table Record Layout
Field Type Field Name Data Type Length Notes
Key ibmIntRTFormat char 3 USD, CAD
Start Key ibmIntRTLow char 9 nnnn-nnnn, nnnnn-nnn
End Key ibmIntRTHigh char 9 nnnn-nnnn, nnnnn-nnn
Payload ibmNprRecordType byte 2  
ibmNprControlDoc char 1  
ibmNprRecordId byte 2 Used as one of the keys in the record ID validation table
ibmIntPartnerId char 10 Pocket map table key (one of six)
ibmNprOnUsFlag char 1  
ibmNprCredit char 1  
ibmIntEndorseId byte 2 Endorse table key
ibmIntAmountPrefix byte 2 Amount table key
ibmIntPcPrefix byte 2 Process control table key
ibmIntAccountPrefix byte 2 Account table key
ibmIntField4Prefix byte 2 Field 4 table key
ibmIntEpcPrefix byte 2 Extended process code table key
ibmIntAuxPrefix byte 2 AuxOnUs table key

Fields that can Change

The fields that can change with the routing transit node are shown in Table 2:
Table 2. Routing Transit Node fields that can Change
Field Name Data Type Length Notes
ibmNprCurrencyCode char 3 USD, CAD
ibmNprRecordId byte 2  
ibmNprValidationError byte 1  
ibmNprValidAmount byte 1  
ibmNprValidPc byte 1  
ibmNprValidAccount byte 1  
ibmNprValidField4 byte 1  
ibmNprValidRT byte 1  
ibmNprValidExtProcCode byte 1  
ibmNprValidAuxOnUs byte 1  

Results

The available routing transit node results are shown in Table 3:
Table 3. Routing Transit Node Results
If Condition Results Notes
ibmNprValidRT False (0) FAILURE Without doing the lookup
ibmNprRT Not set / blank FAILURE Without doing the lookup
Lookup Fails FAILURE  
Converted RT Is not 9 characters in length FAILURE Without doing the lookup
Lookup Succeeds SUCCESS  
Validation Succeeds/Fails SUCCESS  

Initialize

Not applicable

Process

The routing transit node does the following in sequence:
  1. Sets ibmNprValidationError to false, sets ibmNprRecordId to -1, sets ibmNprCurrencyCode to "", and sets all ibmNprValid fields not received from the client to 1 (valid). Also sets ibmSpxPrgEndDat with the default, if enabled.
  2. Checks the value of the ibmNprValidRT field. If it is false, sets the node's response to failure and goes to step 15.
  3. If the converted routing transit does not have nine (9) characters, sets the node's response to failure and goes to step 14
  4. Checks that the ibmNprRT field is in the decision request and is not blank. If it is present, continues to step 5. If it is not present, sets the node's response to failure and goes to step 15.
  5. Checks that the ibmNprRT field in the decision request has a length of 8 characters. If it is 8 characters, inserts a dash to create nnnn-nnnn.
  6. Checks that the ibmNprRT field in the decision request has a length of 9 characters. If it is 9 characters, checks for the existence of a dash. If there is no dash, inserts a dash and drops the check digit to create nnnn-nnnn.
  7. If nnnn-nnnn, sets ibmNprCurrencyCode to USD. If nnnnn-nnn, sets ibmNprCurrencyCode to CAD.
  8. Sets ibmIntRTLow and ibmIntRTHigh to the modified version of ibmNprRT. At this point, its format is either nnnn-nnnn or nnnnn-nnn. If the routing transit is converted in step 5 or step 6, only the temporary value used to do the lookup is modified, not the original ibmNprRT.
  9. Saves a copy of ibmNprRecordId.
  10. If the user exit is present, calls its preProcess routine.
  11. Performs the lookup in the routing transit table.
  12. If the record is not found, sets the node's response to failure and goes to step 15.
  13. If the record is found, reads the payload fields into DecisionRequest and set the node's response to success.
  14. Checks to see if the ibmNprRecordId was modified from the table lookup. If it was, it continues with the validate the payment field operation (see Validating the Payment Fields Operation).
  15. If the user exit is present, calls its buildClientResponse routine.
  16. Returns to the workflow controller.