Helpdesk migration

Migrate from Request Tracker to Salesforce Service Cloud

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 logo

Request Tracker

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

75%

9 of 12

objects map 1:1 between Request Tracker and Salesforce Service Cloud.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Request Tracker logo

Request Tracker

What's pushing teams away

  • RT's web interface is widely described as dated, text-heavy, and visually sparse compared to modern ITSM tools, leading teams with less technical users to migrate toward platforms like Jira Service Management or Freshservice.
  • Self-hosting requires ongoing server maintenance, security patching, and Perl module dependency management that smaller IT teams find operationally burdensome, pushing them toward fully-managed SaaS alternatives.
  • RT lacks native integrations with popular enterprise tools—SolarWinds, Confluence, Slack, and Microsoft Teams require custom scripting or workarounds that teams without dedicated DevOps staff cannot sustain.
  • Teams that need visual Kanban boards, modern mobile apps, and a polished agent experience find RT's feature set insufficient and migrate to platforms purpose-built for those workflows.

Choosing

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How Request Tracker objects map to Salesforce Service Cloud

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

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

RT 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

maps to

Salesforce Service Cloud

Case Record Type

1:many
Fully supported

RT 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

maps to

Salesforce Service Cloud

Task, Event, and EmailMessage

1:many
Fully supported

RT 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

maps to

Salesforce Service Cloud

ContentDocument and ContentVersion

1:1
Fully supported

RT 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)

maps to

Salesforce Service Cloud

User

1:1
Fully supported

RT 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)

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

RT 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

maps to

Salesforce Service Cloud

Custom Field

1:1
Fully supported

RT 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)

maps to

Salesforce Service Cloud

KnowledgeArticleVersion

1:1
Fully supported

RT 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

maps to

Salesforce Service Cloud

CaseTimeCampaign or custom object

1:1
Mapping required

RT 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

maps to

Salesforce Service Cloud

Group and PermissionSetAssignment

lossy
Fully supported

RT 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

maps to

Salesforce Service Cloud

None (documented for rebuild)

1:1
Fully supported

RT 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

maps to

Salesforce Service Cloud

EmailTemplate

1:1
Fully supported

RT 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.

Gotchas + challenges

What specifically takes care here

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 logo

Request Tracker gotchas

Medium

Tab-delimited export instead of CSV

Medium

Attachments stored as database blobs

High

RT-to-RT upgrades require original RT directory

High

No native bulk REST API

Low

Comma-heavy article content breaks CSV imports

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • RT has no native bulk REST API for ticket extraction

    RT does not publish a bulk or batch REST API endpoint. All programmatic extraction relies on the tab-delimited spreadsheet export (which produces non-RFC-4180 compliant output with unquoted commas in content fields), direct database access, or community scripts like rt2redmine. For self-hosted RT instances we use direct database queries; for cloud-hosted RT we use the spreadsheet export with our pre-processor that detects delimiter collisions, adds quoting, and converts to proper CSV. We advise customers upfront that migration timelines scale with data volume when no bulk API is available.

  • Attachment blob extraction requires direct database access

    RT stores attachments as base64-encoded blobs in the Attachments database table linked to Transactions by ID. There is no REST API endpoint that returns raw file attachments; extraction requires direct database queries against RT's MySQL or PostgreSQL schema. For self-hosted RT deployments we run targeted SQL exports, decode the blob, and reconstruct the original filename and MIME type before uploading to Salesforce ContentDocument. Cloud-hosted RT customers without database credentials must export attachments one at a time via the RT REST API, which multiplies extraction time significantly for accounts with thousands of attachments.

  • RT queues map to Salesforce Record Types that must be pre-created

    RT's multi-queue model means a single RT instance can host IT helpdesk, HR requests, and facilities intake in separate queues. Salesforce organizes cases by Record Type and Business Process rather than separate database tables. We cannot import RT ticket data into Salesforce Record Types that do not yet exist. The customer's Salesforce admin must create Record Types matching the RT Queue names (or a queue-to-Record-Type mapping table) before the migration begins. Skipping this pre-requisite causes import failures on the RecordTypeId field.

  • Salesforce picklist dependencies and validation rules can block Case import

    Salesforce orgs commonly enforce validation rules and picklist dependency constraints that reject records from external systems. If RT ticket priority values or status values do not exactly match Salesforce's picklist definitions, those records fail import silently or with field-specific errors. We pre-scan the destination org's validation rules, run a Sandbox migration first, and coordinate with the customer's Salesforce admin to either expand the picklist value sets or temporarily bypass validation rules during migration load with a migration-context flag removed post-import.

  • RT Scrips and Templates cannot migrate as executable code

    RT Scrips are Perl code artifacts that execute on the RT server against the local database. They have no Salesforce equivalent because Salesforce Flow is a declarative and configuration-based automation engine rather than a scripting runtime. Similarly, RT Templates use [Field] token syntax that is not compatible with Salesforce's {!Object.Field} merge field syntax. We export Scrip names, trigger conditions, and Template content as a written inventory document. The customer's admin or a Salesforce consultant rebuilds Scrip logic as Salesforce Flow and updates Template syntax as Salesforce EmailTemplate tokens post-migration. This is explicitly out of scope for the data migration engagement.

Migration approach

Six steps for a successful Request Tracker to Salesforce Service Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

Context on both ends of the pair

Request Tracker logo

Request Tracker

Source

Strengths

  • Fully open source (GPL) with no feature-gating across plans—every capability is available on every tier.
  • Unlimited queues and custom lifecycles let a single instance handle multiple business processes simultaneously.
  • Deep Perl-based customization engine allows complete behavioral modification of ticket lifecycle logic.
  • Integrated email-driven workflow creates tickets from incoming emails and sends notifications from outgoing replies.
  • Long track record with an active community forum and 20+ years of documented migration and upgrade patterns.

Weaknesses

  • No native bulk REST API for automated data extraction—all exports require the tab-delimited spreadsheet workaround, direct database access, or community scripts.
  • Web UI is visually dated with a steep learning curve for non-technical staff compared to modern SaaS helpdesk products.
  • Self-hosted deployments require Linux server administration, Perl module management, and MTA configuration knowledge.
  • Limited native integrations with popular enterprise tools like Slack, Teams, and Confluence without custom development work.
  • Upgrade paths between major RT versions (e.g., 4.2 to 5.0) require careful database migration steps that are non-trivial for understaffed teams.
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 1 of 7 objects need a manual workaround.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Request Tracker and Salesforce Service Cloud.

  • Object compatibility

    C

    1 of 7 objects need a manual workaround.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Request Tracker: Not publicly documented.

  • Data volume sensitivity

    B

    Request Tracker doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Request Tracker to Salesforce Service Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Request Tracker to Salesforce Service Cloud data migrations

Answers to the questions buyers ask most during Request Tracker to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Migrations under 10,000 Tickets with under 50,000 attachments and fewer than five queues land between three and five weeks. Migrations with large transaction histories (over 200,000 rows), multi-queue structures requiring multiple Record Types, active RT-Extension-TimeTracking, or knowledge base Article migration move to eight to twelve weeks because of blob extraction overhead, ContentDocument chunking, and knowledge base structure mapping. Timeline assumes the customer's Salesforce admin has provisioned Record Types and Users before the migration phase begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Request Tracker.
Land in Salesforce Service Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day