ElFileBody using asXml does not allow nested attributes

Good Morning
Hope you can help. I work for a bank and our apis use nested attributes in their xmls to handle such items as debitors and co-debitors. Gatling is giving me an error saying ‘nested attribute definitions is not allowed’. Is there a workaround or a fix in a newer version. I am using gatling version 3.5.1 later versions are giving a security violation on our internal security checks. Simulation shown below as well as the layout (condensed as it is quite big) of the xml.

As can be seen from the xml there can be multiple nested entries for v4:requestorItem (first entry is debtor and the second is co-debtor). There can also be multiple entries for v4:propertyItem (can show previous addresses)

val httpConf = http.baseUrl(" removed for security reasons")
.header(“Accept”, value = “application/soap+xml; charset=UTF-8”)
.header(“content-type”, value = “application/soap+xml; charset=UTF-8”)
.header(“Content-Language”, “en-GB”)
.header(“Connection”, “keep-alive”)
.header(“Keep-Alive”, “timeout=10, max=100”)
.proxy(Proxy(“10.60.168.135”, 8080))

val csvFeeder = csv(“data/validateData.csv”).queue

val scn = scenario(“Perform Validation”)
.feed(csvFeeder)
.exec(http(“validate-solution”)
.post("/credit-request-v6")
.body(ElFileBody(“bodies/validate.xml”)).asXml
.check(status is 200)

)
.exec { session =>
  println("**** Validate ****")
  session
}

setUp(
scn.inject(
atOnceUsers(1)
).protocols(httpConf)
)
}

            <v61:requestorList>
                <!--1 or more repetitions:-->
                <v4:requestorItem>
                    <!--Optional:-->
                    <v4:requestorID>${dbt_requestorID}</v4:requestorID>
                    <v4:requestorType>
                        <v3:code>${dbt_requestorTypeCode}</v3:code>
                        <!--Optional:-->
                        <v3:Label></v3:Label>
                        <!--Optional:-->
                        <v3:commercialProductName></v3:commercialProductName>
                    </v4:requestorType>
                    <!--Optional:-->
                    <v4:propertyList>
                        <!--1 or more repetitions:-->
                        <v4:propertyItem>
                            <v4:propertyCode>
                                <v3:code>${dbt_propertyCode}</v3:code>
                                <!--Optional:-->
                                <v3:Label></v3:Label>
                                <!--Optional:-->
                                <v3:commercialProductName></v3:commercialProductName>
                            </v4:propertyCode>
                            <!--Optional:-->
                            <v4:propertyDate>${dbt_propertyDate}</v4:propertyDate>
                        </v4:propertyItem>
                    </v4:propertyList>

I doubt your issue has anything to do with asXml that only sets the application/xml Content-Type header.

What is the issue with modern Gatling version with your security checks?

Hi

Thanks for the quick reply. From the iqserver logs I have the following.

For gatling-charts versions 3.75, 3.76 there is a Security-High exception. The details I get are as follows

Description from CVE

Moment.js is a JavaScript date library for parsing, validating, manipulating, and formatting dates. A path traversal vulnerability impacts npm (server) users of Moment.js between versions 1.0.1 and 2.29.1, especially if a user-provided locale string is directly used to switch moment locale. This problem is patched in 2.29.2, and the patch can be applied to all affected versions. As a workaround, sanitize the user-provided locale name before passing it to Moment.js.

Explanation

The moment package is vulnerable to Path Traversal. The loadLocale() function in the locales.js file fails to sanitize traversal characters from user-supplied locale names before using them to load modules from the file system. A remote attacker who can influence locale names loaded by the affected function can exploit this vulnerability to traverse beyond the intended directory in order to exfiltrate information or cause other unexpected behavior.

Advisory Deviation Notice: The Sonatype security research team discovered that this vulnerability was introduced in version 2.8.0 and not 1.0.1 as stated in the advisory.

Detection

The application is vulnerable by using this component.

Recommendation

We recommend upgrading to a version of this component that is not vulnerable to this specific issue.

Note: If this component is included as a bundled/transitive dependency of another component, there may not be an upgrade path. In this instance, we recommend contacting the maintainers who included the vulnerable package. Alternatively, we recommend investigating alternative components or a potential mitigating control.

Root Cause

gatling-charts-3.7.6.jario/gatling/charts/assets/js/moment-2.24.0.min.js[2.8.0, 2.29.2)

So this security warning is a false positive. This library is used for Gatling HTML reports and has nothing to do with npm.

Good Morning
Following your comments I spoke to the security team and got them to waive the security issue.
I am now using <gatling.version>3.7.6</gatling.version>
<gatling-maven-plugin.version>4.1.5</gatling-maven-plugin.version>
I am using Scala sdk version 2.13.81
I am still getting the error “[ERROR] i.g.h.a.HttpRequestAction - ‘httpRequest-2’ failed to execute: i.g.c.s.e.ElParserException: Failed to parse with error ‘nested attribute definition is not allowed’”
This seems to be due to having two occurrences of v4:requestorItem which is the valid layout. The first occurrence defines the debtor and the second occurrence defines the codebtor. If I remove the second occurrence then I do not get this error. So I presume the issue is with the ElParser.
If the ElParser does need to be changed to allow nested attributes I presume this will take time. Is there a workaround I could use in the meantime? Some other way of sending a soap xml that would allow nested attributes?
Thanks in advance
Torick

Morning.

Could you please provide the full EL template so that we can reproduce on our side?

Hi

Sorry but I am unable to put the full EL template in the reply. I get the message “Body is limited to 32000 characters; you entered 46144”. I do not see an option to add attachments. Can I email you the file? I will try to add in two parts

Torick

validate.xml part 1

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v2="http://alphacredit.acgroup/Schema/TechnicalData/V2/" xmlns:v6="http://alphacredit.acgroup/Schema/CreditRequest/V6/" xmlns:v61="http://alphacredit.acgroup/Schema/CreditRequest/Types/V6/" xmlns:v3="http://alphacredit.acgroup/Schema/Common/Types/V3/" xmlns:v4="http://alphacredit.acgroup/Schema/Requestor/Types/V4/" xmlns:v41="http://alphacredit.acgroup/Schema/Person/Types/V4/" xmlns:v21="http://alphacredit.acgroup/Schema/Address/Types/V2/" xmlns:v31="http://alphacredit.acgroup/Schema/Expense/Types/V3/">
    <soap:Header>
        <v2:technicalDataCall>
            <v2:callerReference></v2:callerReference>
            <v2:requestId></v2:requestId>
        </v2:technicalDataCall>
    </soap:Header>
    <soap:Body>
        <v6:validateCreditRequestDataRequest>
            <v61:transactionalContext>
                <!--Optional:-->
                <v3:customerExternalIdentifier>#{customerExternalIdentifier}</v3:customerExternalIdentifier>
                <v3:channel>#{channel}</v3:channel>
                <v3:brand>#{brand}</v3:brand>
                <v3:salePointIdentifier>#{salePointIdentifier}</v3:salePointIdentifier>
                <!--Optional:-->
                <v3:requestorLegalForm>#{requestorLegalForm}</v3:requestorLegalForm>
                <v3:language>#{language}</v3:language>
                <!--Optional:-->
                <v3:agentIdentifier></v3:agentIdentifier>
            </v61:transactionalContext>
            <v61:creditRequestCriteria>
                <!--Optional:-->
                <v61:offerNumber></v61:offerNumber>
                <v61:proposalItemId>#{proposalItemId}</v61:proposalItemId>
                <v61:duration>#{duration}</v61:duration>
                <!--Optional:-->
                <v61:BNPPFCriteria>
                    <!--Optional:-->
                    <v61:acquisitionChannelCoromult></v61:acquisitionChannelCoromult>
                    <!--Optional:-->
                    <v61:BUCCL></v61:BUCCL>
                    <!--Optional:-->
                    <v61:cardOverruleFlag></v61:cardOverruleFlag>
                    <!--Optional:-->
                    <v61:tarrifCriteria>
                        <!--Optional:-->
                        <v61:preApprovedAmount></v61:preApprovedAmount>
                        <!--Optional:-->
                        <v61:ratingClass></v61:ratingClass>
                        <!--Optional:-->
                        <v61:tariffCode></v61:tariffCode>
                        <!--Optional:-->
                        <v61:tariffDate></v61:tariffDate>
                        <!--Optional:-->
                        <v61:customerSegmentation></v61:customerSegmentation>
                        <!--Optional:-->
                        <v61:employeeFlag></v61:employeeFlag>
                        <!--Optional:-->
                        <v61:customerPackage></v61:customerPackage>
                    </v61:tarrifCriteria>
                    <!--Optional:-->
                    <v61:decisionCriteria>
                        <!--Zero or more repetitions:-->
                        <v61:customerProfile>
                            <!--Optional:-->
                            <v61:holderAccountNumber></v61:holderAccountNumber>
                            <!--Optional:-->
                            <v61:ageAccount></v61:ageAccount>
                            <!--Optional:-->
                            <v61:interestsFiveYears></v61:interestsFiveYears>
                            <!--Optional:-->
                            <v61:creditBalanceCU></v61:creditBalanceCU>
                            <!--Optional:-->
                            <v61:totalCapitalPPPAT></v61:totalCapitalPPPAT>
                            <!--Optional:-->
                            <v61:domiciliationSalary></v61:domiciliationSalary>
                            <!--Optional:-->
                            <v61:accountClub></v61:accountClub>
                            <!--Optional:-->
                            <v61:meanCreditBalance></v61:meanCreditBalance>
                            <!--Optional:-->
                            <v61:meanDebitBalance></v61:meanDebitBalance>
                            <!--Optional:-->
                            <v61:numberYearlyOperations></v61:numberYearlyOperations>
                            <!--Optional:-->
                            <v61:monthlySalary></v61:monthlySalary>
                            <!--Optional:-->
                            <v61:monthlyIncome></v61:monthlyIncome>
                            <!--Optional:-->
                            <v61:maxNegative></v61:maxNegative>
                            <!--Optional:-->
                            <v61:savingsAccount></v61:savingsAccount>
                            <!--Optional:-->
                            <v61:savingsAccountBalance></v61:savingsAccountBalance>
                            <!--Optional:-->
                            <v61:savingsAccountBalanceTwoYears></v61:savingsAccountBalanceTwoYears>
                            <!--Optional:-->
                            <v61:savingsAccountBalanceFiveYears></v61:savingsAccountBalanceFiveYears>
                            <!--Optional:-->
                            <v61:savingsTerm></v61:savingsTerm>
                            <!--Optional:-->
                            <v61:familyOrFireInsurance></v61:familyOrFireInsurance>
                            <!--Optional:-->
                            <v61:housingCredit></v61:housingCredit>
                            <!--Optional:-->
                            <v61:lifeInsurance></v61:lifeInsurance>
                            <!--Optional:-->
                            <v61:carInsurance></v61:carInsurance>
                            <!--Optional:-->
                            <v61:otherInsurance></v61:otherInsurance>
                            <!--Optional:-->
                            <v61:totalYearlyPremium></v61:totalYearlyPremium>
                            <!--Optional:-->
                            <v61:debtorStatus></v61:debtorStatus>
                            <!--Optional:-->
                            <v61:differentiationCode></v61:differentiationCode>
                            <!--Optional:-->
                            <v61:AMLScore></v61:AMLScore>
                            <!--Optional:-->
                            <v61:AMLRiskLevel></v61:AMLRiskLevel>
                            <!--Optional:-->
                            <v61:AMLScoreDate></v61:AMLScoreDate>
                            <!--Optional:-->
                            <v61:AMLNextReviewDate></v61:AMLNextReviewDate>
                        </v61:customerProfile>
                        <!--Optional:-->
                        <v61:agent>
                            <!--Optional:-->
                            <v61:FUIDCode></v61:FUIDCode>
                            <!--Optional:-->
                            <v61:name></v61:name>
                            <!--Optional:-->
                            <v61:firstName></v61:firstName>
                            <!--Optional:-->
                            <v61:phoneNumber></v61:phoneNumber>
                            <!--Optional:-->
                            <v61:email></v61:email>
                        </v61:agent>
                        <!--Optional:-->
                        <v61:competenceUnit>
                            <!--Optional:-->
                            <v61:FUIDCode></v61:FUIDCode>
                            <!--Optional:-->
                            <v61:name></v61:name>
                            <!--Optional:-->
                            <v61:phoneNumber></v61:phoneNumber>
                            <!--Optional:-->
                            <v61:faxNumber></v61:faxNumber>
                            <!--Optional:-->
                            <v61:email></v61:email>
                        </v61:competenceUnit>
                        <!--Zero or more repetitions:-->
                        <v61:PSPList>
                            <!--Optional:-->
                            <v61:PSPNumber></v61:PSPNumber>
                            <!--Optional:-->
                            <v61:ratingScore></v61:ratingScore>
                            <!--Optional:-->
                            <v61:ratingClass></v61:ratingClass>
                            <!--Optional:-->
                            <v61:level></v61:level>
                            <!--Optional:-->
                            <v61:issueFlag></v61:issueFlag>
                        </v61:PSPList>
                        <!--Optional:-->
                        <v61:consolidatedRating>
                            <!--Optional:-->
                            <v61:ratingDate></v61:ratingDate>
                            <!--Optional:-->
                            <v61:consolidatedRatingScore></v61:consolidatedRatingScore>
                            <!--Optional:-->
                            <v61:consolidatedRatingClass></v61:consolidatedRatingClass>
                        </v61:consolidatedRating>
                        <v61:STPFlag></v61:STPFlag>
                    </v61:decisionCriteria>
                </v61:BNPPFCriteria>
                <!--Optional:-->
                <v61:branchList>
                    <!--1 to 9 repetitions:-->
                    <v61:branch>
                        <!--Optional:-->
                        <v61:applicationStatus></v61:applicationStatus>
                        <!--Optional:-->
                        <v61:userChannel></v61:userChannel>
                        <!--Optional:-->
                        <v61:userId></v61:userId>
                        <!--Optional:-->
                        <v61:userFirstName></v61:userFirstName>
                        <!--Optional:-->
                        <v61:userLastName></v61:userLastName>
                        <!--Optional:-->
                        <v61:userLanguage></v61:userLanguage>
                        <!--Optional:-->
                        <v61:userEmail></v61:userEmail>
                        <!--Optional:-->
                        <v61:entityId></v61:entityId>
                        <!--Optional:-->
                        <v61:entityName></v61:entityName>
                        <!--Optional:-->
                        <v61:entityEmail></v61:entityEmail>
                        <!--Optional:-->
                        <v61:timeStamp></v61:timeStamp>
                    </v61:branch>
                </v61:branchList>
                <!--Optional:-->
                <v61:consentList>
                    <!--1 or more repetitions:-->
                    <v61:creditRequesterConsent>
                        <v61:consentType>
                            <v3:code>#{consentCode}</v3:code>
                            <!--Optional:-->
                            <v3:Label></v3:Label>
                            <!--Optional:-->
                            <v3:commercialProductName></v3:commercialProductName>
                        </v61:consentType>
                        <v61:requestorID>#{dbt_requestorID}</v61:requestorID>
                        <v61:timeOfConsent>#{timeOfConsent}</v61:timeOfConsent>
                    </v61:creditRequesterConsent>
                </v61:consentList>
                <v61:requestorList>
                    <!--1 or more repetitions:-->
                    <v4:requestorItem>
                        <!--Optional:-->
                        <v4:requestorID>#{dbt_requestorID}</v4:requestorID>
                        <v4:requestorType>
                            <v3:code>#{dbt_requestorTypeCode}</v3:code>
                            <!--Optional:-->
                            <v3:Label></v3:Label>
                            <!--Optional:-->
                            <v3:commercialProductName></v3:commercialProductName>
                        </v4:requestorType>
                        <!--Optional:-->
                        <v4:propertyList>
                            <!--1 or more repetitions:-->
                            <v4:propertyItem>
                                <v4:propertyCode>
                                    <v3:code>#{dbt_propertyCode}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v4:propertyCode>
                                <!--Optional:-->
                                <v4:propertyDate>#{dbt_propertyDate}</v4:propertyDate>
                            </v4:propertyItem>
                        </v4:propertyList>
                        <v4:personalInfo>
                            <v41:personIdentity>
                                <v41:firstName>#{dbt_firstName}</v41:firstName>
                                <v41:lastName>#{dbt_lastName}</v41:lastName>
                                <v41:birthDate>#{dbt_birthDate}</v41:birthDate>
                                <!--Optional:-->
                                <v41:birthYear></v41:birthYear>
                                <!--Optional:-->
                                <v41:birthPlace>#{dbt_birthPlace}</v41:birthPlace>
                                <!--Optional:-->
                                <v41:personTitle>
                                    <v3:code>#{dbt_personTitle}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:personTitle>
                                <!--Optional:-->
                                <v41:nationality>#{dbt_nationality}</v41:nationality>
                                <!--Optional:-->
                                <v41:sex>
                                    <v3:code>#{dbt_sex}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:sex>
                                <!--Optional:-->
                                <v41:language>#{dbt_language}</v41:language>
                                <!--Optional:-->
                                <v41:nationalRegisterNumber>#{dbt_nrn}</v41:nationalRegisterNumber>
                                <!--Optional:-->
                                <v41:identityCard>
                                    <!--Optional:-->
                                    <v41:idCardType>#{dbt_idCardType}</v41:idCardType>
                                    <v41:idCardNumber>#{dbt_idCardNumber}</v41:idCardNumber>
                                    <v41:idCardValidityDate>#{dbt_idCardValidTo}</v41:idCardValidityDate>
                                </v41:identityCard>
                                <!--Optional:-->
                                <v41:prefix></v41:prefix>
                            </v41:personIdentity>
                            <v41:address>
                                <v21:addressType>
                                    <v3:code>#{dbt_addressType}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v21:addressType>
                                <v21:streetName>#{dbt_streetName}</v21:streetName>
                                <v21:streetNr>#{dbt_streetNr}</v21:streetNr>
                                <!--Optional:-->
                                <v21:postBox></v21:postBox>
                                <v21:postalCode>#{dbt_postalCode}</v21:postalCode>
                                <v21:city>#{dbt_city}</v21:city>
                                <v21:countryCode>#{dbt_country}</v21:countryCode>
                                <!--Optional:-->
                                <v21:validityStartDate>#{dbt_validityStartDate}</v21:validityStartDate>
                            </v41:address>
                            <v41:contactInfo>
                                <!--Optional:-->
                                <v41:emailAddressList>
                                    <!--Zero or more repetitions:-->
                                    <v41:emailAddress>
                                        <v3:value>#{dbt_emailAddress}</v3:value>
                                        <v3:type>D</v3:type>
                                        <v3:primary>true</v3:primary>
                                    </v41:emailAddress>
                                </v41:emailAddressList>
                                <!--Optional:-->
                                <v41:mobilePhoneNumberList>
                                    <!--Zero or more repetitions:-->
                                    <v41:mobilePhoneNumber>
                                        <v3:value>#{dbt_telephoneNumber}</v3:value>
                                        <v3:type>1</v3:type>
                                        <v3:primary>true</v3:primary>
                                    </v41:mobilePhoneNumber>
                                </v41:mobilePhoneNumberList>
                                <!--Optional:-->
                                <v41:phoneNumberHome></v41:phoneNumberHome>
                            </v41:contactInfo>
                            <!--Optional:-->
                            <v41:familyInfo>
                                <v41:maritalStatus>
                                    <v3:code>#{dbt_maritalStatus}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:maritalStatus>
                                <!--Optional:-->
                                <v41:maritalContractType>
                                    <v3:code>#{dbt_maritalContractType}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:maritalContractType>
                                <v41:numberOfChildren>#{dbt_numberOfChildren}</v41:numberOfChildren>
                            </v41:familyInfo>
                            <!--Optional:-->
                            <v41:businessIdentity>
                                <!--Optional:-->
                                <v41:VATNumber></v41:VATNumber>
                                <!--Optional:-->
                                <v41:enterpriseNumber></v41:enterpriseNumber>
                                <!--Optional:-->
                                <v41:activityCountryCode></v41:activityCountryCode>
                            </v41:businessIdentity>
                        </v4:personalInfo>
                        <v4:financialInfo>
                            <v4:bankAccount>#{dbt_iban}</v4:bankAccount>
                            <!--Optional:-->
                            <v4:BICbankAccount></v4:BICbankAccount>
                            <!--Optional:-->
                            <v4:incomeList>
                                <!--1 or more repetitions:-->
                                <v4:incomeItem>
                                    <v4:type>
                                        <v3:code>#{dbt_incomeItemCode}</v3:code>
                                        <!--Optional:-->
                                        <v3:Label></v3:Label>
                                        <!--Optional:-->
                                        <v3:commercialProductName></v3:commercialProductName>
                                    </v4:type>
                                    <v4:amount>#{dbt_incomeItemAmount}</v4:amount>
                                </v4:incomeItem>
                            </v4:incomeList>
                            <!--Optional:-->
                            <v4:livingExpenseList>
                                <!--1 or more repetitions:-->
                                <v4:expenseItem>
                                    <v31:type>
                                        <v3:code>#{dbt_expenseItemCode}</v3:code>
                                        <!--Optional:-->
                                        <v3:Label></v3:Label>
                                        <!--Optional:-->
                                        <v3:commercialProductName></v3:commercialProductName>
                                    </v31:type>
                                    <v31:amount>#{dbt_expenseItemAmount}</v31:amount>
                                </v4:expenseItem>
                            </v4:livingExpenseList>
                            <!--Optional:-->
                            <v4:otherDetailedCreditExpenseList>
                                <!--1 or more repetitions:-->
                                <v31:detailedCreditExpenseItem>
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:periodicExpense>
                                    <v31:outstandingAmount></v31:outstandingAmount>
                                    <!--Optional:-->
                                    <v31:creditCompanyName></v31:creditCompanyName>
                                    <!--Optional:-->
                                    <v31:destinationCreditAccountNumber></v31:destinationCreditAccountNumber>
                                    <!--Optional:-->
                                    <v31:reference></v31:reference>
                                    <!--Optional:-->
                                    <v31:letterID></v31:letterID>
                                </v31:detailedCreditExpenseItem>
                            </v4:otherDetailedCreditExpenseList>
                            <!--Optional:-->
                            <v4:otherAggregatedCreditExpenseList>
                                <!--1 or more repetitions:-->
                                <v31:aggregatedCreditExpenseItem>
                                    <!--Optional:-->
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code>#{dbt_periodicExpenseCode}</v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount>#{dbt_periodicExpenseAmount}</v31:amount>
                                    </v31:periodicExpense>
                                    <v31:numberOfCredit>#{dbt_periodicExpenseNumberOfCredit}</v31:numberOfCredit>
                                    <!--Optional:-->
                                    <v31:oustandingAmount>#{dbt_periodicExpenseOutstandingAmount}</v31:oustandingAmount>
                                </v31:aggregatedCreditExpenseItem>
                                <v31:aggregatedCreditExpenseItem>
                                    <!--Optional:-->
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:periodicExpense>
                                    <v31:numberOfCredit></v31:numberOfCredit>
                                    <!--Optional:-->
                                    <v31:oustandingAmount></v31:oustandingAmount>
                                </v31:aggregatedCreditExpenseItem>
                            </v4:otherAggregatedCreditExpenseList>
                            <!--Optional:-->
                            <v4:countOtherCreditExpense></v4:countOtherCreditExpense>
                        </v4:financialInfo>
                        <!--Optional:-->
                        <v4:employment>
                            <!--Optional:-->
                            <v4:jobType>
                                <v3:code>#{dbt_jobType}</v3:code>
                                <!--Optional:-->
                                <v3:Label></v3:Label>
                                <!--Optional:-->
                                <v3:commercialProductName></v3:commercialProductName>
                            </v4:jobType>
                            <!--Optional:-->
                            <v4:contracttype>
                                <v3:code></v3:code>
                                <!--Optional:-->
                                <v3:Label></v3:Label>
                                <!--Optional:-->
                                <v3:commercialProductName></v3:commercialProductName>
                            </v4:contracttype>
                            <!--Optional:-->
                            <v4:activitySector></v4:activitySector>
                            <!--Optional:-->
                            <v4:jobStartDate>#{dbt_jobStartDate}</v4:jobStartDate>
                            <!--Optional:-->
                            <v4:professionStartDate>#{dbt_professionStartDate}</v4:professionStartDate>
                            <!--Optional:-->
                            <v4:employerName>#{dbt_employerName}</v4:employerName>
                            <!--Optional:-->
                            <v4:employerAddress>
                                <v21:addressType>
                                    <v3:code>#{dbt_employerAddress}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v21:addressType>
                                <v21:streetName>#{dbt_employer_streetName}</v21:streetName>
                                <v21:streetNr>#{dbt_employer_streetNr}</v21:streetNr>
                                <!--Optional:-->
                                <v21:postBox></v21:postBox>
                                <v21:postalCode>#{dbt_employer_postalCode}</v21:postalCode>
                                <v21:city>#{dbt_employer_city}</v21:city>
                                <v21:countryCode>#{dbt_employer_countryCode}</v21:countryCode>
                                <!--Optional:-->
                                <v21:validityStartDate>#{dbt_employer_validityStartDate}</v21:validityStartDate>
                            </v4:employerAddress>
                        </v4:employment>
                    </v4:requestorItem>

validate.xml part 2

<v4:requestorItem>
                        <!--Optional:-->
                        <v4:requestorID>#{cdb_requestorID}</v4:requestorID>
                        <v4:requestorType>
                            <v3:code>#{cdb_requestorTypeCode}</v3:code>
                            <!--Optional:-->
                            <v3:Label></v3:Label>
                            <!--Optional:-->
                            <v3:commercialProductName></v3:commercialProductName>
                        </v4:requestorType>
                        <!--Optional:-->
                        <v4:propertyList>
                            <!--1 or more repetitions:-->
                            <v4:propertyItem>
                                <v4:propertyCode>
                                    <v3:code>#{cdb_propertyCode}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v4:propertyCode>
                                <!--Optional:-->
                                <v4:propertyDate>#{cdb_propertyDate}</v4:propertyDate>
                            </v4:propertyItem>
                        </v4:propertyList>
                        <v4:personalInfo>
                            <v41:personIdentity>
                                <v41:firstName>#{cdb_firstName}</v41:firstName>
                                <v41:lastName>#{cdb_lastName}</v41:lastName>
                                <v41:birthDate>#{cdb_birthDate}</v41:birthDate>
                                <!--Optional:-->
                                <v41:birthYear></v41:birthYear>
                                <!--Optional:-->
                                <v41:birthPlace>#{cdb_birthPlace}</v41:birthPlace>
                                <!--Optional:-->
                                <v41:personTitle>
                                    <v3:code>#{cdb_personTitle}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:personTitle>
                                <!--Optional:-->
                                <v41:nationality>#{cdb_nationality}</v41:nationality>
                                <!--Optional:-->
                                <v41:sex>
                                    <v3:code>#{cdb_sex}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:sex>
                                <!--Optional:-->
                                <v41:language>#{cdb_language</v41:language>
                                <!--Optional:-->
                                <v41:nationalRegisterNumber>#{cdb_nrn}</v41:nationalRegisterNumber>
                                <!--Optional:-->
                                <v41:identityCard>
                                    <!--Optional:-->
                                    <v41:idCardType>#{cdb_idCardType}</v41:idCardType>
                                    <v41:idCardNumber>#{cdb_idCardNumber}</v41:idCardNumber>
                                    <v41:idCardValidityDate>#{cdb_idCardValidTo}</v41:idCardValidityDate>
                                </v41:identityCard>
                                <!--Optional:-->
                                <v41:prefix></v41:prefix>
                            </v41:personIdentity>
                            <v41:address>
                                <v21:addressType>
                                    <v3:code>#{cdb_addressType}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v21:addressType>
                                <v21:streetName>#{cdb_streetName}</v21:streetName>
                                <v21:streetNr>#{cdb_streetNr}</v21:streetNr>
                                <!--Optional:-->
                                <v21:postBox></v21:postBox>
                                <v21:postalCode>#{cdb_postalCode</v21:postalCode>
                                <v21:city>#{cdb_city}</v21:city>
                                <v21:countryCode>#{cdb_country}</v21:countryCode>
                                <!--Optional:-->
                                <v21:validityStartDate>#{cdb_validityStartDate}</v21:validityStartDate>
                            </v41:address>
                            <v41:contactInfo>
                                <!--Optional:-->
                                <v41:emailAddressList>
                                    <!--Zero or more repetitions:-->
                                    <v41:emailAddress>
                                        <v3:value>#{cdb_emailAddress}</v3:value>
                                        <v3:type>D</v3:type>
                                        <v3:primary>true</v3:primary>
                                    </v41:emailAddress>
                                </v41:emailAddressList>
                                <!--Optional:-->
                                <v41:mobilePhoneNumberList>
                                    <!--Zero or more repetitions:-->
                                    <v41:mobilePhoneNumber>
                                        <v3:value>#{cdb_telephoneNumber}</v3:value>
                                        <v3:type>1</v3:type>
                                        <v3:primary>true</v3:primary>
                                    </v41:mobilePhoneNumber>
                                </v41:mobilePhoneNumberList>
                                <!--Optional:-->
                                <v41:phoneNumberHome></v41:phoneNumberHome>
                            </v41:contactInfo>
                            <!--Optional:-->
                            <v41:familyInfo>
                                <v41:maritalStatus>
                                    <v3:code>#{cdb_maritalStatus}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:maritalStatus>
                                <!--Optional:-->
                                <v41:maritalContractType>
                                    <v3:code>#{cdb_maritalContractType}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v41:maritalContractType>
                                <v41:numberOfChildren>#{cdb_numberOfChildren}</v41:numberOfChildren>
                            </v41:familyInfo>
                            <!--Optional:-->
                            <v41:businessIdentity>
                                <!--Optional:-->
                                <v41:VATNumber></v41:VATNumber>
                                <!--Optional:-->
                                <v41:enterpriseNumber></v41:enterpriseNumber>
                                <!--Optional:-->
                                <v41:activityCountryCode></v41:activityCountryCode>
                            </v41:businessIdentity>
                        </v4:personalInfo>
                        <v4:financialInfo>
                            <v4:bankAccount>#{cdb_iban}</v4:bankAccount>
                            <!--Optional:-->
                            <v4:BICbankAccount></v4:BICbankAccount>
                            <!--Optional:-->
                            <v4:incomeList>
                                <!--1 or more repetitions:-->
                                <v4:incomeItem>
                                    <v4:type>
                                        <v3:code>#{cdb_incomeItemCode}</v3:code>
                                        <!--Optional:-->
                                        <v3:Label></v3:Label>
                                        <!--Optional:-->
                                        <v3:commercialProductName></v3:commercialProductName>
                                    </v4:type>
                                    <v4:amount>#{cdb_incomeItemAmount}</v4:amount>
                                </v4:incomeItem>
                            </v4:incomeList>
                            <!--Optional:-->
                            <v4:livingExpenseList>
                                <!--1 or more repetitions:-->
                                <v4:expenseItem>
                                    <v31:type>
                                        <v3:code>#{cdb_expenseItemCode}</v3:code>
                                        <!--Optional:-->
                                        <v3:Label></v3:Label>
                                        <!--Optional:-->
                                        <v3:commercialProductName></v3:commercialProductName>
                                    </v31:type>
                                    <v31:amount>#{cdb_expenseItemAmount}</v31:amount>
                                </v4:expenseItem>
                            </v4:livingExpenseList>
                            <!--Optional:-->
                            <v4:otherDetailedCreditExpenseList>
                                <!--1 or more repetitions:-->
                                <v31:detailedCreditExpenseItem>
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:periodicExpense>
                                    <v31:outstandingAmount></v31:outstandingAmount>
                                    <!--Optional:-->
                                    <v31:creditCompanyName></v31:creditCompanyName>
                                    <!--Optional:-->
                                    <v31:destinationCreditAccountNumber></v31:destinationCreditAccountNumber>
                                    <!--Optional:-->
                                    <v31:reference></v31:reference>
                                    <!--Optional:-->
                                    <v31:letterID></v31:letterID>
                                </v31:detailedCreditExpenseItem>
                            </v4:otherDetailedCreditExpenseList>
                            <!--Optional:-->
                            <v4:otherAggregatedCreditExpenseList>
                                <!--1 or more repetitions:-->
                                <v31:aggregatedCreditExpenseItem>
                                    <!--Optional:-->
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code>#{cdb_totalExpenseCode}</v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount>#{cdb_totalExpenseAmount}</v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code>#{cdb_periodicExpenseCode}</v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount>#{cdb_periodicExpenseAmount}</v31:amount>
                                    </v31:periodicExpense>
                                    <v31:numberOfCredit>#{cdb_totalExpenseNumberOfCredit}</v31:numberOfCredit>
                                    <!--Optional:-->
                                    <v31:oustandingAmount>#{cdb_periodicExpenseNumberOfCredit}</v31:oustandingAmount>
                                </v31:aggregatedCreditExpenseItem>
                                <v31:aggregatedCreditExpenseItem>
                                    <!--Optional:-->
                                    <v31:totalExpense>
                                        <v31:type>
                                            <v3:code>#{cdb_totalExpenseCode}</v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount>#{cdb_totalExpenseAmount}</v31:amount>
                                    </v31:totalExpense>
                                    <!--Optional:-->
                                    <v31:periodicExpense>
                                        <v31:type>
                                            <v3:code></v3:code>
                                            <!--Optional:-->
                                            <v3:Label></v3:Label>
                                            <!--Optional:-->
                                            <v3:commercialProductName></v3:commercialProductName>
                                        </v31:type>
                                        <v31:amount></v31:amount>
                                    </v31:periodicExpense>
                                    <v31:numberOfCredit>#{cdb_totalExpenseNumberOfCredit}</v31:numberOfCredit>
                                    <!--Optional:-->
                                    <v31:oustandingAmount></v31:oustandingAmount>
                                </v31:aggregatedCreditExpenseItem>
                            </v4:otherAggregatedCreditExpenseList>
                            <!--Optional:-->
                            <v4:countOtherCreditExpense></v4:countOtherCreditExpense>
                        </v4:financialInfo>
                        <!--Optional:-->
                        <v4:employment>
                            <!--Optional:-->
                            <v4:jobType>
                                <v3:code>#{cdb_jobType}</v3:code>
                                <!--Optional:-->
                                <v3:Label></v3:Label>
                                <!--Optional:-->
                                <v3:commercialProductName></v3:commercialProductName>
                            </v4:jobType>
                            <!--Optional:-->
                            <v4:contracttype>
                                <v3:code></v3:code>
                                <!--Optional:-->
                                <v3:Label></v3:Label>
                                <!--Optional:-->
                                <v3:commercialProductName></v3:commercialProductName>
                            </v4:contracttype>
                            <!--Optional:-->
                            <v4:activitySector></v4:activitySector>
                            <!--Optional:-->
                            <v4:jobStartDate>#{cdb_jobStartDate}</v4:jobStartDate>
                            <!--Optional:-->
                            <v4:professionStartDate>#{cdb_professionStartDate}</v4:professionStartDate>
                            <!--Optional:-->
                            <v4:employerName>#{cdb_employerName}</v4:employerName>
                            <!--Optional:-->
                            <v4:employerAddress>
                                <v21:addressType>
                                    <v3:code>#{cdb_employerAddress}</v3:code>
                                    <!--Optional:-->
                                    <v3:Label></v3:Label>
                                    <!--Optional:-->
                                    <v3:commercialProductName></v3:commercialProductName>
                                </v21:addressType>
                                <v21:streetName>#{cdb_employer_streetName}</v21:streetName>
                                <v21:streetNr>#{cdb_employer_streetNr}</v21:streetNr>
                                <!--Optional:-->
                                <v21:postBox></v21:postBox>
                                <v21:postalCode>#{cdb_employer_postalCode}</v21:postalCode>
                                <v21:city>#{cdb_employer_city}</v21:city>
                                <v21:countryCode>#{cdb_employer_countryCode}</v21:countryCode>
                                <!--Optional:-->
                                <v21:validityStartDate>#{cdb_employer_validityStartDate}</v21:validityStartDate>
                            </v4:employerAddress>
                        </v4:employment>
                    </v4:requestorItem>
                </v61:requestorList>
                <v61:creditUsage>#{creditUsage}</v61:creditUsage>
                <!--Optional:-->
                <v61:contractLanguage>#{contractLanguage}</v61:contractLanguage>
                <v61:goalDescription>#{goalDescription}</v61:goalDescription>
                <!--Optional:-->
                <v61:additionalComment></v61:additionalComment>
                <!--Optional:-->
                <v61:deliveryDate>#{deliveryDate}</v61:deliveryDate>
            </v61:creditRequestCriteria>
        </v6:validateCreditRequestDataRequest>
    </soap:Body>
</soap:Envelope>

You could have figured it out by yourself by removing lines until it starts working :slight_smile:

line 577

<v41:language>#{cdb_language</v41:language>

Hi Stephane
Thanks, very embarrassing the missing }. I have corrected and found the other similar missing }.
I have been through this xml file a number of times, checking and rechecking and managed to miss this. With over 120 fields being replaced from a csv file it is pretty tiring.
So I have got past this and am working on a new error related to Protocol TLSv1.3 is not supported. I am using Java 8 but I have already seen the help topics so will look at changing the enabledProtocols as suggested in one of your previous posts.
Thanks for your help, appreciated
Torick

Sometimes you just need a second pair of eyes :slight_smile:

So I have got past this and am working on a new error related to Protocol TLSv1.3 is not supported. I am using Java 8 but I have already seen the help topics so will look at changing the enabledProtocols as suggested in one of your previous posts.

If you struggle with another topic, please make sure to create a new thread then.

Cheers