Migrate from cPanel to Plesk with Plesk Migrator: config.ini and terminal commands
How to move domains, databases and hosting from cPanel to Plesk via command line: config.ini, generate-migration-list, transfer-accounts and what doesn't get transferred.
UptimeMag editorial team · 10 November 2026 · 4 min read

Anyone managing a server estate and needing to migrate customers from cPanel to Plesk typically looks for two things: the right command and a list of what breaks. This guide covers both, with syntax verified against official Plesk documentation (docs.plesk.com, Obsidian version) and Plesk support knowledge bases.
Before you start: ports and DNS
Plesk Migrator connects to the source cPanel server via SSH as root. The firewall on the source server must have SSH port open (port 22 by default, or a custom port specified in config.ini with ssh-port) to the destination Plesk server. Without this, the check command fails at the first step.
The second point concerns DNS: domain names should point to the new server only after the migration has been verified. Before starting, it's worth lowering the TTL of the DNS zones for the affected domains (for example to 300 seconds), so the final cutover doesn't get stuck for hours in resolver cache. This step is not automated by Plesk Migrator: you need to do it manually in the DNS panel you're using, a few days before the migration date.
Install the extension and prepare config.ini
On the destination Plesk server, the Plesk Migrator extension is installed from Extensions, searching for it in the catalogue search bar. From the command line, you work like this:
mkdir /usr/local/psa/var/modules/panel-migrator/conf
cd /usr/local/psa/var/modules/panel-migrator/conf/
Here you create the config.ini file. The minimum content is:
[GLOBAL]
source-type: cpanel
source-servers: cpanel
target-type: plesk
[plesk]
ip: <destination_server_IP_address>
os: unix
[cpanel]
ip: <source_server_IP_address>
os: unix
ssh-password: <source_server_root_password>
If the SSH port on the cPanel server is not port 22, add the ssh-port line under the [cpanel] section, as noted in the official templates.
Two families of sample files exist in the /usr/local/psa/admin/plib/modules/panel-migrator/backend/conf/samples/ folder: the files plesk-unix.simple.ini, cpanel.simple.ini, confixx.simple.ini and ppcpl.simple.ini contain only the bare minimum for migration, while plesk-unix.ini, cpanel.ini, confixx.ini and ppcpl.ini are complete, commented configuration files that allow you to adjust many additional options. For a first trial migration, the "simple" version is sufficient; for environments with PostgreSQL databases or non-standard configurations, it's worth starting from the full version.
If the cPanel server hosts PostgreSQL databases, the PostgreSQL admin user password must be added explicitly in config.ini, otherwise those databases won't be migrated.
The three commands that do the work
With config.ini ready, the terminal sequence is always the same, run from /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator:
Generation of the migration list: the command to execute is
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list. The resulting file is called migration-list and is placed in the/usr/local/psa/var/modules/panel-migrator/sessions/migration-session/directory. It's a list of objects — customer and reseller accounts, service plans, domains and so on — to be migrated, editable by hand to exclude domains or reassign them to different hosting plans.Pre-migration check: before running the actual transfer, it's worth executing
plesk-migrator check. This command reports all potential problems you would encounter during the migration, before any action is taken.Start the transfer: to start the migration, run
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator transfer-accounts. If no critical issues emerge, all domains, clients, resellers and other objects listed in the migration list are created on the destination server, including hosting settings: additional domains, subdomains, aliases, databases, mailboxes and accounts.
If a second sync is needed after the first run (for example to pick up changes made on the cPanel server in the days following, before the final DNS cutover), the command to use is not transfer-accounts alone but transfer-accounts --reload-source-data, which updates the data read from the source server without starting from scratch.
What doesn't transfer automatically
Plesk Migrator covers most of the standard objects from cPanel hosting: domains, subdomains, databases, email accounts, hosting plans. Left out, or requiring manual intervention, are some cPanel-specific elements that the community itself reports regularly in support forums: non-standard custom cron job configurations, custom rules in .htaccess files that depend on Apache modules not present on Plesk, SSL certificates installed outside the AutoSSL/Let's Encrypt workflow, Mailman lists and some third-party cPanel plugins without an equivalent in Plesk. In all these cases, the practical advice is not to rely solely on the output of transfer-accounts: you should do a manual check domain by domain for non-standard elements before shutting down the old server.
Migrate email separately
Email travels along with everything else if the mail content copy parameter is set in config.ini, but on large mailboxes or servers with bandwidth constraints, it's worth handling it as a separate step, with a dedicated IMAP client or tool (for example imapsync), run after accounts and domains have already been created on Plesk. This reduces the risk of timeout during the main transfer-accounts and allows you to repeat the mail synchronisation multiple times, without touching databases and web files already migrated.
Final verification before cutover
Before moving DNS to the new server in production, three practical checks:
- Domain count: the number of active domains in Plesk (Websites & Domains) should match that in the source cPanel panel.
- Send a test email to and from each migrated domain, to check that MX and SMTP/IMAP authentication work on the new server.
- Check DNS zones: each domain must have the same records (A, MX, CNAME, TXT for SPF/DKIM) on the new Plesk server as on the old one, comparing zone by zone.
Only after these checks does it make sense to raise the TTL of the DNS zones again and consider the old cPanel server closed.
At the end, a final status check is provided by Plesk documentation itself: the command plesk-migrator test-all, run after transfer-accounts, is used to check the status of objects migrated on the destination server.
Plesk is a product of WebPros International GmbH, not Prime Software.
Written with the help of artificial intelligence and checked by the editors (EU AI Act, art. 50).