Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 90372)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 90373)
@@ -1339,4 +1339,15 @@
 {
     root()->resetDragToken();
+}
+
+void UIChooserModel::sltHandleCloudMachineRemoved(const QString &strShortProviderName,
+                                                  const QString &strProfileName,
+                                                  const QString &strName)
+{
+    Q_UNUSED(strName);
+
+    /* Update profile to make sure it has no stale instances: */
+    const UICloudEntityKey cloudEntityKeyForProfile = UICloudEntityKey(strShortProviderName, strProfileName);
+    createReadCloudMachineListTask(cloudEntityKeyForProfile, false /* with refresh? */);
 }
 
@@ -1878,5 +1889,5 @@
                 continue;
             }
-            /* Remove machine: */
+            /* Removing machine: */
             UINotificationProgressMachineMediaRemove *pNotification = new UINotificationProgressMachineMediaRemove(comMachine, media);
             notificationCenter().append(pNotification);
@@ -1908,5 +1919,5 @@
         machines << pMachineItem->cache()->toCloud()->machine();
 
-    /* Stop cloud update prematurely: */
+    /* Stop cloud profile update prematurely: */
     m_pTimerCloudProfileUpdate->stop();
 
@@ -1915,5 +1926,5 @@
     if (iResultCode == AlertButton_Cancel)
     {
-        /* Resume cloud update if cancelled: */
+        /* Resume cloud profile update if cancelled: */
         m_pTimerCloudProfileUpdate->start(10000);
         return;
@@ -1921,5 +1932,4 @@
 
     /* For every selected machine-item: */
-    QSet<UICloudEntityKey> changedCloudEntityKeys;
     foreach (UIChooserItemMachine *pMachineItem, machineItems)
     {
@@ -1928,5 +1938,4 @@
         const QString strProfileName = pMachineItem->parentItem()->name();
         const QUuid uMachineId = pMachineItem->id();
-        const UICloudEntityKey cloudEntityKeyForProfile = UICloudEntityKey(strProviderShortName, strProfileName);
         const UICloudEntityKey cloudEntityKeyForMachine = UICloudEntityKey(strProviderShortName, strProfileName, uMachineId);
 
@@ -1937,32 +1946,15 @@
         /* Acquire cloud machine: */
         CCloudMachine comMachine = pMachineItem->cache()->toCloud()->machine();
-        CProgress comProgress;
-        /* Prepare remove progress: */
-        if (iResultCode == AlertButton_Choice1)
-            comProgress = comMachine.Remove();
-        /* Prepare unregister progress: */
-        else if (iResultCode == AlertButton_Choice2)
-            comProgress = comMachine.Unregister();
-        if (!comMachine.isOk())
-        {
-            msgCenter().cannotRemoveCloudMachine(comMachine);
-            continue;
-        }
-        /* And show unregister progress finally: */
-        msgCenter().showModalProgressDialog(comProgress, comMachine.GetName(), ":/progress_delete_cloud_vm_90px.png", 0, 0);
-        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
-        {
-            msgCenter().cannotRemoveCloudMachine(comMachine, comProgress);
-            continue;
-        }
-
-        /* Append cloud entity key for profile to update: */
-        if (!changedCloudEntityKeys.contains(cloudEntityKeyForProfile))
-            changedCloudEntityKeys.insert(cloudEntityKeyForProfile);
-    }
-
-    /* Restart List Cloud Machines task for required profile keys: */
-    foreach (const UICloudEntityKey &guiCloudProfileKey, changedCloudEntityKeys)
-        createReadCloudMachineListTask(guiCloudProfileKey, false /* with refresh? */);
+
+        /* Removing cloud machine: */
+        UINotificationProgressCloudMachineRemove *pNotification =
+            new UINotificationProgressCloudMachineRemove(comMachine,
+                                                         iResultCode == AlertButton_Choice1,
+                                                         strProviderShortName,
+                                                         strProfileName);
+        connect(pNotification, &UINotificationProgressCloudMachineRemove::sigCloudMachineRemoved,
+                this, &UIChooserModel::sltHandleCloudMachineRemoved);
+        notificationCenter().append(pNotification);
+    }
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 90372)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 90373)
@@ -341,4 +341,12 @@
     /** @name Cloud stuff.
       * @{ */
+        /** Handles cloud machine removal.
+          * @param  strShortProviderName  Brigns the provider short name.
+          * @param  strProfileName        Brings the profile name.
+          * @param  strName               Brings the machine name. */
+        void sltHandleCloudMachineRemoved(const QString &strShortProviderName,
+                                          const QString &strProfileName,
+                                          const QString &strName);
+
         /** Updates selected cloud profiles. */
         void sltUpdateSelectedCloudProfiles();
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 90372)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 90373)
@@ -321,4 +321,56 @@
 
 /*********************************************************************************************************************************
+*   Class UINotificationProgressCloudMachineCreate implementation.                                                               *
+*********************************************************************************************************************************/
+
+UINotificationProgressCloudMachineRemove::UINotificationProgressCloudMachineRemove(const CCloudMachine &comMachine,
+                                                                                   bool fFullRemoval,
+                                                                                   const QString &strShortProviderName,
+                                                                                   const QString &strProfileName)
+    : m_comMachine(comMachine)
+    , m_fFullRemoval(fFullRemoval)
+    , m_strShortProviderName(strShortProviderName)
+    , m_strProfileName(strProfileName)
+{
+    /* Acquire cloud VM name: */
+    m_strName = m_comMachine.GetName();
+
+    /* Listen for last progress signal: */
+    connect(this, &UINotificationProgress::sigProgressFinished,
+            this, &UINotificationProgressCloudMachineRemove::sltHandleProgressFinished);
+}
+
+QString UINotificationProgressCloudMachineRemove::name() const
+{
+    return   m_fFullRemoval
+           ? UINotificationProgress::tr("Deleting cloud VM files ...")
+           : UINotificationProgress::tr("Removing cloud VM ...");
+}
+
+QString UINotificationProgressCloudMachineRemove::details() const
+{
+    return UINotificationProgress::tr("<b>Name:</b> %1").arg(m_strName);
+}
+
+CProgress UINotificationProgressCloudMachineRemove::createProgress(COMResult &comResult)
+{
+    /* Initialize progress-wrapper: */
+    CProgress comProgress = m_fFullRemoval
+                          ? m_comMachine.Remove()
+                          : m_comMachine.Unregister();
+    /* Store COM result: */
+    comResult = m_comMachine;
+    /* Return progress-wrapper: */
+    return comProgress;
+}
+
+void UINotificationProgressCloudMachineRemove::sltHandleProgressFinished()
+{
+    if (error().isEmpty())
+        emit sigCloudMachineRemoved(m_strShortProviderName, m_strProfileName, m_strName);
+}
+
+
+/*********************************************************************************************************************************
 *   Class UINotificationProgressApplianceExport implementation.                                                                  *
 *********************************************************************************************************************************/
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 90372)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 90373)
@@ -350,4 +350,57 @@
 };
 
+/** UINotificationProgress extension for cloud machine remove functionality. */
+class SHARED_LIBRARY_STUFF UINotificationProgressCloudMachineRemove : public UINotificationProgress
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies listeners about cloud machine was removed.
+      * @param  strShortProviderName  Brigns the short provider name.
+      * @param  strProfileName        Brings the profile name.
+      * @param  strName               Brings the machine name. */
+    void sigCloudMachineRemoved(const QString &strShortProviderName,
+                                const QString &strProfileName,
+                                const QString &strName);
+
+public:
+
+    /** Constructs cloud machine remove notification-progress.
+      * @param  comMachine    Brings the cloud machine being removed.
+      * @param  fFullRemoval  Brings whether cloud machine should be removed fully. */
+    UINotificationProgressCloudMachineRemove(const CCloudMachine &comMachine,
+                                             bool fFullRemoval,
+                                             const QString &strShortProviderName,
+                                             const QString &strProfileName);
+
+protected:
+
+    /** Returns object name. */
+    virtual QString name() const /* override final */;
+    /** Returns object details. */
+    virtual QString details() const /* override final */;
+    /** Creates and returns started progress-wrapper. */
+    virtual CProgress createProgress(COMResult &comResult) /* override final */;
+
+private slots:
+
+    /** Handles signal about progress being finished. */
+    void sltHandleProgressFinished();
+
+private:
+
+    /** Holds the cloud machine being removed. */
+    CCloudMachine  m_comMachine;
+    /** Holds the name acquired from cloud machine. */
+    QString        m_strName;
+    /** Holds whether cloud machine should be removed fully. */
+    bool           m_fFullRemoval;
+    /** Holds the short provider name. */
+    QString        m_strShortProviderName;
+    /** Holds the profile name. */
+    QString        m_strProfileName;
+};
+
 /** UINotificationProgress extension for export appliance functionality. */
 class SHARED_LIBRARY_STUFF UINotificationProgressApplianceExport : public UINotificationProgress
