Real-time biometric punches pushed into Odoo via the ADMS/iClock protocol — no polling, works behind a firewall. ECOSIRE builds & installs it. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Real-time biometric punches pushed into Odoo via the ADMS/iClock protocol — no polling, works behind a firewall. ECOSIRE builds & installs it.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Most biometric integrations for Odoo work by polling — a scheduled job repeatedly asks each ZKTeco, eSSL or Anviz device "any new punches?" over the SDK/TCP. That approach breaks the moment your Odoo server sits behind a firewall or NAT and can't open an outbound connection to every device, and it leaves attendance minutes (or hours) stale between poll cycles.
ADMS/iClock push-protocol listener — a hardened Odoo http.Controller that speaks the native ZKTeco/eSSL/Anviz cdata handshake (GET registration/heartbeat, POST ATTLOG, getrequest command queue)
Real-time punch ingestion with zero polling — each fingerprint/face/card scan is written to hr.attendance the instant the device pushes it, not on a cron cycle
Works behind firewall/NAT — devices connect outbound to a single HTTPS endpoint, so your Odoo server needs no inbound rules to reach each terminal
Multi-vendor support — one listener handles ZKTeco, eSSL and Anviz terminals that implement the ADMS/iClock push standard
adms.device model to register each terminal by serial number, shared key, location and assigned company/branch
Live online/offline device status via an @api.depends computed field driven by the last-seen heartbeat, with a stale-device warning
ADMS Push Attendance flips the direction. ZKTeco/eSSL/Anviz terminals natively support the ADMS (Automatic Data Master Server), also called the iClock/push protocol — the same mechanism ZKTeco's own ZKBioTime server uses. The device initiates HTTP(S) requests outbound to a listener endpoint, streaming each fingerprint, face or card punch the instant it happens. ECOSIRE builds a hardened ADMS listener into your Odoo instance so punches land in hr.attendance in real time, with zero polling and zero inbound firewall rules on the Odoo side.
This is a build-to-order module. It is not an existing apps.odoo.com download — ECOSIRE develops it against your exact Odoo version (17, 18 or 19), your device fleet and your network topology, then installs, configures and supports it. You receive the full module source, the device-side configuration, documentation and a support window.
How it works under the hood. The module ships a controller (http.Controller with auth='none' on the ADMS routes, protected by device serial + shared key) that speaks the iClock handshake: the standard GET /iclock/cdata registration and heartbeat, POST /iclock/cdata attendance-log payloads (ATTLOG, OPERLOG, user/fingerprint templates), and the GET /iclock/getrequest command queue for pushing commands back to the terminal. Incoming punch rows are parsed, de-duplicated and mapped to employees, then written into standard Odoo attendance models — so everything downstream (timesheets, Payroll working schedules, HR reporting, QWeb attendance reports) just works.
Data model & mapping. A new adms.device model (models.Model) stores each terminal's serial number, shared key, location and last-seen heartbeat, with a computed @api.depends-driven online/offline status field. A res.users/hr.employee device-ID map links each device user PIN to the correct employee — auto-created on first unknown punch and queued for review, or matched against a badge/PIN field you nominate. Raw payloads are archived in an adms.raw.log model so nothing is ever silently dropped and every punch is auditable.
Security is first-class. Access is governed by ir.model.access.csv plus record rules so HR sees attendance while the raw ADMS logs stay restricted to administrators. Device endpoints authenticate on serial + shared secret (and optionally an IP allowlist / mutual-TLS behind your reverse proxy), never on an Odoo session. Because devices talk out to Odoo over 443, you expose one HTTPS endpoint instead of poking holes to reach every terminal.
Automation & extensibility. Odoo automated actions / server actions can fire on each punch — flag missing check-outs, notify a supervisor on a late arrival, or trigger a Payroll recompute. Everything the module writes is reachable over Odoo's XML-RPC / JSON-RPC API, so external dashboards or a parent HRMS can read attendance without touching the devices. It runs on Community or Enterprise; Enterprise adds tighter Payroll/Planning integration where you have it.
ECOSIRE delivers the whole thing production-ready: listener, device provisioning, employee mapping, monitoring and handover training — typically in 2–4 weeks depending on fleet size and network review.
Runs Odoo on a server that can't open outbound SDK connections to every biometric terminal. The ADMS push model lets devices dial home to one HTTPS endpoint, so attendance flows without poking firewall holes or standing up a separate ZKBioTime middleware box.
Wants punches visible in Odoo the moment employees badge in — for live floor headcount, accurate timesheets and clean Payroll — instead of waiting on a polling cron or a manual daily export from the device software.
Manages ZKTeco, eSSL and Anviz terminals across branches and needs them all reporting into one Odoo instance, each identified by serial, with per-site mapping and a clear online/offline view of which clocks are alive.
Buy the license on ecosire.com and download the ADMS Push Attendance (ZKTeco/eSSL/Anviz) module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for ADMS Push Attendance (ZKTeco/eSSL/Anviz), and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Data direction (works behind firewall/NAT) | Device pushes outbound to one Odoo HTTPS endpoint — no inbound rules needed | Depends on your build; done right it can, but you own the design | Most poll the device via SDK/TCP — needs Odoo to reach each terminal | |
| Real-time vs polling | Real-time — punch written to hr.attendance the instant the device pushes | Real-time only if you implement the ADMS listener yourself | Usually cron-poll — attendance lags between cycles | |
| Multi-vendor (ZKTeco/eSSL/Anviz push) | One listener for all three via the shared ADMS/iClock standard | Whatever you scope and test — extra effort per vendor | Often single-vendor or single-SDK | |
| Fit to your Odoo version & topology | Built to order for Odoo 17/18/19, your edition, fleet and network | Fully bespoke — but you build, test and maintain it | Generic build; may lag new Odoo versions | |
| Security model | ir.model.access.csv + record rules; endpoints auth on serial+key, optional IP allowlist/TLS | As strong as you make it | Varies; raw logs sometimes exposed to all HR users | |
| Auditability of dropped/unknown punches | Raw payloads archived in adms.raw.log; unknown PINs queued, never lost | Only if you build archival + review yourself | Frequently silently drops unmapped punches | |
| Standard-model output (Timesheets/Payroll/reports) | Writes to standard hr.attendance — downstream just works | Yours to wire | Sometimes writes to a private table needing extra glue | |
| Delivery & support | 2–4 wk build, install, training + support window; source handed over | Your team's time and timeline; you support it | Instant download, self-install, forum/limited vendor support |
This is a build-to-order module, not an apps.odoo.com download — there is nothing to install instantly. After purchase ECOSIRE builds it against your Odoo version, device fleet and network, then installs and configures it. Typical delivery is 2–4 weeks, driven mostly by fleet size and a short network/topology review. We confirm a firm timeline with you at kickoff.
Every build includes a defined post-launch support window (typically 30 days) for bug fixes and configuration tuning once devices are live. Because you receive the full module source, you own it and can maintain it yourself afterward. We also offer optional ongoing support/maintenance retainers and paid upgrades to keep the module aligned as you move across Odoo 17, 18 and 19.
Any ZKTeco, eSSL or Anviz terminal that supports the ADMS / iClock push protocol (the same 'push to a master server' mode ZKTeco's ZKBioTime uses). The device makes outbound HTTP(S) calls to Odoo's listener — GET for registration/heartbeat/commands and POST for attendance logs. If you're unsure whether a specific model supports push mode, send us the model numbers and we'll confirm before you buy.
No inbound rules toward your devices are needed. In the ADMS push model the terminals initiate the connection outbound to a single Odoo HTTPS endpoint (443), which is why it works behind a firewall or NAT where polling-based SDK integrations fail. On the Odoo side you expose one secured endpoint, protected by device serial + shared key and, optionally, an IP allowlist or TLS at your reverse proxy.
Each device user PIN is mapped to an hr.employee. Known PINs write straight to attendance; an unknown PIN doesn't get lost — it creates a draft mapping queued for HR to confirm, and the raw payload is archived in the adms.raw.log model so it's fully auditable. You choose whether to match on a badge/PIN field or approve mappings manually.
Yes — the module writes to standard Odoo attendance models rather than a private silo, so Timesheets, Payroll working schedules, HR reporting and QWeb attendance reports consume the data with no extra glue. Everything is also reachable over XML-RPC / JSON-RPC for external dashboards or a parent HRMS.
It runs on both, across Odoo 17, 18 and 19. The ADMS listener, device model and attendance ingestion are edition-independent. Where you run Enterprise, we wire the tighter Payroll/Planning integrations that edition provides; on Community you still get full real-time attendance capture.
Real-time biometric punches pushed into Odoo via the ADMS/iClock protocol — no polling, works behind a firewall. ECOSIRE builds & installs it.