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.

  1. Verify what products are available
  2. Check for the customer in Sageworks
  3. Create a new customer (if necessary)
  4. Start the application
  5. 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
      • Email
  • 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

FieldDescriptionenum ValuesRequired?
bankCustomerUsersIdAbrigo database ID of online portal borrower.Default this value as "0" in the payload.Yes
originThis 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, internalYes
customerIdAbrigo database ID of the borrower entity.Yes
loanAmountAmount of the proposed loan.Yes
paymentTypePayment Type of the proposed loan.fixedPayment, fixedPrincipal, lineOfCredit, revolvingLineOfCredit, interestOnly, fixedPaymentBalloon, fixedPrincipalBalloon, singlePaymentBalloon, principalOnly, other, noPaymentYes
loanNameUnique identifier of proposed loan.Yes
paymentFrequencyPayment Frequency of proposed loan.annual, semiannual, quarterly, bimonthly, monthly, semimonthly, biweekly, weeklyYes
proposedProductIDAbrigo database ID of the proposed product associated with the application.Yes
crmIdentifierField to store unique record identifier from CRM/third-party.No
purposeCodeFree-form field to define loan purpose.No
loanTermTerm of proposed loan.No
interestRateInterest rate of proposed loan.No
loanBoardingIdentifierField to store customer unique identifier, if associated customer is core integrated.No
rolesTie additional borrower roles to the application.Primary Borrower, Co-Borrower, Cosigner, Credit Applicant, and GuarantorNo

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


What’s Next

Continue workflow in Abrigo to underwrite and decision the loan application.