SP Transfer User Guide
SP Transfer is a Joomla component designed to migrate content, users, menus, modules, and files from an existing (source) Joomla site to a fresh (destination) Joomla installation. It supports migration from Joomla 1.5, 2.5, and 3.x to a modern Joomla destination site.
Table of Contents
- Introduction
- Quick Start
- Installation & Uninstallation
- Configuration
- Dashboard — Test Connection
- Core Transfer View
- Database Transfer View
- Files Transfer View
- History Log View
- Migration Walkthroughs
- Going Live
- Troubleshooting & FAQ
- Appendices
1. Introduction
SP Transfer copies data from a source Joomla site to a destination Joomla site. It never modifies or writes to the source database — your original site remains untouched.
Key Concepts
- Transfer — Copies items from the source database to the destination database. ID conflicts are handled according to your configuration (assign new IDs, skip, or replace).
- Finalize — A second pass that rebuilds relationships, fixes internal references, and updates asset tables. Always run Finalize after completing all transfers for a given entity.
- History Log — Every transferred item is tracked with its source ID, destination ID, and transfer state. If a transfer is interrupted (timeout, memory limit), simply run it again — it resumes where it left off.
- Batch Processing — Items are transferred in configurable batches to prevent memory exhaustion and timeouts on large datasets.
Supported Source Versions
SP Transfer supports reading from any Joomla version starting from Joomla 1.5 and later.
The destination must be a fresh Joomla installation (3.x or later).
2. Quick Start
For experienced users who want to jump straight in:
- Install a fresh Joomla site (the destination).
- Install SP Transfer on the destination site.
- Configure the source database credentials in Options → Database tab.
- Go to Core Transfer, check the entities you need, and click Transfer All.
- After transfer completes, click Finalize.
- Copy images and files (via FTP or file manager), install your template and extensions.
The detailed walkthroughs in Section 10 cover three common scenarios.
3. Installation & Uninstallation
Installation
- Download the SP Transfer package from kainotomo.com.
- In your destination site's backend, go to Extensions → Manage → Install.
- Upload the package zip file and follow the installation process.
- After installation, a new SP Transfer menu item appears in the backend.
Uninstallation
- Go to Extensions → Manage → Uninstall.
- In the Filter area, type
SPand click Search. - Select the entry where Type is Package (the other entries are removed automatically).
- Click Uninstall.
⚠️ Backup your database before any transfer. The component keeps a history log, but a full database backup is the safest insurance.
4. Configuration
All configuration is accessed via the Options button in the SP Transfer toolbar or through System → Global Configuration → SP Transfer.
4.1 General Tab (Core Joomla! Data)
| Option | Description |
|---|---|
| Same IDs Handling | How to treat items whose IDs already exist in the destination: • Transfer with new IDs (recommended for destinations with existing data) • Skip — do not transfer the item • Replace — overwrite existing items (not available for users) |
| Batch | Number of items to transfer per cycle (default: 100, max: 100,000). Increase for large sites, decrease if you hit timeout or memory limits. |
| Duplicate Alias? | When an alias already exists, transfer the item with a modified alias. |
| Fix save with model bug | Kept enabled unless you encounter issues with article transfers. |
4.2 Database Tab (Source Connection)
Enter the credentials from your source site's configuration.php file.
| Option | Description |
|---|---|
| Database Type | MySQLi (recommended) or MySQL driver. |
| Host | Usually localhost. For remote databases, enter the hostname or IP. |
| Database Name | The name of the source database. |
| User Name | The source database username. |
| Password | The source database user password. |
| DB Prefix | The source table prefix (e.g., jos_, jos1_). Must end with an underscore. |
| Installation Path | Filesystem path to the source Joomla installation (hidden, used for physical file copy). |
4.3 FTP Tab
Required for transferring files (images, templates, extensions media).
| Option | Description |
|---|---|
| FTP Host | Usually localhost if sites share the same host; otherwise the remote hostname or IP. |
| FTP Port | Default: 21. |
| SSL? | Enable FTPS (FTP over SSL) for secure connections. |
| FTP Username | The FTP account username. |
| FTP Password | The FTP account password. |
| FTP Root | The base directory accessible by the FTP server (often / or a subdirectory). |
4.4 Live Update Tab
| Option | Description |
|---|---|
| DLID | Your Download ID from kainotomo.com. Required for automatic component updates. |
4.5 Permissions Tab
Standard Joomla ACL settings — configure which user groups can access SP Transfer.
5. Dashboard — Test Connection
The Test Connection view is the first screen you see when opening SP Transfer. It provides:
- Ping Source Database — Tests connectivity using the credentials entered in Options. A green "DB connection healthy!" message confirms success.
- Test FTP — Tests the FTP connection. A green "FTP connection healthy!" message confirms success.
- A reminder to backup the database before each transfer.
If the connection fails, check your credentials in Options and verify that: - The source database server is accessible from your destination host. - The database user has proper permissions. - The table prefix is correct (including the trailing underscore).
6. Core Transfer View
The Core Transfer view handles 22 built-in Joomla entities. Each entity has a checkbox, a description, and optional ID fields.
Supported Entities
| Extension | Tables |
|---|---|
| Content | Categories, Articles |
| Users | User Groups, Access Levels, Users, User Note Categories, User Notes |
| Contact | Categories, Contact Details |
| Banners | Categories, Banner Clients, Banners |
| Menus | Menu Types, Menu Items |
| Modules | Modules |
| Tags | Tags |
| Newsfeeds | Categories, News Feeds |
| Fields | Field Groups, Fields |
Transfer & Finalize
SP Transfer uses a two-phase process:
- Transfer — Copies the raw data (rows) from source to destination. ID conflicts are handled per your "Same IDs Handling" option. Duplicates (aliases, titles, usernames, emails) are automatically renamed.
- Finalize — Rebuilds relationships, asset tables, nested sets (categories), version history, tag mappings, and 2FA settings. Always run Finalize after completing all transfers.
Selective ID Transfer
You can transfer specific items instead of everything by entering ID ranges in the format:
1-9,12,20-45,53
This transfers items with IDs 1 through 9, item 12, items 20 through 45, and item 53. Leave the field empty to transfer all items.
You can also click the Choose button to visually select items using a searchable dialog, or Clear to reset the field.
Transfer All
The Transfer All button transfers all checked entities in sequence. If the process is interrupted (timeout, memory), simply click it again — it continues from where it left off.
7. Database Transfer View
The Database Transfer view is for transferring arbitrary database tables that are not among the 22 core entities — for example, third-party extension tables.
- Select a source table from the list.
- Enter row IDs in the same range format as Core Transfer (
1-9,12,20-45,53) or leave empty for all rows. - Click Transfer.
The view automatically: - Validates that the destination table exists or creates it if missing. - Checks for structural conflicts — if the same table exists with a different structure, you will be warned.
Note: After transferring extension tables, you must install the corresponding extension on the destination site and ensure the table structure matches.
8. Files Transfer View
The Files Transfer view lets you copy files from the source site to the destination site via FTP.
Interface
The view is split into two panels:
- Remote Site — Browse the source site's file system via FTP. Navigate folders and select files.
- Local Site — Browse the destination site's file system. You can create folders here.
Transferring Files
- Navigate to the desired folder on the Remote Site.
- Select files or folders.
- Click Transfer to copy them to the corresponding location on the Local Site.
Replace Strategy
The Existing Files Replace option in Configuration determines whether existing files on the destination are overwritten.
FTP Requirements
- The PHP
ftpextension must be enabled on your server. - The FTP user must have read access to the source files and write access to the destination.
- SSL (FTPS) is supported — enable it in Options → FTP tab.
9. History Log View
The History Log tracks every item that has been transferred. It is invaluable for monitoring progress, diagnosing errors, and resuming interrupted transfers.
Transfer States
| State | Meaning |
|---|---|
| 1 | Failed to transfer |
| 2 | Transferred but not finalized |
| 3 | Transferred but failed to finalize |
| 4 | Transferred and finalized (complete) |
An item is only fully migrated when its state is 4 (Transferred and finalized).
Filtering & Searching
- Search by Source ID — Enter a source item's primary key.
- Filter by Extension — Show logs for a specific entity.
- Filter by State — Show only failed, pending, or completed items.
- Date Range — Filter by begin/end date.
- Sorting — Click column headers (Extension, Source ID, State, Date) to sort ascending/descending.
Deleting History
- Mass Delete History — Deletes all entries matching the current filters.
- Delete Selected Items — Deletes individually checked entries.
Auto-Refresh
During active transfer, the log view automatically refreshes every 15 seconds so you can monitor progress in real time.
10. Migration Walkthroughs
SP Transfer supports many deployment scenarios. Below are three common ones, from simplest to most complex.
Scenario A: Same Host, Different Database
Both source and destination sites are on the same server. They share filesystem access but use separate databases.
Assumptions:
| Element | Value |
|---|---|
| Source URL | http://www.example.com/ |
| Source path | /home/public_html/ |
| Destination path | /home/public_html/new/ |
| Destination database | db_destination (new, empty) |
Steps:
- Backup — Back up the source site (files and database).
- Create database — Create
db_destinationand a database user with UTF-8 encoding. - Create folder — Create
/home/public_html/new/. - Install Joomla — Upload a fresh Joomla package to
/home/public_html/new/and run the web installer. Connect it todb_destination. Do not install sample data. - Install SP Transfer — Install the component on the destination site.
- Configure source DB — In Options → Database, enter the source site's credentials from its
configuration.php. - Test connection — On the Dashboard, click Ping Source Database. Confirm a green success message.
- Transfer core data — Go to Core Transfer, check all needed entities, click Transfer All. When complete, click Finalize.
- Copy images — Use FTP transfer in the Files view, or copy the
images/folder manually via file manager. - Install template — Install a modern responsive template on the destination site.
- Transfer extensions — For each extension: (a) set "Same IDs Handling" to transfer with new IDs, (b) transfer its database tables via the Database Transfer view, (c) install the extension on the destination.
- Go live — See Section 11.
Scenario B: Remote/Different Host
Source and destination are on different servers. The destination server must have network access to the source database server.
Additional considerations:
- The Host field in Options → Database must be the source server's IP address or hostname (not
localhost). - Some hosting providers restrict remote database connections. You may need to add the destination server's IP to the source server's firewall allowlist.
- If remote DB access is not possible, first transfer the source database to a local dump, import it on the destination server, and connect to the local copy.
- FTP must be configured with the source server's FTP credentials and the correct root path.
Steps are identical to Scenario A, except:
- Database Host = remote server IP or hostname.
- FTP Host = remote server hostname or IP.
- FTP Root = the path from the FTP server's root to the Joomla installation (e.g., /public_html/).
Scenario C: Local Development (XAMPP/WAMP)
Develop and test the migration on your local machine, then deploy the destination site to production.
Setup:
- Install XAMPP, WAMP, or MAMP on your local machine.
- Export the source Joomla database to a
.sqlfile from your live server (phpMyAdmin ormysqldump). - Import it into your local MySQL server as a new database.
- Download the source site's files to your local machine via FTP and place them in the web root.
- Edit the local copy's
configuration.phpto point to your local database. - Create a second local database for the destination site.
- Install a fresh Joomla locally for the destination.
- Install SP Transfer on the local destination site.
- In Options → Database, set Host to
localhostand enter the credentials for the local copy of the source database.
When ready to go live:
1. Export the destination database.
2. Upload the destination files to your production server.
3. Import the database on production.
4. Update configuration.php with production credentials.
11. Going Live
When you have finished testing the new site and are ready to put it into production:
- Backup everything — Both the source and destination sites.
- Freeze changes — If possible, freeze menu, module, and category changes on the source site before final transfer. New users and articles can continue to be added.
- Final transfer — Re-run core transfer to bring over any new or updated items. SP Transfer's history log ensures only new/changed items are processed.
- Move files (via file manager or FTP):
- Ensure both
configuration.phpfiles have permissions644(not444). - Move (do not copy) all files from the old source folder to a backup directory.
- Move all files from the destination folder to the old source folder.
- Moving takes milliseconds; copying then deleting takes much longer.
- Ensure both
- That's it! Your new site is now live at the original URL.
12. Troubleshooting & FAQ
Connection Issues
"DB connection failed" - Verify the host, database name, username, and password in Options → Database. - Check that the database server allows connections from your destination host. - Ensure the table prefix includes the trailing underscore.
"FTP connection failed"
- Verify the FTP host, port, username, and password.
- Check that the PHP ftp extension is enabled on your server.
- If using SSL, ensure your server supports FTPS.
- Verify the FTP root path is correct.
Timeouts & Memory
The transfer process stops mid-way
- This is usually caused by PHP execution time limits or memory limits.
- Simply click Transfer or Transfer All again — the process resumes from where it left off.
- For large sites, reduce the Batch size in Options (try 50 or 25).
- Consider increasing memory_limit and max_execution_time in your PHP configuration.
Duplicate Items
"Item already exist" or "Duplicate alias/title" messages - These are normal. SP Transfer handles duplicates automatically by renaming the alias, title, username, or email. - Check the History Log for details on how each duplicate was resolved.
Menu Issues
"Parent menu type is not available" - Menu types (menus) must be transferred before their menu items. Transfer menu types first, then menu items.
General
Can I transfer to the same database as the source? Yes, but a separate database is recommended. If using the same database, the table prefix must differ between source and destination to avoid conflicts.
What happens if I transfer the same items twice? The history log prevents double-transfer. Items already in state 4 (transferred and finalized) are skipped.
Does SP Transfer modify the source database? No. SP Transfer only reads from the source database. Your original site is never modified.
13. Appendices
Appendix A: Full Configuration Reference
| Section | Option | Type | Default | Values |
|---|---|---|---|---|
| General | Same IDs Handling | List | 1 (new IDs) | 1 = new IDs, 0 = skip, 2 = replace |
| Batch | Number | 100 | 1–100,000 | |
| Duplicate Alias | Hidden | Yes | Yes / No | |
| Fix save with model bug | Hidden | Yes | Yes / No | |
| Files | Existing Files Replace | List | No | Yes / No |
| Database | Database Type | List | MySQLi | MySQLi / MySQL |
| Host | Text | localhost | — | |
| Database Name | Text | — | — | |
| User Name | Text | — | — | |
| Password | Password | — | — | |
| DB Prefix | Text | — | Must end with _ |
|
| Installation Path | Hidden | — | Filesystem path | |
| FTP | FTP Host | Text | localhost | — |
| FTP Port | Text | 21 | — | |
| SSL | Radio | No | Yes / No | |
| FTP Username | Text | — | — | |
| FTP Password | Password | — | — | |
| FTP Root | Text | / | — | |
| Live Update | DLID | Text | — | Download ID from kainotomo.com |
| Permissions | Rules | ACL Rules | — | Standard Joomla ACL |
Appendix B: Transfer Log States
| State Code | Label | Description |
|---|---|---|
| 1 | Failed to transfer | The item could not be copied from source. Check the Note column for error details. |
| 2 | Transferred but not finalized | Raw data copied, but relationships and assets not yet rebuilt. Run Finalize. |
| 3 | Transferred but failed to finalize | Raw data copied but finalization failed. Check the Note column and retry Finalize. |
| 4 | Transferred and finalized | Complete. The item is fully migrated. |
Appendix C: Supported Core Entities
| Extension | Source Table | Destination Table | Description |
|---|---|---|---|
| Users | #__user_usergroup_map |
#__user_usergroup_map |
User-group mappings |
#__usergroups |
#__usergroups |
User groups | |
#__viewlevels |
#__viewlevels |
Access levels | |
#__users |
#__users |
Users | |
#__categories (user notes) |
#__categories |
User note categories | |
#__user_notes |
#__user_notes |
User notes | |
| Content | #__categories (content) |
#__categories |
Content categories |
#__content |
#__content |
Articles | |
| Contact | #__categories (contact) |
#__categories |
Contact categories |
#__contact_details |
#__contact_details |
Contact details | |
| Tags | #__tags |
#__tags |
Tags |
| Newsfeeds | #__categories (newsfeeds) |
#__categories |
News feed categories |
#__newsfeeds |
#__newsfeeds |
News feeds | |
| Banners | #__categories (banners) |
#__categories |
Banner categories |
#__banner_clients |
#__banner_clients |
Banner clients | |
#__banners |
#__banners |
Banners | |
| Menus | #__menu_types |
#__menu_types |
Menu types |
#__menu |
#__menu |
Menu items | |
| Modules | #__modules |
#__modules |
Modules |
| Fields | #__fields_groups |
#__fields_groups |
Field groups |
#__fields |
#__fields |
Custom fields |
For additional support, visit kainotomo.com or check the online documentation.