Helpdesk migration
Field-level mapping, validation, and rollback between OTRS and HubSpot Service Hub. We move data and schema; workflows are rebuilt natively in HubSpot Service Hub.
OTRS
Source
HubSpot Service Hub
Destination
Compatibility
7 of 12
objects map 1:1 between OTRS and HubSpot Service Hub.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from OTRS to HubSpot Service Hub is a structural migration from a normalized relational database to a CRM-native ticketing model. OTRS stores tickets across dozens of tables including Dynamic Fields in entity-attribute-value rows, SLA definitions in separate escalation tables, and Configuration Items in a CMDB schema with no direct HubSpot equivalent. We extract directly from the MySQL or PostgreSQL backend to get a complete, consistent snapshot, then map each OTRS object to its HubSpot Service Hub counterpart. Queues map to Pipelines and Teams; SLA thresholds become custom number properties; article history migrates as conversation thread entries. Process Management workflows (multi-step ITSM processes) do not migrate as code; we deliver a written inventory of every process and its trigger conditions for the customer's admin to rebuild in HubSpot. CMDB Configuration Items require a separate pass with a custom object or linked company record depending on the customer's Service Hub tier and whether they license the Data Hub add-on.
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
OTRS platform overview
Scorecard, SWOT, gotchas, and pricing for OTRS.
Destination platform
HubSpot Service Hub platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot Service Hub.
Data migration guide
The complete HubSpot Service Hub migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
HubSpot Service Hub migration checklist
Pre- and post-cutover tasks for moving onto HubSpot Service Hub.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a OTRS object lands in HubSpot Service Hub, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
OTRS
Ticket
HubSpot Service Hub
Ticket
1:1OTRS Tickets map directly to HubSpot Tickets. We extract Title, State (open, closed, pending), Priority, Queue assignment, Owner (agent), and CustomerID. Article history becomes conversation entries in the HubSpot timeline. OTRS ticket number is preserved in a custom property otrs_ticket_number__c for audit and cross-reference. We use the HubSpot Tickets API for upserts with ticket_id as the external key.
OTRS
Article
HubSpot Service Hub
Conversation Entry
1:manyOTRS Articles (ticket communications: emails, notes, external replies) map to HubSpot conversation timeline entries attached to the Ticket. Each article body, content-type, sender type (agent vs customer), and timestamp migrates. We preserve the chronological ordering by setting the conversation entry timestamp to the original article create date. Attachments referenced in articles migrate as HubSpot file attachments linked to the conversation entry.
OTRS
Customer
HubSpot Service Hub
Contact
1:1OTRS Customer records (name, email, phone, user type, preferences) map to HubSpot Contact. CustomerID from the ticket record resolves to the Contact email as the dedupe key. We run a dedupe pass before import to handle cases where the same customer email appears multiple times in OTRS. Valid email format is required for Contact creation; invalid emails are flagged in a reconciliation report for the customer's admin to clean before re-import.
OTRS
Dynamic Field
HubSpot Service Hub
Custom Property
1:1OTRS Dynamic Fields are enumerated during scoping (field name, type, object attachment). Text, Number, Date, Dropdown, and Checkbox types map to equivalent HubSpot custom property types. Multi-select and EAV-pattern fields with multiple rows per ticket are flattened into delimited strings or migrated as separate custom properties depending on the field structure. Data Hub subscription is required if the customer exceeds HubSpot's standard property limit (500 on Professional, 1,000 on Enterprise). We flag this requirement during scoping.
OTRS
Queue
HubSpot Service Hub
Pipeline + Team
lossyOTRS Queues define routing and access boundaries. We map each OTRS Queue to a HubSpot Pipeline with a corresponding Team. Queue-based routing rules (e.g., priority assignment by queue) become HubSpot workflow rules triggered on ticket creation or property change. If the customer uses queue-based SLA targets, we preserve those as custom number properties on tickets.
OTRS
User and Agent
HubSpot Service Hub
User
1:1OTRS Agents are matched to HubSpot Users by email. Role, Group, and Queue permissions do not have direct HubSpot equivalents; we map the OTRS role to a HubSpot role (Admin, Agent, Viewer) and assign the user to the corresponding Team. Any OTRS agent without a matching HubSpot user goes to a reconciliation queue for the customer's admin to provision before record import resumes.
OTRS
SLA and Escalation
HubSpot Service Hub
Custom Properties
lossyOTRS SLA definitions (response time, resolution time, calendar) attach to queues and ticket types. We export SLA names and thresholds as custom number and date properties on each ticket (sla_response_minutes__c, sla_resolution_minutes__c). Escalation events (first response breach, resolution breach) are not native to HubSpot; we store the escalation state as a text property for the customer's admin to design a HubSpot workflow that recreates urgency alerting.
OTRS
Configuration Item
HubSpot Service Hub
Custom Object or Company
1:1OTRS Configuration Items (CMDB entries) have a class-based schema (Server, Network Device, Software, Contract) with custom attributes. We export CI data and the CI-to-Ticket link table. If the customer has a Data Hub subscription, we migrate CIs as a HubSpot Custom Object (ci_ticket_link__c lookup to Ticket). Without Data Hub, we store CI identifiers as a text property on the related Contact or Company record. CI-to-Ticket associations are preserved as a separate import pass with the link table resolved after both objects exist in HubSpot.
OTRS
Attachment
HubSpot Service Hub
File
1:1OTRS attachments are binary blobs stored in the database linked to articles. We extract each blob with its filename and MIME type, upload to HubSpot Files via the Files API, and attach to the corresponding conversation entry. PDF, image, and document attachments preserve their original filename. We flag any attachment exceeding HubSpot's file size limit (256 MB per file) and provide a download link in the migration report.
OTRS
Service Catalog
HubSpot Service Hub
Knowledge Base Article
lossyOTRS Services define available offerings linked to SLAs and queues. We export service names, descriptions, and SLA associations as HubSpot Knowledge Base articles with internal tags for service category. The service-to-SLA mapping migrates as article metadata. Service catalog ordering and customer-visible service links require manual recreation in HubSpot's Knowledge Base settings.
OTRS
Process Management
HubSpot Service Hub
Workflow Inventory (no code migration)
lossyOTRS Process Management stores multi-step workflows as XML with activity nodes and transition rules. We export the process structure and deliver it as a written inventory: process name, steps, conditions, responsible agents, and ticket state transitions. This document serves as the specification for rebuilding in HubSpot Workflows. We do not migrate Process Management XML as executable code because the workflow models are incompatible.
OTRS
Stats and Reports
HubSpot Service Hub
None
1:1OTRS reporting stores report definitions and rendered output in the database. These are proprietary to OTRS and cannot be directly imported into HubSpot. We note this gap in the migration scope and advise rebuilding key reports in HubSpot's analytics tools post-migration. Historical ticket volume data can be extracted as a CSV for manual upload to HubSpot's reporting tools.
| OTRS | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Article | Conversation Entry1:many | Fully supported | |
| Customer | Contact1:1 | Fully supported | |
| Dynamic Field | Custom Property1:1 | Fully supported | |
| Queue | Pipeline + Teamlossy | Fully supported | |
| User and Agent | User1:1 | Fully supported | |
| SLA and Escalation | Custom Propertieslossy | Fully supported | |
| Configuration Item | Custom Object or Company1:1 | Fully supported | |
| Attachment | File1:1 | Fully supported | |
| Service Catalog | Knowledge Base Articlelossy | Mapping required | |
| Process Management | Workflow Inventory (no code migration)lossy | Fully supported | |
| Stats and Reports | None1:1 | Not 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.
OTRS gotchas
Community Edition security freeze forces migration
Direct database export preferred over SOAP API
Major version upgrades can leave login broken
HubSpot Service Hub gotchas
Rate limits throttle large migration API calls
Side conversations and Zendesk macros have no HubSpot equivalent
HubSpot stores ticket history as fragmented engagement objects
Custom Objects require Enterprise tier in HubSpot
Ticket pipeline stage probability values do not export cleanly
Pair-specific challenges
Migration approach
Discovery and OTRS version audit
We audit the source OTRS instance: version (Community vs Business Solution), database type (MySQL or PostgreSQL), schema version, Dynamic Field count and types, Queue count and routing rules, SLA configuration, Process Management workflow count and complexity, and Configuration Item volume and class schema. We request read-only database access and enumerate every Dynamic Field name and type field-by-field. We also identify the Community Edition security exposure status and advise urgency if the OTRS version is below 9. The discovery output is a written migration scope document with the object map and any tier or Data Hub subscription requirements.
Schema design and custom property provisioning
We design the HubSpot destination schema before any data moves. This includes provisioning all custom properties on the Tickets object (matching OTRS Dynamic Field names and types), creating Pipelines for each OTRS Queue, setting up Teams for agent routing, and pre-creating any custom objects for Configuration Items if the customer has a Data Hub subscription. We deploy custom properties via HubSpot API before migration begins. OTRS SLA thresholds are mapped to custom number and date properties on tickets.
Sample migration and reconciliation
We run a sample migration of up to 100 random tickets with their associated Customers, Articles, and Dynamic Fields into a HubSpot test account. The customer's service desk lead reviews the ticket structure, article timeline, custom property values, and queue routing, and signs off before full migration. Any mapping corrections (field name mismatches, missing custom properties, article ordering issues) are resolved here. We also validate agent email matching and flag any OTRS agents without HubSpot user accounts.
Full database extraction and transform
We extract the full OTRS dataset from MySQL or PostgreSQL during a maintenance window coordinated with the customer's DBA. We read ticket records, article records, customer records, Dynamic Field values (EAV rows pivoted per ticket), SLA associations, CI records, and CI-to-ticket links in dependency order. The transform step flattens EAV Dynamic Field rows into HubSpot custom properties, resolves CustomerID to Contact email for dedupe, and builds the article timeline array per ticket. We run a row-count reconciliation against the OTRS database before proceeding to HubSpot import.
Production migration in dependency order
We run production migration in record-dependency order: HubSpot Users (validated from step 3), Contacts (with dedupe pass), Tickets (with article history, custom properties, and SLA metadata), Files (attachments linked to conversation entries), CI records (as custom object or Company property depending on Data Hub availability), and CI-to-ticket links (last, after both objects exist). Each phase emits a reconciliation report. We use HubSpot batch endpoints with exponential backoff on rate-limit responses.
Cutover, validation, and Process Inventory handoff
We freeze OTRS writes during cutover, run a final delta migration of any records modified during the window, then enable HubSpot Service Hub as the system of record. We validate ticket count, article timeline integrity, custom property fill rates, and agent assignment. We deliver the Process Management inventory document to the customer's admin team for HubSpot Workflow rebuild. We support a one-week hypercare window for reconciliation issues. We do not rebuild OTRS workflows as HubSpot workflows inside the migration scope.
Platform deep dives
OTRS
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 2 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 OTRS and HubSpot Service Hub.
Object compatibility
2 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
OTRS: Not publicly documented; no published rate limit values.
Data volume sensitivity
OTRS 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 OTRS to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
Walk through your OTRS to HubSpot Service Hub migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave OTRS
Other ways to arrive at HubSpot Service Hub
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.