Index: /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 91756)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp	(revision 91757)
@@ -1932,4 +1932,49 @@
 
 /*********************************************************************************************************************************
+*   Class UINotificationProgressLaunchVSDFormCreate implementation.                                                              *
+*********************************************************************************************************************************/
+
+UINotificationProgressLaunchVSDFormCreate::UINotificationProgressLaunchVSDFormCreate(const CCloudClient &comClient,
+                                                                                     const CVirtualSystemDescription &comVSD,
+                                                                                     const QString &strProviderShortName,
+                                                                                     const QString &strProfileName)
+    : m_comClient(comClient)
+    , m_comVSD(comVSD)
+    , m_strProviderShortName(strProviderShortName)
+    , m_strProfileName(strProfileName)
+{
+    connect(this, &UINotificationProgress::sigProgressFinished,
+            this, &UINotificationProgressLaunchVSDFormCreate::sltHandleProgressFinished);
+}
+
+QString UINotificationProgressLaunchVSDFormCreate::name() const
+{
+    return UINotificationProgress::tr("Creating launch VSD form ...");
+}
+
+QString UINotificationProgressLaunchVSDFormCreate::details() const
+{
+    return UINotificationProgress::tr("<b>Provider:</b> %1<br><b>Profile:</b> %2")
+                                      .arg(m_strProviderShortName, m_strProfileName);
+}
+
+CProgress UINotificationProgressLaunchVSDFormCreate::createProgress(COMResult &comResult)
+{
+    /* Initialize progress-wrapper: */
+    CProgress comProgress = m_comClient.GetLaunchDescriptionForm(m_comVSD, m_comVSDForm);
+    /* Store COM result: */
+    comResult = m_comClient;
+    /* Return progress-wrapper: */
+    return comProgress;
+}
+
+void UINotificationProgressLaunchVSDFormCreate::sltHandleProgressFinished()
+{
+    if (m_comVSDForm.isNotNull())
+        emit sigVSDFormCreated(m_comVSDForm);
+}
+
+
+/*********************************************************************************************************************************
 *   Class UINotificationProgressCloudMachineAdd implementation.                                                                  *
 *********************************************************************************************************************************/
Index: /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 91756)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h	(revision 91757)
@@ -45,4 +45,5 @@
 #include "CSnapshot.h"
 #include "CVirtualSystemDescription.h"
+#include "CVirtualSystemDescriptionForm.h"
 
 /* Forward declarations: */
@@ -960,4 +961,55 @@
 };
 
+/** UINotificationProgress extension for launch VSD form create functionality. */
+class SHARED_LIBRARY_STUFF UINotificationProgressLaunchVSDFormCreate : public UINotificationProgress
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies listeners about VSD @a comForm created.
+      * @param  comForm  Brings created VSD form. */
+    void sigVSDFormCreated(const CVirtualSystemDescriptionForm &comForm);
+
+public:
+
+    /** Constructs launch VSD form create notification-progress.
+      * @param  comClient             Brings the cloud client being creating VSD form.
+      * @param  comVsd                Brings the VSD, form being created for.
+      * @param  strProviderShortName  Brings the short provider name.
+      * @param  strProfileName        Brings the profile name. */
+    UINotificationProgressLaunchVSDFormCreate(const CCloudClient &comClient,
+                                              const CVirtualSystemDescription &comVSD,
+                                              const QString &strProviderShortName,
+                                              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 client being creating VSD form. */
+    CCloudClient                   m_comClient;
+    /** Holds the VSD, form being created for. */
+    CVirtualSystemDescription      m_comVSD;
+    /** Holds the VSD form being created. */
+    CVirtualSystemDescriptionForm  m_comVSDForm;
+    /** Holds the short provider name. */
+    QString                        m_strProviderShortName;
+    /** Holds the profile name. */
+    QString                        m_strProfileName;
+};
+
 /** UINotificationProgress extension for cloud machine add functionality. */
 class SHARED_LIBRARY_STUFF UINotificationProgressCloudMachineAdd : public UINotificationProgress
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp	(revision 91756)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp	(revision 91757)
@@ -52,65 +52,19 @@
 }
 
-bool UIWizardNewCloudVM::createVSDForm()
+void UIWizardNewCloudVM::createVSDForm()
 {
-    /* Prepare result: */
-    bool fResult = false;
-
     /* Acquire prepared client and description: */
     CCloudClient comClient = client();
     CVirtualSystemDescription comVSD = vsd();
-    AssertReturn(comClient.isNotNull() && comVSD.isNotNull(), false);
+    AssertReturnVoid(comClient.isNotNull() && comVSD.isNotNull());
 
-    /* Read Cloud Client description form: */
-    CVirtualSystemDescriptionForm comForm;
-    CProgress comProgress = comClient.GetLaunchDescriptionForm(comVSD, comForm);
-    /* Check for immediate errors: */
-    if (!comClient.isOk())
-        msgCenter().cannotAcquireCloudClientParameter(comClient);
-    else
-    {
-        /* Make sure progress initially valid: */
-        if (!comProgress.isNull() && !comProgress.GetCompleted())
-        {
-            /* Create take snapshot progress object: */
-            QPointer<UIProgressObject> pObject = new UIProgressObject(comProgress, this);
-            if (pObject)
-            {
-                connect(pObject.data(), &UIProgressObject::sigProgressChange,
-                        this, &UIWizardNewCloudVM::sltHandleProgressChange);
-                connect(pObject.data(), &UIProgressObject::sigProgressComplete,
-                        this, &UIWizardNewCloudVM::sltHandleProgressFinished);
-                sltHandleProgressStarted();
-                pObject->exec();
-                if (pObject)
-                    delete pObject;
-                else
-                {
-                    // Premature application shutdown,
-                    // exit immediately:
-                    return fResult;
-                }
-            }
-        }
-
-        /* Check for progress errors: */
-        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
-            msgCenter().cannotAcquireCloudClientParameter(comProgress);
-        else
-        {
-            /* Check whether form really read: */
-            if (comForm.isNotNull())
-            {
-                /* Remember Virtual System Description Form: */
-                setVSDForm(comForm);
-
-                /* Finally, success: */
-                fResult = true;
-            }
-        }
-    }
-
-    /* Return result: */
-    return fResult;
+    /* Create launch VSD form: */
+    UINotificationProgressLaunchVSDFormCreate *pNotification = new UINotificationProgressLaunchVSDFormCreate(comClient,
+                                                                                                             comVSD,
+                                                                                                             providerShortName(),
+                                                                                                             profileName());
+    connect(pNotification, &UINotificationProgressLaunchVSDFormCreate::sigVSDFormCreated,
+            this, &UIWizardNewCloudVM::setVSDForm);
+    handleNotificationProgressNow(pNotification);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h	(revision 91756)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h	(revision 91757)
@@ -54,5 +54,5 @@
 
     /** Creates VSD Form. */
-    bool createVSDForm();
+    void createVSDForm();
 
     /** Creates New Cloud VM. */
