• Please be aware: Kaspersky Anti-Virus has been deprecated
    With the upgrade to Plesk Obsidian 18.0.64, "Kaspersky Anti-Virus for Servers" will be automatically removed from the servers it is installed on. We recommend that you migrate to Sophos Anti-Virus for Servers.
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Important Plesk Migrator extension

Hello,

We are upgrading all servers from centos 6 (plesk 17) tot centos 7 (plesk 17), after that we upgrade to plesk 18, but thats not important for this bug.

The last few servers we have noted that the migration manager changes the NS servers to ns1.domain.fqn and ns2.domain.fqn, always, for every domain
i think it started with the latest version of the migration manager.

On the source server the domains have regular dns server. for example: ns1a.linulex.net and ns1b.linulex.net
And the dns template on the target server has the correct dns servers.

regards
Jan
 
Hi,

what is the reason why the migrator does not migrate the backup plans of the customers and their backups?

if you migrate a centos 6 server to centos 8, for example, and then the customers no longer have a backup plan or backups, that's not so great.

if the plesk versions of source and target are exactly the same, should that work or not?
 
Last edited:
Good afternoon @peon or other Plesk Staffmember,

We are migrating two Directadmin servers to Plesk but found out that the databases and database users are not migrated.
Source and Destination MariaDB: 10.2.34 / CentOS7

The log shows no errors and everything is processed succesful.

Hope someone can help us with this issue.
Thank you in advance!
 
In my debug log I found the following:

SQL:
Query:
            SELECT
                Subscriptions.id as subscription_id,
                domains.id as domain_id,
                domains.name as name,
                domains.status as status,
                domains.htype as hosting_type,
                domains.vendor_id as owner_id
            FROM
                Subscriptions JOIN domains ON Subscriptions.object_id = domains.id
            WHERE
                Subscriptions.object_type = "domain" AND domains.webspace_id = 0
         AND domains.name in ('<domain1>', '<domain2>', '<domain3>')

Code:
SQL query results: Empty set
 
hello
Directadmin to Plesk Migration i am doing
but I am getting an error like this.
the service stops before it starts.

Failed to deploy Python on source server
Cause: Source server OS 'linux None x86_64' on the source server 'directadmin' (x.x.x.x) is not supported
That is a critical error, migration was stopped.

uname -r
4.18.0-305.10.2.2.lve.el7h.x86_64

cat /proc/version
Linux version 4.18.0-305.10.2.2.lve.el7h.x86_64 (gcc version 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)) #1 SMP Wed Jul 28 13:09:44 UTC 2021
 
Failed to deploy Python on source server
Cause: Source server OS 'linux None x86_64' on the source server 'directadmin' (x.x.x.x) is not supported
That is a critical error, migration was stopped.
This is the Plesk Migrator extension bug with ID PMT-5007 which is planned to be fixed in future extension updates.

Until the bug is fixed use the following workaround:
  1. Open the /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/os_version.py file in a text editor:
    Code:
    # vi /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/os_version.py
  2. Replace the line as below:
    • Before:
      Code:
      if "CentOS" in release_info:
    • After:
      Code:
      if "CentOS" in release_info or "AlmaLinux" in release_info:
  3. Save the changes and close the file. Start the migration anew.
 
This is the Plesk Migrator extension bug with ID PMT-5007 which is planned to be fixed in future extension updates.

Until the bug is fixed use the following workaround:
  1. Open the /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/os_version.py file in a text editor:
    Code:
    # vi /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/os_version.py
  2. Replace the line as below:
    • Before:
      Code:
      if "CentOS" in release_info:
    • After:
      Code:
      if "CentOS" in release_info or "AlmaLinux" in release_info:
  3. Save the changes and close the file. Start the migration anew.
hello Igor i have changed this as you mentioned but now i am facing a new error

Plesk Migrator returned non-zero exit code

COMMAND: '/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator' 'generate-migration-list' '/opt/psa/var/modules/panel-migrator/sessions/20221216095717/config.ini' '--migration-list-format=json' '--migration-list-file=/opt/psa/var/modules/panel-migrator/sessions/20221216095717/migration-list-raw.json' '--skip-services-checks' '--include-existing-subscriptions' '--async' '--overwrite' '--reload-source-data'

EXIT CODE: 1

STDOUT:
[2022-12-16 10:01:41][ERROR] Internal Plesk Migrator error: 'unexpected indent (os_version.py, line 172)', migration is aborted. See the traceback in debug log for more information.


STDERR:
 
Hi

I've started migrating to Plesk from direct admin,

I received this error:

Failed to deploy Python on the source server
Cause: Source server OS 'cloudlinux 8 x86_64' on the source server 'directadmin' (xx.xx.xx.xx) is not supported
That is a critical error, migration was stopped.

It is unclear if cloudlinux 8 is supported or if the issue is different.

Please guide.
 
Plesk Migrator used to migrate a user with one subscription, one domain, with a Joomla installation in it from one Plesk server to another Plesk server. Both servers identical setup. Plesk 18.0.57 #5, Almalinux 8.9

error during migration
Restoration of hosting settings (addon domains, mailboxes, PHP settings, etc) of subscription failed.
Check PMM restoration logs for more details.
Error code: 1000
Error message: PHP Warning: Attempt to read property "guid" on null; File: /usr/local/psa/admin/plib/backup/Conflicts/Detector.php, Line: 439

PHP Warning: Attempt to read property "guid" on null in /usr/local/psa/admin/plib/backup/Conflicts/Detector.php on line 439
Error: Can not find IP addresses for owner specified as [2023-12-19 09:52:09.985] 631320:65814ba9c7cf3 ERR [panel] PleskUserException: Can not find IP addresses for owner specified as in /usr/local/psa/admin/plib/backup/Conflicts/PleskDataManager.php:702
Stack trace:
#0 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(439): backup_Conflicts_PleskDataManager->getIpsByOwnerGuid(NULL)
#1 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(384): backup_Conflicts_Detector->_getIpAddressesForMapping(Object(DOMDocument))
#2 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(45): backup_Conflicts_Detector->_findConflicts(Object(DOMDocument))
#3 /usr/local/psa/admin/plib/backup/Conflicts/ConflictsRunner.php(81): backup_Conflicts_Detector->findConflicts()
#4 /usr/local/psa/admin/plib/backup/Conflicts/Runner.php(16): ConflictsRunner::run(Array)
#5 {main}
The migration does seem to have worked though. Site on new server appears functional. Am still checking the details.
 
still regarding above. From the pmmcli.log

[2023-12-19 09:52:10.004|631244] CRITICAL: PMMUtilityException:
<class 'pmmcli_exceptions.PMMUtilityException'> Conflict Detector was finished with exit code 1
Traceback (most recent call last):
File "/usr/local/psa/admin/sbin/pmmcli/pmm_conflict_detector.py", line 117, in run
cmd.spawn()
File "/usr/local/psa/admin/sbin/pmmcli/subproc.py", line 284, in spawn
self.proc.run()
File "/usr/local/psa/admin/sbin/pmmcli/subproc.py", line 224, in run
BaseSubprocess.run(self)
File "/usr/local/psa/admin/sbin/pmmcli/subproc.py", line 198, in run
self.wait()
File "/usr/local/psa/admin/sbin/pmmcli/subproc.py", line 232, in wait
BaseSubprocess.wait(self)
File "/usr/local/psa/admin/sbin/pmmcli/subproc.py", line 212, in wait
raise NonzeroExitException(self, self.__retcode)
subproc.NonzeroExitException: was finished with exit code 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/psa/admin/sbin/pmmcli/pmmcli.py", line 1006, in doActivity
File "/usr/local/psa/admin/sbin/pmmcli/pmmcli_session.py", line 543, in detectConflicts
return self.__doDetectConflicts()
File "/usr/local/psa/admin/sbin/pmmcli/pmmcli_session.py", line 538, in __doDetectConflicts
pmm_conflict_detector.ConflictDetector.run(owner_guid,self.__conflict_description,self.__session_path, self.__dump_index)
File "/usr/local/psa/admin/sbin/pmmcli/pmm_conflict_detector.py", line 122, in run
raise PMMUtilityException('Conflict Detector', x)
pmmcli_exceptions.PMMUtilityException: Conflict Detector was finished with exit code 1

[2023-12-19 09:52:10.005|631244] DEBUG: send-error-report /usr/local/psa/admin/bin/send-error-report <?xml version="1.0" ?><error><file>pmmcli, NonzeroExitError</file><line>0</line><message>Command: /usr/local/psa/bin/sw-engine-pleskrun -c /usr/local/psa/admin/conf/php.ini /usr/local/psa/admin/plib/backup/Conflicts/Runner.php --detect-conflicts --owner-guid=None --restore-specification=/usr/local/psa/PMM/rsessions/20231219095208922/dump/dump_index.xml --conflicts-description-out=/usr/local/psa/PMM/rsessions/20231219095208922/conflict_description --session-path=/usr/local/psa/PMM/rsessions/20231219095208922 --log=conflict-detect.log --debug
Code: 1
STDOUT:
STDERR: PHP Warning: Attempt to read property &quot;guid&quot; on null; File: /usr/local/psa/admin/plib/backup/Conflicts/Detector.php, Line: 439

PHP Warning: Attempt to read property &quot;guid&quot; on null in /usr/local/psa/admin/plib/backup/Conflicts/Detector.php on line 439
Error: Can not find IP addresses for owner specified as [2023-12-19 09:52:09.985] 631320:65814ba9c7cf3 ERR [panel] PleskUserException: Can not find IP addresses for owner specified as in /usr/local/psa/admin/plib/backup/Conflicts/PleskDataManager.php:702
Stack trace:
#0 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(439): backup_Conflicts_PleskDataManager-&gt;getIpsByOwnerGuid(NULL)
#1 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(384): backup_Conflicts_Detector-&gt;_getIpAddressesForMapping(Object(DOMDocument))
#2 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(45): backup_Conflicts_Detector-&gt;_findConflicts(Object(DOMDocument))
#3 /usr/local/psa/admin/plib/backup/Conflicts/ConflictsRunner.php(81): backup_Conflicts_Detector-&gt;findConflicts()
#4 /usr/local/psa/admin/plib/backup/Conflicts/Runner.php(16): ConflictsRunner::run(Array)
#5 {main}

</message><trace> File &quot;/usr/lib64/python3.6/runpy.py&quot;, line 193, in _run_module_as_main
&quot;__main__&quot;, mod_spec)
File &quot;/usr/lib64/python3.6/runpy.py&quot;, line 85, in _run_code
exec(code, run_globals)
File &quot;/usr/local/psa/admin/sbin/pmmcli/__main__.py&quot;, line 25, in &lt;module&gt;
bootstrap_pex(__entry_point__)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex_bootstrapper.py&quot;, line 98, in bootstrap_pex
pex.PEX(entry_point).execute()
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 332, in execute
self._wrap_coverage(self._wrap_profiling, self._execute)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 262, in _wrap_coverage
runner(*args)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 294, in _wrap_profiling
runner(*args)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 375, in _execute
return self.execute_entry(self._pex_info.entry_point)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 433, in execute_entry
runner(entry_point)
File &quot;/usr/local/psa/admin/sbin/pmmcli/.bootstrap/_pex/pex.py&quot;, line 438, in execute_module
runpy.run_module(module_name, run_name='__main__')
File &quot;/usr/lib64/python3.6/runpy.py&quot;, line 208, in run_module
return _run_code(code, {}, init_globals, run_name, mod_spec)
File &quot;/usr/lib64/python3.6/runpy.py&quot;, line 85, in _run_code
exec(code, run_globals)
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli.py&quot;, line 2583, in &lt;module&gt;
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli.py&quot;, line 2534, in main
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli.py&quot;, line 2395, in restore
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli.py&quot;, line 102, in doActivity
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli.py&quot;, line 1006, in doActivity
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli_session.py&quot;, line 543, in detectConflicts
return self.__doDetectConflicts()
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmmcli_session.py&quot;, line 538, in __doDetectConflicts
pmm_conflict_detector.ConflictDetector.run(owner_guid,self.__conflict_description,self.__session_path, self.__dump_index)
File &quot;/usr/local/psa/admin/sbin/pmmcli/pmm_conflict_detector.py&quot;, line 117, in run
cmd.spawn()
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 284, in spawn
self.proc.run()
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 224, in run
BaseSubprocess.run(self)
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 198, in run
self.wait()
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 232, in wait
BaseSubprocess.wait(self)
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 212, in wait
raise NonzeroExitException(self, self.__retcode)
File &quot;/usr/local/psa/admin/sbin/pmmcli/subproc.py&quot;, line 61, in __init__
self.stackTrace = stackTrace if stackTrace else traceback.format_stack()
</trace></error>
[2023-12-19 09:52:10.010|631244] INFO: Executing asynchronously <subprocess[631325] '/usr/local/psa/admin/bin/send-error-report send-error-report pmm'>
[2023-12-19 09:52:10.012|631244] DEBUG: <__main__.RestoreAction object at 0x7f0171d39a20>: response
[2023-12-19 09:52:10.017|631244] INFO: Outgoing packet:
<?xml version="1.0" ?><response>
<errcode>1000</errcode>
<errmsg>PHP Warning: Attempt to read property &quot;guid&quot; on null; File: /usr/local/psa/admin/plib/backup/Conflicts/Detector.php, Line: 439

PHP Warning: Attempt to read property &quot;guid&quot; on null in /usr/local/psa/admin/plib/backup/Conflicts/Detector.php on line 439
Error: Can not find IP addresses for owner specified as [2023-12-19 09:52:09.985] 631320:65814ba9c7cf3 ERR [panel] PleskUserException: Can not find IP addresses for owner specified as in /usr/local/psa/admin/plib/backup/Conflicts/PleskDataManager.php:702
Stack trace:
#0 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(439): backup_Conflicts_PleskDataManager-&gt;getIpsByOwnerGuid(NULL)
#1 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(384): backup_Conflicts_Detector-&gt;_getIpAddressesForMapping(Object(DOMDocument))
#2 /usr/local/psa/admin/plib/backup/Conflicts/Detector.php(45): backup_Conflicts_Detector-&gt;_findConflicts(Object(DOMDocument))
#3 /usr/local/psa/admin/plib/backup/Conflicts/ConflictsRunner.php(81): backup_Conflicts_Detector-&gt;findConflicts()
#4 /usr/local/psa/admin/plib/backup/Conflicts/Runner.php(16): ConflictsRunner::run(Array)
#5 {main}
 
I got this error while migrating :

Failed to generate migration list file
Cause: Violation of BIDI requirement 3


(Plesk Obsidian latest edition - Windows server)

What is this issue for ?
 
Hello,

we've a new issue with plesk migrator, we already migrated multiple websites from the same plesk server but now we're getting this error:

Failed to generate migration list file
Cause: 'bytes' object has no attribute 'encode'
That is a critical error, migration was stopped.



Debug:
Exception:Traceback (most recent call last): File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 164, in run_multi_attempts run() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 153, in run action.run(self._context) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/actions/migration_list/generate.py", line 26, in run admin_id = global_context.hosting_repository.panel.get_administrator_id(None) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/common/__init__.py", line 255, in wrapper value = func(*args, **kw) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/hosting_repository/panel.py", line 60, in get_administrator_id rows = self.plesk_server.query_panel_db(query) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/connections/target_server.py", line 190, in query_panel_db return self.mysql_query(connection_args, query_str, query_args, is_result_as_dict=True) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/connections/target_server.py", line 172, in mysql_query return mysql_query_local(connection_args, query_str, query_args, is_result_as_dict) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/mysql.py", line 35, in mysql_query_local with closing(pymysql.connect(**connection_args)) as connection: File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/__init__.py", line 90, in Connect return Connection(*args, **kwargs) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 699, in __init__ self.connect() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 936, in connect self._request_authentication() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 1168, in _request_authentication auth_packet = self._process_auth(plugin_name, auth_packet) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 1194, in _process_auth data = _scramble(self.password.encode('latin1'), auth_packet.read_all())AttributeError: 'bytes' object has no attribute 'encode'


Exception:Traceback (most recent call last): File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 196, in _run_common_action_plain run_multi_attempts() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 177, in run_multi_attempts raise err File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 164, in run_multi_attempts run() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/workflow/runner/by_subscription.py", line 153, in run action.run(self._context) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/actions/migration_list/generate.py", line 26, in run admin_id = global_context.hosting_repository.panel.get_administrator_id(None) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/common/__init__.py", line 255, in wrapper value = func(*args, **kw) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/hosting_repository/panel.py", line 60, in get_administrator_id rows = self.plesk_server.query_panel_db(query) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/connections/target_server.py", line 190, in query_panel_db return self.mysql_query(connection_args, query_str, query_args, is_result_as_dict=True) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/plesk/connections/target_server.py", line 172, in mysql_query return mysql_query_local(connection_args, query_str, query_args, is_result_as_dict) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/mysql.py", line 35, in mysql_query_local with closing(pymysql.connect(**connection_args)) as connection: File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/__init__.py", line 90, in Connect return Connection(*args, **kwargs) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 699, in __init__ self.connect() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 936, in connect self._request_authentication() File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 1168, in _request_authentication auth_packet = self._process_auth(plugin_name, auth_packet) File "/usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/thirdparties/pymysql/connections.py", line 1194, in _process_auth data = _scramble(self.password.encode('latin1'), auth_packet.read_all())AttributeError: 'bytes' object has no attribute 'encode'

Might be related to plesk-py3 update ?
 
That's very likely. I you have an opportunity to open a ticket with our support team for an investigation of the issue I would recommend doing so.

Hello, thank you for your answer, would love to do so, but I don't seem to be able to log on support.plesk.com. I'm logged in on 360. But the Sign-In button only redirect to the main page. Tried in private mode but not better :(.
Chat on 360 doesn't seem available for now either. :')
 
Hello, thank you for your answer, would love to do so, but I don't seem to be able to log on support.plesk.com. I'm logged in on 360. But the Sign-In button only redirect to the main page. Tried in private mode but not better :(.
Chat on 360 doesn't seem available for now either. :')
I am sorry to read that you have trouble accessing to support.plesk.com. Some users reported that they where able to access https://support.plesk.com/hc/en-us on a different device (for example on a smartphone). I suggest trying that first. If that does not work, it might be worth create an account via Plesk 360 in a private/incognito window of your browser. Let me know if that works.
 
Back
Top