diff --git a/tcp_tests/tests/system/conftest.py b/tcp_tests/tests/system/conftest.py
index 0dabd4d..74b3ea3 100644
--- a/tcp_tests/tests/system/conftest.py
+++ b/tcp_tests/tests/system/conftest.py
@@ -84,6 +84,7 @@
 
 def pytest_addoption(parser):
     parser.addoption("--update-to-tag",
+                     "--update-mysql-version",
                      action="store",
                      default=None,
                      help="For mcp_update test")
diff --git a/tcp_tests/tests/system/test_mcp_update.py b/tcp_tests/tests/system/test_mcp_update.py
index b617528..ffbccf5 100644
--- a/tcp_tests/tests/system/test_mcp_update.py
+++ b/tcp_tests/tests/system/test_mcp_update.py
@@ -72,6 +72,11 @@
 
 
 @pytest.fixture(scope='class')
+def update_mysql_to_version(request):
+    return request.config.getoption("--update-mysql-version")
+
+
+@pytest.fixture(scope='class')
 def switch_to_proposed_pipelines(reclass_actions, salt_actions,
                                  update_to_tag):
     if update_to_tag:
@@ -300,7 +305,8 @@
     @pytest.mark.parametrize("_", [settings.ENV_NAME])
     @pytest.mark.run_mcp_update
     def test_update_glusterfs(self, salt_actions, reclass_actions,
-                              drivetrain_actions, show_step, _):
+                              drivetrain_actions, show_step,
+                              update_mysql_to_version, _):
         """ Upgrade GlusterFS
         Scenario:
         1. In infra/init.yml in Reclass, add the glusterfs_version parameter
@@ -310,6 +316,7 @@
         5. Check version for GlusterFS clients
 
         """
+
         salt = salt_actions
         reclass = reclass_actions
         dt = drivetrain_actions
@@ -357,16 +364,18 @@
     @pytest.mark.parametrize("_", [settings.ENV_NAME])
     @pytest.mark.run_mcp_update
     def test_update_galera(self, salt_actions, reclass_actions,
-                           drivetrain_actions, show_step, _):
+                           drivetrain_actions, show_step,
+                           update_mysql_to_version, _):
         """ Upgrade Galera automatically
 
         Scenario:
             1. Include the Galera upgrade pipeline job to DriveTrain
-            2. Apply the jenkins.client state on the Jenkins nodes
-            3. set the openstack_upgrade_enabled parameter to true
-            4. Refresh pillars
-            5. Add repositories with new Galera packages
-            6. Start job from Jenkins
+            2. Add fix for mysql 5.7
+            3. Apply the jenkins.client state on the Jenkins nodes
+            4. set the openstack_upgrade_enabled parameter to true
+            5. Refresh pillars
+            6. Add repositories with new Galera packages
+            7. Start job from Jenkins
         """
         salt = salt_actions
         reclass = reclass_actions
@@ -376,32 +385,68 @@
         reclass.add_class(
             "system.jenkins.client.job.deploy.update.upgrade_galera",
             "cluster/*/cicd/control/leader.yml")
+        # ################### Fix for Mysql 5.7  ##############################
         show_step(2)
-        salt.enforce_state("I@jenkins:client", "jenkins.client")
+        if (update_mysql_to_version == '5.7'):
+            mysql_update_bool = "True"
+            mysql_class = "cluster.{env_name}.openstack." \
+                          "database.mysql_version"\
+                .format(env_name=settings.ENV_NAME)
+            reclass.add_class(
+                mysql_class,
+                "cluster/*/openstack/database/master.yml")
+            reclass.add_class(
+                mysql_class,
+                "cluster/*/openstack/database/slave.yml")
+            mysql_path = "cluster/{env_name}" \
+                         "/openstack/database/mysql_version.yml"\
+                .format(env_name=settings.ENV_NAME)
+            galera_mysql_version = '5.7'
+            if update_mysql_to_version != '5.7':
+                galera_mysql_version = update_mysql_to_version
+            mysql_version = "parameters:\n" \
+                            "  _param:\n" \
+                            "    galera_mysql_version: {}"\
+                .format(galera_mysql_version)
+            if not os.path.isfile("/srv/salt/reclass/classes/{path}".format(
+                                      path=mysql_path)):
+                reclass.create_yaml_with_context(mysql_version,
+                                                 mysql_path)
+            else:
+                reclass.merge_context(mysql_version,
+                                      mysql_path)
+            reclass_actions.commit(
+                "[from TCP-QA] Change for mysql new version")
 
+            show_step(3)
+            salt.enforce_state("I@jenkins:client", "jenkins.client")
+        else:
+            LOG.info("Skip mysql upgrade fix")
         # ############### Enable automatic upgrade ############################
-        show_step(3)
+        show_step(4)
         reclass.add_bool_key("parameters._param.openstack_upgrade_enabled",
                              "True",
                              "cluster/*/infra/init.yml")
 
-        show_step(4)
+        show_step(5)
         salt.run_state("dbs*", "saltutil.refresh_pillar")
 
         # ############# Add repositories with new Galera packages #######
-        show_step(5)
+        show_step(6)
         salt.enforce_state("dbs*", "linux.system.repo")
         salt.enforce_state("cfg*", "salt.master")
 
         # #################### Login Jenkins on cid01 node ###################
-        show_step(6)
+        show_step(7)
 
         job_name = 'deploy-upgrade-galera'
         job_parameters = {
             'INTERACTIVE': 'false',
             'OS_DIST_UPGRADE': 'true',
-            'OS_UPGRADE': 'true'
+            'OS_UPGRADE': 'true',
         }
+        if mysql_update_bool:
+            job_parameters.update({'UPDATE_TO_MYSQL57': 'true'})
 
         job_result, job_description = dt.start_job_on_jenkins(
             job_name=job_name,
