diff --git a/manila_tempest_tests/services/share/v2/json/shares_client.py b/manila_tempest_tests/services/share/v2/json/shares_client.py
index 194f1da..d113ca7 100644
--- a/manila_tempest_tests/services/share/v2/json/shares_client.py
+++ b/manila_tempest_tests/services/share/v2/json/shares_client.py
@@ -385,17 +385,22 @@
 ###############
 
     def extend_share(self, share_id, new_size, version=LATEST_MICROVERSION,
-                     action_name=None):
+                     action_name=None, force=False):
         if action_name is None:
             if utils.is_microversion_gt(version, "2.6"):
                 action_name = 'extend'
             else:
                 action_name = 'os-extend'
+
         post_body = {
             action_name: {
                 "new_size": new_size,
             }
         }
+
+        if utils.is_microversion_gt(version, "2.63"):
+            post_body[action_name]["force"] = force
+
         body = json.dumps(post_body)
         resp, body = self.post(
             "shares/%s/action" % share_id, body, version=version)
diff --git a/manila_tempest_tests/tests/api/admin/test_admin_actions.py b/manila_tempest_tests/tests/api/admin/test_admin_actions.py
index e958ac9..1a5ecc7 100644
--- a/manila_tempest_tests/tests/api/admin/test_admin_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_admin_actions.py
@@ -181,3 +181,29 @@
             self.assertNotEmpty(share_server)
         else:
             self.assertEmpty(share_server)
+
+    @decorators.idempotent_id('83d94560-e9b4-47c1-b21e-400531528e27')
+    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)
+    @utils.skip_if_microversion_not_supported("2.64")
+    @testtools.skipUnless(
+        CONF.share.run_extend_tests,
+        "Share extend tests are disabled.")
+    @ddt.data(True, False)
+    def test_extend_share_force(self, force_flag):
+        # Force extend were supported from v2.64
+        # If a admin tries to do force extend, it should be success
+        share = self.create_share(share_type_id=self.share_type_id,
+                                  cleanup_in_class=False)
+        new_size = int(share['size']) + 1
+
+        # force extend share and wait for active status
+        self.admin_shares_v2_client.extend_share(share['id'], new_size,
+                                                 force=force_flag)
+        waiters.wait_for_resource_status(
+            self.shares_client, share['id'], 'available')
+
+        # check new size
+        share_get = self.shares_v2_client.get_share(share['id'])['share']
+        msg = ("Share could not be extended. Expected %s, got %s." % (
+            new_size, share_get['size']))
+        self.assertEqual(new_size, share_get['size'], msg)
diff --git a/manila_tempest_tests/tests/api/test_shares_actions_negative.py b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
index dfd92a8..64818fd 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions_negative.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
@@ -121,6 +121,20 @@
                           share['id'],
                           new_size)
 
+    @decorators.idempotent_id('f9d2ba94-4032-d17a-b4ab-a2b67f650a39')
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
+    @utils.skip_if_microversion_not_supported("2.64")
+    @testtools.skipUnless(
+        CONF.share.run_extend_tests,
+        "Share extend tests are disabled.")
+    def test_share_force_extend_non_admin_user(self):
+        # only admin cloud force extend share with micversion >= 2.64
+        # non-admin will get unauthorized error.
+        new_size = int(self.share['size']) + 1
+        self.assertRaises(lib_exc.Forbidden,
+                          self.shares_v2_client.extend_share, self.share['id'],
+                          new_size, force=True)
+
     @decorators.idempotent_id('99d42f94-8da1-4c04-ad5b-9738d6acc139')
     @tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
     @testtools.skipUnless(
