diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp
index ec6f95587dc2e7a5b88ea3af52d63fe486181c93..3404e6f7eb6ba730d5f4f44984e0c478e2560c65 100644
--- a/src/plugins/qnx/blackberryconfiguration.cpp
+++ b/src/plugins/qnx/blackberryconfiguration.cpp
@@ -169,7 +169,13 @@ bool BlackBerryConfiguration::isAutoDetected() const
 
 bool BlackBerryConfiguration::isActive() const
 {
-    return !findRegisteredQtVersions().isEmpty();
+    foreach (Kit *kit, KitManager::kits()) {
+        if (kit->isAutoDetected() &&
+                kit->autoDetectionSource() == m_ndkEnvFile.toString())
+            return true;
+    }
+
+    return false;
 }
 
 bool BlackBerryConfiguration::isValid() const
@@ -277,6 +283,7 @@ Kit *BlackBerryConfiguration::createKit(
     kit->setIconPath(FileName::fromString(QLatin1String(Constants::QNX_BB_CATEGORY_ICON)));
 
     kit->setAutoDetected(true);
+    kit->setAutoDetectionSource(m_ndkEnvFile.toString());
     kit->setMutable(DeviceKitInformation::id(), true);
 
     kit->setSticky(QtKitInformation::id(), true);
@@ -370,50 +377,24 @@ bool BlackBerryConfiguration::activate()
     return true;
 }
 
-QList<BaseQtVersion *> BlackBerryConfiguration::findRegisteredQtVersions() const
-{
-    QList<BaseQtVersion *> versions;
-    foreach (BaseQtVersion *version, QtVersionManager::versions()) {
-        if (version->type() == QLatin1String(Constants::QNX_BB_QT)) {
-            QnxAbstractQtVersion *qnxVersion = dynamic_cast<QnxAbstractQtVersion *>(version);
-            if (qnxVersion  &&  qnxVersion->isAutodetected()
-                    && (qnxVersion->qmakeCommand() == qmake4BinaryFile()
-                    || qnxVersion->qmakeCommand() == qmake5BinaryFile()))
-                versions << qnxVersion;
-        }
-    }
-    return versions;
-}
-
 void BlackBerryConfiguration::deactivate()
 {
-    QList<BaseQtVersion *> versions = findRegisteredQtVersions();
-    QList<ToolChain *> toolChains;
     foreach (Kit *kit, KitManager::kits()) {
-        if (kit->isAutoDetected()) {
+        if (kit->isAutoDetected() &&
+                kit->autoDetectionSource() == ndkEnvFile().toString()) {
             BaseQtVersion *version = QtKitInformation::qtVersion(kit);
-            if (versions.contains(version)) {
-                ToolChain *toolChain = ToolChainKitInformation::toolChain(kit);
-                if (toolChain)
-                    toolChains << toolChain;
-                KitManager::deregisterKit(kit);
-            }
+            ToolChain *toolChain = ToolChainKitInformation::toolChain(kit);
+            const DebuggerItem *debugger = DebuggerKitInformation::debugger(kit);
+            if (version)
+                QtVersionManager::removeVersion(version);
+            if (toolChain)
+                ToolChainManager::deregisterToolChain(toolChain);
+            if (debugger)
+                DebuggerItemManager::deregisterDebugger(debugger->id());
+
+            KitManager::deregisterKit(kit);
         }
     }
-
-    foreach (const DebuggerItem &item, DebuggerItemManager::debuggers())
-        if (item.isAutoDetected() &&
-                (item.command() == m_simulatorDebugger || item.command() == m_deviceDebugger))
-                DebuggerItemManager::deregisterDebugger(item.id());
-
-    foreach (ToolChain *toolChain, ToolChainManager::toolChains())
-        if (toolChain->isAutoDetected()
-                && (toolChains.contains(toolChain) || toolChain->compilerCommand() == m_gccCompiler))
-            ToolChainManager::deregisterToolChain(toolChain);
-
-    foreach (BaseQtVersion *version, versions)
-        QtVersionManager::removeVersion(version);
-
 }
 
 } // namespace Internal
diff --git a/src/plugins/qnx/blackberryconfiguration.h b/src/plugins/qnx/blackberryconfiguration.h
index 9701e43485be405e9c0b4298aeeab71062118d7f..8bc2c4ee1c38b77f65a1c9a0ec908a307f4345ab 100644
--- a/src/plugins/qnx/blackberryconfiguration.h
+++ b/src/plugins/qnx/blackberryconfiguration.h
@@ -108,7 +108,6 @@ private:
     ProjectExplorer::Kit* createKit(
             QnxAbstractQtVersion* version, QnxToolChain* toolChain,
             const QVariant &debuggerItemId);
-    QList<QtSupport::BaseQtVersion *> findRegisteredQtVersions() const;
 };
 
 } // namespace Internal
diff --git a/src/plugins/qnx/blackberryconfigurationmanager.cpp b/src/plugins/qnx/blackberryconfigurationmanager.cpp
index a7f265dcc93d6f9349330d15f67e5d59710238b2..10d4c9ffbd30cbba6d66f84b6522e3a8a233c8f9 100644
--- a/src/plugins/qnx/blackberryconfigurationmanager.cpp
+++ b/src/plugins/qnx/blackberryconfigurationmanager.cpp
@@ -49,6 +49,8 @@
 #include <qtsupport/qtversionmanager.h>
 #include <qtsupport/qtkitinformation.h>
 
+#include <debugger/debuggerkitinformation.h>
+
 #include <QMessageBox>
 #include <QFileInfo>
 
@@ -212,6 +214,23 @@ void BlackBerryConfigurationManager::clearInvalidConfigurations()
     }
 }
 
+void BlackBerryConfigurationManager::setKitsAutoDetectionSource()
+{
+    foreach (Kit *kit, KitManager::kits()) {
+        if (kit->isAutoDetected() &&
+                (DeviceTypeKitInformation::deviceTypeId(kit) ==  Constants::QNX_BB_CATEGORY_ICON) &&
+                kit->autoDetectionSource().isEmpty()) {
+            QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
+            foreach (BlackBerryConfiguration *config, m_configs) {
+                if ((version &&
+                     (version->qmakeCommand() == config->qmake4BinaryFile() || version->qmakeCommand() == config->qmake5BinaryFile()))
+                        && (SysRootKitInformation::sysRoot(kit) == config->sysRoot()))
+                    kit->setAutoDetectionSource(config->ndkEnvFile().toString());
+            }
+        }
+    }
+}
+
 // Switch to QnxToolchain for exisintg configuration using GccToolChain
 void BlackBerryConfigurationManager::checkToolChainConfiguration()
 {
@@ -320,6 +339,9 @@ QList<Utils::EnvironmentItem> BlackBerryConfigurationManager::defaultQnxEnv()
 
 void BlackBerryConfigurationManager::loadSettings()
 {
+    // Backward compatibility: Set kit's auto detection source
+    // for existing BlackBerry kits that do not have it set yet.
+    setKitsAutoDetectionSource();
     clearInvalidConfigurations();
     loadAutoDetectedConfigurations();
     loadManualConfigurations();
diff --git a/src/plugins/qnx/blackberryconfigurationmanager.h b/src/plugins/qnx/blackberryconfigurationmanager.h
index 97602e0633ce9aa9876f66acfa2380083b058a34..7934a2adc6185d13ad0f3dd1688d05851c737d98 100644
--- a/src/plugins/qnx/blackberryconfigurationmanager.h
+++ b/src/plugins/qnx/blackberryconfigurationmanager.h
@@ -84,6 +84,7 @@ private:
     void saveManualConfigurations();
     void saveActiveConfigurationNdkEnvPath();
     void clearInvalidConfigurations();
+    void setKitsAutoDetectionSource();
 
     QStringList activeConfigurationNdkEnvPaths();
 };