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
line 577
<v41:language>#{cdb_language</v41:language>
Torick
May 30, 2022, 10:17am
11
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
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