- Home
- Apps
- SaaS Tools
- User Activity & Login Audit Monitor
Illustrative previewA build-to-order Odoo module that logs every login, session,
IP, and record-level action into a searchable audit trail with suspicious-activity alerts and a per-user activity dashboard.
ECOSIRE scopes, builds, installs, and supports it for your database.
What is User Activity & Login Audit Monitor?
A build-to-order Odoo module that logs every login, session, IP, and record-level action into a searchable audit trail with suspicious-activity alerts and a per-user activity dashboard. ECOSIRE scopes, builds, installs, and supports it for your database. 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
Most ERP security incidents are invisible until it is too late. Odoo core keeps only a thin trail of who touched what: res.users has login_date, mail.thread chatter records some field changes on tracked models, and the server log can hold auth lines if you configure it — but there is no unified, in-database record of failed login attempts, the IP and device behind each session, or which user read (not just wrote) a sensitive res.partner, account.move, or hr.payslip. When an auditor asks "who accessed this customer's data on March 3rd, and from where?", the honest answer with a stock database is usually "we can't tell you." That gap fails SOC 2, ISO 27001, GDPR/HIPAA access-log requirements, and internal segregation-of-duties reviews.
We build a dedicated audit module that closes that gap. At its core is a custom model (ecosire.audit.log) written on every relevant event, plus a lightweight ecosire.login.attempt model. Authentication events are captured by overriding res.users._check_credentials / the auth entry points so both successful logins and failed attempts are recorded with timestamp, resolved IP (from the HTTP request/X-Forwarded-For), user agent, and session id — failed attempts are logged even when no user session is created, which core cannot do. Record-level activity is captured by extending the ORM (create, write, unlink, and optionally read) on the specific models you nominate during scoping, so we log high-value objects without drowning the database in noise. Every entry is immutable to end users and enforced through ir.model.access.csv plus record rules that restrict visibility to a dedicated Audit Manager group.
On top of the log we build the analytics and controls your compliance team actually uses: a per-user activity dashboard (OWL/JS views over read-only server data), filtered and grouped list/pivot views, and QWeb PDF reports for period access reviews you can hand to an auditor. Suspicious-activity detection runs as Odoo automated actions / scheduled ir.cron jobs — configurable rules such as N failed logins in M minutes, login from a new IP or outside business hours, or bulk export/read of a protected model — that raise an in-app activity, send an email, or flag the session. Everything is reachable over the standard XML-RPC/JSON-RPC API, so a SIEM or external monitoring stack can pull the audit stream on a schedule.
Because this is build-to-order, you are not downloading a generic binary and hoping it fits. After a short scoping call we confirm exactly which models are audited, your retention and alerting rules, and your Community vs Enterprise baseline (the module targets Odoo 17.0/18.0/19.0; Enterprise-only hooks are used only if you run Enterprise). We build against your version, test on a staging clone, run UAT with you, then install on production with a rollback plan. Typical delivery is one working week from confirmed scope, and you receive the full source and git repository so nothing is locked behind us.
What you get
- Installable module source code built and pinned to your exact Odoo version (17.0 / 18.0 / 19.0), Community or Enterprise
- Installation and configuration on your environment: audited-model selection, alert rules, groups, and retention settings
- Technical documentation: model/field reference, ORM override points, security (`ir.model.access.csv` + record rules), and cron/automated-action config
- End-user and Audit Manager guide plus a live training session for your security/compliance team
- UAT on a staging clone of your database with a documented rollback plan before any production change
- Post-go-live support window for bug fixes and configuration adjustments
- Full git repository handover — no code locked behind ECOSIRE
- Sample QWeb access-review report and pre-seeded suspicious-activity rules you can tune
Who this is for
Compliance & Security Administrator
Owns SOC 2 / ISO 27001 / GDPR access-log evidence and needs a defensible, immutable record of who logged in, from where, and what protected data they touched — exportable for auditors.
ERP System Administrator
Runs the Odoo instance and wants alerts on brute-force logins, new-IP or off-hours access, and concurrent sessions, without wading through raw server logs or hand-writing SQL.
Internal Auditor / Risk Manager
Performs periodic access reviews and segregation-of-duties checks and needs pivotable activity data and per-user PDF reports scoped to a date range and model set.
IT Security / SOC Engineer
Wants the Odoo audit stream pulled into an external SIEM over XML-RPC/JSON-RPC so ERP events sit alongside the rest of the monitoring stack.
How User Activity & Login Audit Monitor Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Failed-login logging | Captured with IP, device, and timestamp even when no session starts | Possible, but you build the auth override yourself | Often only successful logins tracked | Not recorded in-database |
| Record read-access logging | Optional per-model read capture on the sensitive models you choose | Feasible but needs careful ORM work to avoid slowdowns | Rarely offered; usually write-only | None — reads leave no trace |
| IP & session tracking | Resolved IP, user agent, and session id correlated per login | Depends entirely on your implementation | Varies; often partial | Only `login_date` on `res.users` |
| Tamper resistance | Immutable via access rules + record rules; Audit Manager group only | Only as strong as your own security design | Access controls vary by vendor | Chatter can be pruned; no dedicated protection |
| Suspicious-activity alerts | Configurable rules via automated actions + `ir.cron` with email/in-app alerts | Buildable but time-consuming to design and tune | Sometimes fixed, non-configurable rules | None |
| Compliance reporting | QWeb PDF access-review reports + pivot views per user/model/date | You design and build the reports | Basic list export at best | No audit-oriented reports |
| Version & environment fit | Built and tested against your exact 17/18/19, Community or Enterprise | Fits, but you own all version maintenance | May lag Odoo releases or assume Enterprise | N/A |
| Support & source ownership | Post-go-live support window + full git repo handover | You maintain everything | Vendor-locked binary; support varies | Community support only |
Frequently Asked Questions about User Activity & Login Audit Monitor
How long does delivery take?
Because this is build-to-order, we build it for your database rather than shipping a generic binary. Typical delivery is one working week from confirmed scope. The clock starts once we've agreed which models are audited, your alert and retention rules, and your Odoo version — smaller scopes land sooner, broad read-logging across many models sits toward the upper end.
Does it work on Odoo Community, or only Enterprise?
It works on Community. The core audit log, login/failed-attempt capture, record-action history, alerts, dashboard, and reports are all built with standard framework features (ORM overrides, `ir.model.access.csv`, record rules, `ir.cron`, QWeb, OWL). Enterprise-only hooks are used only if you run Enterprise. We target Odoo 17.0, 18.0, and 19.0.
Will read-access logging slow down my database?
Read logging is the heaviest event type, so we don't apply it blanket. During scoping we nominate only sensitive models (e.g. `res.partner`, `account.move`, `hr.payslip`) for read capture, keep write/login logging everywhere it's cheap, and add a scheduled purge/archive job plus indexes so the audit table stays fast. We load-test on staging before go-live.
Can users delete or edit the audit trail to cover their tracks?
No. Audit entries are immutable for normal users — `ir.model.access.csv` grants no write/unlink on the log model, and record rules restrict even read access to a dedicated Audit Manager group. Only the scheduled retention job removes aged records, and that behavior is documented and configurable.
How do the suspicious-activity alerts work?
Detection runs as Odoo automated actions and `ir.cron` jobs against configurable thresholds — for example N failed logins in M minutes, a login from a new IP or outside business hours, or bulk read/export of a protected model. When a rule fires it can raise an in-app activity, send a templated email, or flag the session. You tune the rules; we seed sensible defaults.
Can I feed this into my existing SIEM or monitoring tools?
Yes. The audit stream is exposed over Odoo's standard XML-RPC/JSON-RPC API, so an external SIEM, Splunk-style collector, or custom job can pull events on a schedule and correlate ERP activity with the rest of your security stack. We document the endpoints and a sample pull during handover.
What about support and updates after go-live?
Every build includes a post-go-live support window for bug fixes and configuration tweaks, and you receive the full git repository so your team can maintain it. For future Odoo version upgrades (e.g. moving 18.0 to 19.0) or new audited models and rules, we scope that as a follow-on engagement.
Related Modules

Unified Team Inbox for Odoo
A shared team inbox for Odoo — one collaborative view over your info@/support@/sales@ mailboxes with assignment, canned replies, snooze and real-time collision detection. Built to order by ECOSIRE, installed and supported after you request a quotation.

UPI Dynamic QR Payment for Odoo
Auto-generate dynamic UPI QR codes at Odoo checkout and POS with amount, VPA and order reference pre-encoded for instant collection.

Vendor Post-Dated Cheque (PDC) Management
Manage outgoing vendor post-dated cheques in Odoo with PDC payment entries, clearing journals, due-date alerts and full cheque lifecycle tracking.

Vietnam E-Invoice Compliance
Issue Vietnamese e-invoices directly from Odoo, with provider API transmission, invoice-code handling, tax mapping from your own master data, and a full correction and archiving trail. Built to order by ECOSIRE for Odoo 17.0, 18.0 or 19.0.
User Activity & Login Audit Monitor
A build-to-order Odoo module that logs every login, session, IP, and record-level action into a searchable audit trail with suspicious-activity alerts and a per-user activity dashboard. ECOSIRE scopes, builds, installs, and supports it for your database.
- Custom `ecosire.audit.log` model written on create/write/unlink (and optional read) for the specific models you nominate during scoping
- Login, logout, and failed-attempt logging via overridden auth entry points (`_check_credentials`) — failures captured even when no session is created
- Per-event capture of resolved client IP (request / `X-Forwarded-For`), user agent, session id, and precise UTC timestamp
- Record-level action history with old-vs-new field values on tracked models, stored independently of `mail.thread` chatter