Custom Engineering / Nimex Solutions
Interactive Office Management
A technology park has to see, floor by floor, which offices are vacant, occupied, reserved, expiring or under maintenance, and run move-ins and renewals without a separate property system. Nimex built a floor-plan application inside Odoo where every unit’s status is derived from its lease contract.
The problem
A typed status is out of date the day a contract changes.
A campus rents offices, open-plan desks, incubator rooms and workshops across several buildings. Managers kept the picture in drawings, spreadsheets and a legacy tool: which unit is free, which lease ends next quarter, which room is closed for works. Every move-in or renewal meant updating three places.
Standard Odoo has contacts and contracts in general terms, but no floor plan, no unit geometry and no notion of a unit’s status coming from its lease.
What we engineered
A full-page application, from the campus down to the lease.
- Floor plans to scale
Each floor drawn in metres with core and corridor, an optional architectural drawing as a background with adjustable opacity, units as tiles coloured by status, search, status filters, hover card, minimap, zoom and pan.
- Drawing and editing
Rectangles, circles and polygons with snapping guides; move, resize, duplicate, delete and save. Area comes from the geometry unless entered manually.
- Contracts and tenants
Tenants are contacts with short name, sectors, type and staff counts. Contracts carry start and end, rate per m², area and monthly rent, termination and no-renew flags and a renewal history.
- Actions with guard rails
New tenant with contract, renew by years and a percentage, vacate today, at month end or at contract end, maintenance flag, notes, documents and undo. Overlaps and contracts on units under maintenance are refused.
- Overview
Occupancy by m² and by unit, rented area, active tenants, upcoming expiries, sector split, newest tenants and recently vacated units; Tenants and Contracts screens drill in.
- Fast and restorable
One request loads the dataset, every change returns a fresh payload to the screen, and each view has its own URL. A migration script moved the legacy plans from pixels to metres.
How it works
From an empty floor to a renewed lease.
- Set up the campus
Buildings, floors with width, depth, core and corridor, tenant sectors, and the expiry threshold: 60, 90 or 120 days.
- Draw the floor
In edit mode the manager uploads the architectural drawing, draws each unit as a rectangle, circle or polygon and saves; a 6 × 4 m office becomes a 24.0 m² unit.
- Add a tenant with a contract
Tenant, start and end dates and the rate per m²; monthly rent = area × rate. The contract is refused if it overlaps another one or the unit is under maintenance.
- Let the status follow
Future start: Reserved. Ending within the threshold: Expiring. Otherwise Occupied. No contract: Vacant. Maintenance flag: Under maintenance.
- Renew
Renew by a number of years and a percentage: the end date moves, the rate is increased, a renewal row records old and new values, and undo restores the previous state.
- Vacate
Today (the contract ends yesterday), at month end, or at contract end, which marks the lease “will not be renewed” and leaves the unit vacant when it ends.
- Read the overview
Occupancy, rented area, active tenants and upcoming expiries across the campus, then drill into tenants and contracts.
Integration points