CustomChange executed twice: possible reasons

Hello guys.
Asking for your help cause no one replied in the topic in the General Discussion category. And you as developers know architecture of the liquibase quite good… so.
I have a python project and for database migrations we use liquibase. For database migrations I wrote simple Java class that executes some python script with parameter from migration.
Example of the xml file with migration:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
    <changeSet id="2" author="sergii_glazyrin">
        <customChange class="proj.ExecutePythonMigration">
            <param name="command" value="create-system-user"/>
        </customChange>
        <rollback></rollback>
    </changeSet>
</databaseChangeLog>

and this ExecutePythonMigration is the implementation of the CustomTaskChange interface:

public class ExecutePythonMigration implements CustomTaskChange {
      ...............
}

But method execute in this ExecutePythonMigration executed twice. I debugged it, removed everything from execute method. And just inserted kept there logging of the severe message to understand how many times this method was executed. And I’ve got this debug message twice.

Liquibase version: 4.20
DB: postgres
Liquibase properties file:

changeLogFile=liquibase/root.yml
liquibase.command.url=jdbc:postgresql://127.0.0.1:5432/db
liquibase.command.username=sglazyrin
liquibase.command.password=123456
classpath=liquibase/java-migrations/proj-migration/target/proj-migration-1.0-SNAPSHOT.jar

What could be wrong ?
Do you need more information to track down this issue ?