Transfer this entity to another owner on the backing
        persistence layer

        Args:
            transfer_payload (dict): Payload for the transfer
            from_user (any): A user based on the model specified by the
                persistence layer
            to_user (any): A user based on the model specified by the
                persistence layer

        Returns:
            str: Id of the resulting transfer action on the persistence
            layer

        Raises:
            :exc:`~.EntityNotYetPersistedError`: If the entity being
                transferred is not associated with an id on the
                persistence layer (:attr:`~Entity.persist_id`) yet
            :exc:`~.EntityNotFoundError`: If the entity could not be
                found on the persistence layer
            :exc:`~.EntityTransferError`: If the entity fails to be
                transferred on the persistence layer
            :exc:`~.PersistenceError`: If any other unhandled error
                in the plugin occurred

def transfer(self, transfer_payload=None, *, from_user, to_user):
        """Transfer this entity to another owner on the backing
        persistence layer

        Args:
            transfer_payload (dict): Payload for the transfer
            from_user (any): A user based on the model specified by the
                persistence layer
            to_user (any): A user based on the model specified by the
                persistence layer

        Returns:
            str: Id of the resulting transfer action on the persistence
            layer

        Raises:
            :exc:`~.EntityNotYetPersistedError`: If the entity being
                transferred is not associated with an id on the
                persistence layer (:attr:`~Entity.persist_id`) yet
            :exc:`~.EntityNotFoundError`: If the entity could not be
                found on the persistence layer
            :exc:`~.EntityTransferError`: If the entity fails to be
                transferred on the persistence layer
            :exc:`~.PersistenceError`: If any other unhandled error
                in the plugin occurred
        """

        if self.persist_id is None:
            raise EntityNotYetPersistedError(('Entities cannot be transferred '
                                              'until they have been '
                                              'persisted'))

        return self.plugin.transfer(self.persist_id, transfer_payload,
                                    from_user=from_user, to_user=to_user)