📚 Data Import Guide

Panduan lengkap untuk import data karyawan

⭐ Required Fields (Wajib Diisi)

Penting! Jika field ini kosong, record akan di-skip/gagal.
Field Name Deskripsi Contoh Validasi
name Nama lengkap karyawan Ahmad Reski
REQUIRED
Tidak boleh kosong
password Password untuk login ESBCGT
REQUIRED
Minimal 6 karakter (recommended)
nik Nomor Induk Kependudukan (NIK KTP) 1401202505060002
REQUIRED
UNIQUE
Harus 16 digit angka

📝 Format Validasi Field

🆔 NIK (Nomor Induk Kependudukan)
Format:
  • Harus 16 digit angka
  • Tidak boleh ada spasi atau karakter lain
  • Harus UNIQUE (tidak boleh duplikat)
✅ Valid:
1401202505060002
❌ Invalid:
140120250506002 ← Hanya 15 digit
14012025050600022 ← 17 digit
1401-2025-0506-0002 ← Ada tanda strip
1401 2025 0506 0002 ← Ada spasi
📧 Email
Format:
  • Format email valid: [email protected]
  • Field OPTIONAL (boleh kosong)
  • Jika diisi, harus format email yang benar
  • UNIQUE - jika duplikat akan di-resolve (set ke null)
✅ Valid:
❌ Invalid:
ahmad@gmail ← Tidak ada .com
@gmail.com ← Tidak ada username
ahmad.gmail.com ← Tidak ada @
ahmad @gmail.com ← Ada spasi
📱 Nomor Telepon (telepon)
PENTING! Format Indonesia:
  • Dimulai dengan 08
  • Panjang: 10-13 digit
  • Hanya angka, tidak ada spasi/dash
  • Field OPTIONAL (boleh kosong)
✅ Valid:
081234567890 ← 12 digit ✓
085269326656 ← 12 digit ✓
08990833248 ← 11 digit ✓
+628123456789 ← Dengan +62 ✓
❌ Invalid:
0895349887729 ← 13 digit (terlalu panjang!) ❌
081234567 ← 9 digit (terlalu pendek) ❌
0812-3456-7890 ← Ada dash ❌
0812 3456 7890 ← Ada spasi ❌
628123456789 ← Tidak ada 0 atau + di depan ❌
📅 Tanggal (start_date, end_date, shift_start_date, shift_end_date)
Format Strict:
  • Format: DD/MM/YYYY
  • Gunakan leading zero untuk tanggal < 10
  • end_date harus >= start_date
  • Field OPTIONAL (boleh kosong)
✅ Valid:
10/11/2025 ← Tanggal 10 ✓
03/11/2025 ← Dengan leading zero ✓
01/01/2026 ← Januari 2026 ✓
31/12/2025 ← Akhir tahun ✓
❌ Invalid:
3/11/2025 ← Tanpa leading zero (tidak recommended)
1/9/2026 ← Tanpa leading zero (tidak recommended)
2025-11-10 ← Format salah (harus DD/MM/YYYY) ❌
10-11-2025 ← Pakai dash (harus pakai /) ❌
32/13/2025 ← Tanggal tidak valid ❌
Date Range Error! Contoh kesalahan umum:
start_date: 07/11/2025
end_date: 06/01/2025 ← ERROR! End date lebih kecil dari start date ❌
👤 Username
  • Field OPTIONAL (boleh kosong)
  • UNIQUE - jika duplikat akan di-resolve (generate random)
  • Alphanumeric (huruf dan angka)
  • Recommended: huruf kapital + angka
✅ Valid:
AHMAD9354
IKRAM2693
user123
JohnDoe2025

🔒 Unique Fields (Tidak Boleh Duplikat)

Perhatian! Fields berikut harus UNIQUE (tidak boleh duplikat di database)
Field Jika Duplikat Action Status
NIK NIK sudah ada di database
SKIP RECORD
Record di-skip, tidak di-import
Akan masuk ke file: skipped_nik_exists.csv
Email Email sudah digunakan user lain
AUTO-RESOLVE
Email di-set ke NULL
Record tetap di-import, email di-resolve
File: resolved_emails.csv
Username Username sudah digunakan user lain
AUTO-RESOLVE
Generate username random baru
Record tetap di-import, username di-resolve
File: resolved_usernames.csv
Telepon Nomor telepon sudah digunakan
AUTO-RESOLVE
Telepon di-set ke NULL
Record tetap di-import, phone di-resolve
File: resolved_phones.csv
Ops_ID Ops_ID sudah ada (user update)
UPDATE MODE
Update data user existing
Data perusahaan, shift, dedicated akan di-update
File: updated_records.csv

🔧 Cara Resolve Konflik Data

Scenario 1: NIK Duplikat

Error: NIK 1401202505060002 sudah ada di database
🔧 Solusi:
  1. Cek apakah NIK benar-benar sama dengan user existing
  2. Jika salah ketik, perbaiki NIK di file CSV
  3. Jika memang user yang sama:
    • Gunakan ops_id untuk update data existing
    • Atau skip record ini (user sudah ada)
# Contoh update via ops_id:
Ops_ID,name,nik,email,...
947952,AHMAD RESKI,1401202505060002,[email protected],...

Scenario 2: Email Duplikat

Warning: Email [email protected] sudah digunakan
🔧 Solusi (AUTO-RESOLVE):
  1. Sistem akan otomatis set email ke NULL
  2. Record tetap di-import dengan data lain
  3. User bisa update email manual di sistem nanti
  4. Detail resolusi ada di file: resolved_emails.csv
Manual Fix: Jika ingin email tetap digunakan, update email di CSV dengan alamat yang berbeda

Scenario 3: Username Duplikat

Warning: Username AHMAD9354 sudah digunakan
🔧 Solusi (AUTO-RESOLVE):
  1. Sistem akan otomatis generate username baru
  2. Format: username_random (contoh: AHMAD9354_7a3f)
  3. Record tetap di-import
  4. Detail resolusi ada di file: resolved_usernames.csv
Manual Fix: Update username di CSV dengan username yang belum dipakai

Scenario 4: Format Telepon Salah (13 Digit)

Error: Panjang telepon tidak valid: 13 digit (harus 10-13 digit untuk Indonesia)
🔧 Solusi:
  1. Periksa nomor telepon di file CSV
  2. Hapus digit berlebih (biasanya digit terakhir)
  3. Pastikan format: 08xxxxxxxxxx (10-13 digit)
# ❌ WRONG:
telepon: 0895349887729 (13 digit - terlalu panjang!)

# ✅ CORRECT:
telepon: 089534988772 (12 digit - hapus 1 digit terakhir)

Scenario 5: End Date < Start Date

Error: End date (06/01/2025) tidak boleh lebih kecil dari start date (07/11/2025)
🔧 Solusi:
  1. Periksa tanggal di file CSV
  2. Perbaiki end_date agar >= start_date
  3. Kemungkinan salah tahun (2025 vs 2026)
# ❌ WRONG:
start_date: 07/11/2025
end_date: 06/01/2025 ← 11 bulan lebih awal!

# ✅ CORRECT:
start_date: 07/11/2025
end_date: 06/01/2026 ← Ubah tahun ke 2026

✨ Best Practices

✅ DO

  • Gunakan DRY RUN mode untuk testing
  • Validasi data di Excel sebelum import
  • Gunakan leading zero untuk tanggal (01, 02, dst)
  • Format tanggal konsisten: DD/MM/YYYY
  • Cek NIK tidak ada duplikat
  • Pastikan nomor telepon 10-13 digit
  • Download semua report files untuk audit
  • Backup database sebelum import besar

❌ DON'T

  • Import langsung tanpa DRY RUN test
  • Gunakan NIK duplikat
  • Format tanggal tidak konsisten (1/9 vs 01/09)
  • Nomor telepon dengan spasi atau dash
  • End date < Start date
  • Nama dengan titik di akhir (akan di-trim otomatis)
  • Spasi di depan/belakang data (akan di-trim otomatis)
  • Format email salah
💡 Pro Tip:

Gunakan DRY RUN Mode untuk preview hasil import tanpa menyimpan ke database. Anda bisa melihat semua validation errors dan conflicts sebelum commit.

💡 Contoh CSV File

Ops_ID,name,email,telepon,username,password,nik,user_type,start_date,end_date,shift_start_date,shift_end_date,jabatan_name,dedicated 947952,AHMAD RESKI,[email protected],083199395415,AHMAD9354,ESBCGT,1401202505060002,Kurir,,,10/11/2025,01/09/2026,Rider,Mitra TNU04794,Samsul Haerudin,[email protected],085775999308,SAMSUL337,VVZYKA,3602120305000002,User,03/11/2025,02/02/2026,10/11/2025,01/09/2026,IT,Reguler
📥 Download Template

Anda bisa download template CSV kosong dengan semua field yang tersedia.

📊 Understanding Export Reports

Report File Isi Kapan Muncul
consolidated_report_*.csv Semua record dengan status lengkap per stage Selalu
successful_complete_flow_*.csv Record yang berhasil complete flow Jika ada yang success
failed_operations_*.csv Record yang gagal di salah satu stage Jika ada yang failed
skipped_validation_failed_*.csv Record yang gagal validasi format Jika ada validation error
skipped_nik_exists_*.csv Record dengan NIK duplikat Jika ada NIK yang sudah ada
resolved_usernames_*.csv Username yang di-resolve (generate baru) Jika ada username duplikat
resolved_emails_*.csv Email yang di-resolve (set ke null) Jika ada email duplikat
resolved_phones_*.csv Telepon yang di-resolve (set ke null) Jika ada telepon duplikat
updated_records_*.csv Record existing yang di-update Jika ops_id sudah ada (update mode)

Data Import Service v3.0 - Enhanced Edition

Untuk bantuan lebih lanjut, hubungi IT Support