Support Article
Case creation from SWIFT message fails in Prod with some TAG20
Summary
The SmartInvestigate application receives a SWIFT message with non A-Z, a-z, 0-9 characters inside the TAG20 field, independently from the SWIFT message type.
The message case is created, but an validation error in the assignment which prevents the case progress further in the flow.
It appears that the Java code used for the SWIFTLastCorrRef does not take into account the whole set of the SWIFT X Character Set.
Error Messages
".pyWorkParty(Inquirer).LastCorrRef: Invalid value specified for LastCorrRef. Value doesn't adhere to the Validate: SWIFTLastCorrRef"
Steps to Reproduce
Issue is reproduced from the OOTB Pega Smart Investigate. Following is the procedure:
01. From the Manager Portal, Click on "New"
02. Select "MsgCase" as Business
03. Select "Generic Message" as Case Type
04. Copy the following SWIFT Message inside the Message Section:
{1:A01AAAAAABBAYYY2222222222}
{2:O8887770000413XXXXXX0A2XXX12345678910111212141N}
{3:{108:TI1234567890.8C)}}
{4:
:20:BG1234567890.8C)
:21:AA12345678910111
:79:RE: OUR MESSAGE TO YOU
NO. .
.
DETAILS::
DATE.......: 7-7-2016
AMOUNT.....: USD 29,00
VALUE......: 8-8-2016
OUR REF....: 00000000000
YOUR REF...: 1111111111
SUBFIELD 9.:
FIELD 86...:
.
.
THANK YOU
-}
{5:{CHK:2222BIC0000}}
05. The User clicks on "Create"
06. The Message Case is created and correctly parsed, as you can see under Work Information.
07. The User clicks on the "Process the message" assignment.
08. On the new form the User chooses a Line of Business and a Case Type (this is independent, but for example: "Payments"/"Amend beneficiary")
09. The User clicks on "Submit".
10. The User fills the mandatory fields (in my previous example they are Transaction Date and Value Date).
11. The User clicks on "Create".
12. The Error ".pyWorkParty(Inquirer).LastCorrRef: Invalid value specified for LastCorrRef. Value doesn't adhere to the Validate: SWIFTLastCorrRef" is presented to the User.
Root Cause
A defect in Pegasystems’ code or rules
Resolution
Field :20 contains a closing bracket character which cause the validation to fail:
:20:BG1234567890.8C)
To overcome this issue, the SWIFTLastCorrRef validation rule can be modified to reference the SIValidSWIFTCharSet utility.
By doing so, all the characters within the cope of SWIFT character set will not cause validation error:
char prev = 0;
for (int pos = 0, len = theValue.length(); pos < len; ++pos) {
if (theValue.charAt(pos)!= ' ')
{
if (
! Character.isLetterOrDigit(theValue.charAt(pos)) && (!com.pegarules.generated.pegasi_siutilities.SIValidSWIFTCharSet(String.valueOf(theValue.charAt(pos))) || theValue.charAt(pos) == '/')
&& !(theValue.charAt(pos) == '/' && pos != 0 && pos != len-1 && prev != '/')
)
{
return false;
}
}
prev = theValue.charAt(pos);
}
return true;
Published April 23, 2016 - Updated December 2, 2021
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.