Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 90392)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 90393)
@@ -47,10 +47,19 @@
 QString UINotificationProgressMediumCreate::details() const
 {
-    return UINotificationProgress::tr("<b>Location:</b> %1<br><b>Size:</b> %2")
-                                     .arg(m_comTarget.GetLocation()).arg(m_uSize);
+    return UINotificationProgress::tr("<b>Location:</b> %1<br><b>Size:</b> %2").arg(m_strLocation).arg(m_uSize);
 }
 
 CProgress UINotificationProgressMediumCreate::createProgress(COMResult &comResult)
 {
+    /* Acquire location: */
+    m_strLocation = m_comTarget.GetLocation();
+    if (!m_comTarget.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comTarget;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_comTarget.CreateBaseStorage(m_uSize, m_variants);
@@ -90,10 +99,27 @@
 QString UINotificationProgressMediumCopy::details() const
 {
-    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2")
-                                     .arg(m_comSource.GetLocation(), m_comTarget.GetLocation());
+    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2").arg(m_strSourceLocation, m_strTargetLocation);
 }
 
 CProgress UINotificationProgressMediumCopy::createProgress(COMResult &comResult)
 {
+    /* Acquire locations: */
+    m_strSourceLocation = m_comSource.GetLocation();
+    if (!m_comSource.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comSource;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+    m_strTargetLocation = m_comTarget.GetLocation();
+    if (!m_comTarget.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comTarget;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_comSource.CloneTo(m_comTarget, m_variants, CMedium());
@@ -169,10 +195,27 @@
 QString UINotificationProgressMachineCopy::details() const
 {
-    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2")
-                                     .arg(m_comSource.GetName(), m_comTarget.GetName());
+    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2").arg(m_strSourceName, m_strTargetName);
 }
 
 CProgress UINotificationProgressMachineCopy::createProgress(COMResult &comResult)
 {
+    /* Acquire names: */
+    m_strSourceName = m_comSource.GetName();
+    if (!m_comSource.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comSource;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+    m_strTargetName = m_comTarget.GetName();
+    if (!m_comTarget.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comTarget;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_comSource.CloneTo(m_comTarget, m_enmCloneMode, m_options);
@@ -212,6 +255,5 @@
 QString UINotificationProgressMachineMove::details() const
 {
-    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2")
-                                     .arg(m_strSource, m_strDestination);
+    return UINotificationProgress::tr("<b>From:</b> %1<br><b>To:</b> %2").arg(m_strSource, m_strDestination);
 }
 
@@ -220,4 +262,6 @@
     /* Open a session thru which we will modify the machine: */
     m_comSession = uiCommon().openSession(m_uId, KLockType_Write);
+    if (m_comSession.isNull())
+        return CProgress();
 
     /* Get session machine: */
@@ -226,4 +270,5 @@
     {
         comResult = m_comSession;
+        m_comSession.UnlockMachine();
         return CProgress();
     }
@@ -234,4 +279,5 @@
     {
         comResult = comMachine;
+        m_comSession.UnlockMachine();
         return CProgress();
     }
@@ -273,9 +319,19 @@
 QString UINotificationProgressMachineMediaRemove::details() const
 {
-    return UINotificationProgress::tr("<b>Machine Name:</b> %1").arg(m_comMachine.GetName());
+    return UINotificationProgress::tr("<b>Machine Name:</b> %1").arg(m_strName);
 }
 
 CProgress UINotificationProgressMachineMediaRemove::createProgress(COMResult &comResult)
 {
+    /* Acquire names: */
+    m_strName = m_comMachine.GetName();
+    if (!m_comMachine.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comMachine;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_comMachine.DeleteConfig(m_media);
@@ -314,5 +370,5 @@
 {
     return UINotificationProgress::tr("<b>Provider:</b> %1<br><b>Profile:</b> %2<br><b>Instance Name:</b> %3")
-                                     .arg(m_strProviderShortName, m_strProfileName, m_strInstanceName);
+                                      .arg(m_strProviderShortName, m_strProfileName, m_strInstanceName);
 }
 
@@ -349,4 +405,21 @@
     , m_strProfileName(strProfileName)
 {
+    connect(this, &UINotificationProgress::sigProgressFinished,
+            this, &UINotificationProgressCloudMachineCreate::sltHandleProgressFinished);
+}
+
+QString UINotificationProgressCloudMachineCreate::name() const
+{
+    return UINotificationProgress::tr("Creating cloud VM ...");
+}
+
+QString UINotificationProgressCloudMachineCreate::details() const
+{
+    return UINotificationProgress::tr("<b>Provider:</b> %1<br><b>Profile:</b> %2<br><b>Name:</b> %3")
+                                      .arg(m_strProviderShortName, m_strProfileName, m_strName);
+}
+
+CProgress UINotificationProgressCloudMachineCreate::createProgress(COMResult &comResult)
+{
     /* Parse cloud VM name: */
     QVector<KVirtualSystemDescriptionType> types;
@@ -357,22 +430,4 @@
         m_strName = origValues.first();
 
-    /* Listen for last progress signal: */
-    connect(this, &UINotificationProgress::sigProgressFinished,
-            this, &UINotificationProgressCloudMachineCreate::sltHandleProgressFinished);
-}
-
-QString UINotificationProgressCloudMachineCreate::name() const
-{
-    return UINotificationProgress::tr("Creating cloud VM ...");
-}
-
-QString UINotificationProgressCloudMachineCreate::details() const
-{
-    return UINotificationProgress::tr("<b>Provider:</b> %1<br><b>Profile:</b> %2<br><b>Name:</b> %3")
-                                      .arg(m_strProviderShortName, m_strProfileName, m_strName);
-}
-
-CProgress UINotificationProgressCloudMachineCreate::createProgress(COMResult &comResult)
-{
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_comClient.CreateCloudMachine(m_comVSD, m_comMachine);
@@ -403,8 +458,4 @@
     , m_strProfileName(strProfileName)
 {
-    /* Acquire cloud VM name: */
-    m_strName = m_comMachine.GetName();
-
-    /* Listen for last progress signal: */
     connect(this, &UINotificationProgress::sigProgressFinished,
             this, &UINotificationProgressCloudMachineRemove::sltHandleProgressFinished);
@@ -425,4 +476,14 @@
 CProgress UINotificationProgressCloudMachineRemove::createProgress(COMResult &comResult)
 {
+    /* Acquire cloud VM name: */
+    m_strName = m_comMachine.GetName();
+    if (!m_comMachine.isOk())
+    {
+        /* Store COM result: */
+        comResult = m_comMachine;
+        /* Return progress-wrapper: */
+        return CProgress();
+    }
+
     /* Initialize progress-wrapper: */
     CProgress comProgress = m_fFullRemoval
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 90392)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 90393)
@@ -78,4 +78,6 @@
     /** Holds the medium being the target. */
     CMedium                  m_comTarget;
+    /** Holds the target location. */
+    QString                  m_strLocation;
     /** Holds the target medium size. */
     qulonglong               m_uSize;
@@ -124,4 +126,8 @@
     /** Holds the medium being the target. */
     CMedium                  m_comTarget;
+    /** Holds the source location. */
+    QString                  m_strSourceLocation;
+    /** Holds the target location. */
+    QString                  m_strTargetLocation;
     /** Holds the target medium options. */
     QVector<KMediumVariant>  m_variants;
@@ -204,4 +210,8 @@
     /** Holds the machine being the target. */
     CMachine                m_comTarget;
+    /** Holds the source name. */
+    QString                 m_strSourceName;
+    /** Holds the target name. */
+    QString                 m_strTargetName;
     /** Holds the machine cloning mode. */
     KCloneMode              m_enmCloneMode;
@@ -279,4 +289,6 @@
     /** Holds the machine being removed. */
     CMachine       m_comMachine;
+    /** Holds the machine name. */
+    QString        m_strName;
     /** Holds the machine media being removed. */
     CMediumVector  m_media;
@@ -389,5 +401,5 @@
     /** Holds the the virtual system description. */
     CVirtualSystemDescription  m_comVSD;
-    /** Holds the name acquired from VSD. */
+    /** Holds the cloud machine name. */
     QString                    m_strName;
     /** Holds the short provider name. */
@@ -440,5 +452,5 @@
     /** Holds the cloud machine being removed. */
     CCloudMachine  m_comMachine;
-    /** Holds the name acquired from cloud machine. */
+    /** Holds the cloud machine name. */
     QString        m_strName;
     /** Holds whether cloud machine should be removed fully. */
@@ -476,5 +488,5 @@
     /** Holds the cloud machine for which console connection being created. */
     CCloudMachine  m_comMachine;
-    /** Holds the name acquired from cloud machine. */
+    /** Holds the cloud machine name. */
     QString        m_strName;
     /** Holds the public key used for console connection being created. */
