OpenSearch Migration

LoanPro is upgrading to OpenSearch. Here's what to know.

Introduction

In mid-February, LoanPro upgraded our search technology from Elasticsearch to OpenSearch to improve our system wide performance.

To ease the transition form Elasticsearch to OpenSearch, we've added a translations layer to temporarily retain backwards compatibility. Unfortunately, the translation layer degrades some search performance, so it's not a viable long term solution. In order to provide the best search experience, we will remove this translation layer in phases.

During the transition, we can provide each client with real-time IT and technical support, should you encounter any unexpected effects.

Key Benefits

Our move to OpenSearch will grant you several key benefits:

Scalability and resiliency – Improvements will enhance scalability, allowing clusters to handle larger workloads and datasets more efficiently.

Performance optimizations – Improvements in indexing and search speeds will lead to better overall system performance and responsiveness.

Security enhancements – Upgrading to the latest version ensures that your system benefits from the latest security patches and best practices.

Sustainability – OpenSearch offers long-term support for sustainability and compatibility with a broader ecosystem of tools and services.

Differences and Transition

Where Elasticsearch returns a string value, OpenSearch will return an integer. If you are expecting a string which now comes as an integer, you will need to confirm that you can ingest the response.

Where Elasticsearch returns empty arrays as [], OpenSearch will return them as null. If you are expecting an empty array, confirm you can ingest a null response.

This has implications for your developers and custom programming. It's worth noting, however, that the request and response structure will stay the same, so you won't need drastic changes.

You should test your custom programming. Search for any API requests to an endpoint containing the characters Autopal.Search. The endpoints themselves will remain the same as we transition to OpenSearch.

Testing Your Integrations

As mentioned above, our move to OpenSearch will be completed in phases, allowing users to test their integrations with LoanPro's search functionality. Here are the steps to take to ensure your integrations continue to work as intended:

1. Search for any API requests to endpoints containing Autopal.Search

Most commonly used requests include searching for customers and searching for loans:

https://loanpro.simnang.com/api/public/api/1/Loans/Autopal.Search()

https://loanpro.simnang.com/api/public/api/1/Customers/Autopal.Search()

2. Use the interim endpoint to view OpenSearch responses

A translations layer has been temporarily implemented to retain backwards compatibility by taking OpenSearch responses and translating them into Elasticsearch responses; however, we have created a temporary endpoint to allow you to view OpenSearch responses from your current searches. To receive OpenSearch responses, use the following endpoint and select the applicable resource:

https://loanpro.simnang.com/api/public/api/1/tmp/{resource}/search

Available resources:

  • Customers
  • Loans
  • LineOfCredits
  • Autopays
  • SourceCompanies
  • Users

Here's a side-by-side comparison of the existing and temporary endpoints used to search for customer profiles:

https://loanpro.simnang.com/api/public/api/1/Customers/Autopal.Search()
https://loanpro.simnang.com/api/public/api/1/tmp/Customers/search

Request payloads between the two endpoints remain unchanged.

3. Compare the differences between Elasticsearch and OpenSearch responses

While response structure remains unchanged, there are differences in how Elasticsearch and OpenSearch returns certain data:

  • Where Elasticsearch returned a string value, OpenSearch will return an integer.
  • Where Elasticsearch returns empty arrays as [], OpenSearch will return them as null

Here's an example of an Elasticsearch response and an OpenSearch response from the same search:

{
    "d": {
        "results": [
            {
                "insurance": {
                    "insured": "Jane Doe",
                    "companyName": "Insurance Co",
                    "policyNumber": "",
                    "agentName": ""
                },
                "agent": "0",
                "contractDate": "2021-09-23",
                "loanSetupModification": "0",
                "dynamicProperties": {
                    "cf_prop_API_Number": {
                        "label": "API Number",
                        "type": "customfield.type.number",
                        "value": "11929"
                    },
                    "cf_prop_Student_Status": {
                        "label": "Student Status",
                        "type": "customfield.type.select",
                        "value": "N/A"
                    },
                    "cf_prop_API_Checkbox": {
                        "label": "API Checkbox",
                        "type": "customfield.type.checkbox",
                        "value": "0"
                    },
                    "cf_prop_Sample_Settings_Field": {
                        "label": "Sample Settings Field",
                        "type": "customfield.type.datetime",
                        "value": ""
                    },
                    "cf_prop_SBA_GP_Number": {
                        "label": "SBA GP Number",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_SCRA_Active_Date": {
                        "label": "SCRA Active Date",
                        "type": "customfield.type.date",
                        "value": ""
                    },
                    "cf_prop_Checkbox": {
                        "label": "Checkbox",
                        "type": "customfield.type.checkbox",
                        "value": "0"
                    },
                    "cf_prop_Currency": {
                        "label": "Currency",
                        "type": "customfield.type.currency",
                        "value": null
                    },
                    "cf_prop_API_Percentage": {
                        "label": "API Percentage",
                        "type": "customfield.type.percentage",
                        "value": "14.99"
                    },
                    "cf_prop_Custom_Text_Field": {
                        "label": "Custom Text Field",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_Updated_via_the_API": {
                        "label": "Updated via the API",
                        "type": "customfield.type.select",
                        "value": ""
                    },
                    "cf_prop_API_Currency": {
                        "label": "API Currency",
                        "type": "customfield.type.currency",
                        "value": null
                    },
                    "cf_prop_Text_Field": {
                        "label": "Text Field",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_Date_API": {
                        "label": "Date API",
                        "type": "customfield.type.date",
                        "value": null
                    },
                    "cf_prop_Serial_Number": {
                        "label": "Serial Number",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_API_Select_test": {
                        "label": "API Select test",
                        "type": "customfield.type.select",
                        "value": "N/A"
                    },
                    "cf_prop_API_Date": {
                        "label": "API Date",
                        "type": "customfield.type.date",
                        "value": "2022-12-13"
                    },
                    "cf_prop_API_Phone_Number": {
                        "label": "API Phone Number",
                        "type": "customfield.type.phone",
                        "value": "5551112233"
                    }
                },
                "daysPastDue": "0",
                "primaryPhoneDnd": "0",
                "pendingAutopays": 0,
                "liquidationDate": null,
                "bankruptcyClaimFiledStatus": null,
                "stoplight": "stoplight.display.yellow",
                "flooringCustomers": null,
                "principalBalance": "3976.94",
                "calcType": "loan.calcType.simpleIntLocked",
                "dailyFlagsString": null,
                "id": "9114",
                "promises": {
                    "fulfillmentDate": null,
                    "subject": "API Demo Promise",
                    "dueDate": "2023-07-28",
                    "fulfilled": 0,
                    "type": "loanpromise.type.payment"
                },
                "nextPaymentDate": null,
                "bankruptcyPetitionStatus": null,
                "loanSubStatusText": "Borrower Paid in Full",
                "subPortfolios": [],
                "created": "2021-09-23 17:25:02",
                "netChargeOff": "0.00",
                "delinquentBucket": "0",
                "sourceCompany": 11,
                "active": 1,
                "loanSetupFrequency": "loan.frequency.monthly",
                "loanSetupTerm": "48.00",
                "followUpDate": "2021-10-02",
                "flagsString": "",
                "hasDueDateChanges": true,
                "primaryPhone": "8019966332",
                "secondaryCustomerSmsVerified": 0,
                "repoDate": null,
                "secondaryCustomerLastName": "",
                "loanSetupRate": "2.49",
                "primaryCustomerName": "Jonathan Doe",
                "displayId": "9114",
                "loanClass": "loan.class.carLoan",
                "secondaryPhone": null,
                "primaryCustomerLastName": "Doe",
                "loanStatusText": "Paid Off",
                "amountPastDue30": "0.00",
                "loanType": "loan.type.installment",
                "bankruptcyChapter": null,
                "primaryCustomerAddress": {
                    "zipcode": "94114",
                    "city": "San Francisco",
                    "state": "geo.state.CA"
                },
                "customFields": [
                    "5551112233"
                ],
                "bankruptcyProcessStatus": null,
                "flags": {
                    "flag__2": 0,
                    "flag__1": 0
                },
                "title": "9114",
                "dailyFlags": [],
                "modTotal": "0",
                "secondaryCustomerAddress": null,
                "archived": "0",
                "duePni": "0.23",
                "eBilling": "0",
                "collateralInfo": "1981 Delorean DMC-12 Flux Capacitor",
                "loanSetupRateType": "loan.rateType.semiannually",
                "bankruptcyFilingDate": null,
                "lastPaymentDate": "2025-05-12",
                "lastPaymentAmount": "9109.19",
                "customers": [
                    {
                        "firstName": "Jonathan",
                        "lastName": "Doe",
                        "customerType": "customer.type.individual",
                        "companyName": "",
                        "customerId": null,
                        "accessUserName": "JohnDoe212",
                        "middleName": "",
                        "id": 1183,
                        "customId": null,
                        "email": "[email protected]",
                        "ssn": "111001010"
                    }
                ],
                "loanSetupDiscount": "0.00",
                "loanSetupUnderwriting": "0.00",
                "humanActivityDate": "2024-04-05",
                "loanRecency": "0",
                "secondaryCustomerEmail": null,
                "portfolios": [
                    "16"
                ],
                "secondaryCustomerName": "",
                "payoff": "-29236.41",
                "primaryCustomerSmsVerified": 0,
                "loanAmount": "11999.00",
                "loanSubStatusId": 30,
                "amountDue": "1.22",
                "primaryCustomerEmail": "[email protected]",
                "humanActivity": 4,
                "bankruptcyCaseNumber": null,
                "loanSetupInterestRate": 4.9800000000000004,
                "loanAlert": "",
                "closedDate": null,
                "hasCharges": true,
                "bankruptcyMeetingOfCreditorsDate": null,
                "loanStatusId": 6,
                "checklistItemValues": {
                    "checklistItem__12": 0,
                    "checklistItem__13": 1,
                    "checklistItem__10": 0,
                    "checklistItem__11": 0,
                    "checklistItem__16": 0,
                    "checklistItem__17": 0,
                    "checklistItem__14": 0,
                    "checklistItem__15": 0,
                    "checklistItem__5": 1,
                    "checklistItem__6": 0,
                    "checklistItem__7": 0,
                    "checklistItem__1": 0,
                    "checklistItem__2": 0,
                    "checklistItem__3": 0,
                    "checklistItem__4": 0,
                    "checklistItem__9": 0,
                    "checklistItem__18": 0
                },
                "loanSetupFirstDueDate": "2021-12-22",
                "bankruptcyProofOfClaimDeadline": null,
                "isSetupValid": true,
                "loanAge": 929,
                "collateral": {
                    "a": "1981",
                    "b": "Delorean",
                    "gpsCode": "121GW",
                    "c": "DMC-12",
                    "licensePlate": "OUTATIME",
                    "color": "grey",
                    "vin": "1GHES1236547894"
                },
                "loanSetupWeightedInterestRate": 59755.019999999997,
                "nextPaymentAmount": "0.00"
            }
        ],
        "summary": {
            "totalHits": 1,
            "totalTime": 505,
            "aggregations": {
                "avg_payoff": {
                    "value": -29236.41
                },
                "avg_principalbalance": {
                    "value": 3976.9400000000001
                },
                "groupByDelinquencyBucket": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 0,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            }
                        }
                    ]
                },
                "avg_dayspastdue": {
                    "value": 0
                },
                "groupByState": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "geo.state.ca",
                            "doc_count": 1
                        }
                    ]
                },
                "groupByPayOff": {
                    "buckets": [
                        {
                            "key": "0.1-2500.05",
                            "from": 0.10000000000000001,
                            "to": 2500.0500000000002,
                            "doc_count": 0
                        },
                        {
                            "key": "2500.01-5000.05",
                            "from": 2500.0100000000002,
                            "to": 5000.0500000000002,
                            "doc_count": 0
                        },
                        {
                            "key": "5000.01-10000.05",
                            "from": 5000.0100000000002,
                            "to": 10000.049999999999,
                            "doc_count": 0
                        },
                        {
                            "key": "10000.01-10010.05",
                            "from": 10000.01,
                            "to": 10010.049999999999,
                            "doc_count": 0
                        },
                        {
                            "key": "100011.0-*",
                            "from": 100011,
                            "doc_count": 0
                        }
                    ]
                },
                "groupByDaysPastDue": {
                    "buckets": [
                        {
                            "key": "1.0-15.05",
                            "from": 1,
                            "to": 15.050000000000001,
                            "doc_count": 0
                        },
                        {
                            "key": "16.0-30.05",
                            "from": 16,
                            "to": 30.050000000000001,
                            "doc_count": 0
                        },
                        {
                            "key": "31.0-60.05",
                            "from": 31,
                            "to": 60.049999999999997,
                            "doc_count": 0
                        },
                        {
                            "key": "61.0-90.05",
                            "from": 61,
                            "to": 90.049999999999997,
                            "doc_count": 0
                        },
                        {
                            "key": "91.0-*",
                            "from": 91,
                            "doc_count": 0
                        }
                    ]
                },
                "groupBySourceCompanies": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 11,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "sum_amountdue": {
                    "value": 1.22
                },
                "currentLoansCount": {
                    "doc_count": 1
                },
                "unassociatedSourceCompanies": {
                    "doc_count": 0,
                    "sum_amountdue": {
                        "value": 0
                    },
                    "avg_payoff": {
                        "value": null
                    },
                    "avg_principalbalance": {
                        "value": null
                    },
                    "avg_amountdue": {
                        "value": null
                    },
                    "sum_principalbalance": {
                        "value": 0
                    },
                    "avg_dayspastdue": {
                        "value": null
                    },
                    "sum_payoff": {
                        "value": 0
                    },
                    "sum_loanamount": {
                        "value": 0
                    }
                },
                "avg_amountdue": {
                    "value": 1.22
                },
                "groupByNoCustomer": {
                    "doc_count": 0
                },
                "sum_principalbalance": {
                    "value": 3976.9400000000001
                },
                "sum_payoff": {
                    "value": -29236.41
                },
                "groupBySubStatus": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 30,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "groupByPortfolios": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "16",
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "groupByNextDueDate": {
                    "buckets": [
                        {
                            "key": "04/09/2024-04/10/2024",
                            "from": 1712620800000,
                            "from_as_string": "04/09/2024",
                            "to": 1712707200000,
                            "to_as_string": "04/10/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/10/2024-04/11/2024",
                            "from": 1712707200000,
                            "from_as_string": "04/10/2024",
                            "to": 1712793600000,
                            "to_as_string": "04/11/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/11/2024-04/12/2024",
                            "from": 1712793600000,
                            "from_as_string": "04/11/2024",
                            "to": 1712880000000,
                            "to_as_string": "04/12/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/12/2024-04/13/2024",
                            "from": 1712880000000,
                            "from_as_string": "04/12/2024",
                            "to": 1712966400000,
                            "to_as_string": "04/13/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/13/2024-04/14/2024",
                            "from": 1712966400000,
                            "from_as_string": "04/13/2024",
                            "to": 1713052800000,
                            "to_as_string": "04/14/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/14/2024-04/15/2024",
                            "from": 1713052800000,
                            "from_as_string": "04/14/2024",
                            "to": 1713139200000,
                            "to_as_string": "04/15/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/15/2024-04/16/2024",
                            "from": 1713139200000,
                            "from_as_string": "04/15/2024",
                            "to": 1713225600000,
                            "to_as_string": "04/16/2024",
                            "doc_count": 0
                        }
                    ]
                },
                "unassociatedPortfolios": {
                    "doc_count": 0,
                    "sum_amountdue": {
                        "value": 0
                    },
                    "avg_payoff": {
                        "value": null
                    },
                    "avg_principalbalance": {
                        "value": null
                    },
                    "avg_amountdue": {
                        "value": null
                    },
                    "sum_principalbalance": {
                        "value": 0
                    },
                    "avg_dayspastdue": {
                        "value": null
                    },
                    "sum_payoff": {
                        "value": 0
                    },
                    "sum_loanamount": {
                        "value": 0
                    }
                }
            }
        }
    }
}
{
    "d": {
        "results": [
            {
                "insurance": {
                    "insured": "Jane Doe",
                    "companyName": "Insurance Co",
                    "policyNumber": "",
                    "agentName": ""
                },
                "agent": 0,
                "contractDate": "2021-09-23",
                "loanSetupModification": 0,
                "dynamicProperties": {
                    "cf_prop_API_Number": {
                        "label": "API Number",
                        "type": "customfield.type.number",
                        "value": "11929"
                    },
                    "cf_prop_Student_Status": {
                        "label": "Student Status",
                        "type": "customfield.type.select",
                        "value": "N/A"
                    },
                    "cf_prop_API_Checkbox": {
                        "label": "API Checkbox",
                        "type": "customfield.type.checkbox",
                        "value": "0"
                    },
                    "cf_prop_Sample_Settings_Field": {
                        "label": "Sample Settings Field",
                        "type": "customfield.type.datetime",
                        "value": ""
                    },
                    "cf_prop_SBA_GP_Number": {
                        "label": "SBA GP Number",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_SCRA_Active_Date": {
                        "label": "SCRA Active Date",
                        "type": "customfield.type.date",
                        "value": ""
                    },
                    "cf_prop_Checkbox": {
                        "label": "Checkbox",
                        "type": "customfield.type.checkbox",
                        "value": "0"
                    },
                    "cf_prop_Currency": {
                        "label": "Currency",
                        "type": "customfield.type.currency",
                        "value": null
                    },
                    "cf_prop_API_Percentage": {
                        "label": "API Percentage",
                        "type": "customfield.type.percentage",
                        "value": "14.99"
                    },
                    "cf_prop_Custom_Text_Field": {
                        "label": "Custom Text Field",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_Updated_via_the_API": {
                        "label": "Updated via the API",
                        "type": "customfield.type.select",
                        "value": ""
                    },
                    "cf_prop_API_Currency": {
                        "label": "API Currency",
                        "type": "customfield.type.currency",
                        "value": null
                    },
                    "cf_prop_Text_Field": {
                        "label": "Text Field",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_Date_API": {
                        "label": "Date API",
                        "type": "customfield.type.date",
                        "value": null
                    },
                    "cf_prop_Serial_Number": {
                        "label": "Serial Number",
                        "type": "customfield.type.text",
                        "value": ""
                    },
                    "cf_prop_API_Select_test": {
                        "label": "API Select test",
                        "type": "customfield.type.select",
                        "value": "N/A"
                    },
                    "cf_prop_API_Date": {
                        "label": "API Date",
                        "type": "customfield.type.date",
                        "value": "2022-12-13"
                    },
                    "cf_prop_API_Phone_Number": {
                        "label": "API Phone Number",
                        "type": "customfield.type.phone",
                        "value": "5551112233"
                    }
                },
                "daysPastDue": 0,
                "primaryPhoneDnd": 0,
                "pendingAutopays": 0,
                "liquidationDate": null,
                "bankruptcyClaimFiledStatus": null,
                "stoplight": "stoplight.display.yellow",
                "flooringCustomers": null,
                "principalBalance": 3976.9400000000001,
                "calcType": "loan.calcType.simpleIntLocked",
                "dailyFlagsString": null,
                "id": "9114",
                "promises": {
                    "fulfillmentDate": null,
                    "subject": "API Demo Promise",
                    "dueDate": "2023-07-28",
                    "fulfilled": 0,
                    "type": "loanpromise.type.payment"
                },
                "nextPaymentDate": null,
                "bankruptcyPetitionStatus": null,
                "loanSubStatusText": "Borrower Paid in Full",
                "subPortfolios": null,
                "created": "2021-09-23 17:25:02",
                "netChargeOff": 0,
                "delinquentBucket": 0,
                "sourceCompany": 11,
                "active": 1,
                "loanSetupFrequency": "loan.frequency.monthly",
                "loanSetupTerm": 48,
                "followUpDate": "2021-10-02",
                "flagsString": "",
                "hasDueDateChanges": true,
                "primaryPhone": "8019966332",
                "secondaryCustomerSmsVerified": 0,
                "repoDate": null,
                "secondaryCustomerLastName": "",
                "loanSetupRate": 2.4900000000000002,
                "primaryCustomerName": "Jonathan Doe",
                "displayId": "9114",
                "loanClass": "loan.class.carLoan",
                "secondaryPhone": null,
                "primaryCustomerLastName": "Doe",
                "loanStatusText": "Paid Off",
                "amountPastDue30": 0,
                "loanType": "loan.type.installment",
                "bankruptcyChapter": null,
                "primaryCustomerAddress": {
                    "zipcode": "94114",
                    "city": "San Francisco",
                    "state": "geo.state.CA"
                },
                "customFields": [
                    "5551112233"
                ],
                "bankruptcyProcessStatus": null,
                "flags": {
                    "flag__2": 0,
                    "flag__1": 0
                },
                "title": "9114",
                "dailyFlags": null,
                "modTotal": 0,
                "secondaryCustomerAddress": null,
                "archived": 0,
                "duePni": 0.23000000000000001,
                "eBilling": 0,
                "collateralInfo": "1981 Delorean DMC-12 Flux Capacitor",
                "loanSetupRateType": "loan.rateType.semiannually",
                "bankruptcyFilingDate": null,
                "lastPaymentDate": "2025-05-12",
                "lastPaymentAmount": 9109.1900000000005,
                "customers": [
                    {
                        "firstName": "Jonathan",
                        "lastName": "Doe",
                        "customerType": "customer.type.individual",
                        "companyName": "",
                        "customerId": null,
                        "accessUserName": "JohnDoe212",
                        "middleName": "",
                        "id": 1183,
                        "customId": null,
                        "email": "[email protected]",
                        "ssn": "111001010"
                    }
                ],
                "loanSetupDiscount": 0,
                "loanSetupUnderwriting": 0,
                "humanActivityDate": "2024-04-05",
                "loanRecency": 0,
                "secondaryCustomerEmail": null,
                "portfolios": [
                    "16"
                ],
                "secondaryCustomerName": "",
                "payoff": -29236.41,
                "primaryCustomerSmsVerified": 0,
                "loanAmount": 11999,
                "loanSubStatusId": 30,
                "amountDue": 1.22,
                "primaryCustomerEmail": "[email protected]",
                "humanActivity": 4,
                "bankruptcyCaseNumber": null,
                "loanSetupInterestRate": 4.9800000000000004,
                "loanAlert": "",
                "closedDate": null,
                "hasCharges": true,
                "bankruptcyMeetingOfCreditorsDate": null,
                "loanStatusId": 6,
                "checklistItemValues": {
                    "checklistItem__12": 0,
                    "checklistItem__13": 1,
                    "checklistItem__10": 0,
                    "checklistItem__11": 0,
                    "checklistItem__16": 0,
                    "checklistItem__17": 0,
                    "checklistItem__14": 0,
                    "checklistItem__15": 0,
                    "checklistItem__5": 1,
                    "checklistItem__6": 0,
                    "checklistItem__7": 0,
                    "checklistItem__1": 0,
                    "checklistItem__2": 0,
                    "checklistItem__3": 0,
                    "checklistItem__4": 0,
                    "checklistItem__9": 0,
                    "checklistItem__18": 0
                },
                "loanSetupFirstDueDate": "2021-12-22",
                "bankruptcyProofOfClaimDeadline": null,
                "isSetupValid": true,
                "loanAge": 929,
                "collateral": {
                    "a": "1981",
                    "b": "Delorean",
                    "gpsCode": "121GW",
                    "c": "DMC-12",
                    "licensePlate": "OUTATIME",
                    "color": "grey",
                    "vin": "1GHES1236547894"
                },
                "loanSetupWeightedInterestRate": 59755.019999999997,
                "nextPaymentAmount": 0
            }
        ],
        "summary": {
            "totalHits": 1,
            "totalTime": 520,
            "aggregations": {
                "avg_payoff": {
                    "value": -29236.41
                },
                "avg_principalbalance": {
                    "value": 3976.9400000000001
                },
                "groupByDelinquencyBucket": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 0,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            }
                        }
                    ]
                },
                "avg_dayspastdue": {
                    "value": 0
                },
                "groupByState": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "geo.state.ca",
                            "doc_count": 1
                        }
                    ]
                },
                "groupByPayOff": {
                    "buckets": [
                        {
                            "key": "0.1-2500.05",
                            "from": 0.10000000000000001,
                            "to": 2500.0500000000002,
                            "doc_count": 0
                        },
                        {
                            "key": "2500.01-5000.05",
                            "from": 2500.0100000000002,
                            "to": 5000.0500000000002,
                            "doc_count": 0
                        },
                        {
                            "key": "5000.01-10000.05",
                            "from": 5000.0100000000002,
                            "to": 10000.049999999999,
                            "doc_count": 0
                        },
                        {
                            "key": "10000.01-10010.05",
                            "from": 10000.01,
                            "to": 10010.049999999999,
                            "doc_count": 0
                        },
                        {
                            "key": "100011.0-*",
                            "from": 100011,
                            "doc_count": 0
                        }
                    ]
                },
                "groupByDaysPastDue": {
                    "buckets": [
                        {
                            "key": "1.0-15.05",
                            "from": 1,
                            "to": 15.050000000000001,
                            "doc_count": 0
                        },
                        {
                            "key": "16.0-30.05",
                            "from": 16,
                            "to": 30.050000000000001,
                            "doc_count": 0
                        },
                        {
                            "key": "31.0-60.05",
                            "from": 31,
                            "to": 60.049999999999997,
                            "doc_count": 0
                        },
                        {
                            "key": "61.0-90.05",
                            "from": 61,
                            "to": 90.049999999999997,
                            "doc_count": 0
                        },
                        {
                            "key": "91.0-*",
                            "from": 91,
                            "doc_count": 0
                        }
                    ]
                },
                "groupBySourceCompanies": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 11,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "sum_amountdue": {
                    "value": 1.22
                },
                "currentLoansCount": {
                    "doc_count": 1
                },
                "unassociatedSourceCompanies": {
                    "doc_count": 0,
                    "sum_amountdue": {
                        "value": 0
                    },
                    "avg_payoff": {
                        "value": null
                    },
                    "avg_principalbalance": {
                        "value": null
                    },
                    "avg_amountdue": {
                        "value": null
                    },
                    "sum_principalbalance": {
                        "value": 0
                    },
                    "avg_dayspastdue": {
                        "value": null
                    },
                    "sum_payoff": {
                        "value": 0
                    },
                    "sum_loanamount": {
                        "value": 0
                    }
                },
                "avg_amountdue": {
                    "value": 1.22
                },
                "groupByNoCustomer": {
                    "doc_count": 0
                },
                "sum_principalbalance": {
                    "value": 3976.9400000000001
                },
                "sum_payoff": {
                    "value": -29236.41
                },
                "groupBySubStatus": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": 30,
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "groupByPortfolios": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "16",
                            "doc_count": 1,
                            "sum_amountdue": {
                                "value": 1.22
                            },
                            "avg_payoff": {
                                "value": -29236.41
                            },
                            "avg_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_amountdue": {
                                "value": 1.22
                            },
                            "sum_principalbalance": {
                                "value": 3976.9400000000001
                            },
                            "avg_dayspastdue": {
                                "value": 0
                            },
                            "sum_payoff": {
                                "value": -29236.41
                            },
                            "sum_loanamount": {
                                "value": 11999
                            }
                        }
                    ]
                },
                "groupByNextDueDate": {
                    "buckets": [
                        {
                            "key": "04/09/2024-04/10/2024",
                            "from": 1712620800000,
                            "from_as_string": "04/09/2024",
                            "to": 1712707200000,
                            "to_as_string": "04/10/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/10/2024-04/11/2024",
                            "from": 1712707200000,
                            "from_as_string": "04/10/2024",
                            "to": 1712793600000,
                            "to_as_string": "04/11/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/11/2024-04/12/2024",
                            "from": 1712793600000,
                            "from_as_string": "04/11/2024",
                            "to": 1712880000000,
                            "to_as_string": "04/12/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/12/2024-04/13/2024",
                            "from": 1712880000000,
                            "from_as_string": "04/12/2024",
                            "to": 1712966400000,
                            "to_as_string": "04/13/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/13/2024-04/14/2024",
                            "from": 1712966400000,
                            "from_as_string": "04/13/2024",
                            "to": 1713052800000,
                            "to_as_string": "04/14/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/14/2024-04/15/2024",
                            "from": 1713052800000,
                            "from_as_string": "04/14/2024",
                            "to": 1713139200000,
                            "to_as_string": "04/15/2024",
                            "doc_count": 0
                        },
                        {
                            "key": "04/15/2024-04/16/2024",
                            "from": 1713139200000,
                            "from_as_string": "04/15/2024",
                            "to": 1713225600000,
                            "to_as_string": "04/16/2024",
                            "doc_count": 0
                        }
                    ]
                },
                "unassociatedPortfolios": {
                    "doc_count": 0,
                    "sum_amountdue": {
                        "value": 0
                    },
                    "avg_payoff": {
                        "value": null
                    },
                    "avg_principalbalance": {
                        "value": null
                    },
                    "avg_amountdue": {
                        "value": null
                    },
                    "sum_principalbalance": {
                        "value": 0
                    },
                    "avg_dayspastdue": {
                        "value": null
                    },
                    "sum_payoff": {
                        "value": 0
                    },
                    "sum_loanamount": {
                        "value": 0
                    }
                }
            }
        }
    }
}

4. Ensure you can ingest data from OpenSearch correctly.

After comparing the differences between Elasticsearch and OpenSearch responses, ensure your integrations can ingest data from OpenSearch correctly.