Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.cpp	(revision 91578)
@@ -22,11 +22,5 @@
 #include "QITreeView.h"
 #include "UIApplianceImportEditorWidget.h"
-#include "UICommon.h"
 #include "UIMessageCenter.h"
-#include "UINotificationCenter.h"
-#include "UIWizardImportApp.h"
-
-/* COM includes: */
-#include "CAppliance.h"
 
 
@@ -49,136 +43,57 @@
 *********************************************************************************************************************************/
 
-UIApplianceImportEditorWidget::UIApplianceImportEditorWidget(QWidget *pParent)
+UIApplianceImportEditorWidget::UIApplianceImportEditorWidget(QWidget *pParent /* = 0 */)
     : UIApplianceEditorWidget(pParent)
 {
 }
 
-bool UIApplianceImportEditorWidget::setFile(const QString& strFile)
+void UIApplianceImportEditorWidget::setAppliance(const CAppliance &comAppliance)
 {
-    bool fResult = false;
-    if (!strFile.isEmpty())
+    /* Cache newly passed appliance: */
+    m_comAppliance = comAppliance;
+
+    /* Cleanup previous stuff: */
+    if (m_pModel)
+        delete m_pModel;
+
+    /* Prepare model: */
+    QVector<CVirtualSystemDescription> vsds = m_comAppliance.GetVirtualSystemDescriptions();
+    m_pModel = new UIApplianceModel(vsds, m_pTreeViewSettings);
+    if (m_pModel)
     {
-        CProgress comProgress;
+        /* Create proxy model: */
+        ImportSortProxyModel *pProxy = new ImportSortProxyModel(m_pModel);
+        if (pProxy)
+        {
+            pProxy->setSourceModel(m_pModel);
+            pProxy->sort(ApplianceViewSection_Description, Qt::DescendingOrder);
 
-        /* Create a appliance object: */
-        CVirtualBox comVBox = uiCommon().virtualBox();
-        m_pAppliance = new CAppliance(comVBox.CreateAppliance());
-        fResult = m_pAppliance->isOk();
-        if (fResult)
-        {
-            /* Read the appliance: */
-            comProgress = m_pAppliance->Read(strFile);
-            fResult = m_pAppliance->isOk();
-            if (fResult)
-            {
-                /* Show some progress, so the user know whats going on: */
-                msgCenter().showModalProgressDialog(comProgress, tr("Reading Appliance ..."),
-                                                    ":/progress_reading_appliance_90px.png", this);
-                if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
-                    fResult = false;
-                else
-                {
-                    /* Now we have to interpret that stuff: */
-                    m_pAppliance->Interpret();
-                    fResult = m_pAppliance->isOk();
-                    if (fResult)
-                    {
-                        /* Cleanup previous stuff: */
-                        if (m_pModel)
-                            delete m_pModel;
+            /* Set our own model: */
+            m_pTreeViewSettings->setModel(pProxy);
+            /* Set our own delegate: */
+            UIApplianceDelegate *pDelegate = new UIApplianceDelegate(pProxy);
+            if (pDelegate)
+                m_pTreeViewSettings->setItemDelegate(pDelegate);
 
-                        /* Prepare model: */
-                        QVector<CVirtualSystemDescription> vsds = m_pAppliance->GetVirtualSystemDescriptions();
-                        m_pModel = new UIApplianceModel(vsds, m_pTreeViewSettings);
-                        if (m_pModel)
-                        {
-                            /* Create proxy model: */
-                            ImportSortProxyModel *pProxy = new ImportSortProxyModel(m_pModel);
-                            if (pProxy)
-                            {
-                                pProxy->setSourceModel(m_pModel);
-                                pProxy->sort(ApplianceViewSection_Description, Qt::DescendingOrder);
-
-                                /* Set our own model */
-                                m_pTreeViewSettings->setModel(pProxy);
-                                /* Set our own delegate */
-                                UIApplianceDelegate *pDelegate = new UIApplianceDelegate(pProxy);
-                                if (pDelegate)
-                                    m_pTreeViewSettings->setItemDelegate(pDelegate);
-
-                                /* For now we hide the original column. This data is displayed as tooltip also. */
-                                m_pTreeViewSettings->setColumnHidden(ApplianceViewSection_OriginalValue, true);
-                                m_pTreeViewSettings->expandAll();
-                                /* Set model root index and make it current: */
-                                m_pTreeViewSettings->setRootIndex(pProxy->mapFromSource(m_pModel->root()));
-                                m_pTreeViewSettings->setCurrentIndex(pProxy->mapFromSource(m_pModel->root()));
-                            }
-                        }
-
-                        /* Check for warnings & if there are one display them: */
-                        const QVector<QString> warnings = m_pAppliance->GetWarnings();
-                        bool fWarningsEnabled = warnings.size() > 0;
-                        foreach (const QString &strText, warnings)
-                            m_pTextEditWarning->append("- " + strText);
-                        m_pPaneWarning->setVisible(fWarningsEnabled);
-                    }
-                }
-            }
-        }
-
-        if (!fResult)
-        {
-            if (!m_pAppliance->isOk())
-                msgCenter().cannotImportAppliance(*m_pAppliance, this);
-            else if (!comProgress.isNull() && (!comProgress.isOk() || comProgress.GetResultCode() != 0))
-                msgCenter().cannotImportAppliance(comProgress, m_pAppliance->GetPath(), this);
-            /* Delete the appliance in a case of an error: */
-            delete m_pAppliance;
-            m_pAppliance = 0;
+            /* For now we hide the original column. This data is displayed as tooltip also. */
+            m_pTreeViewSettings->setColumnHidden(ApplianceViewSection_OriginalValue, true);
+            m_pTreeViewSettings->expandAll();
+            /* Set model root index and make it current: */
+            m_pTreeViewSettings->setRootIndex(pProxy->mapFromSource(m_pModel->root()));
+            m_pTreeViewSettings->setCurrentIndex(pProxy->mapFromSource(m_pModel->root()));
         }
     }
 
-    return fResult;
+    /* Check for warnings & if there are one display them: */
+    const QVector<QString> warnings = m_comAppliance.GetWarnings();
+    const bool fWarningsEnabled = warnings.size() > 0;
+    foreach (const QString &strText, warnings)
+        m_pTextEditWarning->append("- " + strText);
+    m_pPaneWarning->setVisible(fWarningsEnabled);
 }
 
 void UIApplianceImportEditorWidget::prepareImport()
 {
-    if (m_pAppliance)
+    if (m_comAppliance.isNotNull())
         m_pModel->putBack();
 }
-
-bool UIApplianceImportEditorWidget::import(const QVector<KImportOptions> &options)
-{
-    if (m_pAppliance)
-    {
-        /* Import appliance: */
-        UINotificationProgressApplianceImport *pNotification = new UINotificationProgressApplianceImport(*m_pAppliance,
-                                                                                                         options);
-        gpNotificationCenter->append(pNotification);
-
-        /* Positive: */
-        return true;
-    }
-    return false;
-}
-
-QList<QPair<QString, QString> > UIApplianceImportEditorWidget::licenseAgreements() const
-{
-    QList<QPair<QString, QString> > list;
-
-    foreach (CVirtualSystemDescription comVsd, m_pAppliance->GetVirtualSystemDescriptions())
-    {
-        QVector<QString> strLicense;
-        strLicense = comVsd.GetValuesByType(KVirtualSystemDescriptionType_License,
-                                            KVirtualSystemDescriptionValueType_Original);
-        if (!strLicense.isEmpty())
-        {
-            QVector<QString> strName;
-            strName = comVsd.GetValuesByType(KVirtualSystemDescriptionType_Name,
-                                             KVirtualSystemDescriptionValueType_Auto);
-            list << QPair<QString, QString>(strName.first(), strLicense.first());
-        }
-    }
-
-    return list;
-}
Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.h	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceImportEditorWidget.h	(revision 91578)
@@ -25,17 +25,6 @@
 #include "UIApplianceEditorWidget.h"
 
-/* Forward declarations: */
-class UIFilePathSelector;
-class QComboBox;
-
-/** MAC address policies. */
-enum MACAddressImportPolicy
-{
-    MACAddressImportPolicy_KeepAllMACs,
-    MACAddressImportPolicy_KeepNATMACs,
-    MACAddressImportPolicy_StripAllMACs,
-    MACAddressImportPolicy_MAX
-};
-Q_DECLARE_METATYPE(MACAddressImportPolicy);
+/* COM includes: */
+#include "CAppliance.h"
 
 /** UIApplianceEditorWidget subclass for Import Appliance wizard. */
@@ -47,17 +36,16 @@
 
     /** Constructs widget passing @a pParent to the base-class. */
-    UIApplianceImportEditorWidget(QWidget *pParent);
+    UIApplianceImportEditorWidget(QWidget *pParent = 0);
 
-    /** Defines @a strFaile name. */
-    bool setFile(const QString &strFile);
+    /** Assigns @a comAppliance and populates widget contents. */
+    void setAppliance(const CAppliance &comAppliance);
 
     /** Prepares import by pushing edited data back to appliance. */
     void prepareImport();
 
-    /** Performs import. */
-    bool import(const QVector<KImportOptions> &options);
+private:
 
-    /** Returns a list of license agreement pairs. */
-    QList<QPair<QString, QString> > licenseAgreements() const;
+    /** Holds the appliance wrapper instance. */
+    CAppliance  m_comAppliance;
 };
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.cpp	(revision 91578)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2009-2020 Oracle Corporation
+ * Copyright (C) 2009-2021 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -189,10 +189,61 @@
 }
 
+CAppliance UIWizardImportApp::appliance() const
+{
+    return m_comAppliance;
+}
+
+bool UIWizardImportApp::setFile(const QString &strFileName)
+{
+    /* Clear object: */
+    m_comAppliance = CAppliance();
+
+    if (strFileName.isEmpty())
+        return false;
+
+    /* Create an appliance object: */
+    CVirtualBox comVBox = uiCommon().virtualBox();
+    CAppliance comAppliance = comVBox.CreateAppliance();
+    if (!comVBox.isOk())
+    {
+        msgCenter().cannotCreateAppliance(comVBox, this);
+        return false;
+    }
+
+    /* Read the file to appliance: */
+    CProgress comProgress = comAppliance.Read(strFileName);
+    if (!comAppliance.isOk())
+    {
+        msgCenter().cannotImportAppliance(comAppliance, this);
+        return false;
+    }
+
+    /* Show Reading Appliance progress: */
+    msgCenter().showModalProgressDialog(comProgress, tr("Reading Appliance ..."),
+                                        ":/progress_reading_appliance_90px.png", this);
+    if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+    {
+        msgCenter().cannotImportAppliance(comProgress, comAppliance.GetPath(), this);
+        return false;
+    }
+
+    /* Now we have to interpret that stuff: */
+    comAppliance.Interpret();
+    if (!comAppliance.isOk())
+    {
+        msgCenter().cannotImportAppliance(comAppliance, this);
+        return false;
+    }
+
+    /* Remember appliance: */
+    m_comAppliance = comAppliance;
+
+    /* Success finally: */
+    return true;
+}
+
 bool UIWizardImportApp::isValid() const
 {
-    bool fResult = false;
-    if (UIApplianceImportEditorWidget *pImportApplianceWidget = field("applianceWidget").value<ImportAppliancePointer>())
-        fResult = pImportApplianceWidget->isValid();
-    return fResult;
+    return m_comAppliance.isNotNull();
 }
 
@@ -220,10 +271,6 @@
     else
     {
-        /* Get import appliance widget: */
-        UIApplianceImportEditorWidget *pImportApplianceWidget = field("applianceWidget").value<ImportAppliancePointer>();
-        /* Make sure the final values are puted back: */
-        pImportApplianceWidget->prepareImport();
         /* Check if there are license agreements the user must confirm: */
-        QList < QPair <QString, QString> > licAgreements = pImportApplianceWidget->licenseAgreements();
+        QList < QPair <QString, QString> > licAgreements = licenseAgreements();
         if (!licAgreements.isEmpty())
         {
@@ -231,5 +278,5 @@
             for (int i = 0; i < licAgreements.size(); ++ i)
             {
-                const QPair <QString, QString> &lic = licAgreements.at(i);
+                const QPair<QString, QString> &lic = licAgreements.at(i);
                 ilv.setContents(lic.first, lic.second);
                 if (ilv.exec() == QDialog::Rejected)
@@ -251,6 +298,11 @@
             options.append(KImportOptions_ImportToVDI);
 
-        /* Now import all virtual systems: */
-        return pImportApplianceWidget->import(options);
+        /* Import appliance: */
+        UINotificationProgressApplianceImport *pNotification = new UINotificationProgressApplianceImport(m_comAppliance,
+                                                                                                         options);
+        gpNotificationCenter->append(pNotification);
+
+        /* Positive: */
+        return true;
     }
 }
@@ -292,4 +344,25 @@
 }
 
+QList<QPair<QString, QString> > UIWizardImportApp::licenseAgreements() const
+{
+    QList<QPair<QString, QString> > list;
+
+    foreach (CVirtualSystemDescription comVsd, m_comAppliance.GetVirtualSystemDescriptions())
+    {
+        QVector<QString> strLicense;
+        strLicense = comVsd.GetValuesByType(KVirtualSystemDescriptionType_License,
+                                            KVirtualSystemDescriptionValueType_Original);
+        if (!strLicense.isEmpty())
+        {
+            QVector<QString> strName;
+            strName = comVsd.GetValuesByType(KVirtualSystemDescriptionType_Name,
+                                             KVirtualSystemDescriptionValueType_Auto);
+            list << QPair<QString, QString>(strName.first(), strLicense.first());
+        }
+    }
+
+    return list;
+}
+
 
 #include "UIWizardImportApp.moc"
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h	(revision 91578)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2009-2020 Oracle Corporation
+ * Copyright (C) 2009-2021 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -24,4 +24,18 @@
 /* GUI includes: */
 #include "UIWizard.h"
+
+/* COM includes: */
+#include "COMEnums.h"
+#include "CAppliance.h"
+
+/** MAC address policies. */
+enum MACAddressImportPolicy
+{
+    MACAddressImportPolicy_KeepAllMACs,
+    MACAddressImportPolicy_KeepNATMACs,
+    MACAddressImportPolicy_StripAllMACs,
+    MACAddressImportPolicy_MAX
+};
+Q_DECLARE_METATYPE(MACAddressImportPolicy);
 
 /** Import Appliance wizard. */
@@ -52,4 +66,8 @@
     virtual void prepare() /* override */;
 
+    /** Returns appliance. */
+    CAppliance appliance() const;
+    /** Defines @a strFileName. */
+    bool setFile(const QString &strFileName);
     /** Returns whether appliance is valid. */
     bool isValid() const;
@@ -72,8 +90,14 @@
 private:
 
+    /** Returns a list of license agreement pairs. */
+    QList<QPair<QString, QString> > licenseAgreements() const;
+
     /** Holds whether default source should be Import from OCI. */
     bool     m_fImportFromOCIByDefault;
     /** Handles the appliance file name. */
     QString  m_strFileName;
+
+    /** Holds the appliance wrapper instance. */
+    CAppliance  m_comAppliance;
 };
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic1.cpp	(revision 91578)
@@ -677,13 +677,10 @@
     else
     {
-        /* Get import appliance widget: */
-        ImportAppliancePointer pImportApplianceWidget = field("applianceWidget").value<ImportAppliancePointer>();
-        AssertMsg(!pImportApplianceWidget.isNull(), ("Appliance Widget is not set!\n"));
-
         /* If file name was changed: */
         if (m_pFileSelector->isModified())
         {
-            /* Check if set file contains valid appliance: */
-            if (!pImportApplianceWidget->setFile(m_pFileSelector->path()))
+            /* Check if specified file contains valid appliance: */
+            if (   !QFile::exists(m_pFileSelector->path())
+                || !qobject_cast<UIWizardImportApp*>(wizard())->setFile(m_pFileSelector->path()))
                 return false;
             /* Reset the modified bit afterwards: */
@@ -692,5 +689,5 @@
 
         /* If we have a valid ovf proceed to the appliance settings page: */
-        return pImportApplianceWidget->isValid();
+        return qobject_cast<UIWizardImportApp*>(wizard())->isValid();
     }
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp	(revision 91578)
@@ -142,5 +142,6 @@
 
 UIWizardImportAppPageBasic2::UIWizardImportAppPageBasic2(const QString &strFileName)
-    : m_enmCertText(kCertText_Uninitialized)
+    : m_strFileName(strFileName)
+    , m_enmCertText(kCertText_Uninitialized)
 {
     /* Create main layout: */
@@ -174,5 +175,4 @@
                     {
                         m_pApplianceWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-                        m_pApplianceWidget->setFile(strFileName);
                         pApplianceWidgetLayout->addWidget(m_pApplianceWidget, 0, 0, 1, 3);
                     }
@@ -370,31 +370,37 @@
     /* Update widget visibility: */
     updatePageAppearance();
-    /* Populate MAC address import combo: */
-    populateMACAddressImportPolicies();
 
     /* Check whether there was cloud source selected: */
     const bool fIsSourceCloudOne = field("isSourceCloudOne").toBool();
     if (fIsSourceCloudOne)
+    {
+        /* Refresh form properties table: */
         refreshFormPropertiesTable();
+    }
     else
     {
-        /* Acquire appliance: */
-        CAppliance *pAppliance = m_pApplianceWidget->appliance();
-
-        /* Check if pAppliance is alive. If not just return here.
-         * This prevents crashes when an invalid ova file is supllied: */
-        if (!pAppliance)
+        /* Populate MAC address import combo: */
+        populateMACAddressImportPolicies();
+
+        /* If we have file name passed,
+         * check if specified file contains valid appliance: */
+        if (   !m_strFileName.isEmpty()
+            && !qobject_cast<UIWizardImportApp*>(wizard())->setFile(m_strFileName))
         {
-            if (wizard())
-                wizard()->reject();
+            wizard()->reject();
             return;
         }
 
-        /* Make sure we initialize model items with correct base folder path: */
+        /* Acquire appliance: */
+        CAppliance comAppliance = qobject_cast<UIWizardImportApp*>(wizard())->appliance();
+
+        /* Initialize appliance widget: */
+        m_pApplianceWidget->setAppliance(comAppliance);
+        /* Make sure we initialize appliance widget model with correct base folder path: */
         if (m_pEditorImportFilePath)
             sltHandlePathChanged(m_pEditorImportFilePath->path());
 
         /* Acquire certificate: */
-        CCertificate comCertificate = pAppliance->GetCertificate();
+        CCertificate comCertificate = comAppliance.GetCertificate();
         if (comCertificate.isNull())
             m_enmCertText = kCertText_Unsigned;
@@ -421,6 +427,6 @@
 
                 /* Instantiate the dialog: */
-                QPointer<UIApplianceUnverifiedCertificateViewer> pDialog = new UIApplianceUnverifiedCertificateViewer(this, comCertificate);
-                AssertPtrReturnVoid(pDialog.data());
+                QPointer<UIApplianceUnverifiedCertificateViewer> pDialog =
+                    new UIApplianceUnverifiedCertificateViewer(this, comCertificate);
 
                 /* Show viewer in modal mode: */
@@ -481,4 +487,9 @@
         }
     }
+    else
+    {
+        /* Make sure widget has own data committed: */
+        m_pApplianceWidget->prepareImport();
+    }
 
     /* Try to import appliance: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.h	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.h	(revision 91578)
@@ -24,4 +24,5 @@
 /* GUI includes: */
 #include "UIFormEditorWidget.h"
+#include "UIWizardImportApp.h"
 #include "UIWizardImportAppDefs.h"
 #include "UIWizardPage.h"
@@ -32,4 +33,5 @@
 class QStackedLayout;
 class QIRichTextLabel;
+class UIFilePathSelector;
 
 /** UIWizardPageBase extension for 2nd page of the Import Appliance wizard. */
@@ -129,4 +131,7 @@
 private:
 
+    /** Handles the appliance file name. */
+    QString  m_strFileName;
+
     /** Holds the label instance. */
     QIRichTextLabel *m_pLabel;
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.cpp	(revision 91578)
@@ -47,4 +47,5 @@
 UIWizardImportAppPageExpert::UIWizardImportAppPageExpert(bool fImportFromOCIByDefault, const QString &strFileName)
     : UIWizardImportAppPage1(fImportFromOCIByDefault)
+    , m_strFileName(strFileName)
     , m_pCntSource(0)
     , m_pSettingsCnt(0)
@@ -184,5 +185,4 @@
                         {
                             m_pApplianceWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-                            m_pApplianceWidget->setFile(strFileName);
                             pApplianceWidgetLayout->addWidget(m_pApplianceWidget, 0, 0, 1, 3);
                         }
@@ -408,4 +408,24 @@
     /* Translate page: */
     retranslateUi();
+
+    /* If we have file name passed,
+     * check if specified file contains valid appliance: */
+    if (   !m_strFileName.isEmpty()
+        && !qobject_cast<UIWizardImportApp*>(wizard())->setFile(m_strFileName))
+    {
+        wizard()->reject();
+        return;
+    }
+
+    /* Acquire appliance: */
+    CAppliance comAppliance = qobject_cast<UIWizardImportApp*>(wizard())->appliance();
+    if (comAppliance.isNotNull())
+    {
+        /* Initialize appliance widget: */
+        m_pApplianceWidget->setAppliance(comAppliance);
+        /* Make sure we initialize appliance widget model with correct base folder path: */
+        if (m_pEditorImportFilePath)
+            sltHandlePathChanged(m_pEditorImportFilePath->path());
+    }
 }
 
@@ -423,5 +443,5 @@
                       && UICommon::hasAllowedExtension(m_pFileSelector->path().toLower(), OVFFileExts)
                       && QFile::exists(m_pFileSelector->path())
-                      && m_pApplianceWidget->isValid())
+                      && qobject_cast<UIWizardImportApp*>(wizard())->isValid())
                   || (   fCSP
                       && !m_comCloudProfile.isNull()
@@ -464,4 +484,9 @@
         }
     }
+    else
+    {
+        /* Make sure widget has own data committed: */
+        m_pApplianceWidget->prepareImport();
+    }
 
     /* Try to import appliance: */
@@ -506,11 +531,18 @@
 void UIWizardImportAppPageExpert::sltFilePathChangeHandler()
 {
-    /* Check if set file contains valid appliance: */
-    if (   QFile::exists(m_pFileSelector->path())
-        && m_pApplianceWidget->setFile(m_pFileSelector->path()))
-    {
-        /* Reset the modified bit if file was correctly set: */
-        m_pFileSelector->resetModified();
-    }
+    /* Check if specified file contains valid appliance: */
+    if (   !QFile::exists(m_pFileSelector->path())
+        || !qobject_cast<UIWizardImportApp*>(wizard())->setFile(m_pFileSelector->path()))
+        return;
+    /* Reset the modified bit afterwards: */
+    m_pFileSelector->resetModified();
+
+    /* Acquire appliance: */
+    CAppliance comAppliance = qobject_cast<UIWizardImportApp*>(wizard())->appliance();
+    /* Initialize appliance widget: */
+    m_pApplianceWidget->setAppliance(comAppliance);
+    /* Make sure we initialize appliance widget model with correct base folder path: */
+    if (m_pEditorImportFilePath)
+        sltHandlePathChanged(m_pEditorImportFilePath->path());
 
     emit completeChanged();
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.h	(revision 91577)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageExpert.h	(revision 91578)
@@ -96,4 +96,7 @@
 private:
 
+    /** Handles the appliance file name. */
+    QString  m_strFileName;
+
     /** Holds the source container instance. */
     QGroupBox *m_pCntSource;
