How to : Migrate/Move/Transfer Reseller Accounts using WHM.

neonix

Well-Known Member
Oct 21, 2004
124
2
168
Hi,

I successfully moved a few hundred shared hosting clients and reseller accounts between 2 servers using WHM :cool:. I have written below a step-by-step how-to about the migration process.

I: Background Information.

I had root access to both the servers and used the Copy Multiple Accounts feature available in WHM.

Server 1 : Old Server (Server from where the accounts have to be moved).
Server 2 : New Server (Server to where the accounts will be moved to).

Old Server:
Hostname: old.olddomain.com
Nameserver 1: ns1.olddomain.com - 70.xx.xx.xx.
Nameserver 2: ns2.olddomain.com - 70.xx.xx.xx
cPanel WHM Verion : 11.24.1+
RHEL

New Server:
Hostname: new.newdomain.com
Nameserver 1: ns1.newdomain.com - 74.xx.xx.xx.
Nameserver 2: ns2.newdomain.com - 74.xx.xx.xx
cPanel WHM Verion : 11.24.1+
RHEL

As an added precaution, I matched the versions of Apache and MySQL on both servers a week before migration.

httpd (1.3.41 (Unix)
mysql (5.0.67-community)

Both Servers also had apache-tomcat-5.5.25 (/usr/local/jakarta/apache-tomcat-5.5.25)

TIP: If the tomcat version is not visible, you can find out the Tomcat Version by running the command in the bin folder.
/usr/local/jakarta/apache-tomcat/bin# sh version.sh

TIP: If an account has servlets installed on the old server, you will have to reinstall servlets for that account on the new server after migration for .jsp files to work properly. WHM -> Account Functions -> Install Servlets.



TIP: Please plan your migration well in advance to avoid last minute problems and also inform your resellers/clients well in advance that you will migrate accounts to a new server on xx day at xx time.



II: Checklist.

1) Verify Reseller packages – Some resellers start of with shared hosting accounts before migrating to a reseller account. If the reseller has not changed their hosting accounts package the accounts will continue to have the parent hosting company’s packages. Request the reseller to immediately upgrade all such packages from the hosting company’s packages to the packages created by the reseller.

2) Check for available free IP’s on the new server because for e.g. If the Old Server accounts use 6 IPS and the new server has only 4 then transfers will begin to fail once all the IP’s are used up.

3) If Additional IP’s are required, order the IP's and add them through WHM before starting the transfer process. After adding the IP’s verify that the cpanel screen appears when the IP is entered in the browser.

4) Check the space used by each reseller to get a fair idea about the time it will take to migrate. In my case it took about an hour to move around 6 Gb of data and this time may vary as per your network connections.

5) Make a list of all accounts that use dedicated IP’S to verify that they have been allotted an IP after the transfer process is over.

6) Backup these files on both servers:

/usr/local/apache/conf/httpd.conf.
/usr/local/Jakarta/tomcat/conf/server.xml
/etc/named.conf

7) A couple of days before the migration reduce the minimum TTL for the olddomain.com as well as newdomain.com to 3600. You can set a lower value i.e 900 but 3600 worked fine for me.

DNS Functions -> Edit DNS Zone -> Choose a Zone to edit -> Minimum TTL.

8) Just before starting account migration, double check that the domain registrar’s website and DNS management features are working and are not down for maintenance reasons. We need the registrar’s site to be up when we will update the nameservers information for resellers.
To reduce downtime for all my resellers including those using private nameservers, I changed their records at their registrar as well as edited the DNS Zone of their main domain on the new server.
If resellers prefer to change the nameservers information by themselves, inform them as soon as their accounts have migrated to enable them to change the nameservers with minimum downtime.

9) If like me, you too are not an expert and if things do not work as planned – keep a server maintenance expert contact ready :D.





III: The Transfer Process.


On the Old Server:

We need to stop the FTP and Exim process and also ensure that cpanels chksrvd process does not restart them. This ensures that no new data is lost during the transfer process. (This is an optional step and the decision to stop these processes depends upon you.)

The simplest way to stop these processes is to login to the root WHM on the old server:

Service Configuration -> Service Manager

Uncheck SMTP Server and Uncheck Ftp Server. Click on Save.

TIP: Please open a ticket with your datacenter / server monitoring company informing them that you have stopped these processes or else the server monitoring system will alert the technicians and waste their valuable time.



On the New Server:

1) Enable the below setting within Tweak Settings on the new server.

Server Configuration -> Tweak Settings -> When adding a new domain, if the domain is already registered, ignore the configured nameservers, and set the NS line to the authoritative (registered) ones.

TIP: This fantastic feature that drew a lot of flak when it was introduced because it was accidentally enabled by cPanel helps in moving the domains from one server to another without needing to change the DNS settings of the domain on the new server after migration.

(IMP: Remember to uncheck this feature after the transfer process is over)

NOTE: A Express Transfer Check box is provided by WHM during the transfer process which says “Express Transfer = This will edit the zone on remote server to reflect the new DNS which can result in expedited propagation, forward any incoming mail from the remote server to the new server, suspend the account on the remote server, and prevent dynamic content from being loaded on the remote server (so no data will be lost).”

I did not use Express Transfer – BUT tweaked the above setting to set the NS line to the authoritative (registered) ones.


2) Login to the root WHM on the new server.

3) WHM -> Transfers -> Copy multiple accounts/packages from another server
4) Enter the required information.

For Remote server type is (WHM version will be auto detected on multi account copies: “I entered 11.24.1+ but this will vary as per your version.”

After entering the old server’s login information, the new server will try to connect to the old server and upon successful connection will fetch the Package Information and Account Information from the old server and display it on the screen..

5) To transfer resellers one-by-one, on the next screen, select the packages setup by the reseller.

Scroll Down and enter the reseller’s username in the text box before “Select Matching Reseller Accounts” and click on “Select Matching Reseller Accounts”.

Click on Copy.

WHM will start migration of the accounts from the old server to the new server and the time taken for this process depends upon the size of the data being transferred.

TIP: You can also select multiple reseller packages and accounts but for large reseller accounts with more than 5 GB of data, it is strongly recommended that you transfer 1 reseller’s account at a time.

6) Upon successful completion a log report is displayed.

TIP: Please do not press the BACK button during any stage of the transfer process.

...continued...in next post...
 
Last edited:
  • Like
Reactions: Infopro

neonix

Well-Known Member
Oct 21, 2004
124
2
168
IV: The Post-Transfer Processes.


1) Restart Bind and Apache through WHM on the new server.
Restart Services ->
DNS Server (BIND/NSD)
HTTP Server (Apache)

2) Quickly update the nameservers at the Registrar for all Resellers and also change the child nameservers for Resellers using private nameservers.

3) If any reseller account is using private Nameservers, you will have to edit the DNS Zone for the domain on the new server, as the nameservers will be pointing to the old IPS. Modify the nameserver IP’S of the reseller account to the new server’s nameserver IP’s.
DNS Functions -> Edit DNS Zone -> Choose a Zone to edit ->

4) If the MX record of a domain has been set to point to the hostname of the old server, then the MX record also has to be changed to point to the hostname of the new server when you edit the DNZ Zone.
e.g MX record hostname -> old.olddomain.com. has to be changed to new.newdomain.com.
If the MX record pointer points to the domain name then this change is not required.

5) If any account had servlets installed on the old server, you will have to reinstall the servlets for that account on the new server.

6) Dedicated IP’s are automatically assigned if they are ‘checked’ during the transfer process. However, if you have to assign a new IP to an account on the new server that has been migrated from the old server but did not have a dedicated IP on the old server, please wait for 24 hours after migration so as not to overlap the DNS migration and IP change process.

Use dnsstuff.com or a similar website to check that all the main reseller domains have been updated and that there are no DNS errors reported for any domain.

7) Wait…Wait…Wait…All my sites were working from the new server within an hour and were accessible from 3 of the four ISP’s that I use. However, 1 ISP continued to point a reseller’s main domain to the old server even after 24 hours. I then edited the DNS Zone of that reseller’s domain on the old server to point the nameservers and A record to that of the new server and restarted apache and bind and the 4th ISP started pointing to the new server within an hour. Luckily, I was not actively using the 4th ISP during account migration but if your ISP fails to update their DNS quickly… Sites like dnsstuff.com really help to assure that the DNS migration has been done correctly.


8) Emails start to work on the new server quickly and you can check your email logs to verify if migrated domains are receiving their emails on the new server.

TIP: Initially check this for domains that report high volume of email traffic.

You need root SSH access.

> cd /var/log
> grep domain exim_mainlog


9) After all reseller accounts have been copied:

9a) On New Server: Uncheck the below setting.
Server Configuration -> Tweak Settings -> When adding a new domain, if the domain is already registered, ignore the configured nameservers, and set the NS line to the authoritative (registered) ones.

9b) If you have stopped SMTP and FTP Server services on the old server… restart them.
On Old Server:
Service Configuration -> Service Manager
Check SMTP Server and Ftp Server.
Click on Save.


10) Inform your datacenter / server monitoring company informing them that you have started these processes to re-enable server monitoring if they have turned it off.

I moved over a couple of hundred accounts using the above method and received only ‘Two’ complaint calls the next day and none thereafter :)
Both first day callers were using third-party email software in their office to collectively download and distribute emails. They were advised to speak to the support team of their email software who resolved the issue for them.
 
Last edited:
  • Like
Reactions: FeeL

FeeL

Well-Known Member
Apr 17, 2004
134
2
168
Rio de janeiro
cPanel Access Level
Reseller Owner
another point - postgres

I would ad that you verify (if you have instaled) if postfress is instaled @ the new server, since it is not a default on Cpanel - and also if the versions of both are the same (just as you did with the MYSQL)
:D
 

Spiral

BANNED
Jun 24, 2005
2,018
8
193
I would ad that you verify (if you have instaled) if postfress is instaled @ the new server, since it is not a default on Cpanel - and also if the versions of both are the same (just as you did with the MYSQL)
:D
Regarding that for those who may want to know how to install
the PostGreSQL if it is not installed since it is optional:
Code:
# /scripts/installpostgres

This script will install PostgreSQL 7.3.x or later
If you have an older version installed you wil need to
Dump your databases to a file and then restore them
after the install as 7.3.x is not backwards compatible.
If you do not have any databases, you can just run:
  mv /var/lib/pgsql /var/lib/pgsql.old
  /sbin/service postgresql stop
  /sbin/service postgresql start
to force creating a 7.3.x style setup.  Do not do this if
you have databases that you wish to keep!

Are you sure you wish to proceed?
Don't forget to recompile PHP with the postgresql extensions if you install the database server
else your PHP scripts will only work with the regular MySQL database server only.

Code:
PHP Compile Options:
./configure (your other options) --with-pgsql 

(Or select the option when running EasyApache)
 
Last edited:

crazyaboutlinux

Well-Known Member
Nov 3, 2007
939
1
66
A customer want's to transfer their reseller account from current hosting provider to us.

SO can i transfer that reseller account using WHM reseller password ?

we don't have other hosting provider's root password & also, they won't give us.

Nilesh
 

ethical

Well-Known Member
Apr 7, 2009
97
8
58
I cant beleive no one else has posted a thank you to this post, but

thank you!

that is very very helpful post and instruction.... thanks for taking the time to write it up
 
  • Like
Reactions: rvaldeza