Minimum version
| Minimum version It is not possible to upgrade to version 4 from any version older than 3.60.00. The import script will abort if you attempt to upgrade from a version older than 3.60.00! |
Is Kayako 4 currently suitable for your organization?
There are some things in Kayako 4 that are still in development. Kayako 4 is not yet at feature parity with Kayako 3 - there are some things that are yet to be implemented. Please read this document before upgrading: Information for upgrading Kayako 3 users.
| There is no downgrade path (back to Kayako 3) once you have upgraded to Kayako 4. We advise all customers thoroughly test their new Kayako 4 helpdesk before making the final switchover. |
Take your help desk offline
To ensure that all current data is imported, you must first take your help desk offline. This is easily done by renaming your Kayako directory and replacing it with a directory containing a single index.html file. This file should have a notice in it explaining to your customers that you're currently upgrading your help desk and that it will be back shortly.
This also prevents any incoming email sent to your email queue(s) from becoming tickets and interfering with the import process.
Backup, backup, backup!
The most important step in upgrading from version 3 to 4 is making very sure you have a complete and valid backup of your version 3 database and the files folder (this is where download files and possibly file attachments are stored in version 3).
Extract attachments
If your help desk contains a large amount of attachments, there are additional steps you should take when importing.
If your desk is set to save attachments to the database (this is the default setting, so unless someone changed it, this is the case), importing that data by fetching from one database and inserting into the new one can take an enormous amount of time.
We recommend that you follow these steps before importing your v3 database:
- Copy the code from Attachment script and save it as moveattachments.php in the cli folder of your v3 installation.
- Execute the script by running php /cli/moveattachments.php.
Now all of your attachments should be stored in the file system in /files directory. Once done, copy the entire contents of this directory to the new version 4 installation's files directory( __swift/files) and run the Import script afterwards.
| Make sure that you copy the contents of v3 'files' directory to version 4 installation's files directory before running the Import script. |
Database backup method
- MySQL has published information about backing up databases here
.
You should store this backup database on a RAID machine or optical storage (or multiple physical locations) for safe-keeping.
Install version 4
If you haven't already, install version 4![]()
| If you are installing version 4 on the same server where version 3 is installed, you need to create a new directory for version 4 installation. Do Not upload the version 4 files in the same directory where version 3 is installed. Also a new database is to be used to instal version 4. |
Import the database
Once version 4 has been installed, you can begin the automatic import of your entire version 3 database. The following section describes this process.
Command-line interface
If your database is over 2 Gigabytes in size, we recommend using this method instead of the web interface, as it is more efficient.
Execute PHP script
Using the command prompt, change directory to the console directory in your version 4 installation.
| If the php program isn't in your environment variables' path section, you may need to specify the full path of the php program. |
Execute the following command (case-sensitive):
Provide database location and authentication details
In the following screen, you need to provide information about your version 3 database that you wish to import:
- Database server: Where the database is located; if it's on the local machine, you can use the default (127.0.0.1). If the database is on a remote machine, make sure that there are no connectivity problems between the two machines, (e.g. no firewall or IP rules restricting access to the MySQL server).
- Database name: The name of the database. (by default, this is 'swift').
- User name: The name of a user that has access to the database.
- Password: If the user requires a password, enter it here.
- MySQL server port: The port number that MySQL is serving requests on, usually 3306.
| If you don't remember the name of your database or other information, you can locate it in your version 3 installation under /config/config.php. |

Once you hit enter on the last field, the import process should begin, and look something like this:

This process may take some time, so please be patient. When the import has completed, you will see a screen like this:

Auto Resume and Limiting Passes for Large Databases
The system supports Auto Resume for Console Based Imports and ability to limit number of Passes.
By default the system will attempt to resume from the last execution breakage, rather than breaking the import process midway using Ctrl+C, it is recommended that the Import script be called using /Base/Import/Version3/LIMITOFPASSES
The LIMITOFPASSES variable enforces a graceful exit and the system will resume from the last process time preventing any duplicate records from being created.
For large databases, the script should be executed multiple times to prevent proper memory garbage collection and successful import of the database.
!! IMPORTANT !! In case of any failure, it is important that the setup be executed again and the import process restarted to prevent any missing records, data duplication or installation issues.
Example
Web interface
Log in to the Administrator Control Panel
This is the same as in version 3 (e.g., mydomain.com/support/admin/).
Choose import script
Browse to Import -> Manage in the left-hand navigation pane. You should now see a list of available import scripts, one of which should be titled Kayako SupportSuite/eSupport/LiveResponse v3. Make sure this one is selected and press 'Next'.
Provide database location and authentication details
In order to import data from the version 3 database, the script will need to know the following:
- Database server: Where the database is located; if it's on the local machine, you can use the default (127.0.0.1). If the database is on a remote machine, make sure that there are no connectivity problems between the two machines, (e.g. no firewall or IP rules restricting access to the MySQL server).
- Database name: The name of the database. (by default, this is 'swift').
- User name: The name of a user that has access to the database.
- Password: If the user requires a password, enter it here.
- MySQL server port: The port number that MySQL is serving requests on, usually 3306.
| If you don't remember the name of your database or other information, you can locate it in your version 3 installation under /config/config.php. |
Automatic import
Hit 'Next' after providing all the information above, and if everything goes to plan, you should see a screen like the following:

Depending on the amount of data present in your current database, this process may take several hours.
| Do not interrupt the import process or attempt to use the help desk in any fashion until this process is complete! This could very easily cause your new database to end up corrupted. |
Verify import
You should now ensure that your data was successfully imported by visiting your support center, staff control panel and administrator control panel.
Important things that need reviewing after import
| Section/Table | Notes |
|---|---|
| Staff teams/group permissions | Permissions are not imported and need to be reconfigured. |
| User group permissions | Permissions are not imported and need to be reconfigured. |
| Template groups | Template groups are imported without the changed templates. Template group passwords are not imported due to change in functionality and encryption mode. |
| Templates | Templates (customized or otherwise) are not imported due to complete change in user interface. |
| Languages | Languages are not imported into the system and language packs need to be translated again. |
| LoginShare | LoginShare plugins are not imported due to change in protocol and structure, and need to be re-engineered. |
| Ticket attachment types | Ticket attachment types are not imported. Custom attachment types will need to be recreated. |
| Parser log | Parser logs are not imported. |
| Knowledgebase articles | All private knowledgebase articles are marked as Draft articles because the private/public property has been moved solely to categories, you will need to manually mark them as Published (after editing the category view permissions if required). |
| Alerts | Functionality of "Alerts" in v3 have been revamped and renamed as "Notifications" in v4. The v3 Alert rules will not be carried over to the v4. Hence, you need to create those rules again in v4. |
| Downloads | The independent Downloads module has been removed. The functionality has been superceded by the Knowledgebase, where articles now accept file attachments. Download files are now imported as knowledgebase articles. Additionally, the successful import of files requires moving all the store files from files/* (in Kayako 3) to __swift/files/* (to Kayako 4). Any password protection set for files will be lost as this feature is no longer supported. |
| SEO friendly URLs (Clean URLs) | In case of v3 hosted clients, the URL links will change to SEO friendly links (clean URLs) when upgraded to v4. For example, if the link is "http://kayako.helpserve.com/index.php?_m=tickets |
| Comments | Unapproved comments are not imported. |
| Custom fields | User Group custom fields will be imported into respective User Organizations; however, the corresponding data in Custom fields will not be imported. |
| Ticket views | Ticket views are not imported and need to be recreated. |
| Ticket search engine indexing | The search index for your tickets needs to be rebuilt. This may take several hours. Run the indexer from the administrator control panel, under Tickets -> Maintenance. |
| Kayako LiveResponse Operator's application has been replaced by Kayako Desktop. Download Kayako Desktop here |
How are import collisions handled?
- Staff Username: In case of a duplicate staff username, the username is suffixed with "_imp<RANDOMDATA>"
- Record Titles: In case of a duplicate record title, the title is suffixed with " (Import)"