Skip to content

Property: HDB Minimum Occupation Period (MOP) Tracking #175

@jcleow

Description

@jcleow

Summary

Add Minimum Occupation Period (MOP) tracking for HDB properties. The 5-year MOP is a critical constraint that affects when owners can sell or rent out their HDB flat.

Why This Matters

  • Cannot sell HDB before MOP completion
  • Cannot rent out entire unit before MOP (only rooms allowed after 3 years for some schemes)
  • Affects exit strategy and liquidity planning
  • Interacts with SSD (Seller's Stamp Duty) timing

MOP Rules

Flat Type MOP Duration Start Date
BTO / SBF / Sale of Balance 5 years Key collection date
Resale (with CPF grant) 5 years Key collection date
Resale (no grant, 1st timer) 5 years Key collection date
EC (Executive Condo) 5 years TOP date
DBSS 5 years Key collection date

Rental Restrictions During MOP

  • Years 1-3: Cannot rent any part
  • Years 3-5 (some schemes): Can rent out rooms (not whole unit)
  • After MOP: Can rent out entire unit

Proposed Data Fields

interface MOPConfig {
  propertyType: 'hdb_bto' | 'hdb_resale' | 'ec' | 'private'
  keyCollectionDate: string        // YYYY-MM format
  mopDurationYears: number         // Default 5 for HDB
}

// Computed
interface MOPStatus {
  mopEndDate: string
  monthsRemaining: number
  canSell: boolean
  canRentRooms: boolean
  canRentWholeUnit: boolean
}

UI Integration

  • Display MOP end date prominently for HDB properties
  • Countdown showing months remaining
  • Visual indicator (progress bar or badge)
  • Warning when setting sale date before MOP
  • Warning when enabling rental income before MOP allows it
  • Alert/notification when MOP is approaching completion

Sale Date Validation

if (propertyType.startsWith('hdb') && saleDate < mopEndDate) {
  showWarning("Cannot sell HDB before MOP completion on " + mopEndDate)
}

Acceptance Criteria

  • MOP end date calculated from key collection date
  • MOP countdown displayed for HDB properties
  • Warning when sale date is before MOP
  • Rental restrictions enforced based on MOP status
  • Clear visual indicator of MOP status (pending/completed)
  • Notification when MOP is about to complete

Interaction with Other Features

Labels

property, enhancement, P2, hdb

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions