Skip to content

[16.0][ADD] hr_attendance_idsecure: iDSecure (ControliD) attendance integration - #262

Open
marcos-mendez wants to merge 1 commit into
OCA:16.0from
popsolutions:16.0-add-hr_attendance_idsecure
Open

[16.0][ADD] hr_attendance_idsecure: iDSecure (ControliD) attendance integration#262
marcos-mendez wants to merge 1 commit into
OCA:16.0from
popsolutions:16.0-add-hr_attendance_idsecure

Conversation

@marcos-mendez

Copy link
Copy Markdown

Automatic attendance from ControliD iDSecure access control turnstiles.

Features:

  • Cron-based polling of iDSecure REST API
  • Company mapping: ControliD groups to Odoo companies + employee types
  • Visitor/supplier filtering
  • Employee matching by iDSecure ID, barcode, or name
  • Full audit trail of raw access events
  • Employee mapping wizard for bulk assignment
  • No external middleware required

FU RV

@marcos-mendez
marcos-mendez force-pushed the 16.0-add-hr_attendance_idsecure branch 7 times, most recently from 13f9ec0 to 61296d7 Compare March 12, 2026 12:45
This was referenced Mar 14, 2026
This was referenced Mar 16, 2026
@marcos-mendez
marcos-mendez force-pushed the 16.0-add-hr_attendance_idsecure branch from ece6f2c to d498f7e Compare August 21, 2026 16:29
@OCA-git-bot OCA-git-bot added series:16.0 mod:hr_attendance_idsecure Module hr_attendance_idsecure labels Aug 21, 2026
@marcos-mendez marcos-mendez changed the title [16.0][ADD] Hr_attendance_idsecure: iDSecure (ControliD) attendance integration [16.0][ADD] hr_attendance_idsecure: iDSecure (ControliD) attendance integration Aug 21, 2026
@marcos-mendez
marcos-mendez force-pushed the 16.0-add-hr_attendance_idsecure branch 2 times, most recently from d86535d to 8613b63 Compare August 21, 2026 16:47
…tion

Imports access events from a ControliD iDSecure appliance and turns them
into hr.attendance records.

Features:

* polls the appliance on a cron and pairs entry/exit events into
  attendances, inferring the direction from the open shift when the device
  does not report it reliably;
* maps iDSecure groups to Odoo companies, so a single turnstile can feed
  several companies and skip the ones that must not be imported
  (visitors, contractors);
* a wizard to link iDSecure users that have no employee yet, suggesting a
  match by name, and another to re-import a date range from the appliance;
* posts to the employee chatter when a punch cannot be recorded, so HR
  sees the gap instead of losing it silently;
* Odoo's own overlap errors are treated as success, since they mean the
  attendance already exists — but a real absence error is still surfaced.

The appliance reports wall-clock time with no offset on its report
endpoint, so the device timezone is a required field and the value is
converted to UTC before storing. The monitor endpoint returns a .NET
epoch, which is absolute and needs no conversion.

Events coming from the report endpoint carry no idLog, so uniqueness is
enforced by a partial index that only applies when idLog is set.

Tested with 112 unit tests, 95% coverage. The appliance is always mocked:
no test reaches a real turnstile.
@marcos-mendez
marcos-mendez force-pushed the 16.0-add-hr_attendance_idsecure branch from 8613b63 to b253081 Compare August 21, 2026 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mod:hr_attendance_idsecure Module hr_attendance_idsecure series:16.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants