Bulk Import

Adding employees one at a time is practical for small teams, but organizations onboarding dozens or hundreds of employees need a faster method. Udyamo HRMS provides a bulk import feature through the ImportsController that supports CSV and Excel file uploads with preview, validation, and error handling. This chapter covers importing employees, attendance records, and leave data.


Prerequisites

Required: Before importing employees in bulk, ensure the following are configured:

  • Departments and Designations exist and match the values you will use in the import file
  • Offices are set up with correct names
  • Your import file uses the exact department, designation, and office names as configured in the system

  1. From the sidebar, click Employees.
  2. Click the Import button in the top-right area of the Employees list page.
  3. The Import page opens, displaying options for downloading templates and uploading files.

Import page navigation


Import Types

Udyamo HRMS supports importing several types of data:

Import TypeDescriptionTemplate Available
Employee ImportBulk-create employee records with personal details, department, designation, office, CTC, and moreYes
Attendance ImportUpload historical or corrected attendance records (date, check-in, check-out)Yes
Leave ImportImport leave balances or historical leave recordsYes

Employee Import — Step by Step

Step 1: Download the Import Template

  1. On the Import page, select Employee Import as the import type.
  2. Click Download Template.
  3. A CSV or Excel file downloads to your computer with pre-defined column headers.

Tip: Always use the downloaded template rather than creating your own file. The template contains the exact column headers the system expects, and using different headers will cause the import to fail.

Step 2: Understanding the Template Columns

The employee import template contains the following columns:

ColumnRequiredDescriptionExample
first_nameYesEmployee's first namePriya
last_nameYesEmployee's last nameSharma
emailYesUnique work email[email protected]
emp_idYesUnique employee IDEMP-001
departmentYesMust match an existing department name exactlyEngineering
designationYesMust match an existing designation name under the departmentSoftware Engineer
officeYesMust match an existing office name exactlyMumbai HQ
date_of_joiningYesFormat: YYYY-MM-DD2025-04-01
worker_typeYesemployee or contractoremployee
annual_ctcYesAnnual CTC in INR (numeric, no commas)600000
statusNoactive, inactive, or terminated. Defaults to activeactive
date_of_birthNoFormat: YYYY-MM-DD1990-05-15
genderNomale, female, or otherfemale
aadhar_numberNo12-digit Aadhar number123456789012
panNo10-character PANABCDE1234F
phoneNoPhone number with country code+919876543210
bank_nameNoName of the bankState Bank of India
account_numberNoBank account number12345678901234
ifsc_codeNo11-character IFSC codeSBIN0001234
epf_numberNoEPF member IDMH/BOM/12345/000/0001234
esic_numberNo17-digit ESIC number12345678901234567
uan_numberNo12-digit UAN123456789012

Step 3: Fill In Employee Data

  1. Open the downloaded template in a spreadsheet application (Excel, Google Sheets, LibreOffice Calc).
  2. Enter one employee per row.
  3. Ensure all required fields are filled.
  4. Save the file in CSV (.csv) or Excel (.xlsx) format.

Warning: Do not modify, rename, or delete the header row. The system uses the exact column headers to map data to fields.

Filled import template

Step 4: Upload the File

  1. On the Import page, click Choose File or drag and drop the file into the upload area.
  2. Select your prepared CSV or Excel file.
  3. Click Upload.

Step 5: Preview Before Import

After uploading, the ImportsController parses the file and presents a preview screen. This is a critical step that shows you exactly what will be imported.

The preview displays:

ElementDescription
Total rowsNumber of employee records found in the file
Valid rowsRows that passed all validation checks and are ready to import
Rows with errorsRows that have validation issues and will be skipped unless corrected
Data tableA scrollable table showing each row with its parsed values
Error indicatorsRed highlighting or error icons on rows/cells with issues

Import preview screen

Tip: Review the preview carefully. Pay special attention to rows highlighted with errors. This is your last chance to catch issues before records are created.

Step 6: Review and Resolve Errors

If any rows have errors, the preview screen displays the specific error for each problematic row.

Common validation errors:

ErrorCauseFix
"Email already exists"An employee with this email is already in the systemRemove the duplicate row or use a different email
"Employee ID already exists"The emp_id is already assigned to another employeeAssign a unique employee ID
"Department not found"The department name does not match any existing departmentCheck the spelling and capitalization; create the department if needed
"Designation not found"The designation does not exist under the specified departmentVerify the designation exists under the correct department
"Office not found"The office name does not match any existing officeCheck the spelling; create the office if needed
"Invalid date format"The date is not in YYYY-MM-DD formatCorrect the date format
"Annual CTC is not a number"The CTC field contains non-numeric characters (commas, currency symbols)Remove commas and symbols; enter only digits
"Invalid worker type"The worker_type value is not employee or contractorUse one of the two accepted values

You have two options:

  1. Proceed with valid rows only — Click Import to import all valid rows and skip error rows.
  2. Fix and re-upload — Download the error report, correct the issues in your file, and upload again.

Step 7: Confirm and Execute Import

  1. After reviewing the preview, click the Import or Confirm Import button.
  2. The system processes the import in a batch.
  3. A progress indicator shows the import status.
  4. Upon completion, a summary displays:
    • Number of employees successfully created
    • Number of rows skipped due to errors
    • Link to download the error report (if any errors occurred)

Warning: The import process creates employee records and queues invitation emails for each new employee. Ensure you are ready for employees to receive invitations before importing.


Attendance Import

When to Use Attendance Import

  • Migrating historical attendance data from a previous system
  • Correcting attendance records in bulk
  • Uploading attendance from an external time-tracking device that does not integrate directly

Attendance Import Template Columns

ColumnRequiredDescriptionFormat
emp_idYesEmployee ID (must match an existing employee)EMP-001
dateYesAttendance dateYYYY-MM-DD
check_in_timeYesCheck-in timeHH:MM (24-hour)
check_out_timeNoCheck-out timeHH:MM (24-hour)
working_hourNoTotal working hours (auto-calculated if check-out is provided)Decimal (e.g., 8.5)

Steps

  1. On the Import page, select Attendance Import.
  2. Click Download Template to get the attendance import template.
  3. Fill in attendance records — one row per employee per date.
  4. Upload the file.
  5. Review the preview. The system validates that each emp_id exists and dates are valid.
  6. Confirm the import.

Warning: Importing attendance for a date that already has a record for the same employee will either update the existing record or create a duplicate, depending on your system settings. Verify the behavior before importing to avoid duplicates.


Leave Import

When to Use Leave Import

  • Migrating leave balances from a previous system at the start of a fiscal year
  • Importing historical leave records for reporting continuity

Leave Import Template Columns

ColumnRequiredDescriptionFormat
emp_idYesEmployee IDEMP-001
leave_categoryYesMust match an existing leave category nameEarned Leave
from_dateYesLeave start dateYYYY-MM-DD
to_dateYesLeave end dateYYYY-MM-DD
leave_typeNofull_day or half_dayfull_day
reasonNoReason for leavePersonal

Steps

  1. On the Import page, select Leave Import.
  2. Download the template.
  3. Fill in leave records.
  4. Upload and preview.
  5. Resolve any errors (e.g., leave category name mismatches, invalid employee IDs).
  6. Confirm the import.

Tips for Clean Data

Following these practices minimizes errors during import:

  1. Use exact names — Department, designation, office, and leave category names must match the system configuration exactly, including capitalization and spacing.
  2. Consistent date format — Always use YYYY-MM-DD. Avoid regional date formats like DD/MM/YYYY or MM/DD/YYYY.
  3. No commas in numbers — Enter 600000, not 6,00,000 or 600,000.
  4. Trim whitespace — Remove leading and trailing spaces from all cells.
  5. Validate emails — Ensure all email addresses are properly formatted and unique.
  6. Check for duplicates — Remove duplicate rows before uploading. The system will flag duplicates, but it is faster to clean them beforehand.
  7. Test with a small batch first — Before importing hundreds of records, test with 5-10 records to ensure your template is correctly formatted.
  8. Save as CSV UTF-8 — If your data contains non-English characters (Hindi names, for example), save the file as CSV with UTF-8 encoding.

Tip: Keep a backup of your import file and the error report. If you need to re-import or investigate discrepancies later, these files serve as your audit trail.


Batch Processing and Performance

For large imports (500+ records), the system processes records in batches to maintain performance.

Batch SizeEstimated TimeNotes
1-50 recordsUnder 30 secondsProcessed immediately
50-200 records1-2 minutesProcessed in background
200-500 records2-5 minutesProcessed in background with progress indicator
500+ records5-15 minutesProcessed in background; you will receive a notification upon completion

Tip: You can navigate away from the import page while a large batch is processing. The import continues in the background, and you will see a notification when it completes.


Downloading Error Reports

If your import had errors:

  1. After the import completes, click Download Error Report.
  2. The report is a CSV file listing only the rows that failed, with an additional column showing the error message for each row.
  3. Correct the errors in the report file.
  4. Re-upload only the corrected rows.

Next Steps