Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 75304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 75305)
@@ -222,4 +222,14 @@
 
 
+/* Obsolete keys: */
+QMap<QString, QString> UIExtraDataDefs::prepareObsoleteKeysMap()
+{
+    QMap<QString, QString> map;
+    // Define substitutes here..
+    return map;
+}
+QMap<QString, QString> UIExtraDataDefs::g_mapOfObsoleteKeys = UIExtraDataDefs::prepareObsoleteKeysMap();
+
+
 bool UIToolStuff::isTypeOfClass(UIToolType enmType, UIToolClass enmClass)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 75304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 75305)
@@ -20,4 +20,5 @@
 
 /* Qt includes: */
+#include <QMap>
 #include <QMetaType>
 #include <QObject>
@@ -394,4 +395,13 @@
     /** @} */
 
+
+    /** @name Old key support stuff.
+      * @{ */
+        /** Prepares obsolete keys map. */
+        SHARED_LIBRARY_STUFF QMap<QString, QString> prepareObsoleteKeysMap();
+
+        /** Holds the obsolete keys map. */
+        SHARED_LIBRARY_STUFF extern QMap<QString, QString> g_mapOfObsoleteKeys;
+    /** @} */
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 75304)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 75305)
@@ -2117,7 +2117,18 @@
 QString UIExtraDataManager::extraDataString(const QString &strKey, const QUuid &uID /* = GlobalID */)
 {
-    /* Get the value. Return 'QString()' if not found: */
-    const QString strValue = extraDataStringUnion(strKey, uID);
+    /* Get the actual value: */
+    QString strValue = extraDataStringUnion(strKey, uID);
+    /* If actual value is null we might be able to find old one: */
     if (strValue.isNull())
+    {
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            strValue = extraDataStringUnion(strOldKey, uID);
+            if (!strValue.isNull())
+                break;
+        }
+    }
+    /* Return null string if result is empty: */
+    if (strValue.isEmpty())
         return QString();
 
@@ -2151,4 +2162,14 @@
         if (!comVBox.isOk())
             msgCenter().cannotSetExtraData(comVBox, strKey, strValue);
+        /* Wipe out old keys: */
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            comVBox.SetExtraData(strOldKey, QString());
+            if (!comVBox.isOk())
+            {
+                msgCenter().cannotSetExtraData(comVBox, strOldKey, strValue);
+                break;
+            }
+        }
     }
     /* Machine extra-data: */
@@ -2176,4 +2197,14 @@
         if (!comSessionMachine.isOk())
             msgCenter().cannotSetExtraData(comSessionMachine, strKey, strValue);
+        /* Wipe out old keys: */
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            comSessionMachine.SetExtraData(strOldKey, QString());
+            if (!comSessionMachine.isOk())
+            {
+                msgCenter().cannotSetExtraData(comSessionMachine, strOldKey, strValue);
+                break;
+            }
+        }
         comSession.UnlockMachine();
     }
@@ -2182,7 +2213,18 @@
 QStringList UIExtraDataManager::extraDataStringList(const QString &strKey, const QUuid &uID /* = GlobalID */)
 {
-    /* Get the value. Return 'QStringList()' if not found: */
-    const QString strValue = extraDataStringUnion(strKey, uID);
+    /* Get the actual value: */
+    QString strValue = extraDataStringUnion(strKey, uID);
+    /* If actual value is null we might be able to find old one: */
     if (strValue.isNull())
+    {
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            strValue = extraDataStringUnion(strOldKey, uID);
+            if (!strValue.isNull())
+                break;
+        }
+    }
+    /* Return empty string list if result is empty: */
+    if (strValue.isEmpty())
         return QStringList();
 
@@ -2217,4 +2259,14 @@
         if (!comVBox.isOk())
             msgCenter().cannotSetExtraData(comVBox, strKey, value.join(","));
+        /* Wipe out old keys: */
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            comVBox.SetExtraData(strOldKey, QString());
+            if (!comVBox.isOk())
+            {
+                msgCenter().cannotSetExtraData(comVBox, strOldKey, value.join(","));
+                break;
+            }
+        }
     }
     /* Machine extra-data: */
@@ -2242,4 +2294,14 @@
         if (!comSessionMachine.isOk())
             msgCenter().cannotSetExtraData(comSessionMachine, strKey, value.join(","));
+        /* Wipe out old keys: */
+        foreach (const QString &strOldKey, g_mapOfObsoleteKeys.values(strKey))
+        {
+            comSessionMachine.SetExtraData(strOldKey, QString());
+            if (!comSessionMachine.isOk())
+            {
+                msgCenter().cannotSetExtraData(comSessionMachine, strOldKey, value.join(","));
+                break;
+            }
+        }
         comSession.UnlockMachine();
     }
