Decision Framework example configurations

     SpringboardThis topic is related to Springboard.   |     Form Builder |    23.10This feature was updated in 23.10 

Below are example configurations for several scenarios.

Approved by default

  • Configuration
    {
        "destinations": [
            {
                "id": "approved",
                "isDefault": true
            },
            {
                "id": "denied"
            }
        ],
        "paths": [
            {
                "id": "hardFail",
                "destination": "denied",
                "condition": {
                    "===": [
                        {
                            "var": [
                                "txn.propertyMap.hardFail" 
                            ]
                        },
                        true
                    ]
                }
            }
        ],
        "version": "0.1"
    }
  • Data
    {
        "txn": {
            "propertyMap": {
                "hardFail": false
            }
        }
    }
  • Result
    {
        "destinations" : {
            "approved": {
                "isActive": true,
                "reasons": [
                    "Default destination" 
                ]
            },
            "denied": {
                "isActive": false,
                "reasons": []
            }
        },
        "calculatedDate": "2018-01-13T18:25:43.511Z"
    }

Denied by the "hardFail" property

  • Configuration
    {
        "destinations": [
            {
                "id": "approved",
                "isDefault": true
            },
            {
                "id": "denied"
            }
        ],
        "paths": [
            {
                "id": "hardFail",
                "destination": "denied",
                "condition": {
                    "===": [
                        {
                            "var": [
                                "txn.propertyMap.hardFail" 
                            ]
                        },
                        true
                    ]
                }
            }
        ],
        "version": "0.1"
    }
  • Data
    {
        "txn": {
            "propertyMap": {
                "hardFail": true
            }
        }
    }
  • Result
    {
        "destinations" : {
            "approved": {
                "isActive": false,
                "reasons": []
            },
            "denied": {
                "isActive": true,
                "reasons": [
                    "hardFail"
                ]
            }
        },
        "calculatedDate": "2018-01-13T18:25:43.511Z"
    }

Declined by IDV Verify Status

  • Configuration
    {
        "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"
    }
  • Data
    {
        "txn": {
            "propertyMap": {
                "FisIdv\\.PrimaryApplicant\\.idvVerifyStatus": "FAILED",
                "FisIda\\.PrimaryApplicant\\.verifyStatus": "PASSED
            }
        }
    }
  • Result
    {
        "destinations" : {
            "approved": {
                "isActive": false,
                "reasons": []
            },
            "declined": {
                "isActive": true,
                "reasons": [
                    "declinedByIdvVerifyStatus"
                ]
            }
        },
        "calculatedDate": "2018-01-13T18:25:43.511Z"
    }

Declined by Qualifile Account Acceptance

  • Configuration
    {
        "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"
    }
  • Data
    {
        "txn": {
            "propertyMap": {
                "FisQualiFile\\.PrimaryApplicant\\.accountActionTxt1": "UNKNOWN",
                "FisQualiFile\\.PrimaryApplicant\\.accountAcceptanceTxt": "DECLINE"
            }
        }
    }
  • Result
    {
        "destinations" : {
            "approved": {
                "isActive": false,
                "reasons": []
            },
            "declined": {
                "isActive": false,
                "reasons": []
            },
            "declinedFCRA": {
                "isActive": true,
                "reasons": [
                    "declinedByQualifileAccountAcceptance"
                ]
            }
        },
        "calculatedDate": "2018-01-13T18:25:43.511Z"
    }

Controlling when Applications go to Review

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": []
}

Controlling when Applications are Declined

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": []
}

Data and Parameters

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.