class IntegrationHandler extends BaseHandler implements Lister<IntegrationOverview>, Getter<IntegrationOverview>,
    Creator<Integration>, Deleter<Integration>, Updater<Integration>, Validating<Integration> {

    @Override
    public void delete(final String id) {
        final DataManager dataManager = getDataManager();

        // Delete all deployments
        final Set<String> deploymentNames = dataManager.fetchAllByPropertyValue(IntegrationDeployment.class,
            "integrationId", id).map(deployment -> {
                String name = deployment.getSpec().getName();
                String depId = deployment.getId().orElse(null);
                if (depId != null) {
                    dataManager.delete(IntegrationDeployment.class, depId);
                }
                return name;
            }).collect(Collectors.toSet());

        // Delete all integration bulletin boards
        dataManager.fetchIdsByPropertyValue(IntegrationBulletinBoard.class, "targetResourceId", id)
            .forEach(ibbId -> dataManager.delete(IntegrationBulletinBoard.class, ibbId));

        // delete ALL versions
        for (final String name : deploymentNames) {
            try {
                openShiftService.delete(name);
            } catch (final KubernetesClientException e) {
                LOGGER.error("Error deleting integration deployment {}: {}", name, e.getMessage());
            }
        }

        Deleter.super.delete(id);
    }

    public  IntegrationHandler(final DataManager dataMgr, final OpenShiftService openShiftService,
                              final Validator validator, final Inspectors inspectors,
                              final EncryptionComponent encryptionSupport, final APIGenerator apiGenerator,
                              final IntegrationOverviewHelper integrationOverviewHelper);

}