Helpdesk migration
Field-level mapping, validation, and rollback between Request Tracker and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
Request Tracker
Source
Salesforce Service Cloud
Destination
Compatibility
9 of 12
objects map 1:1 between Request Tracker and Salesforce Service Cloud.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Request Tracker and Salesforce Service Cloud have fundamentally different data architectures. RT is a Perl-based ticketing system organized around Queues, Scrips, and Transactions in a flat relational schema, while Service Cloud is a CRM platform where Cases sit within the Account-Contact relationship and route through Omni-Channel, Flow-based assignment rules, and Entitlement processes. The migration requires extracting RT's tab-delimited export, reconstructing attachments from database blobs, mapping Queue structures to Salesforce Record Types, and threading Transactions into the Case Activity timeline. We do not migrate RT Scrips (server-side Perl code) or RT automation rules as executable code; we deliver a written inventory of every Scrip and Template for the customer's admin to rebuild in Salesforce Flow. Knowledge base Articles export as structured JSON and import into Salesforce Knowledge. Time tracking and Asset records map to their Salesforce equivalents or custom objects depending on the Service Cloud edition.
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
Request Tracker platform overview
Scorecard, SWOT, gotchas, and pricing for Request Tracker.
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 Request Tracker 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.
Request Tracker
Ticket
Salesforce Service Cloud
Case
1:1RT Tickets map to Salesforce Case records as the primary migration unit. Subject, Status, Priority, and OwnerId map directly. RT's Requestor maps to Contact via email lookup on the destination org's Contact table. RT's Created date and LastUpdated date map to Case.CreatedDate and Case.LastModifiedDate. Each RT ticket's linked Queue becomes the destination Case Record Type, which we pre-configure during the schema design phase so that cases land in the correct routing context from the first import.
Request Tracker
Queue
Salesforce Service Cloud
Case Record Type
1:manyRT Queues function as organizational silos with independent names, SLA configs, and access controls. Each RT Queue maps to a Salesforce Case Record Type. The customer's Salesforce admin pre-creates Record Types in Service Cloud matching the RT Queue names, and we map RT Queue identifiers to RecordTypeId during import. If the customer runs fewer than five queues, a simpler single-Record-Type approach using a Queue custom field is viable; we make this recommendation during scoping based on queue count and routing complexity.
Request Tracker
Transaction
Salesforce Service Cloud
Task, Event, and EmailMessage
1:manyRT creates a Transaction record for every ticket action: status change, reply, comment, field update, and correspondence. These merge into Salesforce's activity model: RT replies from requestors map to Case.EmailMessages (inbound), RT replies from staff map to Case.EmailMessages (outbound), RT comments map to Task records with IsTask=false and IsVisibleInSelfService=false, and RT status changes map to Task records as milestone entries. We order all transactions by Created date and assign them sequential sequence numbers to preserve the chronological thread in the Case's Activity timeline.
Request Tracker
Attachment
Salesforce Service Cloud
ContentDocument and ContentVersion
1:1RT stores file attachments as base64-encoded blobs in the Attachments database table linked to Transactions by ID, not as filesystem paths. We run a targeted SQL export per ticket's attachment IDs, decode the blob, reconstruct the original filename and MIME type, then upload the resulting file to Salesforce as a ContentVersion record. We link each ContentVersion to the parent Case via ContentDocumentLink. Attachments over 25 MB require Salesforce's resumable upload API because the standard Bulk API has a 10 MB chunk ceiling per file.
Request Tracker
User (Privileged)
Salesforce Service Cloud
User
1:1RT Privileged users (staff agents) map to Salesforce User records. We match by email address as the dedupe key. If the destination Salesforce org does not yet have User records provisioned for every RT agent, we hold the User mapping in a reconciliation queue and the customer's Salesforce admin provisions the missing Users before we resume the record import phase.
Request Tracker
User (Unprivileged)
Salesforce Service Cloud
Contact
1:1RT Unprivileged users (requestors) map to Salesforce Contact records. RT's Name, email, phone, and organization fields map directly. RT's Disabled flag maps to Contact.Active__c or a custom flag. If the customer's RT instance uses Organization to group requestors, we create an Account record per Organization and link the Contact to it, replicating the organizational grouping RT uses.
Request Tracker
Custom Field
Salesforce Service Cloud
Custom Field
1:1RT unlimited Custom Fields map to Salesforce custom fields on the Case object. Field types translate as follows: RT Select-Box maps to Salesforce Picklist with the same values; RT Freeform text maps to Text or Text Area; RT Date maps to Date; RT IP Address maps to Text (validated). Queue-scoped RT custom fields map to Record-Type-scoped Salesforce fields. We pre-create the destination field schema before any data import and validate the picklist value set against Salesforce's allowed character constraints.
Request Tracker
Article (Knowledge Base)
Salesforce Service Cloud
KnowledgeArticleVersion
1:1RT Articles live in named classes with Name, Summary, Content, and Custom Fields. We export Article data as structured JSON and map each Article to a Salesforce Knowledge ArticleVersion. The RT Article class maps to a Salesforce Article Type; RT Content maps to the Article's Summary and Body rich-text fields. Salesforce Knowledge must be enabled by an admin with System Administrator rights before migration begins. We flag this pre-requisite at scoping.
Request Tracker
Time Tracking
Salesforce Service Cloud
CaseTimeCampaign or custom object
1:1RT stores Estimated-minutes and Worked-minutes natively on each Ticket. RT-Extension-TimeTracking adds structured time-entry records (User, Ticket, Time Worked, Note). Estimated-minutes maps to a custom field Estimated_Duration__c on Case. Worked-minutes maps to a custom field Actual_Duration__c on Case. If the customer uses RT's structured time-entry extension at scale, we create a Time_Entry__c custom object with User, Case__c, Duration__c, and Note__c fields to preserve the granular entry records.
Request Tracker
Group and Role
Salesforce Service Cloud
Group and PermissionSetAssignment
lossyRT Groups organize users for queue-level and ticket-level permission grants (AdminCc, Cc, OwnerDelegated). Group membership does not export in a flat file; we reconstruct it from the GroupMembers table using a targeted SQL query. Groups map to Salesforce Groups (public groups for queue access) and PermissionSetAssignment records for scoped access grants. We deliver a Group mapping table as part of the migration workbook.
Request Tracker
Scrip
Salesforce Service Cloud
None (documented for rebuild)
1:1RT Scrips are server-side Perl code artifacts triggered by ticket lifecycle events. They cannot be meaningfully migrated to Salesforce because Salesforce Flow uses a declarative and configuration-based model rather than Perl execution. We export Scrip names, associated queues, and trigger conditions as a written inventory document with recommended Salesforce Flow equivalents for each. The customer's admin or a Salesforce partner rebuilds them post-migration.
Request Tracker
Template
Salesforce Service Cloud
EmailTemplate
1:1RT Templates define email notification text with token placeholders used by Scrips. We export Template names and content as structured text, preserving placeholder tokens and conditional logic for notification wording. In Salesforce, these become EmailTemplate records (with folder assignment matching the original queue structure). The customer's admin updates token syntax from RT's [Field] format to Salesforce's {!Case.Field} merge field format during the rebuild phase.
| Request Tracker | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket | Case1:1 | Fully supported | |
| Queue | Case Record Type1:many | Fully supported | |
| Transaction | Task, Event, and EmailMessage1:many | Fully supported | |
| Attachment | ContentDocument and ContentVersion1:1 | Fully supported | |
| User (Privileged) | User1:1 | Fully supported | |
| User (Unprivileged) | Contact1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Article (Knowledge Base) | KnowledgeArticleVersion1:1 | Fully supported | |
| Time Tracking | CaseTimeCampaign or custom object1:1 | Mapping required | |
| Group and Role | Group and PermissionSetAssignmentlossy | Fully supported | |
| Scrip | None (documented for rebuild)1:1 | Fully supported | |
| Template | EmailTemplate1: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.
Request Tracker gotchas
Tab-delimited export instead of CSV
Attachments stored as database blobs
RT-to-RT upgrades require original RT directory
No native bulk REST API
Comma-heavy article content breaks CSV imports
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
Discovery and RT export assessment
We audit the source RT instance across version (4.2 or 5.0), deployment type (self-hosted or cloud), queue count, ticket volume, custom field definitions, transaction row count, attachment blob volume, and Article count. We identify whether direct database access is available (self-hosted) or whether the spreadsheet export pre-processor is required (cloud). We also assess whether RT-Extension-TimeTracking is active, whether custom Scrips are in production use, and whether the knowledge base Articles require structure preservation. The discovery output is a written migration scope document with estimated record counts per object and a pre-migration checklist for the customer's Salesforce admin.
Destination schema design and Record Type provisioning
We design the Salesforce Service Cloud destination schema in a Sandbox org. This includes creating Case Record Types matching the RT Queue names, configuring Business Processes (stage lists) per Record Type, provisioning custom fields on Case for RT Custom Fields and time tracking, enabling Salesforce Knowledge (if Articles are in scope), creating ContentWorkspace folders for migrated attachments, and mapping RT Groups to Salesforce Groups and Permission Sets. The customer reviews and approves the schema before any data extraction begins. Record Types must be active and assigned to the migration user profile before import.
Data extraction with tab-delimited pre-processing and blob handling
For self-hosted RT we run targeted SQL exports against the Tickets, Users, Transactions, Attachments, Groups, GroupMembers, Articles, and Custom FieldValues tables. For cloud-hosted RT we run the spreadsheet export through our pre-processor that converts tab-delimited output to RFC-4180 CSV, handles embedded commas and newlines in content fields, and splits multi-line descriptions into Salesforce-friendly rich text. Attachment blobs are extracted in parallel batches, decoded from base64, and stored with their original filenames and MIME types. We run a row-count reconciliation against the source RT queries before moving to transform.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using the estimated production data volume. The customer's Service Cloud admin reconciles record counts (Cases in, Contacts in, Activity records in), spot-checks 25-50 random cases against the RT source ticket, and validates that attachments are visible in the Case's Files tab and that Transactions appear in the correct chronological order in the Activity timeline. The admin signs off the schema and mapping before we schedule the production migration window. Any mapping corrections, picklist value additions, or validation rule updates happen in Sandbox at this stage.
User provisioning and Contact deduplication
We extract every distinct RT Privileged user (agent) and match by email against the destination Salesforce org's User table. Unprivileged users (requestors) extract as Contact records and are matched against existing Contacts by email. Any Contact that already exists in the destination org is flagged for the admin to decide whether to update (preserve Salesforce data) or skip (avoid overwriting). Any RT user without a matching Salesforce User goes to the provisioning queue and must be resolved before the Case import phase begins because OwnerId is a required reference on Case.
Production migration in dependency order with Bulk API
We run production migration in strict dependency order: ContentWorkspace (attachment folders) first, then Accounts (from RT Organizations), then Contacts (requestor users), then Users (provisioned), then Cases (with RecordTypeId, OwnerId, ContactId, and AccountId resolved), then EmailMessages and Tasks from Transactions (via Salesforce Bulk API 2.0 with 10,000-record batches, exponential backoff on API limits, and WhoId/WhatId parent resolution), then ContentDocuments (attachments linked to Cases via ContentDocumentLink), then Knowledge Articles (if in scope). Each phase emits a reconciliation report before the next phase begins. We freeze RT write access during the cutover window and run a final delta migration of any records modified during the window.
Cutover, validation, and Scrip inventory handoff
We enable Salesforce Service Cloud as the system of record after the final delta migration. We run a post-migration validation comparing total Case count, total Transaction count, and attachment file count against the source RT exports. We deliver the Scrip inventory document (Scrip names, trigger conditions, queue associations, recommended Flow equivalents) and the Template inventory document (template names, token syntax, queue associations, recommended EmailTemplate syntax) to the customer's admin team. We support a one-week hypercare window where we resolve any data integrity issues raised by the service team. Workflow rebuild, Flow development, and admin training are out of scope for the data migration engagement.
Platform deep dives
Request Tracker
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 Request Tracker 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
Request Tracker: Not publicly documented.
Data volume sensitivity
Request Tracker 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 Request Tracker to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Request Tracker 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 Request Tracker
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.