Helpdesk migration
Field-level mapping, validation, and rollback between Trouble Ticket Express and HubSpot Service Hub. We move data and schema; workflows are rebuilt natively in HubSpot Service Hub.
Trouble Ticket Express
Source
HubSpot Service Hub
Destination
Compatibility
10 of 12
objects map 1:1 between Trouble Ticket Express and HubSpot Service Hub.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Trouble Ticket Express to HubSpot Service Hub is a file-to-API migration rather than an API-to-API migration. Trouble Ticket Express has no documented REST endpoint; the only supported data export is the Backup Module, which produces a proprietary archive containing tickets, messages, customers, operators, attachments, and configuration across plain-text, MySQL, and SQL Server backends. We write a custom parser for whichever backend is in use, extract each object type, and insert into HubSpot Service Hub via its Tickets API. The Answer Library migrates to HubSpot Knowledge Base articles, Departments map to HubSpot Teams, and the Inventory Database (if installed) maps to a HubSpot custom object. Workflow automations, canned-response templates, and system configuration do not migrate; we deliver a written inventory for the customer's admin to rebuild in HubSpot's workflow builder. TTX's mandatory branded footer is a pre-migration action item, not a migration concern.
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
Trouble Ticket Express platform overview
Scorecard, SWOT, gotchas, and pricing for Trouble Ticket Express.
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 Trouble Ticket Express 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.
Trouble Ticket Express
Ticket
HubSpot Service Hub
Ticket
1:1TTX Tickets map directly to HubSpot Tickets. We extract the ticket ID, status (new/open/on hold/solved/closed), owner, department, priority, creation date, and last modification date from the backup archive. The HubSpot ticket pipeline must be pre-configured with stage values that map from TTX status: TTX new maps to HubSpot new, TTX open maps to HubSpot open, TTX on hold maps to HubSpot pending, and TTX solved/closed maps to HubSpot closed. Ticket priority from TTX maps to HubSpot priority (low/high). Original TTX ticket IDs are preserved in a custom HubSpot property hs_ttx_original_id__c for audit and cross-reference.
Trouble Ticket Express
Message
HubSpot Service Hub
Ticket Conversation (Engagement)
1:1TTX Messages are threaded chronologically within each ticket. We extract author type (customer/operator), author name, author email, timestamp, body text, and any inline attachment references. Each message becomes a HubSpot Ticket Engagement of type email or note, with the author email resolved to a HubSpot Contact. Operator messages of type internal_note in TTX map to HubSpot internal ticket comments. Plain-text body content migrates as-is; HTML-formatted bodies are sanitized to plain text to avoid rendering issues in HubSpot's conversation view.
Trouble Ticket Express
Customer
HubSpot Service Hub
Contact
1:manyTTX Customers are email-addressed submitters captured on ticket submission forms. We extract the customer database from the backup archive and map each to a HubSpot Contact. The HubSpot Contact email address is the dedupe key; if a Contact already exists in HubSpot, we update rather than create. Customer name splits into HubSpot firstname and lastname where parseable. On plain-text TTX editions without a formal customer database, we extract unique submitter emails from message headers and create Contacts from those. TTX has no native contact lifecycle; we set lifecycle stage to customer on migration for contacts with at least one associated ticket.
Trouble Ticket Express
Operator
HubSpot Service Hub
User
1:1TTX Operators are service desk staff with ticket ownership and assignment. We extract operator records (username, display name, email, department, role) and map them to HubSpot Users. Owner resolution happens by email match: each TTX operator email is matched against HubSpot Users, and tickets are assigned to the matched User. If no HubSpot User exists for an operator, the ticket is assigned to a default migration user and flagged in the reconciliation report for the admin to provision the User before production migration. TTX role (admin/operator) maps to HubSpot Super Admin or regular User role.
Trouble Ticket Express
Department
HubSpot Service Hub
Team
1:1TTX Departments are assigned to tickets and operators. We extract all department names from the backup archive and create HubSpot Teams with matching names. Tickets are associated with the corresponding HubSpot Team on migration. On plain-text TTX editions without a formal department structure, we scan operator assignments and derive departments from operator groups if present. If no department structure exists, we create a single default team and flag this as a configuration item for the customer's admin to refine post-migration.
Trouble Ticket Express
Custom Field (x- prefix)
HubSpot Service Hub
Custom Ticket Property
1:1TTX custom fields use the x- naming convention. Without the Layout Designer module, custom field values appear only in message body text; we run a regex extraction pass on message bodies to capture x-fieldname:value pairs and store them in HubSpot custom ticket properties named hs_ttx_x_<fieldname>. With the Layout Designer module, custom fields are structured database columns that we extract directly. We detect which edition is in use during discovery and apply the appropriate extraction strategy. HubSpot custom properties are created as single-line text or multi-line text depending on detected content type.
Trouble Ticket Express
File Attachment
HubSpot Service Hub
Ticket Attachment (ContentDocument)
1:1TTX File Attachments are stored on the filesystem and referenced in the backup archive. We extract attachments from the archive, re-associate them with the correct TTX ticket and message using the path references, and upload them to HubSpot as ContentDocument records linked to the ticket via ContentDocumentLink. Files are uploaded individually via the HubSpot Files API before linking. We handle common file types (PDF, PNG, JPG, DOCX, XLSX) and skip any file type HubSpot does not support as a content block. Attachment file names are preserved in the ContentDocument title.
Trouble Ticket Express
Answer Library
HubSpot Service Hub
Knowledge Base Article
1:1The TTX Answer Library is an add-on module containing pre-written responses. We extract Answer Library entries (title, body text, category) and map them to HubSpot Knowledge Base articles. Each article is created in the default HubSpot knowledge base with the TTX category name mapped to a HubSpot article category. Answer Library entries without a category are assigned to an Uncategorized bucket. We flag this as a post-migration review item because TTX Answer Library does not support article versioning or availability rules; HubSpot supports draft/published states and team-based access controls that the customer's admin should configure.
Trouble Ticket Express
Inventory Database
HubSpot Service Hub
Custom Object (Asset)
1:1The TTX Inventory Database add-on tracks inventory items associated with tickets. We extract inventory records (item name, serial number, associated ticket, status) and map them to a HubSpot custom object named TTX_Inventory_Item. We create the custom object schema in HubSpot during the pre-migration phase, including fields for item_name, serial_number, ttx_ticket_id__c (lookup to Ticket), and status. This object is only present in TTX installations with the Inventory Database module purchased. If absent, this mapping step is skipped.
Trouble Ticket Express
System Configuration
HubSpot Service Hub
Configuration Inventory (no migration)
1:1The TTX backup exports system configuration variables including email routing settings, field labels, workflow rules, and ticket form definitions. We parse these for context during scoping to understand TTX behavior (e.g., whether email-to-ticket submission is enabled, what custom fields are declared). Configuration variables do not map to HubSpot equivalents because HubSpot configures these features differently (via workflow builder, ticket property settings, and form editor). We deliver a written configuration inventory summarizing TTX settings that the customer's admin should review when setting up equivalent HubSpot features.
Trouble Ticket Express
Ticket Status
HubSpot Service Hub
Ticket Pipeline Stage
lossyTTX uses a fixed set of ticket statuses: new, open, on hold, solved, closed. HubSpot Service Hub uses configurable pipeline stages. We configure a default HubSpot pipeline with stages that map directly: new maps to New, open maps to Open, on hold maps to Pending, solved maps to Solved, and closed maps to Closed. The customer can rename these stages to match their existing terminology during pre-migration configuration. We do not create multiple TTX-style pipelines unless the customer has purchased the HubSpot Professional or Enterprise tier that supports multiple pipelines.
Trouble Ticket Express
Log File
HubSpot Service Hub
Not Migrated
1:1TTX log files contain operational audit entries (login events, ticket update events, system events) rather than customer data. They have no analogue in HubSpot Service Hub and are not migrated. If the customer requires audit history for compliance, we recommend enabling HubSpot's native audit log feature at the Professional or Enterprise tier rather than migrating the TTX operational log.
| Trouble Ticket Express | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Message | Ticket Conversation (Engagement)1:1 | Fully supported | |
| Customer | Contact1:many | Fully supported | |
| Operator | User1:1 | Fully supported | |
| Department | Team1:1 | Fully supported | |
| Custom Field (x- prefix) | Custom Ticket Property1:1 | Fully supported | |
| File Attachment | Ticket Attachment (ContentDocument)1:1 | Fully supported | |
| Answer Library | Knowledge Base Article1:1 | Mapping required | |
| Inventory Database | Custom Object (Asset)1:1 | Mapping required | |
| System Configuration | Configuration Inventory (no migration)1:1 | Mapping required | |
| Ticket Status | Ticket Pipeline Stagelossy | Fully supported | |
| Log File | Not Migrated1: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.
Trouble Ticket Express gotchas
No public API forces file-based extraction
Backup restore is destructive, not merge-safe
Custom field storage depends on module and database edition
Branding requirement may conflict with destination
Limited object model compared to modern help desks
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 backup archive analysis
We request the TTX backup archive from the customer and identify the backend type (plain text, MySQL, or SQL Server) by examining the archive structure. We document the ticket count, message count, customer count, operator count, attachment count and total size, and whether the Answer Library and Inventory Database modules are present. We also extract system configuration variables to understand custom field declarations, email routing settings, and department structure. We identify whether the Layout Designer module is installed to determine the custom field extraction strategy. The discovery output is a written migration scope with record counts per object and the extraction strategy for each object type.
Parser development and validation
We write a custom parser for the identified TTX backup format. The parser extracts each object type (Tickets, Messages, Customers, Operators, Departments, Attachments, Answer Library entries, Inventory records) into an intermediate JSON representation. We validate the parser against the customer's actual backup file in a staging environment, comparing extracted record counts against TTX's reported counts (from the TTX admin panel). We also validate that parent-child relationships (messages within tickets, attachments within messages) are correctly resolved. The parser is version-locked before production extraction begins.
HubSpot pre-configuration
We configure the HubSpot Service Hub destination before migration: we create the ticket pipeline stages that map from TTX status values, create HubSpot Teams matching TTX Departments, create HubSpot Users for each TTX Operator with matching roles, create custom ticket properties (hs_ttx_original_id__c, and hs_ttx_x_<fieldname> for each detected custom field), create the TTX_Inventory_Item custom object if the Inventory Database module is present, and pre-configure the Knowledge Base with categories matching the Answer Library structure. We disable ticket status automations per the gotcha checklist and confirm with the customer before proceeding.
Sample migration and reconciliation
We run a sample migration of up to 100 randomly selected tickets plus their associated messages, contacts, and attachments into the HubSpot destination. The customer reviews the sample in HubSpot, checking ticket status mapping, message threading, contact associations, attachment visibility, and the preservation of custom field values. We correct any mapping errors identified in the sample and re-run the sample until the customer approves. This step typically takes one to three days and prevents errors from propagating to the full migration.
Full migration in dependency order
We run the full migration in record-dependency order: first, HubSpot Contacts from TTX Customers (with dedupe by email), second, HubSpot Teams from TTX Departments, third, HubSpot Users for TTX Operators (with owner resolution by email), fourth, HubSpot Tickets with hs_ttx_original_id__c populated and team assignment resolved, fifth, Ticket Engagements (messages mapped to HubSpot conversations with author resolved to Contact), sixth, File Attachments uploaded to HubSpot Files API and linked to tickets, seventh, Knowledge Base articles from Answer Library, eighth, TTX_Inventory_Item records if present. Each phase emits a row-count reconciliation report. We use HubSpot's REST API with exponential backoff and rate-limit handling throughout.
Delta migration and cutover
We freeze TTX write access during the cutover window (no new tickets or messages accepted). We run a final delta migration capturing any records created or modified after the full migration began. We re-enable ticket status automations in HubSpot. We deliver the migration report including record counts per object, error log with record IDs, and the configuration inventory for TTX email routing, field labels, and workflow rules that require manual rebuild in HubSpot. We provide a one-week hypercare window for reconciliation issues. We do not rebuild TTX configuration as HubSpot automations within migration scope; that is a separate engagement or an admin task.
Platform deep dives
Trouble Ticket Express
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 4 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Trouble Ticket Express and HubSpot Service Hub.
Object compatibility
4 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
Trouble Ticket Express: Not applicable — no API.
Data volume sensitivity
Trouble Ticket Express 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 Trouble Ticket Express to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
Walk through your Trouble Ticket Express 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 Trouble Ticket Express
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.