diff --git a/doc/source/command-objects/volume-transfer-request.rst b/doc/source/command-objects/volume-transfer-request.rst
index 79d84f7551..f9efb979fd 100644
--- a/doc/source/command-objects/volume-transfer-request.rst
+++ b/doc/source/command-objects/volume-transfer-request.rst
@@ -4,6 +4,27 @@ volume transfer request
 
 Block Storage v1, v2
 
+volume transfer request create
+------------------------------
+
+Create volume transfer request
+
+.. program:: volume transfer request create
+.. code:: bash
+
+    os volume transfer request create
+        [--name <name>]
+        <volume>
+
+.. option:: --name <name>
+
+    New transfer request name (default to None)
+
+.. _volume_transfer_request_create-volume:
+.. describe:: <volume>
+
+    Volume to transfer (name or ID)
+
 volume transfer request list
 ----------------------------
 
@@ -18,4 +39,4 @@ Lists all volume transfer requests.
 .. option:: --all-projects
 
     Shows detail for all projects. Admin only.
-    (defaults to False)
\ No newline at end of file
+    (defaults to False)
diff --git a/openstackclient/tests/unit/volume/v1/fakes.py b/openstackclient/tests/unit/volume/v1/fakes.py
index 5c1f3b12f5..f63553fe71 100644
--- a/openstackclient/tests/unit/volume/v1/fakes.py
+++ b/openstackclient/tests/unit/volume/v1/fakes.py
@@ -146,9 +146,12 @@ class FakeTransfer(object):
         """
         # Set default attribute
         transfer_info = {
-            'volume_id': 'ce26708d-a7f8-4b4b-9861-4a80256615a7',
+            'auth_key': 'key-' + uuid.uuid4().hex,
+            'created_at': 'time-' + uuid.uuid4().hex,
+            'volume_id': 'volume-id-' + uuid.uuid4().hex,
             'name': 'fake_transfer_name',
-            'id': '731a7f53-aa92-4fbd-9de3-6f7d729c926b'
+            'id': 'id-' + uuid.uuid4().hex,
+            'links': 'links-' + uuid.uuid4().hex,
         }
 
         # Overwrite default attributes if there are some attributes set
diff --git a/openstackclient/tests/unit/volume/v1/test_transfer_request.py b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
index f7980c34aa..a5c31f8d27 100644
--- a/openstackclient/tests/unit/volume/v1/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
@@ -12,7 +12,6 @@
 #   under the License.
 #
 
-
 from openstackclient.tests.unit.volume.v1 import fakes as transfer_fakes
 from openstackclient.volume.v1 import volume_transfer_request
 
@@ -26,6 +25,77 @@ class TestTransfer(transfer_fakes.TestVolumev1):
         self.transfer_mock = self.app.client_manager.volume.transfers
         self.transfer_mock.reset_mock()
 
+        # Get a shortcut to the VolumeManager Mock
+        self.volumes_mock = self.app.client_manager.volume.volumes
+        self.volumes_mock.reset_mock()
+
+
+class TestTransferCreate(TestTransfer):
+
+    volume = transfer_fakes.FakeVolume.create_one_volume()
+
+    columns = (
+        'auth_key',
+        'created_at',
+        'id',
+        'name',
+        'volume_id',
+    )
+
+    def setUp(self):
+        super(TestTransferCreate, self).setUp()
+
+        self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer(
+            attrs={'volume_id': self.volume.id})
+        self.data = (
+            self.volume_transfer.auth_key,
+            self.volume_transfer.created_at,
+            self.volume_transfer.id,
+            self.volume_transfer.name,
+            self.volume_transfer.volume_id,
+        )
+
+        self.transfer_mock.create.return_value = self.volume_transfer
+        self.volumes_mock.get.return_value = self.volume
+
+        # Get the command object to test
+        self.cmd = volume_transfer_request.CreateTransferRequest(
+            self.app, None)
+
+    def test_transfer_create_without_name(self):
+        arglist = [
+            self.volume.id,
+        ]
+        verifylist = [
+            ('volume', self.volume.id),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.transfer_mock.create.assert_called_once_with(
+            self.volume.id, None)
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, data)
+
+    def test_transfer_create_with_name(self):
+        arglist = [
+            '--name', self.volume_transfer.name,
+            self.volume.id,
+        ]
+        verifylist = [
+            ('name', self.volume_transfer.name),
+            ('volume', self.volume.id),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.transfer_mock.create.assert_called_once_with(
+            self.volume.id, self.volume_transfer.name,)
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, data)
+
 
 class TestTransferList(TestTransfer):
 
diff --git a/openstackclient/tests/unit/volume/v2/fakes.py b/openstackclient/tests/unit/volume/v2/fakes.py
index a958c46803..51c952cdc6 100644
--- a/openstackclient/tests/unit/volume/v2/fakes.py
+++ b/openstackclient/tests/unit/volume/v2/fakes.py
@@ -39,9 +39,12 @@ class FakeTransfer(object):
         """
         # Set default attribute
         transfer_info = {
-            'volume_id': 'ce26708d-a7f8-4b4b-9861-4a80256615a7',
+            'auth_key': 'key-' + uuid.uuid4().hex,
+            'created_at': 'time-' + uuid.uuid4().hex,
+            'volume_id': 'volume-id-' + uuid.uuid4().hex,
             'name': 'fake_transfer_name',
-            'id': '731a7f53-aa92-4fbd-9de3-6f7d729c926b'
+            'id': 'id-' + uuid.uuid4().hex,
+            'links': 'links-' + uuid.uuid4().hex,
         }
 
         # Overwrite default attributes if there are some attributes set
diff --git a/openstackclient/tests/unit/volume/v2/test_transfer_request.py b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
index 32108c025d..8cc76bef4c 100644
--- a/openstackclient/tests/unit/volume/v2/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
@@ -12,7 +12,6 @@
 #   under the License.
 #
 
-
 from openstackclient.tests.unit.volume.v2 import fakes as transfer_fakes
 from openstackclient.volume.v2 import volume_transfer_request
 
@@ -26,6 +25,77 @@ class TestTransfer(transfer_fakes.TestVolume):
         self.transfer_mock = self.app.client_manager.volume.transfers
         self.transfer_mock.reset_mock()
 
+        # Get a shortcut to the VolumeManager Mock
+        self.volumes_mock = self.app.client_manager.volume.volumes
+        self.volumes_mock.reset_mock()
+
+
+class TestTransferCreate(TestTransfer):
+
+    volume = transfer_fakes.FakeVolume.create_one_volume()
+
+    columns = (
+        'auth_key',
+        'created_at',
+        'id',
+        'name',
+        'volume_id',
+    )
+
+    def setUp(self):
+        super(TestTransferCreate, self).setUp()
+
+        self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer(
+            attrs={'volume_id': self.volume.id})
+        self.data = (
+            self.volume_transfer.auth_key,
+            self.volume_transfer.created_at,
+            self.volume_transfer.id,
+            self.volume_transfer.name,
+            self.volume_transfer.volume_id,
+        )
+
+        self.transfer_mock.create.return_value = self.volume_transfer
+        self.volumes_mock.get.return_value = self.volume
+
+        # Get the command object to test
+        self.cmd = volume_transfer_request.CreateTransferRequest(
+            self.app, None)
+
+    def test_transfer_create_without_name(self):
+        arglist = [
+            self.volume.id,
+        ]
+        verifylist = [
+            ('volume', self.volume.id),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.transfer_mock.create.assert_called_once_with(
+            self.volume.id, None)
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, data)
+
+    def test_transfer_create_with_name(self):
+        arglist = [
+            '--name', self.volume_transfer.name,
+            self.volume.id,
+        ]
+        verifylist = [
+            ('name', self.volume_transfer.name),
+            ('volume', self.volume.id),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.transfer_mock.create.assert_called_once_with(
+            self.volume.id, self.volume_transfer.name,)
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, data)
+
 
 class TestTransferList(TestTransfer):
 
diff --git a/openstackclient/volume/v1/volume_transfer_request.py b/openstackclient/volume/v1/volume_transfer_request.py
index 5d8ff6839c..b1167340fb 100644
--- a/openstackclient/volume/v1/volume_transfer_request.py
+++ b/openstackclient/volume/v1/volume_transfer_request.py
@@ -12,14 +12,44 @@
 #   under the License.
 #
 
-"""Volume v2 transfer action implementations"""
+"""Volume v1 transfer action implementations"""
 
 from osc_lib.command import command
 from osc_lib import utils
+import six
 
 from openstackclient.i18n import _
 
 
+class CreateTransferRequest(command.ShowOne):
+    """Create volume transfer request."""
+
+    def get_parser(self, prog_name):
+        parser = super(CreateTransferRequest, self).get_parser(prog_name)
+        parser.add_argument(
+            '--name',
+            metavar="<name>",
+            help=_('New transfer request name (default to None)')
+        )
+        parser.add_argument(
+            'volume',
+            metavar="<volume>",
+            help=_('Volume to transfer (name or ID)')
+        )
+        return parser
+
+    def take_action(self, parsed_args):
+        volume_client = self.app.client_manager.volume
+        volume_id = utils.find_resource(
+            volume_client.volumes, parsed_args.volume).id
+        volume_transfer_request = volume_client.transfers.create(
+            volume_id, parsed_args.name,
+        )
+        volume_transfer_request._info.pop("links", None)
+
+        return zip(*sorted(six.iteritems(volume_transfer_request._info)))
+
+
 class ListTransferRequests(command.Lister):
     """Lists all volume transfer requests."""
 
diff --git a/openstackclient/volume/v2/volume_transfer_request.py b/openstackclient/volume/v2/volume_transfer_request.py
index 5d8ff6839c..45581586e6 100644
--- a/openstackclient/volume/v2/volume_transfer_request.py
+++ b/openstackclient/volume/v2/volume_transfer_request.py
@@ -16,10 +16,40 @@
 
 from osc_lib.command import command
 from osc_lib import utils
+import six
 
 from openstackclient.i18n import _
 
 
+class CreateTransferRequest(command.ShowOne):
+    """Create volume transfer request."""
+
+    def get_parser(self, prog_name):
+        parser = super(CreateTransferRequest, self).get_parser(prog_name)
+        parser.add_argument(
+            '--name',
+            metavar="<name>",
+            help=_('New transfer request name (default to None)'),
+        )
+        parser.add_argument(
+            'volume',
+            metavar="<volume>",
+            help=_('Volume to transfer (name or ID)'),
+        )
+        return parser
+
+    def take_action(self, parsed_args):
+        volume_client = self.app.client_manager.volume
+        volume_id = utils.find_resource(
+            volume_client.volumes, parsed_args.volume).id
+        volume_transfer_request = volume_client.transfers.create(
+            volume_id, parsed_args.name,
+        )
+        volume_transfer_request._info.pop("links", None)
+
+        return zip(*sorted(six.iteritems(volume_transfer_request._info)))
+
+
 class ListTransferRequests(command.Lister):
     """Lists all volume transfer requests."""
 
diff --git a/releasenotes/notes/bp-cinder-command-support-cc8708c4395ce467.yaml b/releasenotes/notes/bp-cinder-command-support-cc8708c4395ce467.yaml
new file mode 100644
index 0000000000..686ff25e4e
--- /dev/null
+++ b/releasenotes/notes/bp-cinder-command-support-cc8708c4395ce467.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add ``volume transfer request create`` command in volume v1 and v2
+    [Blueprint `cinder-command-support <https://blueprints.launchpad.net/python-openstackclient/+spec/cinder-command-support>`_]
diff --git a/setup.cfg b/setup.cfg
index 7af6e0c7e2..262c276a7f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -483,6 +483,7 @@ openstack.volume.v1 =
     volume_service_list = openstackclient.volume.v1.service:ListService
     volume_service_set = openstackclient.volume.v1.service:SetService
 
+    volume_transfer_request_create = openstackclient.volume.v1.volume_transfer_request:CreateTransferRequest
     volume_transfer_request_list = openstackclient.volume.v1.volume_transfer_request:ListTransferRequests
 
 openstack.volume.v2 =
@@ -531,6 +532,7 @@ openstack.volume.v2 =
     volume_service_list = openstackclient.volume.v2.service:ListService
     volume_service_set = openstackclient.volume.v2.service:SetService
 
+    volume_transfer_request_create = openstackclient.volume.v2.volume_transfer_request:CreateTransferRequest
     volume_transfer_request_list = openstackclient.volume.v2.volume_transfer_request:ListTransferRequests
 
 [build_sphinx]