Helpdesk migration
Field-level mapping, validation, and rollback between HelpDeskZ and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
HelpDeskZ
Source
Salesforce Service Cloud
Destination
Compatibility
5 of 10
objects map 1:1 between HelpDeskZ and Salesforce Service Cloud.
Complexity
CModerate
Timeline
2-4 weeks
Overview
Moving from HelpDeskZ to Salesforce Service Cloud requires a database-first extraction strategy because HelpDeskZ exposes no REST API. We connect directly to the MySQL/MariaDB source, extract Tickets as Cases, preserve reply thread chronology, and decode PHP-serialized custom fields into Salesforce custom Case fields. Departments map to Salesforce Queues or Groups, and attachment filenames are resolved against the uploads directory and re-uploaded to Salesforce Files. Email threading identifiers from HelpDeskZ are extracted as raw content only; the destination assigns its own thread context. We do not migrate HelpDeskZ workflows, automations, or any email pipeline configuration as code; these require rebuild in Salesforce Flow, Omni-Channel, or case thread templates. Historical SLA data, if present in HelpDeskZ custom fields, maps to Salesforce Entitlements and Milestones during import. The migration scope covers Cases, Contacts (from HelpDeskZ users), Accounts, Attachments, Custom Fields, and Ticket Status remapping.
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.
Source platform
HelpDeskZ platform overview
Scorecard, SWOT, gotchas, and pricing for HelpDeskZ.
Destination platform
Salesforce Service Cloud platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Service Cloud.
Data migration guide
The complete Salesforce Service Cloud migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Salesforce Service Cloud migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Service Cloud.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a HelpDeskZ object lands in Salesforce Service Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
HelpDeskZ
Ticket
Salesforce Service Cloud
Case
1:1HelpDeskZ tickets map to Salesforce Case records. The ticket id, subject, description, status, priority, and created/updated timestamps migrate directly. We resolve the ticket's assigned agent to a Salesforce User by email lookup, and the submitting user to a Contact by email on the Case. The flat HelpDeskZ ticket-to-reply thread is preserved as sequential EmailMessage records and CaseComments ordered by the created timestamp, with the original HelpDeskZ ticket_id stored in a custom external ID field hdz_ticket_id__c.
HelpDeskZ
Reply (ticket_replies table)
Salesforce Service Cloud
EmailMessage + CaseComment
1:manyEach HelpDeskZ reply row maps to a Salesforce EmailMessage (for agent-customer exchanges) or CaseComment (for internal notes). We detect the reply type from the is_customer column and assign IsIncoming=true or false accordingly. Attachment filenames from the replies table are linked to the corresponding Salesforce Files. The created timestamp preserves chronological ordering in the case timeline.
HelpDeskZ
User (agent)
Salesforce Service Cloud
User
1:1HelpDeskZ users with role=admin or role=agent map to Salesforce User records by email match. We extract the username, email, and role from the users table. If a matching Salesforce User does not exist, the record is held in a reconciliation queue and the customer provisions the User before migration resumes. Hashed passwords do not migrate and must be reset in Salesforce.
HelpDeskZ
User (client)
Salesforce Service Cloud
Contact
many:1HelpDeskZ users with role=client map to Salesforce Contact records. Multiple HelpDeskZ client accounts with identical email addresses are merged into a single Contact. The Contact receives the hdz_user_id__c external ID and the original HelpDeskZ username and registration date as custom fields. If the customer uses Salesforce Person Accounts, we map to that record type instead.
HelpDeskZ
Department
Salesforce Service Cloud
Queue or Group
1:1HelpDeskZ departments map to Salesforce Queues (for Case assignment) or Groups (for reporting segmentation). We extract the department id and name from the departments table and create corresponding Queues with the Cases object enabled. Department assignment on tickets becomes the Case.Origin or a custom department__c field linked to the Queue by name. If the customer uses Salesforce Territories or Omni-Channel, we coordinate department mapping with the routing configuration during scoping.
HelpDeskZ
Attachment (filesystem)
Salesforce Service Cloud
ContentDocument + ContentVersion
1:1HelpDeskZ stores files on disk in the uploads/ directory. We resolve each filename from the tickets and replies tables against the configured uploads_path, validate the file exists, and upload it to Salesforce as a ContentVersion with the IsMajorVersion flag set. The ContentDocumentLink associates the file with the parent Case by linking via LinkedEntityId. Files without a valid on-disk presence are logged as warnings and skipped to allow migration to continue.
HelpDeskZ
Custom Fields (serialized PHP)
Salesforce Service Cloud
Custom Case Fields
lossyThe custom_fields column on HelpDeskZ tickets holds a PHP serialized string. We unserialize it using the detected PHP version on the source server (falling back to regex extraction for corrupted data), extract each key-value pair, and create corresponding custom fields on the Salesforce Case object before migration. Field types are inferred from value format: numeric strings become Number fields, ISO dates become Date fields, and remaining values become Text fields. Custom field names are prefixed with hdz_ to avoid naming collisions.
HelpDeskZ
Ticket Status
Salesforce Service Cloud
Case Status
lossyHelpDeskZ ships with integer-coded statuses (typically 0=Open, 1=Pending, 2=Resolved, 3=Closed). We map these integer codes to Salesforce Case Status values (New, Working, Escalated, Closed) in the status field during import. If the customer has added custom status labels in the database, we document them and either create custom Status values or map to the nearest standard value during scoping.
HelpDeskZ
Ticket Priority
Salesforce Service Cloud
Case Priority
1:1HelpDeskZ priority values (Low, Normal, High, Urgent) map directly to Salesforce Case Priority values (Low, Medium, High, Highest). The mapping is straightforward because both platforms use equivalent vocabulary for urgency levels.
HelpDeskZ
Email Pipeline (POP3/IMAP)
Salesforce Service Cloud
Email-to-Case Configuration
lossyHelpDeskZ stores POP3/IMAP mailbox credentials and email-to-ticket rules in the database. We extract the source email address, mailbox type, and thread identifier settings. Email threading identifiers (Message-ID, In-Reply-To) are extracted as raw text only and do not reconstruct into Salesforce thread relationships, because Salesforce assigns its own thread IDs at Email-to-Case insertion time. We document the original mailbox settings for the customer to configure Salesforce Email-to-Case post-migration.
| HelpDeskZ | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket | Case1:1 | Fully supported | |
| Reply (ticket_replies table) | EmailMessage + CaseComment1:many | Fully supported | |
| User (agent) | User1:1 | Fully supported | |
| User (client) | Contactmany:1 | Fully supported | |
| Department | Queue or Group1:1 | Fully supported | |
| Attachment (filesystem) | ContentDocument + ContentVersion1:1 | Fully supported | |
| Custom Fields (serialized PHP) | Custom Case Fieldslossy | Fully supported | |
| Ticket Status | Case Statuslossy | Fully supported | |
| Ticket Priority | Case Priority1:1 | Fully supported | |
| Email Pipeline (POP3/IMAP) | Email-to-Case Configurationlossy | 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.
HelpDeskZ gotchas
No REST API — migration requires direct database reads
Custom fields are stored as serialized PHP arrays
Email-to-ticket threading does not migrate cleanly
Attachment files are stored on disk, not in the database
Salesforce Service Cloud gotchas
Data Export 512MB file size cap breaks large org exports
API Daily Request Limits vary by license edition
No automatic data backup in base Salesforce
Picklist dependencies silently break records when unmapped
Workflow rules fire unexpectedly during data load
Pair-specific challenges
Migration approach
Database access and scoping
We confirm database credentials (MySQL host, port, database name, table prefix) and validate read access to the HelpDeskZ database. We inspect the tickets table schema, the ticket_replies table, the users table (role distribution), the departments table, and the system_settings table for uploads_path and PHP version indicators. We run a record count query across all tables and sample 50 tickets to verify the custom_fields serialization format. The scoping output is a written migration scope document with record counts, a preliminary field map, and any database access blockers flagged for resolution.
Custom field discovery and Salesforce schema provisioning
We run a full extraction pass on the custom_fields column across all tickets to collect every unique field key and infer the data type. We deduplicate the field list and create corresponding custom fields on the Salesforce Case object (prefixed with hdz_). If the destination org uses record types on Case, we assign custom fields to the appropriate record type. Custom field creation happens in a Salesforce Sandbox first for validation, then is promoted to production. We coordinate field creation with the customer's Salesforce admin to avoid naming collisions.
User and Contact reconciliation
We extract all HelpDeskZ users and classify by role (admin, agent, client). Agents and admins are matched by email to existing Salesforce Users; unmatched agents are flagged in a reconciliation report for the admin to provision before production migration. Clients are extracted as Contact candidates with hdz_user_id__c as the external ID. We deduplicate contacts by email to handle cases where a single email has multiple HelpDeskZ client accounts. This reconciliation report is signed off before the Contacts phase begins.
Department to Queue mapping and configuration
We map HelpDeskZ departments to Salesforce Queues with Cases enabled. Each Queue is created in the destination org with the corresponding department name. Department assignment on tickets is mapped to Case.Origin or a custom department__c field linked to the Queue. If the customer uses Omni-Channel, we document the routing configuration needed post-migration rather than implementing it during data migration scope.
Production migration in dependency order
We run migration in this order: Salesforce custom fields and Queues (schema ready), Contacts (from HelpDeskZ client users), Cases (with CaseContactId resolved to the Contact record by email), CaseComments and EmailMessages (replies ordered by created timestamp), ContentVersions (attachments from disk), and finally delta verification. Each phase emits a row-count reconciliation report. The Salesforce Bulk API is used for Cases and Contacts; individual API calls are used for ContentVersion uploads with chunking and backoff.
Cutover, validation, and handoff
We freeze HelpDeskZ writes during cutover, run a final delta migration of any tickets modified during the migration window, and enable Salesforce Service Cloud as the system of record. We deliver a migration summary report with record counts by object, a list of skipped records with reasons, and a custom field inventory showing which HelpDeskZ custom fields mapped to which Salesforce fields. We do not rebuild HelpDeskZ email pipeline configuration, assignment rules, or any workflow logic; these are documented as rebuild items for the customer's Salesforce admin or a Service Cloud implementation partner.
Platform deep dives
HelpDeskZ
Source
Strengths
Weaknesses
Salesforce Service Cloud
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 1 of 7 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across HelpDeskZ and Salesforce Service Cloud.
Object compatibility
1 of 7 objects need a manual workaround.
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
HelpDeskZ: Not publicly documented.
Data volume sensitivity
HelpDeskZ 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 HelpDeskZ to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your HelpDeskZ to Salesforce Service Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave HelpDeskZ
Other ways to arrive at Salesforce Service Cloud
Same-Helpdesk migrations
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.