Whether you’re moving from a cloud-based or on-premise system, you’ll need to find an efficient method of migrating your data to Zoho Desk. Our dedicated migration team can help you migrate your data safely and ensure your help desk operation is up and running. This assisted data migration guide provides information on what kind of files you should provide us, the required fields, and what format they should be. Adhering to this prescribed file format and data ensures a hassle-free, fast and effortless migration for our team.
To begin with, you will need to provide individual files containing Agents, Accounts, Contacts, Tickets, Threads, Ticket Comments, Products, and Tasks information. How to name these files along with the fields they must have are listed below:
Agents
File Pattern: Agents_XX.csv
Fields List:
Column
| Example | Requirement | Comments |
agentExtId | Agent_1, 1011, AAA111 | Required |
|
Last Name | John | Required |
|
First Name | Peter | Optional |
|
Full Name | John Peter | Optional |
|
Email | | Required |
|
Notes:
- If an imported agent with the given email address already exists, the system will map them to the existing user.
- The agents will be associated with the departments in which the tickets are imported.
Accounts
File Pattern: Accounts_XX.csv
Fields List:
Column | Example | Requirement | Comments |
AccountExtId | Account_1, Acc213343, 1232 | Required |
|
Account Name | Zoho | Required |
|
Created Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Current time |
Modified Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Current time |
Phone |
| Optional |
|
Email |
| Optional |
|
Fax |
| Optional |
|
Website |
| Optional |
|
Industry |
| Optional |
|
Street |
| Optional |
|
City |
| Optional |
|
Description |
| Optional |
|
Annual Revenue |
| Optional |
|
Contacts
File Pattern: Contacts_XX.csv
Fields List:
Column | Example | Requirement | Comments |
ContactExtId | Contact_1 | Required |
|
First Name | John | Optional |
|
Last Name | Peter | Required |
|
AccountExtId | Account_1 | Optional | Contact will not be associated with any account if null. |
Email | | Optional | Default: Null |
Phone | 9876543210 | Optional |
|
Created Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Current time |
Modified Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Current time |
Type |
| Optional |
|
Mobile |
| Optional |
|
Street |
| Optional |
|
City |
| Optional |
|
State |
| Optional |
|
Country |
| Optional |
|
Zip |
| Optional |
|
Facebook |
| Optional |
|
Twitter |
| Optional |
|
Description |
| Optional |
|
Note:
- When you can only provide the contact's email address for tickets and not the name, we will extract the last name from the contact's email address. For example, when the customer's email address is "john@mycompany.com," the last name will be updated as "john".
Tickets
File Pattern: Tickets_XX.csv
Fields List:
Column
| Example | Requirement | Comments |
TicketExtId | Ticket_1, 1010, Ticket102 | Required |
|
ContactExtId | Contact_1 | Required | Ticket and other child entities will be skipped from import if null. |
Subject | Test Ticket | Required |
|
Description |
| Optional |
|
Email |
| Optional |
|
Due Date | YYYY-MM-DDTHH:MM:SS.000Z | Optional |
|
Created Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | - Default: Current time
- Created time cannot be updated once imported.
- Created time is mandatory for ticket conversations.
|
|
Modified Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional |
|
Closed Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | - Closed time is required only for tickets in the closed state.
- If not available, the current time will be updated as closed time.
- Closed time cannot be earlier than the created time.
|
|
Status | Open | Optional | - Default: Open
- The values present in the column will be added to the Status field.
- Closed will be considered as a closed-mapped status.
|
|
Priority | High | Optional |
|
Classification | Issue | Optional |
|
Owner Email | | Optional | - By default, tickets will be marked as unassigned.
- Only Active agent's ownership can be maintained.
|
|
OwnerExtId |
| Optional | When a separate file for agents is provided, the owner can be referenced using this value. |
ProductExtId | Product_1 | Optional | Unique ID of your product that helps associate a ticket with it. |
Phone |
| Optional |
|
Category | PickList | Optional |
|
Sub Category | PickList | Optional |
|
Resolution |
| Optional |
|
Channel | PickList | Optional | Default: Phone |
Note:
- We cannot modify the created time value of tickets during residual imports since they may not conform to the timeline of its child entities. Additionally, the timeframe of child entities should be later than the ticket-created time. For example, the date-time stamp on an outgoing thread should be later than the ticket's created time; otherwise, the record will be skipped during import.
Threads
File Pattern: Threads_XX.csv
Fields List:
Column | Example | Requirement | Comments |
ThreadExtId | Thread_1 | Required |
|
TicketExtId | Ticket_1 | Required |
|
Content |
| Required |
|
SendDateTime | YYYY-MM-DDTHH:MM:SS.000Z | Required |
|
ReceivedTime | YYYY-MM-DDTHH:MM:SS.000Z | Required |
|
Sender Email |
| Optional | - Default: The user whose token is being used for import will be the thread owner.
- The given value will be matched with the on-boarded agents and assigned accordingly.
- Only active agents can be assigned as owners.
|
|
Direction | In | Out | Optional | Default: In |
isPrivate | True | False | Optional | Default: False |
FromEmailAddress |
| Optional |
|
To |
| Optional |
|
Cc |
| Optional | - Separate multiple email addresses using the semicolon character.
- When the "from" or "Cc" value is null, the channel will be set as Customer Portal.
|
|
Bcc |
| Optional |
|
Channel | Email | Customer Portal | Optional |
|
Ticket Comments
File Pattern: TicketComments_XX.csv
Fields List:
Column | Example | Requirement | Comments |
CommentExtId | Comment_1 | Required |
|
TicketExtId | Ticket_1 | Required |
|
Content |
| Required |
|
Commenter Email |
| Optional | - Default: The user whose token is being used for import will be the comment owner.
- The given value will be matched with the on-boarded agents and assigned accordingly.
- Only active agents can be assigned as owners.
|
|
Commented Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | The current time will be added as created time, if null. |
isPublic | True | False | Optional | Default: False |
Products
File Pattern: Products_XX.csv
Fields List:
Column | Example | Requirement | Comments |
ProductExtId | Product_1 | Required |
|
Product Name | Desk | Required |
|
Product Code |
| Optional |
|
Product Category |
| Optional |
|
Manufacturer |
| Optional |
|
Description |
| Optional |
|
Created Time |
| Optional | Default: Current time |
Tasks
File Pattern: Tasks_XX.csv
Fields List:
Column | Example | Requirement | Comments |
TaskExtId | Task_1 | Required |
|
Subject | Sample Task | Required |
|
ContactExtId | Contact_1 | Optional |
|
TicketExtId | Ticket_12 | Optional | The task will not be associated with a ticket, if null. |
Status | PickList | Optional | Default: Open |
Due Date | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Null |
Created Time | YYYY-MM-DDTHH:MM:SS.000Z | Optional | Default: Current time |
Priority | PickList | Optional |
|
Completed Time |
| Optional | Default: Current time |
Description |
| Optional |
|
Points To Remember
Here are some of the key points to keep in mind before sharing files for assisted migration:
- Date and time variables will be considered as GMT.
- The modules' source fields will first be mapped to the system fields. Custom fields, where required, will be created and mapped to their corresponding source fields.
- Mapping a field to a picklist value will add all the distinct values in the column to the picklist field.
- You must specify how we should map the fields to avoid additional changes after importing data.
- The data left unmapped to a field will be skipped during import.
- We provide support for making certain modifications to the records before they are imported. For example, you can specify the criteria to import specific data, assign ownership, and map departments. Such modifications should be communicated to us before importing your data.
- When an entity fails to be imported, all its sub-entities will be skipped. For example, if a contact import fails for any reason, all of its tickets, threads, and ticket comments will also fail.
- If you've not provided the external ID for a module, our migration tool will create an ID from the existing fields. For example, if the contacts module doesn't contain the ID, the hash code of email, name, or both will be considered the Contact External ID. Likewise, the hash code of ticketID and sendDateTime will be considered as the Thread External ID.
- Only active agents can be assigned to entities. If an agent is unavailable, their entities will be marked as unassigned or assigned to the user whose token has been used for the import.
- We can migrate data to multiple departments. You must provide the department field or criteria to populate data into those departments.
- Residual imports can be performed wherein we will update data based on external IDs. If the external IDs are not present, we will create a new ID (refer to point 8).
- Request for residual imports should be received within two weeks from the initial import.
- Residual imports are not supported for specific fields. For example, we cannot update the ticket created time, external IDs, and thread data during residual imports.
- You can undo the data import once we have completed it. However, undoing the imported contacts will delete the child entities (e.g., tickets) created for those contacts.
- You will receive an import summary on completing an import. The summary will contain information such as the number of records imported and the reason for skipped or failed records. You must modify the data as per the summary for re-importing them again.
- Any bugs or discrepancies in the imported data should be reported at the earliest. We recommend that you update the imported data only after confirming the validity of the import.
- The backup file shared with us will be maintained for 30 days, after which it will be deleted from our end.