Skip to main content

Properties

Property entities represent real-estate assets, rentable sub-units, ownership and management roles, and time-dependent tax configuration.

properties

Purpose

Represents a real-estate asset. It must support Italian taxation data and several rental modes, including single-tenant rentals, multi-tenant rentals, and room-level rentals.

Suggested attributes

FieldDescription
idPrimary identifier.
nameInternal property name.
property_typeAPARTMENT, VILLA, ROOM, OFFICE, SHOP, BUILDING, or OTHER.
rental_modeSINGLE_TENANT, MULTI_TENANT, or ROOM_RENTAL.
addressStreet address.
cityCity.
provinceItalian province or equivalent local area.
regionRegion.
countryCountry.
postal_codePostal code.
floorFloor.
surface_sqmSurface in square meters.
roomsNumber of rooms.
bathroomsNumber of bathrooms.
cadastral_municipalityCadastral municipality.
cadastral_sectionCadastral section.
cadastral_sheetCadastral sheet.
cadastral_parcelCadastral parcel.
cadastral_subalternCadastral subaltern.
cadastral_categoryItalian cadastral category.
cadastral_classCadastral class.
cadastral_incomeCadastral income.
ownership_titleOwnership title or legal basis.
purchase_datePurchase date.
purchase_pricePurchase price.
main_residence_flagWhether the asset is a main residence for tax purposes.
tax_regime_defaultDefault tax regime for contracts on this property.
imu_applicableWhether IMU may apply.
tari_applicableWhether TARI may apply.
cedolare_secca_eligibleWhether cedolare secca may be available.
statusAVAILABLE, RENTED, INACTIVE, or UNDER_MAINTENANCE.
notesFree-form notes.
created_atCreation timestamp.
updated_atLast update timestamp.

Relationships

RelationshipDescription
properties to property_unitsOne property has many rentable units.
properties to property_partiesOne property has many role-based party links.
properties to contractsOne property has many contracts over time.
properties to property_servicesOne property has many utilities and services.
properties to property_bank_accountsOne property may use several bank accounts.
properties to bank_transactionsBank transactions may be linked directly or indirectly through splits.
properties to expected_expensesOne property has many expected expenses.
properties to documentsDocuments can be linked to properties.
properties to maintenance_requestsOne property has many maintenance requests.

Notes and design rationale

Property tax fields can exist on properties for current/default values, but historical and time-dependent tax data belongs in property_tax_profiles.

property_units

Purpose

Represents rentable sub-units of a property. This supports whole-property rentals, individual room rentals, and separate parking or storage units.

Suggested attributes

FieldDescription
idPrimary identifier.
property_idParent property.
unit_nameHuman-readable unit name, for example Room A.
unit_typeWHOLE_PROPERTY, ROOM, PARKING, STORAGE, or OTHER.
surface_sqmSurface in square meters.
floorFloor.
private_bathroom_flagWhether the unit has a private bathroom.
furnished_flagWhether the unit is furnished.
statusAVAILABLE, RENTED, INACTIVE, or UNDER_MAINTENANCE.
notesFree-form notes.
created_atCreation timestamp.
updated_atLast update timestamp.

Relationships

RelationshipDescription
property_units.property_id to properties.idEach unit belongs to one property.
property_units to contract_unitsUnits can be covered by one or more contracts over time.
property_units to property_servicesA service may be specific to a room or unit.

Notes and design rationale

Even whole-property contracts should be represented through contract_units when unit-level precision is needed. A property can have a WHOLE_PROPERTY unit plus room units if the business needs both views.

property_parties

Purpose

Role-based relationship between parties and properties.

Suggested attributes

FieldDescription
idPrimary identifier.
property_idLinked property.
party_idLinked party.
roleOWNER, CO_OWNER, TENANT, MANAGER, SERVICE_PROVIDER, ACCOUNTANT, AGENCY, or GUARANTOR.
ownership_percentageOwnership share when relevant.
start_dateRole start date.
end_dateRole end date.
notesFree-form notes.

Relationships

RelationshipDescription
property_parties.property_id to properties.idMany roles can exist for one property.
property_parties.party_id to parties.idOne party can have roles on many properties.

Notes and design rationale

Do not store owner_id, tenant_id, or manager_id directly on properties. Ownership, tenancy, and management change over time and can involve multiple parties.

property_tax_profiles

Purpose

Stores tax-related property information over time.

Suggested attributes

FieldDescription
idPrimary identifier.
property_idLinked property.
valid_fromStart date of this tax profile.
valid_toEnd date of this tax profile. Nullable for current profile.
tax_countryTax country, initially IT.
tax_regimeApplicable tax regime.
cadastral_incomeCadastral income valid for the period.
imu_applicableWhether IMU applies.
tari_applicableWhether TARI applies.
cedolare_secca_eligibleWhether cedolare secca is eligible.
main_residence_flagMain residence status for the period.
notesTax notes.

Relationships

RelationshipDescription
property_tax_profiles.property_id to properties.idOne property can have many historical tax profiles.

Notes and design rationale

Tax rules and fiscal classification can change. Keeping historical profiles allows yearly tax reporting without losing the context that was valid at the time.

Graphical local diagrams

properties

property_units

property_parties

property_tax_profiles