class MsoVnfAdapterAsyncImpl implements MsoVnfAdapterAsync {

    @Override
    public void deleteVnfA(String cloudSiteId, String cloudOwner, String tenantId, String vnfName, String messageId,
            MsoRequest msoRequest, String notificationUrl) {

        logger.info(LoggingAnchor.ONE, MessageEnum.RA_ASYNC_DELETE_VNF);

        try {
            vnfImpl.deleteVnf(cloudSiteId, cloudOwner, tenantId, vnfName, msoRequest);
        } catch (VnfException e) {
            logger.error("{} {} Exception sending deleteVnfA notification ", MessageEnum.RA_DELETE_VNF_ERR,
                    ErrorCode.BusinessProcessError.getValue(), e);
            org.onap.so.adapters.vnf.async.client.MsoExceptionCategory exCat = null;
            String eMsg = null;
            try {
                eMsg = e.getFaultInfo().getMessage();
                exCat = org.onap.so.adapters.vnf.async.client.MsoExceptionCategory
                        .fromValue(e.getFaultInfo().getCategory().name());
            } catch (Exception e1) {
                logger.error("{} {} Exception - fault info ", MessageEnum.RA_FAULT_INFO_EXC,
                        ErrorCode.BusinessProcessError.getValue(), e1);
            }
            // Build and send Asynchronous error response
            try {
                VnfAdapterNotify notifyPort = getNotifyEP(notificationUrl);
                notifyPort.deleteVnfNotification(messageId, false, exCat, eMsg);
            } catch (Exception e1) {
                logger.error("{} {} Exception sending deleteVnfA notification ", MessageEnum.RA_SEND_VNF_NOTIF_ERR,
                        ErrorCode.BusinessProcessError.getValue(), e1);
            }
            logger.info("{} deleteVnfA", MessageEnum.RA_ASYNC_DELETE_VNF_COMPLETE);
            return;
        }

        logger.debug("Async Delete VNF: {}", vnfName);
        // Build and send Asynchronous response
        try {
            VnfAdapterNotify notifyPort = getNotifyEP(notificationUrl);
            notifyPort.deleteVnfNotification(messageId, true, null, null);

        } catch (Exception e) {
            logger.error("{} {} Exception sending deleteVnfA notification ", MessageEnum.RA_SEND_VNF_NOTIF_ERR,
                    ErrorCode.BusinessProcessError.getValue(), e);
        }

        logger.info("{} deleteVnfA", MessageEnum.RA_ASYNC_DELETE_VNF_COMPLETE);
        return;
    }

}