diff --git a/core/Columns/Updater.php b/core/Columns/Updater.php
index c04779a81c23841efb76a17fa26dda86298280a5..d092cd308a47d9eba94719bb220554526a81656c 100644
--- a/core/Columns/Updater.php
+++ b/core/Columns/Updater.php
@@ -163,27 +163,52 @@ class Updater extends \Piwik\Updates
 
         $versions = array();
 
+        $visitColumns      = DbHelper::getTableColumns(Common::prefixTable('log_visit'));
+        $actionColumns     = DbHelper::getTableColumns(Common::prefixTable('log_link_visit_action'));
+        $conversionColumns = DbHelper::getTableColumns(Common::prefixTable('log_conversion'));
+
         foreach (VisitDimension::getAllDimensions() as $dimension) {
-            $columnName = $dimension->getColumnName();
-            if ($columnName && $dimension->hasColumnType()) {
-                $versions['log_visit.' . $columnName] = $dimension->getVersion();
-            }
+            $versions = self::mixinVersions($dimension, 'log_visit.', $visitColumns, $versions);
         }
 
         foreach (ActionDimension::getAllDimensions() as $dimension) {
-            $columnName = $dimension->getColumnName();
-            if ($columnName && $dimension->hasColumnType()) {
-                $versions['log_link_visit_action.' . $columnName] = $dimension->getVersion();
-            }
+            $versions = self::mixinVersions($dimension, 'log_link_visit_action.', $actionColumns, $versions);
         }
 
         foreach (ConversionDimension::getAllDimensions() as $dimension) {
-            $columnName = $dimension->getColumnName();
-            if ($columnName && $dimension->hasColumnType()) {
-                $versions['log_conversion.' . $columnName] = $dimension->getVersion();
-            }
+            $versions = self::mixinVersions($dimension, 'log_conversion.', $conversionColumns, $versions);
+        }
+
+        return $versions;
+    }
+
+    /**
+     * @param ActionDimension|ConversionDimension|VisitDimension $dimension
+     * @param string $componentPrefix
+     * @param array $columns
+     * @param array $versions
+     * @return array The modified versions array
+     */
+    private static function mixinVersions($dimension, $componentPrefix, $columns, $versions)
+    {
+        $columnName = $dimension->getColumnName();
+
+        if (!$columnName || !$dimension->hasColumnType()) {
+            return $versions;
         }
 
+        $component = $componentPrefix . $columnName;
+        $version   = $dimension->getVersion();
+
+        if (in_array($columnName, $columns)
+            && false === PiwikUpdater::getCurrentRecordedComponentVersion($component)
+            && self::wasDimensionMovedFromCoreToPlugin($component, $version)) {
+            PiwikUpdater::recordComponentSuccessfullyUpdated($component, $version);
+            return $versions;
+        }
+
+        $versions[$component] = $version;
+
         return $versions;
     }
 
diff --git a/core/Updater.php b/core/Updater.php
index 79754172d9fbfb16659be5af1df58572e9432ced..2e2d4cc6ab1625239212f8ee97e37f1051f3fc08 100644
--- a/core/Updater.php
+++ b/core/Updater.php
@@ -67,7 +67,7 @@ class Updater
      * @return false|string
      * @throws \Exception
      */
-    private static function getCurrentRecordedComponentVersion($name)
+    public static function getCurrentRecordedComponentVersion($name)
     {
         try {
             $currentVersion = Option::get(self::getNameInOptionTable($name));
@@ -303,11 +303,6 @@ class Updater
             $currentVersion = self::getCurrentRecordedComponentVersion($name);
 
             if (ColumnUpdater::isDimensionComponent($name)) {
-                if ($currentVersion === false && ColumnUpdater::wasDimensionMovedFromCoreToPlugin($name, $version)) {
-                    self::recordComponentSuccessfullyUpdated($name, $version);
-                    continue;
-                }
-
                 $isComponentOutdated = $currentVersion !== $version;
             } else {
                 // note: when versionCompare == 1, the version in the DB is newer, we choose to ignore
diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 588a8e12b48db587079afc9627d07c3e24e5c3cd..cfcf4e9a0b6c71f38f19b831d7a44c654dac2d96 100644
--- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -131,14 +131,14 @@
 	<row>
 		<type>dimension</type>
 		<category>Visit</category>
-		<name>ExamplePlugin_DimensionName</name>
+		<name>Example Dimension</name>
 		<segment>myConversionSegmentName</segment>
 		<acceptedValues>Here you should explain which values are accepted/useful: Any number, for instance 1, 2, 3 , 99</acceptedValues>
 	</row>
 	<row>
 		<type>dimension</type>
 		<category>Visit</category>
-		<name>ExamplePlugin_DimensionName</name>
+		<name>Example Dimension</name>
 		<segment>achievementPoints</segment>
 		<acceptedValues>Here you should explain which values are accepted/useful: Any number, for instance 1, 2, 3 , 99</acceptedValues>
 	</row>
@@ -395,7 +395,7 @@
 	<row>
 		<type>dimension</type>
 		<category>Actions</category>
-		<name>ExamplePlugin_DimensionName</name>
+		<name>Example Dimension</name>
 		<segment>keywords</segment>
 		<acceptedValues>Here you should explain which values are accepted/useful: Any word, for instance MyKeyword1, MyKeyword2</acceptedValues>
 	</row>