Linking Events to Insurance
1. Application Created/Saved
Since insurance is linked to an application when created
- Routing Key:
core.entity.loanapplication.save - Event Type:
LOANAPPLICATION_SAVE(in header and message body) - long id:
application id - Modification Type:
CREATED
Methods:
POST /main/loan-appsGET /main/loan-apps/init/client-id/{clientId}(Initialize new application)
2. Insurance Creation
After the application is created - insurance is created with a link to the application.
- Routing Key:
core.entity.insurance.save - Event Type:
INSURANCE_SAVE(in header and message body) - long id:
insurance id - Modification Type:
CREATED
Method: POST /main/insurance
Parameters:
{
"loanApplicationId": 6943,
"insuranceProgramId": 10,
"amount": 1000,
"cost": null,
"creationDate": "2025-08-26T14:27:43.000Z",
"expirationDate": "2025-09-26T14:27:43.000Z",
"code": "001608",
"includeInLoanAmount": false,
"premium": 1.25,
"smsCode": "",
"signed": false,
"signDate": 1756218000,
"newExpirationDate": null,
"terminationDate": null,
"type": "LifeInsurance"
}The
typefield contains the insurance type, one ofCivilLiabilityInsurance,ExtAutoInsurance,LifeInsurance. Application ID and insurance program ID are required.
3. Application Status Change
After insurance is created, the application is approved, the event is transmitted with a status change.
Event:
- Event Type:
LOANAPPLICATION_STATUS_CHANGE - Message body:
{"eventType":"LOANAPPLICATION_STATUS_CHANGE","id":6943,"status":"IN_CONSIDERATION"}
For status IN_CONSIDERATION - POST /bs-core/main/loan-apps/{loanApplicationId}/accept-in-consideration - application review stage.
4. Sequential Status Changes
All status change events are transmitted in sequence.
- Event Type:
LOANAPPLICATION_STATUS_CHANGE - Message body:
{"eventType":"LOANAPPLICATION_STATUS_CHANGE","id":6943,"status":"AUTO_VERIFICATION"}
AUTO_VERIFICATION – automatic verification (POST /bs-core/main/loan-apps/{loanApplicationId}/accept-in-consideration).
Application status change events end with a contract creation event:
- Message body:
{"eventType":"LOANAPPLICATION_STATUS_CHANGE","id":6943,"status":"CONTRACT"}
"status":"CONTRACT" – GET /bs-core/main/contracts/init/loan-app-id/{loanApplicationId} (Initialize new contract).
5. Credit Contract Creation
A credit contract is created for the application.
- Event Type:
CONTRACT_SAVE - Message body:
{"eventType":"CONTRACT_SAVE","id":4553,"modificationType":"CREATED"} - Method:
POST /bs-core/main/contracts
6. Insurance Update
After that, an insurance update (change) event is generated, at this point the insurance is assigned contractId and insuranceAccountId.
- Event Type:
INSURANCE_SAVE - Message body:
{"eventType":"INSURANCE_SAVE","id":245,"modificationType":"UPDATED"} - Method:
PUT /main/insurance/{id}
When the insurance is assigned insuranceAccountId, the wallet creation method by insurance ID is triggered: POST /main/insurance/{id}/account (no parameters are passed).
Response example:
{
"id": 4554,
"name": "",
"creationDate": "2025-08-26",
"issueDate": null,
"closeDate": null,
"branchId": 101301,
"subdivisionId": 101791,
"clientId": 3244,
"contractLine": {
"id": 4535,
"lineLimit": null
},
"contractTypeId": 101916,
"createUserId": 1334,
"createSubdivisionId": 101791,
"relatedInsuranceId": 245
}7. Saving Cash Flow (Income)
Cash flow income on the Insurance object – Immediate accrual and repayment of insurance occurs, the event is transmitted – Saving Cash Flow.
- Event Type:
FUNDTRANSACTION_SAVE - Message body:
{"eventType":"FUNDTRANSACTION_SAVE","id":3728,"contractId":4554} - Method:
POST /bs-core/main/fund-transactions
contractIdhere equalsinsuranceAccountId. When passing parameters, specify theidfrominsuranceAccountIdin"contractId".
8. Wallet Contract Issuance
An event is transmitted for Contract Issuance with type 101916 Insurance Accounting (type is not displayed in the event).
- Event Type:
CONTRACT_ISSUE - Message body:
{"eventType":"CONTRACT_ISSUE","id":4554} - Method:
POST /bs-core/main/fund-transactions/{id}/autoaccept(Apply auto-accept to cash flow).
9. Balance Change (Accrual)
After the contract (insurance wallet) is issued, a balance change event is transmitted, since an "Accrual" operation occurs after auto-accept.(Process: Insurance accrual -> Accrual document for insurance -> Amount type: Insurance -> Movement type: Accrual)
- Event Type:
CONTRACT_BALANCE_CHANGED - Message body:
{"eventType":"CONTRACT_BALANCE_CHANGED","contractId":4554,"amountTypeIds":[10129158,10129159],"operations":[{"id":38433,"operDate":1756222558000},{"id":null,"operDate":1756222558000}]}
10. Wallet Contract Closure
A Contract (wallet) Closure event is transmitted, since after cash flow, Accrual and Repayment of the entire amount occur simultaneously.
- Event Type:
CONTRACT_CLOSE - Message body:
{"eventType":"CONTRACT_CLOSE","id":4554,"closedStatusId":null,"closeDate":1756155600000} - Method:
PUT /main/contract/{id}("closeDate"parameter is passed)
11. Balance Change (Repayment)
A balance change event is transmitted, since when the contract (wallet) is closed, the balance changed and became zero upon repayment.(Process: Insurance repayment -> Repayment document for insurance -> Amount type: Insurance -> Movement type: Repayment)
- Event Type:
CONTRACT_BALANCE_CHANGED - Message body:
{"eventType":"CONTRACT_BALANCE_CHANGED","contractId":4554,"amountTypeIds":[1012911,10129158,10129159],"operations":[{"id":null,"operDate":1756222558000},{"id":38434,"operDate":1756222558000},{"id":null,"operDate":1756222558000}]}
12. Wallet Contract Repayment
A repayment event is transmitted, since the contract (wallet) is actually closed with a zero balance.(Process: Insurance repayment -> Repayment document for insurance -> Amount type: Insurance -> Movement type: Repayment)
- Event Type:
CONTRACT_REPAYMENT - Message body:
{"eventType":"CONTRACT_REPAYMENT","contractId":4554,"amountTypeIds":[10129158,10129159],"operations":[{"id":38434,"operDate":1756222558000},{"id":null,"operDate":1756222558000}]}