- Home
- Apps
- SaaS Tools
- Employee Self-Service Portal
Illustrative previewBuild-to-order Odoo portal where staff update info, request leave,
view payslips, clock in/out and file expenses.
What is Employee Self-Service Portal?
Build-to-order Odoo portal where staff update info, request leave, view payslips, clock in/out and file expenses. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Turn your HR team into an approver, not a data-entry desk
The Employee Self-Service Portal is a build-to-order Odoo module that ECOSIRE designs, develops, installs and supports on your Odoo 17, 18 or 19 instance. This is not a pre-packaged apps.odoo.com download you install yourself — our team scopes it to your HR policies, builds it against your database, and hands you a documented, tested module after a typical one working week lead time.
Odoo already stores everything about your people in hr.employee, hr.leave, hr.payslip, hr.attendance, hr.expense and account.analytic.line (timesheets). What most companies lack is a single, safe, mobile-friendly front door that lets each employee interact with their own records — and nobody else's — without an HR user seat or backend access. That is exactly what we build.
What we actually deliver
We extend the Odoo web portal (portal.mixin, controllers under /my/..., rendered with QWeb and OWL) so every employee gets a clean self-service workspace. Under the hood the security model is the point: we ship a tightly scoped ir.model.access.csv plus record rules (ir.rule with domain_force like [('employee_id.user_id','=',user.id)]) so a portal user can only ever read and write their own data. No employee can browse the org's payroll, see a colleague's contract, or reach the backend.
Where standard behaviour needs to move, we do it the Odoo-native way: compute fields with @api.depends for live leave balances, automated actions and server actions for approval routing, activities and mail.thread for notifications, and QWeb reports for printable payslips. Everything is a proper installable module with a real __manifest__.py, upgrade-safe migrations, and no core patching — so your instance stays clean and Odoo upgrades stay boring.
Why build-to-order beats a generic app
Off-the-shelf portal apps assume a generic HR policy. Yours isn't generic — your leave accrual rules, approval chains, payslip visibility, expense categories and attendance geofencing are specific. We build the portal around your configuration, wire it to your leave types and expense products, match your brand, and translate it into your languages. You get source code you own, documentation, admin training, and a support window — not a black-box you can't change.
Works with both Odoo Community and Enterprise. If you're on Enterprise we integrate cleanly with the mobile app and the modern payroll/attendance modules; on Community we build equivalent front-end flows so you get the same self-service outcomes without the Enterprise apps.
What you get
- Complete, installable Odoo module (source code) with a proper __manifest__.py, models, views, security files and QWeb reports — built for your Odoo 17, 18 or 19 version
- Configuration of the portal against your existing HR setup: leave types, expense categories, approval chains, attendance rules and visibility toggles
- Security implementation — ir.model.access.csv plus record rules (ir.rule) verified so portal users can only ever access their own data
- Installation and deployment on your instance (or delivery of the module package for your team to deploy), with a staging validation pass before go-live
- Admin and HR training session plus written documentation covering configuration, approvals and day-to-day operation
- Brand and language customization — portal styled to your identity and translated into your required languages
- A defined post-launch support and bug-fix window, with clear terms for updates and Odoo version compatibility
Who this is for
HR Manager cutting admin load
Drowning in routine requests — address changes, leave forms, payslip re-sends, expense chasing. Wants employees to self-serve their own data so the HR team moves from data entry to approval and strategy, without handing anyone backend access.
Odoo Administrator / IT lead
Owns the Odoo instance and won't tolerate core patches or a fragile app that breaks on the next upgrade. Wants a clean, documented module with real security rules and source code they can read, maintain and hand to auditors.
Operations lead in a deskless workforce
Manages field, retail or factory staff who have no backend Odoo seat. Needs mobile check-in/out, expense capture with receipts and leave requests from a phone, all flowing into the same Odoo records the office team already uses.
How Employee Self-Service Portal Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fits your exact leave / expense / approval policy | Included | Included | Partial support | Not included |
| Employee-only data isolation via record rules (ir.rule) | Included | Partial support | Partial support | Not included |
| Self-service without a paid backend user seat | Included | Included | Partial support | Not included |
| Payslip, attendance, expense and timesheet flows in one portal | Included | Partial support | Partial support | Not included |
| Delivered as clean, upgrade-safe, non-core-patching code you own | Included | Partial support | Partial support | Included |
| Brand + multi-language customization of the portal | Included | Included | Not included | Not included |
| Documentation, admin training and a support window included | Included | Not included | Partial support | Not included |
| Predictable delivery cost and one working week timeline | Included | Not included | Included | Included |
Frequently Asked Questions about Employee Self-Service Portal
How long until the portal is live, and is this an instant download?
This is a build-to-order module, not an instant apps.odoo.com download. After you order, ECOSIRE scopes your HR policies, builds the module against your Odoo 17/18/19 database, tests it on staging, and deploys it. Typical lead time is one working week depending on how many flows (leave, payslips, attendance, expenses, timesheets) you enable and the complexity of your approval chains. You'll get a timeline confirmation at kickoff.
What support and updates do I get after delivery?
Every build includes a defined post-launch support window for bug fixes and adjustments, plus written docs and an admin training session. Because the module is delivered as clean, non-core-patching code, it's upgrade-safe — we can quote a compatibility pass when you move between Odoo 17, 18 and 19. Extended support and enhancement retainers are available if you want us on call long-term.
Does it work on Odoo Community or only Enterprise?
Both. On Enterprise we integrate with the mobile app and the modern payroll and attendance modules. On Community we build equivalent portal flows so you get the same self-service outcomes (leave, payslips, attendance, expenses, timesheets) without needing Enterprise-only apps. Tell us your edition and version at kickoff and we build to match.
Can an employee see other people's salaries, contracts or data?
No — that's the core of the design. We enforce access with ir.model.access.csv and record rules (ir.rule) using domains like [('employee_id.user_id','=',user.id)], so a portal user can only ever read and write their own HR records. Portal users have no backend access and cannot browse org-wide payroll, attendance or contracts.
We already customized our leave and expense workflows. Will this conflict?
That's exactly why it's build-to-order. We wire the portal to your existing leave types, expense categories and approval chains rather than imposing generic ones. Because we extend Odoo natively (portal controllers, compute fields, automated actions) without patching core, your existing customizations and future upgrades stay intact.
Can we integrate the portal with a mobile app, kiosk or badge reader later?
Yes. The module stores everything in standard Odoo models, which are reachable through Odoo's XML-RPC / JSON-RPC API. That means a future kiosk, badge reader or mobile app can read and write the same attendance, leave and expense records. We can scope that integration as a follow-on phase.
Related Modules

Employee Loan & Salary Advance Management
Custom-built Odoo module for staff loans and advances: policies, multi-level approval, and automatic payroll installment deduction.

End-of-Service / Gratuity Settlement
Automate end-of-service gratuity and final settlements in Odoo with configurable equations per labor law. Built, installed and supported by ECOSIRE.

Enterprise Document Cloud Sync
A build-to-order Odoo module that turns every provider you use — SharePoint, OneDrive, Google Drive, Dropbox, and Amazon S3 — into one policy-driven document hub. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19 estate.
Employee Self-Service Portal
Build-to-order Odoo portal where staff update info, request leave, view payslips, clock in/out and file expenses.
- Self-edit personal and employee info — portal users update address, phone, emergency contact and bank details on their own hr.employee record, gated by record rules so no one sees another person's data
- Leave requests from the portal — create hr.leave records against your configured leave types, with an approval activity routed to the manager via mail.thread and server actions
- Live leave balance widget — a compute field (@api.depends) surfaces allocated, taken and remaining days per leave type without exposing the payroll backend
- Payslip access and PDF download — employees view and download their own hr.payslip via a QWeb report, scoped so each user reaches only their payslips
