Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Attendance Migration v 18.0
  4. Sales Conditions FAQ

Attendance Migration

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 18.0 Third Party 45
Download for v 18.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Versions 16.0 17.0 18.0 19.0
  • Description
  • Manifest
ERP Heritage · HR Platform
Switching tool for Odoo 18 attendance

Attendance Migration for Odoo 18

Move your people and their punch history off any biometric or punch-clock system into Odoo 18, from plain CSV, with a dry run before anything is written.

Free · LGPL-3FreeLGPL-3v1.0.0
Employee CSV
Attendance CSV
Dry run
Match by email or name
Per-row error log

Why this module

Attendance Migration for Odoo 18

01 / SAFE

Dry run before you commit

Every import defaults to dry run. The wizard reports exactly what it would create, update, or skip, row by row, and writes nothing to the database. You read the result, fix the source CSV, and only then run it for real.

02 / NEUTRAL

Any system that exports CSV

The column mapping is fixed and documented on the wizard, so the operator does not need a per-vendor adapter and there is no live link to the old system. If the incumbent biometric or punch-clock platform can produce a CSV, it can feed this importer.

03 / HONEST

It tells you what it will not do

Face templates do not migrate because recognition models produce incompatible embeddings, so re-enrolment is required. Prior consent is not imported by design. The module states these limits up front rather than discovering them mid-cutover.

Day in the life

An HR admin cuts over from an old punch-clock system in an afternoon.

They export the staff list and the last year of punches as two CSV files. In the employee wizard they leave dry run on, upload the staff file, and read the preview: forty rows would be created, eight matched by work email would be updated, two skipped. They correct a duplicate name in the source, run it live, and the result log confirms every row. Then the attendance wizard: matched by email first and name as fallback, with skip unknown employees on so a few orphan rows are logged and set aside rather than aborting the run. A check-out that lands before its check-in is caught and reported as an error, not written. One open attendance with no check-out comes across as an open record. The whole cutover is two wizards and two result logs, with re-import available any time the source needs a fix.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

DRY RUN

Dry run is the default on both wizards. It walks every row, resolves the employee, builds the write values, and logs what it would do, but the create and write calls are skipped entirely. Nothing reaches the database until you turn dry run off.

PER-ROW ISOLATION

Each row is processed inside its own try and except. A bad row, an unparseable date, an empty name, raises an error that is counted and written to the log, while every other row in the file still imports. One malformed line does not abort the run.

UPDATE WITHOUT DATA LOSS

In update mode the employee importer only writes non-empty CSV values, so a partial source file updating a job title cannot blow away an existing email or department with blanks. Empty cells are left untouched on the matched record.

UNKNOWN EMPLOYEE, TWO MODES

Attendance rows whose employee cannot be matched are either logged and skipped (skip unknown employees on) or made to abort the row as an error (off), so you choose between a forgiving import and a strict one that surfaces every gap.

CHECK-OUT ORDERING GUARD

A check-out that is not strictly after its check-in is rejected as an error for that row and no attendance is created, so reversed or duplicated timestamps from the old system do not become impossible records.

MULTI-COMPANY SITE SCOPING

A default kiosk site is resolved by code within the current company only, and an unrecognised site code is ignored rather than blocking the import, so the row still creates the employee and just leaves the default site unset.

MATCH BY EMAIL THEN NAME

Both wizards match case-insensitively, email first then full name as a fallback, using exact ilike comparison rather than fuzzy matching, so a renamed employee is still found by their work email and accidental partial matches are avoided.

HEADER AND ENCODING VALIDATION

Missing required columns (check_in, or name, or any employee match key) and undecodable bytes raise a clear up-front error naming the columns found and the encoding tried, so a malformed export fails loudly before any row is touched.

What is inside

Built to do the job, end to end.

  • Employee CSV importer. A wizard that reads a CSV of staff and matches existing hr.employee rows by work email or full name, creates rows that do not exist, and maps name, work email, job title, department (created if missing), an optional kiosk PIN, and a default kiosk site resolved by code in the current company. A default analytic account is set only when the optional jobcost field is present.
  • Attendance history importer. A second wizard that reads a CSV of punches, matches each row to an employee by email then name, and creates hr.attendance records with check-in and check-out timestamps. Empty check-out is allowed as an open record. Optional analytic and project per row are wired only when those fields exist on hr.attendance.
  • Configurable parsing. Both wizards expose encoding (UTF-8, UTF-8 with BOM, Latin-1), delimiter (comma, semicolon, tab), and a documented column reference on the form. Datetimes are parsed across six common formats including ISO with a space or a T separator and day-first dates.
  • Result log and counts. Every run, dry or live, writes a summary line and a per-row log into a read-only result field, with separate counters for created, updated, skipped, and error rows, so the operator can correct the source CSV and re-import.
  • Admin-scoped access. Both wizard models are reachable only through an admin-gated Migration menu under the attendance configuration, with create and write granted to the HR admin and manager roles defined in eh_hr_attendance_base.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is a one-time switching tool, not a connector. There is no live API integration with the incumbent system and no scheduled sync; you import from exported CSV files.
  • Face recognition templates do not migrate. Different recognition models produce incompatible embeddings, so employees must re-enrol at the new system. Plan for re-enrolment.
  • Prior consent is not imported by design. Consent must be granted fresh at the new system after the employee reads the new privacy notice; the module does not accept claimed prior consent.
  • Column mapping is fixed and documented on each wizard rather than freely remappable in the UI; your source CSV must use, or be renamed to, the recognised headers.
  • Employee matching is exact and case-insensitive on email then name, not fuzzy. Inconsistent spellings between systems will not auto-match and will create new rows unless reconciled first.
  • Department is the only related record auto-created on import. Job title and kiosk site must already resolve; analytic, project, and the default analytic account map only when those optional fields are installed.
  • Requires eh_hr_attendance_base and the standard hr_attendance module. It targets Odoo 18 Community.
Search

attendance migration odoo 18, hr_attendance csv import, employee csv import odoo, biometric attendance switch, punch clock data migration, time and attendance migration, kiosk pin import, attendance history importer, odoo 18 community hr, dry run csv import

Work with ERP Heritage

Need this fitted to the way you work?

ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

العربية简体中文繁體中文NederlandsFrançaisDeutschहिन्दीBahasa IndonesiaItaliano日本語한국어PolskiPortuguês (Brasil)РусскийEspañolSvenskaไทยTürkçeTiếng Việt
More from ERP Heritage

Modules teams pair with this one.

Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.

USD 9
Employment Hero Country Base

Shared foundation for the ERP Heritage Employment Hero country packs

USD 29
Employment Hero AU Payroll

Australian payroll context for the Employment Hero work entry sync

USD 19
Employment Hero Onboarding

Bring Employment Hero onboarding workflows, employee goals and contractor flags into Odoo Community as real recor...

USD 349
France e-Invoicing

End to end French B2B and B2G electronic invoicing for the DGFiP reform, generating Factur-X PDF/A-3 with embedde...

USD 34
ZainCash Payment Provider

Accept ZainCash wallet payments in Iraq at your Odoo checkout, on the ZainCash Payment Gateway v2 with OAuth2, re...

USD 39
Employment Hero ATS

Sync Employment Hero ATS recruitment job openings into the standard Odoo Recruitment app, mapping each opening on...

ERP Heritage

v1.0.0 · LGPL-3 · Odoo 18 Community

Developed by Odoo Implementation Australia • LinkedIn

Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Compatibility
Lines of code 1991
Technical Name eh_hr_attendance_migrate
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with