HRMS migration
Field-level mapping, validation, and rollback between Mercu and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
Mercu
Source
Crelate
Destination
Compatibility
8 of 12
objects map 1:1 between Mercu and Crelate.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Mercu Buana University's HRMS to Crelate is an atypical migration pairing because Mercu manages university staff records (employment contracts, department assignments, leave balances, academic titles) while Crelate is a talent acquisition and recruiting CRM built for agencies and staffing firms. The migration is not a like-for-like schema copy. We treat Mercu employee profiles as Crelate Contacts, Mercu departments as Crelate Companies, and Mercu's employment contract and leave balance records as Crelate Custom Objects or linked documents. The key complexity is that Crelate's native data model assumes a recruiting pipeline with job orders, candidates, and placements; university staff do not follow that pattern. We resolve this by designing a Crelate schema that uses Contacts and Companies for the organizational hierarchy, custom fields for employment metadata (contract type, tenure, academic rank), and a separate Custom Object for leave balances that links back to the Contact record. Workflows, approval chains, and payroll configurations from Mercu do not migrate; we deliver a written inventory of Mercu's administrative workflows for the university's HR team to configure in Crelate or document in a separate HRMS implementation plan.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Mercu object lands in Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Mercu
Employee
Crelate
Contact
1:1Mercu employee profiles map to Crelate Contact records. The Mercu employee ID becomes a custom Crelate field mercu_employee_id__c for audit and cross-reference. Academic title, employment status, national ID (NIK for Indonesian employees), and tax number map to Crelate custom text fields created during schema setup. Name, email, phone, and address fields migrate directly using Crelate's standard Contact field API names.
Mercu
Department
Crelate
Company
1:1Mercu departments map to Crelate Company records representing organizational units (faculties, divisions, administrative offices). Department name becomes Company name, department code becomes a custom field mercu_dept_code__c, and headcount metadata migrates to custom fields. This mapping supports activity logging against departments as Company records rather than flat lookup tables.
Mercu
Employment Contract
Crelate
Custom Object + Document
1:1Mercu employment contracts (contract type, start date, end date, salary grade, renewal status) map to a Crelate Custom Object named Employment_Contract__c linked to the Contact record via a lookup field. The contract PDF or scanned document migrates as a ContentDocument attached to the Employment_Contract__c record via ContentDocumentLink. Contract type (permanent, temporary, honorary) becomes a picklist field on the Custom Object.
Mercu
Leave Balance
Crelate
Custom Object
1:1Mercu leave balance records (annual leave, sick leave, academic leave) map to a Crelate Custom Object named Leave_Balance__c linked to the Contact. Fields include leave_type (picklist), year (integer), balance_days (decimal), used_days (decimal), and carried_forward (decimal). We migrate the most recent three years of leave history to avoid inflating the Crelate data volume while preserving sufficient audit trail.
Mercu
Position / Job Title
Crelate
Custom Field on Contact
lossyMercu position titles (Dosen Tetap, Dosen Tamu, Staff Administrasi, etc.) map to a Crelate custom picklist field mercu_position_type__c on Contact. The position description field migrates to a custom long-text field mercu_position_desc__c. This approach avoids creating a separate Custom Object and keeps position data directly on the Contact record for reporting.
Mercu
Salary Grade
Crelate
Custom Field on Contact
lossyMercu salary grade and step information migrates to a Crelate custom field mercu_salary_grade__c (text). Annual salary may optionally map to mercu_annual_salary__c (currency) if disclosed and if the university's data governance policy permits storing compensation data in Crelate. We flag this field for the university's data steward to confirm before import.
Mercu
Academic Credentials
Crelate
Custom Field on Contact
lossyMercu academic credential fields (highest degree, institution, field of study) migrate to Crelate custom text fields mercu_highest_degree__c and mercu_degree_institution__c on Contact. This is a configuration mapping rather than a separate object because credentials are an attribute of the employee Contact rather than a standalone entity.
Mercu
Emergency Contact
Crelate
Custom Object
1:1Mercu emergency contact records map to a Crelate Custom Object named Emergency_Contact__c linked to the primary Contact. Fields include emergency_contact_name, emergency_contact_phone, emergency_contact_relationship (picklist). We store the emergency contact as a separate object rather than flattening it into Contact fields because Crelate's standard Contact model does not have a native emergency contact section.
Mercu
Bank Account
Crelate
Custom Field (flagged)
lossyMercu bank account information (bank name, account number) migrates to Crelate custom fields mercu_bank_name__c and mercu_bank_account__c on Contact with encrypted field type where Crelate supports it. This field is flagged as sensitive PII requiring the university's confirmation of data handling policy before import, and we recommend the university's IT team review Crelate's data encryption posture for banking data.
Mercu
Document Attachment
Crelate
ContentDocument + ContentDocumentLink
1:1Mercu document attachments (contract PDFs, ID scans, academic certificates) migrate to Salesforce-style ContentDocument records with ContentDocumentLink associations to the parent Contact record. We batch document uploads separately from record data to avoid timeout errors, using Crelate's API attachment endpoint with file chunking for documents over 10 MB.
Mercu
Employee Dependent
Crelate
Custom Object
1:1Mercu dependent records (spouse, children) map to a Crelate Custom Object named Dependent__c linked to the primary Contact. Fields include dependent_name, dependent_relationship (picklist), dependent_dob (date), and dependent_id_number (text). This supports HR reporting requirements for benefits administration that do not map to Crelate's standard Contact model.
Mercu
Training Record
Crelate
Custom Object
1:1Mercu training and certification records map to a Crelate Custom Object named Training_Record__c linked to Contact. Fields include training_name, training_provider, training_date, expiry_date, and certification_status. This supports academic staff development tracking that Crelate's native recruiting model does not cover and would otherwise be lost in migration.
| Mercu | Crelate | Compatibility | |
|---|---|---|---|
| Employee | Contact1:1 | Fully supported | |
| Department | Company1:1 | Fully supported | |
| Employment Contract | Custom Object + Document1:1 | Fully supported | |
| Leave Balance | Custom Object1:1 | Fully supported | |
| Position / Job Title | Custom Field on Contactlossy | Fully supported | |
| Salary Grade | Custom Field on Contactlossy | Fully supported | |
| Academic Credentials | Custom Field on Contactlossy | Fully supported | |
| Emergency Contact | Custom Object1:1 | Fully supported | |
| Bank Account | Custom Field (flagged)lossy | Fully supported | |
| Document Attachment | ContentDocument + ContentDocumentLink1:1 | Fully supported | |
| Employee Dependent | Custom Object1:1 | Fully supported | |
| Training Record | Custom Object1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Mercu gotchas
Catalog website (mercubuana.ac.id) is Mercu Buana University, NOT the Mercu AI hiring platform
Mercu is a recruitment overlay, not the system of record for employees
WhatsApp Business API costs and consent rules sit outside the Mercu subscription
AI match scores and conversation history do not include the AI prompt logic
Crelate gotchas
120 req/min API rate limit throttles bulk migrations
20 custom field per-entity cap forces data model decisions
15,000-record export ceiling on single operations
Sequences and automation workflows do not migrate
API key is a querystring parameter, not a header
Pair-specific challenges
Migration approach
Discovery and data inventory
We audit the Mercu Buana University HRMS database to inventory all employee records, department entities, contract documents, leave balance records, dependent information, and training history. We extract a complete record count per object type, identify any fields with null or incomplete data, and document the Mercu field names and data types for mapping. We simultaneously confirm the Crelate subscription tier (Business, Business Plus, or Enterprise) and verify which features (Custom Objects, custom fields, advanced automation) are available at the chosen tier.
Schema design and Crelate configuration
We design the destination Crelate schema based on the discovery output. This includes creating all required custom fields on Contact (position type, academic rank, salary grade, bank details, etc.), provisioning Custom Objects (Employment_Contract__c, Leave_Balance__c, Dependent__c, Training_Record__c, Emergency_Contact__c) with lookup relationships to Contact, and configuring picklist values for contract type, leave type, relationship type, and academic degree. We deploy schema changes to Crelate via the API before any data import begins.
Department-to-Company mapping and Company creation
We extract Mercu department records and import them as Crelate Company records in a first pass, before any Contact import. Department name maps to Company name, department code maps to mercu_dept_code__c, and a parent department reference maps to mercu_parent_dept__c. Company IDs are captured and stored in a lookup table for use during the Contact import phase. This ordering is required because Crelate's Contact.CompanyId field must be satisfied at the time of Contact insert.
Contact import with employee metadata
We import Mercu employee profiles as Crelate Contact records in a second pass. We map name, email, phone, and address fields to Crelate standard fields and all employment metadata (position type, academic rank, salary grade, tenure start date, employee ID) to custom fields on Contact. We resolve the department lookup by matching the Mercu department code to the Crelate Company record created in the previous step and populate Contact.CompanyId. Records with missing required fields (no email, no name) are flagged in a reconciliation report for the university's HR team to resolve before proceeding.
Custom Object and document batch import
We import Employment_Contract__c, Leave_Balance__c, Dependent__c, Training_Record__c, and Emergency_Contact__c records in dependency order, resolving the Contact lookup by matching mercu_employee_id__c to the Crelate Contact ID. Document attachments (contract PDFs, ID scans) are uploaded separately as ContentDocument records and linked to the parent Contact via ContentDocumentLink. Each batch emits a row-count reconciliation report. We flag any orphaned records (e.g., a dependent record pointing to a Contact that failed import) for manual resolution.
Validation, cutover, and workflow inventory delivery
We run a reconciliation check comparing Mercu source record counts against Crelate destination record counts for each object. The university's HR team spot-checks 25-50 random Contact and Custom Object records against the Mercu source data and signs off the validation report. We freeze Mercu writes during the cutover window, run a final delta import of any records modified during migration, and enable Crelate as the system of record. We deliver a written inventory of Mercu administrative workflows and approval chains that require manual rebuild in Crelate or a separate HRMS implementation.
Platform deep dives
Mercu
Source
Strengths
Weaknesses
Crelate
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Mercu and Crelate.
Object compatibility
1 of 7 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Mercu: Not publicly documented.
Data volume sensitivity
Mercu doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Mercu to Crelate migration scoping. Not seeing yours? Book a call.
Walk through your Mercu to Crelate migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Mercu
Other ways to arrive at Crelate
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.