CRM Integration with Dynamic Application
This page houses an order of operations for calls to accomplish pushing data from a CRM, or other third-party platform, into Abrigo to start a Dynamic Application.
High Level Overview
When setting up an integration between a CRM system and Sageworks with Dynamic Application, the opportunity is expected to start in the CRM environment. Once a business decides the opportunity has reached a point in which it can be sent to Sageworks, the following steps may be leveraged to complete that process.
- Verify what products are available
- Check for the customer in Sageworks
- Create a new customer (if necessary)
- Start the application
- Update object data points (optional)
Verify what products are available
The proposed products are the different types of applications an institution uses and are configurable in Abrigo.GET/v1/proposed-products can be leveraged to see the full list of proposed products. It is recommended to save the proposed product response to reference in future calls. A proposed product "ID" is a required input when starting a Dynamic Application.
{
"items": [
{
"id": 120,
"name": "7(a)",
"customerFacingName": "Seven A",
"paymentType": "fixedPayment",
"rateSheetsId": 1,
"calculateEvaluatedCreditScore": false,
"evaluatedCreditScoreCreditBureaus": [],
"creditBureauSelectionStrategy": null,
"loanRoleSelectionStrategy": null,
"applicationTypes": [
"sba"
],
"evaluatedCreditScoreLoanRoleTypes": [],
"applicationTemplates": [
{
"id": 561,
"name": "Post New Forms 7(a)",
"active": true,
"type": "sba",
"proposedProducts": null
}
]
},
{
"id": 436,
"name": "Business App 3",
"customerFacingName": "Test 3",
"paymentType": "fixedPayment",
"rateSheetsId": null,
"calculateEvaluatedCreditScore": false,
"evaluatedCreditScoreCreditBureaus": [],
"creditBureauSelectionStrategy": null,
"loanRoleSelectionStrategy": null,
"applicationTypes": [
"business"
],
"evaluatedCreditScoreLoanRoleTypes": [],
"applicationTemplates": []
},
]
} Check for customer in Sageworks
There are a few methods in which an institution can organize their borrowers between a core system, a CRM system and Sageworks. The uniqueIdentifier field is primarily reserved for the core system unique identifier. crmidentifier is generally leveraged for the unique identifier generated by the CRM system. The Abrigo database ID ("customerId") is a required input when starting a Dynamic Application.
GET/v1/customers- Has available filters for:
- Id
- Unique identifier
- Name
- Tax Id
- Has available filters for:
GET/v1/customers/{id}- Uses the Abrigo internal database ID
GET/v1/customers/crm-identifier/{crmIdentifier}- Use if populating an identifier from CRM system in Abrigo
{
"id": 85828479,
"name": "Doe, John",
"dba": null,
"firstName": "John",
"middleInitial": "",
"lastName": "Doe",
"nameSuffix": "",
"userDefinedFields": null,
"creditScore": 0,
"secondaryCreditScore": 0,
"businessType": null,
"dnbScore": null,
"namePrefix": "",
"jobTitle": "",
"addresses": [
{
"line1": "123 Ok Ave",
"line2": "",
"city": "Winnetka",
"state": "CT",
"postalCode": "40098",
"country": "US",
"addressType": "primary"
}
],
"phoneNumbers": [
{
"type": "primary",
"number": "1234445555"
}
],
"type": "person",
"emailAddress": "[email protected]",
"industryCode": null,
"isDeleted": false,
"uniqueIdentifier": "",
"taxId": "999-99-9999",
"branch": "",
"department": "",
"website": "",
"description": null,
"restricted": false,
"checkingBalance": 0,
"savingsBalance": 0,
"cDsBalance": 0,
"averageChecking": 0,
"averageSavings": 0,
"averageCDs": 0,
"citizenshipStatus": null,
"maritalStatus": null,
"isActiveMiltaryDuty": null,
"isDependentOfActiveMiltaryDuty": null,
"civDescription": null,
"employer": "",
"numberOfYearsEmployed": 0,
"ofacDesignation": "",
"dateOfBirth": "2021-11-02",
"idDescription": null,
"idNumber": null,
"idIssueDate": null,
"idExpirationDate": null,
"idIssuingAuthority": null,
"comments": "",
"msa": null,
"stateCode": null,
"countyCode": null,
"tractCode": null,
"longitude": null,
"latitude": null,
"medianHouseholdIncome": null,
"metropolitanDivision": null,
"metropolitanDivisionCode": null,
"loanOfficer": null,
"loanOfficerId": null,
"loanAdministrator": null,
"equifaxCreditScore": null,
"equifaxCreditScoreDate": null,
"experianCreditScore": null,
"experianCreditScoreDate": null,
"transunionCreditScore": null,
"transunionCreditScoreDate": null,
"ficoSbssCreditScore": null,
"ficoSbssCreditScoreDate": null,
"bankruptcies": null,
"dateOfLastBankruptcy": null,
"historical30DayDelinquencies": null,
"historical60DayDelinquencies": null,
"historical90DayDelinquencies": null,
"historicalOtherDelinquencies": null,
"currentMortgagePastDue": null,
"currentInstallmentPastDue": null,
"currentAutoPastDue": null,
"currentEducationPastDue": null,
"currentOpenPastDue": null,
"currentRevolvingPastDue": null,
"currentOtherPastDue": null,
"currentTotalPastDue": null,
"entryMethod": "operatingCompany",
"professionalLLC": null,
"yearFounded": 0,
"businessRegistered": null,
"farmRegistered": null,
"stateOfFormation": null,
"franchiseName": null,
"franchiseLegalName": null,
"franchiseStartDate": null,
"sbaCode": null,
"cityHQ": null,
"stateHQ": null,
"franchiseDataImportDate": null,
"franchiseDataFinancialPeriod": null,
"historicalSuccessRate": null,
"systemSupportAndExpenseCommitment": null,
"resaleActivityLevel": null,
"mngmtExperienceStability": null,
"averageUnitRevenueGrowth": null,
"prospectScreening": null,
"unitEconomics": null,
"franchiseAgreementAssessment": null,
"franchiseeRelationship": null,
"projectedUnitSuccess": null,
"recurringRevenueSelfSufficiency": null,
"totalFundScore": null,
"finStatementStrength": null,
"franchisedUnits": null,
"minInitial": null,
"maxInitial": null,
"avgInitial": null,
"companyOwnedUnits": null,
"projectedOpenings": null,
"compoundAnnualUnitGrowthRate": null,
"compoundedUnitSuccessRate": null,
"experianDBT": null,
"equifaxDBT": null,
"dbdbt": null,
"dbPaydex": null,
"ansoniaCreditRating": null,
"ansoniaRiskScore": null,
"creditLogicScore": null,
"dbViabilityRating": null,
"lastReportRun": null,
"bankruptciesCount": null,
"collectionsCount": null,
"judgmentsCount": null,
"chargeOffsCount": null,
"liensCount": null,
"nsfChecksCount": null,
"dataDepthScore": null,
"underFormation": null,
"dateBusinessEstablished": null,
"loanBoardingIdentifier": null,
"crmIdentifier": null
}Create a new customer (if necessary)
If the customer cannot be found in Sageworks using the primary method of organization, the customer may be generated using POST/v1/customers. It is recommended to add all known identifier data such as the uniqueIdentifier and crmIdentfier. It is also recommended to add the Sageworks unique ID into the CRM system for an additional layer of identification.
Start the application
To start the application, POST/v1/dynamic-application/start-dynamic-application/start-application is leveraged. This starts and connects the application to as many proposed products as necessary. Each proposed product generates a proposed loan. Entering a value in the "appType" parameter is required to determine the type of application that is started. The standard application types are: preApp, business, person.
Example: POST/v1/dynamic-application/start-dynamic-application/start-application?appType=business
{
"bankCustomerUsersId": 0,
"crmIdentifier": "123456",
"origin": 'Internal',
"proposedLoans": [
{
"customerId": 85828479,
"crmIdentifier": "123456",
"loanAmount": 1000,
"paymentType": 'fixedPayment',
"loanName": 'Test Loan',
"purposeCode": "string",
"loanTerm": 10,
"interestRate": 0,
"paymentAmount": 0,
"paymentFrequency": "annual",
"loanBoardingIdentifier": "1234",
"roles": [
{
"customerId": 85828479,
"isDeleted": false,
"percentResponsible": 0.9234,
"roleType": "Primary Borrower" }
],
"proposedProductID": 1212 }
]
}{
"applicationId": 1113649,
"proposedLoanData": [
{
"proposedLoanId": 2128776,
"proposedProductId": 1212
}
]
}Start Application Field Definitions
| Field | Description | enum Values | Required? |
|---|---|---|---|
| bankCustomerUsersId | Abrigo database ID of online portal borrower. | Default this value as "0" in the payload. | Yes |
| origin | This field identifies if the application was initiated internally, or via the web by a borrower. The value "internal" is likely the best option to use when initiating a Dynamic Application from a third-party platform. | web, internal | Yes |
| customerId | Abrigo database ID of the borrower entity. | Yes | |
| loanAmount | Amount of the proposed loan. | Yes | |
| paymentType | Payment Type of the proposed loan. | fixedPayment, fixedPrincipal, lineOfCredit, revolvingLineOfCredit, interestOnly, fixedPaymentBalloon, fixedPrincipalBalloon, singlePaymentBalloon, principalOnly, other, noPayment | Yes |
| loanName | Unique identifier of proposed loan. | Yes | |
| paymentFrequency | Payment Frequency of proposed loan. | annual, semiannual, quarterly, bimonthly, monthly, semimonthly, biweekly, weekly | Yes |
| proposedProductID | Abrigo database ID of the proposed product associated with the application. | Yes | |
| crmIdentifier | Field to store unique record identifier from CRM/third-party. | No | |
| purposeCode | Free-form field to define loan purpose. | No | |
| loanTerm | Term of proposed loan. | No | |
| interestRate | Interest rate of proposed loan. | No | |
| loanBoardingIdentifier | Field to store customer unique identifier, if associated customer is core integrated. | No | |
| roles | Tie additional borrower roles to the application. | Primary Borrower, Co-Borrower, Cosigner, Credit Applicant, and Guarantor | No |
Update Loan and/or Customer Data (if applicable)
In the event that data points on the customer or newly created proposed loan entities need to be updated from the CRM platform, PATCH methods can be run using the "customerId" or "proposedLoanId" database ID values from the previous call responses.
Customers
PATCH/v1/customers/:id
Proposed Loans
PATCH/v1/proposed-loans/:id
Updated 6 days ago
Continue workflow in Abrigo to underwrite and decision the loan application.
