OCCUPANCY COMPENSATION Documentation
Description:
When a tenant does not vacate the apartment by the specified end date, the agent can change the contract state to UNENTITLED if it is in the NOTICED state. The state change requires specifying an occupancy compensation amount.
1. Contract State Change:
I have:
- A contract with a specified end date.
- A tenant who has not vacated the apartment by the end date.
I can:
- Change the contract state to
UNENTITLEDonly if the current state isNOTICED. - When changing the state to
UNENTITLED, the agent must provide an occupancy compensation amount. This is mandatory, and the state change cannot proceed without it.
API Request:
To change the contract state to UNENTITLED, the agent must send a request:
POST adb-contracts/contracts/events
with the following body:
{
"type": "ContractUnentitledEventInfo",
"target": {
"type": "TargetObject",
"targetType": "Contract",
"targetId": "{{RENTAL_CONTRACT_ID}}"
}
"occupancyCompensationAmounts": [
{
"lineNumber": <integer>,
"whenEffective": <date>",
"amount": {
"type": "Quantity",
"amount": <double>,
"unit" : {
"type": "CatalogValue",
"id": "QUANTITY.EURO"
}
}
}
]
}
Action diagram:

2. Rent Amount Management
I have:
- A contract in the
UNENTITLEDstate. - Various rent amounts associated with the contract.
I can:
- Get all occupancy compensation rent amounts using the
GETrequest:
GET adb-contracts/contracts/{id}/rentAmount/CFR_OCCUPANCY_COMPENSATION
- Update occupancy compensation rent amounts using the PATCH request:
PATCH adb-contracts/contracts/{contractId}/rentAmount/{eventType}
and request body:
{
"type": "PatchRentAmountRequest",
"amounts": [
{
"lineNumber": <integer>,
"whenEffective": "<date>",
"amount": {
"type": "Quantity",
"amount": <double>,
"unit": {
"type": "CatalogValue",
"id": "QUANTITY.EURO"
}
}
}
]
}
- Delete rent amounts, but cannot delete the first record. At least one rent amount must remain. Rent amounts with CFR_LOCKED state cannot be deleted or modified.
DELETE adb-contracts/contracts/{contractId}/rentAmount/{eventType}/{lineNumber}
Action diagram:

3. CallForRentPeriods and nextCallForRentPeriod Management
I have:
- A contract in the
UNENTITLEDstate. CFRperiods with the stateFINAL.
I can:
- When the contract reaches its end date, the last
CFRbefore the end date will be set toFINAL, andnextCallForRentPeriodwill have the stateENDED. - If the contract is in the
UNENTITLEDstate, I can trigger a newCFR, where the lastCFRin theFINALstate will change toPROCESSED. - The newly called period will have the
FINALstate, andnextCallForRentPeriodwill remain in theENDEDstate, but the period values will change.
Handling End Date
I have:
- A contract with an end date.
I can:
- In the
UNENTITLEDstate, theend dateis already in the past, so it should not be used for future periods. - For
UNENTITLEDcontracts, theend datewill be treated asnull, allowing the system to calculate future periods even though the contract is in the past.
4. I have a CfrOccupancyCompensationEvent
I can:
- For contracts in UNENTITLED state with occupancyCompensationAmount defined, create a CfrOccupancyCompensationEvent event with parameters defined in the Event Matrix spreadsheet
5. Handling CallForRent (CFR)
I have:
- A contract in the
UNENTITLEDstate.
I can:
- The agent can trigger a CFR for a contract in the
UNENTITLEDstate. This action will only apply to Recurring Rent. - If the contract includes a valid occupancy compensation amount in its rent amounts, only CFR_OCCUPANCY_COMPENSATION events will be triggered.
- If no valid occupancy compensation amount is present, standard CFR events like CFR, CHARGES, etc., will be triggered instead.
- Indexation should be disabled for the OccupancyCompensation amounts
Action diagram:

6. Handling Settlements
I have:
- A contract with an CFR_OCCUPANCY_COMPENSATION rent amount.
I can:
- After receiving a TENANT_PAYMENT_RECEIVED event, I can add settlements for entries of type CFR_OCCUPANCY_COMPENSATION.
7. Direct Debit Processing
I have:
- A contract in the
UNENTITLEDstate. - A need to calculate Direct Debit amounts.
I can:
- The Direct Debit will have a new field
occupancyCompensationAmounton the header level, populated with the corresponding amounts. - If the contract is in the
UNENTITLEDstate, theoccupancyCompensationAmountwill be used as the CFR amount when calculating the Direct Debit amount.
8. Contract Search Update
I have:
- A need to search for contracts eligible for CFR or Direct Debit.
I can:
- The
UNENTITLEDstate will be added to the valid search states for contracts eligible for CFR and Direct Debit.