'Move a volume to a different storage group.
:param array: the array serial number
:param source_storagegroup_name: the originating storage group name
:param target_storagegroup_name: the destination storage group name
:param device_id: the device id
:param extra_specs: extra specifications
:param force: force flag (necessary on a detach)'

def move_volume_between_storage_groups(self, array, device_id, source_storagegroup_name, target_storagegroup_name, extra_specs, force=False):

    force_flag = ('true' if force else 'false')
    payload = {'executionOption': 'ASYNCHRONOUS', 'editStorageGroupActionParam': {'moveVolumeToStorageGroupParam': {'volumeId': [device_id], 'storageGroupId': target_storagegroup_name, 'force': force_flag}}}
    (status_code, job) = self.modify_storage_group(array, source_storagegroup_name, payload)
    self.wait_for_job('move    volume    between    storage    groups', status_code, job, extra_specs)
