diff --git a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java index 50caa2ea888..5cd845762fe 100644 --- a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java +++ b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java @@ -200,6 +200,9 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider, public boolean removeVMFromBackupOffering(final VirtualMachine vm) { final VeeamClient client = getClient(vm.getDataCenterId()); final VmwareDatacenter vmwareDC = findVmwareDatacenterForVM(vm); + if (vm.getBackupExternalId() == null) { + throw new CloudRuntimeException("The VM does not have a backup job assigned."); + } try { if (!client.removeVMFromVeeamJob(vm.getBackupExternalId(), vm.getInstanceName(), vmwareDC.getVcenterHost())) { logger.warn("Failed to remove VM from Veeam Job id: " + vm.getBackupExternalId()); diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 6198806c05f..43fc705ad76 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -380,10 +380,10 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager { boolean result = false; try { - vm.setBackupOfferingId(null); - vm.setBackupExternalId(null); - vm.setBackupVolumes(null); result = backupProvider.removeVMFromBackupOffering(vm); + vm.setBackupOfferingId(null); + vm.setBackupVolumes(null); + vm.setBackupExternalId(null); if (result && backupProvider.willDeleteBackupsOnOfferingRemoval()) { final List backups = backupDao.listByVmId(null, vm.getId()); for (final Backup backup : backups) {