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 17.0
  4. Sales Conditions FAQ

Attendance Migration

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 17.0 Third Party 45
Download for v 17.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
ERP Heritage Attendance Suite

Attendance Migration

Two vendor neutral CSV importers that move employees and attendance history into Odoo 17, with a dry run and a per row error log before anything commits.

Free · LGPL-3Odoo 17 Communityv1.0.0v1.0.0
Two CSV importers
True dry run
Per row error log
Vendor neutral
Match by email or name

Why this module

Attendance Migration

THE PROBLEM

A weekend of manual keying becomes a payroll error noticed three cycles later

Leaving an incumbent time and attendance system usually means a one off ETL or hand keying employees and months of punches. Both are slow, and both surface the error long after the data is live. This module turns the export into a repeatable, previewable import.

THE APPROACH

Map on the wizard, dry run, read the log, then commit

Every field maps from a named CSV column on the wizard itself, so there is no per vendor adapter to write. Dry run returns a per row preview with zero writes. Commit returns the same log with created, updated, and skipped counts and a reason for every row that did not land.

THE HONESTY

It tells you plainly what cannot be carried across

Face templates from the previous vendor are mathematically incompatible with the new recogniser, so re enrolment is required at cutover. There is no live connector, and prior consent is not imported because consent belongs to the new privacy notice. Stated up front, not discovered after purchase.

Day in the life

Export. Map. Dry run. Read the log. Commit. Last quarter of attendance live by smoko.

The implementer exports two CSVs from the old system: an employees file with names, emails, kiosk PINs, departments, and a default site code; an attendance history file with check in and check out per row. They open the employee wizard, attach the file, set the encoding and delimiter to match the export, choose match by email then name, and leave dry run ticked. The log reports what would be created versus updated and flags one row with a missing name. They fix the source line, untick dry run, and run again. Then the same loop for attendance history, where one unknown employee is skipped and logged rather than aborting the run. By late morning the new database knows who is who and what they did last quarter.

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 ISOLATION

Dry run walks every row and produces the full preview log, but performs no create or write at all. The database is untouched until the operator unticks dry run and reruns, confirmed by tests that assert zero rows exist after a dry run.

PER ROW ERROR FENCING

Each row runs inside its own try block. A row with a missing name or an unparseable date is counted as an error and logged with its reason, while every other row in the file still imports. One bad line never aborts the run.

STRICT VS LENIENT UNKNOWNS

The attendance importer offers a choice: skip unknown employees and log them, or abort hard on the first unmatched row. The operator picks the posture that fits the cutover, and the count columns reflect whichever was chosen.

NON DESTRUCTIVE UPDATE

When updating a matched employee, empty CSV cells are skipped rather than written, so a partial column set cannot blank out existing data. Update mode itself can also be turned off to skip every matched row outright.

TEMPORAL INTEGRITY

A check out that is not strictly after its check in is rejected at the row level with no attendance created, and several datetime layouts including ISO with a T separator and day first formats are parsed without a preconversion step.

MULTI COMPANY SITE SCOPING

A default site code is resolved only against kiosk sites in the active company, matching the unique per company site code constraint, so an import cannot bind an employee to a site belonging to another company.

GRACEFUL OPTIONAL FIELDS

Analytic, project, and default analytic columns are written only when the job costing module that defines those fields is installed and the named record resolves. A missing optional reference is ignored and never blocks the row.

What is inside

Built to do the job, end to end.

  • Employee master importer. Matches hr.employee by work email, by full name, or email then name. Creates rows that do not exist, auto creates a department by name, and sets job title, kiosk PIN, and default kiosk site where the CSV provides them. Default analytic is set only when the job costing module that defines that employee field is installed.
  • Attendance history importer. Matches employees by email then name and creates hr.attendance rows with check in and optional check out. Open attendances are allowed by leaving check out blank. Analytic and project per row are populated only when the job costing module that defines those attendance fields is present.
  • Configurable parsing. Encoding (UTF-8, UTF-8 with BOM, Latin-1), delimiter (comma, semicolon, tab), and match strategy are all selected on the wizard. Headers are normalised case insensitively, so column names from different exports line up without renaming.
  • Result log and counters. Every run returns a Text result that opens with DRY RUN or COMMITTED and the created, updated, skipped, and error tallies, followed by one line per row. The four counts are also exposed as integer fields on the wizard form.
  • Admin scoped access. Both wizards are reachable only through a Migration menu under the attendance configuration root, restricted to the suite admin group, with create and write access granted to the attendance admin and manager groups via the shipped access rules.

Honest about the edges

What this does not do, so nothing surprises you.

  • No live API connector to the previous system. This is a one time CSV switching tool, run after the incumbent system has exported its data.
  • Face recognition templates cannot be migrated. Different recognisers produce incompatible embeddings, so every face must be re enrolled at cutover.
  • Prior consent is not imported. Consent must be granted again at the new system against the new privacy notice.
  • Default analytic on employees and analytic or project on attendance are written only when the job costing module that defines those fields is installed. There is no task column on this branch.
  • Site resolution is scoped to the active company only, so a cross company import must be run per company.
  • Matching is exact and case insensitive on email or name. Duplicate or near duplicate names need cleaning in the source CSV before import.
  • There is no scheduled or background job. Each import is an operator driven, foreground wizard run.
Search

attendance migration odoo, hr_attendance csv import, employee csv import odoo, time and attendance migration, biometric attendance switching tool, punch clock data migration, attendance history import, odoo 17 attendance import, T&A migration, vendor neutral attendance importer, import check in check out odoo, kiosk attendance migration

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 17 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