SpringboardThis topic is related to Springboard. | Form Builder | 23.10This feature was updated in 23.10
Below are example configurations for several scenarios.
{
"destinations": [
{
"id": "approved",
"isDefault": true
},
{
"id": "denied"
}
],
"paths": [
{
"id": "hardFail",
"destination": "denied",
"condition": {
"===": [
{
"var": [
"txn.propertyMap.hardFail"
]
},
true
]
}
}
],
"version": "0.1"
}
{
"txn": {
"propertyMap": {
"hardFail": false
}
}
}
{
"destinations" : {
"approved": {
"isActive": true,
"reasons": [
"Default destination"
]
},
"denied": {
"isActive": false,
"reasons": []
}
},
"calculatedDate": "2018-01-13T18:25:43.511Z"
}
{
"destinations": [
{
"id": "approved",
"isDefault": true
},
{
"id": "denied"
}
],
"paths": [
{
"id": "hardFail",
"destination": "denied",
"condition": {
"===": [
{
"var": [
"txn.propertyMap.hardFail"
]
},
true
]
}
}
],
"version": "0.1"
}
{
"txn": {
"propertyMap": {
"hardFail": true
}
}
}
{
"destinations" : {
"approved": {
"isActive": false,
"reasons": []
},
"denied": {
"isActive": true,
"reasons": [
"hardFail"
]
}
},
"calculatedDate": "2018-01-13T18:25:43.511Z"
}
{
"destinations": [
{
"id": "approved",
"isDefault": true
},
{
"id": "declined"
}
],
"paths": [
{
"id": "declinedByIdaVerifyStatus",
"destination": "declined",
"condition": {
"==": [
{
"var": [
"txn.propertyMap.FisIda\\.PrimaryApplicant\\.verifyStatus"
]
},
"FAILED"
]
}
},
{
"id": "declinedByIdvVerifyStatus",
"destination": "declined",
"condition": {
"==": [
{
"var": [
"txn.propertyMap.FisIdv\\.PrimaryApplicant\\.idvVerifyStatus"
]
},
"FAILED"
]
}
}
],
"version": "1.0.0"
}
{
"txn": {
"propertyMap": {
"FisIdv\\.PrimaryApplicant\\.idvVerifyStatus": "FAILED",
"FisIda\\.PrimaryApplicant\\.verifyStatus": "PASSED
}
}
}
{
"destinations" : {
"approved": {
"isActive": false,
"reasons": []
},
"declined": {
"isActive": true,
"reasons": [
"declinedByIdvVerifyStatus"
]
}
},
"calculatedDate": "2018-01-13T18:25:43.511Z"
}
{
"destinations": [
{
"id": "approved",
"isDefault": true
},
{
"id": "declinedFCRA"
},
{
"id": "declined"
}
],
"paths": [
{
"id": "declinedByQualifileAccountAcceptance",
"destination": "declinedFCRA",
"condition": {
"and": [
{
"==": [
{
"var": [
"txn.propertyMap.FisQualiFile\\.PrimaryApplicant\\.accountAcceptanceTxt"
]
},
"DECLINE"
]
},
{
"and": [
{
"!=": [
true,
{
"in": [
{
"var": [
"txn.propertyMap.FisQualiFile\\.PrimaryApplicant\\.accountActionTxt1"
]
},
[
"D0100001",
"D0100002",
"D0100002",
"D0100004"
]
]
}
]
}
]
}
]
}
},
{
"id": "declinedByQualifileCreditQuality",
"destination": "declined",
"condition": {
"and": [
{
"==": [
{
"var": [
"txn.propertyMap.FisQualiFile\\.PrimaryApplicant\\.accountAcceptanceTxt"
]
},
"DECLINE"
]
},
{
"in": [
{
"var": [
"txn.propertyMap.FisQualiFile\\.PrimaryApplicant\\.accountActionTxt1"
]
},
[
"D0100001",
"D0100002",
"D0100002",
"D0100004"
]
]
}
]
}
}
],
"version": "1.0.0"
}
{
"txn": {
"propertyMap": {
"FisQualiFile\\.PrimaryApplicant\\.accountActionTxt1": "UNKNOWN",
"FisQualiFile\\.PrimaryApplicant\\.accountAcceptanceTxt": "DECLINE"
}
}
}
{
"destinations" : {
"approved": {
"isActive": false,
"reasons": []
},
"declined": {
"isActive": false,
"reasons": []
},
"declinedFCRA": {
"isActive": true,
"reasons": [
"declinedByQualifileAccountAcceptance"
]
}
},
"calculatedDate": "2018-01-13T18:25:43.511Z"
}
An example showing how to decide what causes an Application to go for Review. Multiple rules can be included.
{
"id": "Primary Applicant Review",
"destination": "manualReview",
"condition": { "or": [{"==": [ { "var": [ "txn.propertyMap.alloy\\.device\\.outcome" ] }, "Manual Review" ]},
{"==": [ { "var": [ "txn.propertyMap.Iovation\\.CheckTxnDetails\\.Result\\.PrimaryApplicant\\.result" ] }, "R" ]} ]}
},
{
"id": "Joint Applicant Review",
"destination": "manualReview",
"condition": { "==": [ { "var": [ "txn.propertyMap.alloy\\.joint\\.person\\.outcome" ] }, "Manual Review" ] }
},
{
"id": "Manual Review Loan",
"destination": "manualReview",
"condition": {
"or" : [
{"==": [{"var": ["txn.propertyMap.Application_Decision"]},"ERROR"]},
{"==": [{"var": ["txn.propertyMap.Application_Decision"]},"NONE"]},
{"==": [{"var": ["txn.propertyMap.Application_Decision"]},"REVIEW"]},
{"==": [{"var": ["txn.propertyMap.Application_Decision"]},"STIPULATION_ERROR"]}
]
}
}
The Narrative used in conjunction with this set of rules could have the following terminal page definition.
{
"name": "Review Page",
"condition": "${ jsonSlurper.parseText( txn.propertyMap.get('decision') )['destinations']['manualReview']['isActive']}",
"allowSubmit": true,
"preActions": [],
"postActions": [],
"nextPages": []
}
An example showing how to decide what causes an Application to be Declined. Many different rules can be defined.
{
"id": "Device Check Suspect",
"destination": "declined",
"condition": { "and": [{"!=": [ { "var": [ "txn.propertyMap.alloy\\.device\\.outcome" ] }, "Approved" ]},
{"!=": [ { "var": [ "txn.propertyMap.Iovation\\.CheckTxnDetails\\.Result\\.PrimaryApplicant\\.result" ] }, "A" ]} ]}
},
{
"id": "Primary Applicant Declined",
"destination": "declined",
"condition": { "or": [{"==": [ { "var": [ "txn.propertyMap.alloy\\.device\\.outcome" ] }, "Denied" ]},
{"==": [ { "var": [ "txn.propertyMap.Iovation\\.CheckTxnDetails\\.Result\\.PrimaryApplicant\\.result" ] }, "D" ]} ]}
},
{
"id": "Joint Applicant Declined",
"destination": "declined",
"condition": { "==": [ { "var": [ "txn.propertyMap.alloy\\.joint\\.person\\.outcome" ] }, "Denied" ] }
},
{
"id": "Decline Loan",
"destination": "declined",
"condition": {
"and" : [
{"==":[{"var": ["txn.propertyMap.Application_Decision"]},"AUTO_REJECTED"]},
{"==": [{"var": ["params.decisionType"]},"lms"]}
]
}
}
The Narrative used in conjunction with this set of rules could have the following terminal page definition.
{
"name": "Declined Page",
"condition": "${ jsonSlurper.parseText( txn.propertyMap.get('decision') )['destinations']['declined']['isActive']}",
"allowSubmit": true,
"preActions": [],
"postActions": [],
"nextPages": []
}
An example of accessing txn, data model, and parameters for use in rules.
{
"destinations": [
{
"id": "approved",
"isDefault": true
},
{
"id": "waiting"
},
{
"id": "declined"
}
],
"paths": [
{
"id": "Joint Applicant Declined",
"destination": "declined",
"condition": { "==": [ { "var": [ "txn.propertyMap.alloy\\.joint\\.person\\.outcome" ] }, "Denied" ] }
},
{
"id": "Signature Document Generated",
"destination": "approved",
"condition": {
"and" : [
{"!=": [{"var": ["data.application.documentSigningURL"]},"unavailable"]},
{"==": [{"var": ["params.decisionType"]},"esign"]}
]
}
},
{
"id": "Signature Document Not Generated",
"destination": "waiting",
"condition": {
"and" : [
{"==": [{"var": ["data.application.documentSigningURL"]},"unavailable"]},
{"==": [{"var": ["params.decisionType"]},"esign"]}
]
}
}
]
}
The Narrative syntax to pass params to the Decide service is as follows:
{
"name": "Decide",
"version": "${decision-framework-version}",
"condition": "true",
"params": {
"decisionType": "esign"
},
"alwaysProcess":true
}
Next, learn about the Decision Framework Retail DAO solution.