diff --git a/tools/version_check.py b/tools/version_check.py
index 109dc0771a..176845ca03 100755
--- a/tools/version_check.py
+++ b/tools/version_check.py
@@ -33,35 +33,22 @@ if PROJECT_ROOT not in sys.path:
 
 from kolla.common import config as common_config
 
-
-# Use an OrderedDict to ensure the results are displayed alphabetically
-MAJOR_VERSIONS_MAP = collections.OrderedDict([
-    ('ceilometer', 5),
-    ('cinder', 7),
-    ('designate', 1),
-    ('glance', 11),
-    ('gnocchi', 1),
-    ('heat', 5),
-    ('horizon', 8),
-    ('ironic', 4),
-    ('keystone', 8),
-    ('magnum', 1),
-    ('murano', 1),
-    ('neutron', 7),
-    ('nova', 12),
-    ('swift', 2),
-    ('zaqar', 1)
-])
-
+# Filter list for non-projects
+NOT_PROJECTS = [
+    'nova-novncproxy',
+    'nova-spicehtml5proxy',
+    'openstack-base',
+    'profiles'
+]
 TARBALLS_BASE_URL = 'http://tarballs.openstack.org'
-VERSIONS = dict()
+VERSIONS = {'local': dict()}
 
 
 def retrieve_upstream_versions():
     upstream_versions = dict()
-    for project in MAJOR_VERSIONS_MAP:
+    for project in VERSIONS['local']:
         winner = None
-        series = MAJOR_VERSIONS_MAP[project]
+        series = VERSIONS['local'][project].split('.')[0]
         base = '{}/{}'.format(TARBALLS_BASE_URL, project)
         r = requests.get(base)
         s = bs(r.text, 'html.parser')
@@ -72,6 +59,9 @@ def retrieve_upstream_versions():
                     version.startswith('{}-{}'.format(project, series))):
                 split = '{}-|.tar.gz'.format(project)
                 candidate = re.split(split, version)[1]
+                # Ignore 2014, 2015 versions as they are older
+                if candidate.startswith('201'):
+                    continue
                 if not winner or more_recent(candidate, winner):
                     winner = candidate
 
@@ -79,26 +69,23 @@ def retrieve_upstream_versions():
             print('Could not find version for {}'.format(project))
             continue
 
+        if '-' in winner:
+            winner = winner.split('-')[1]
         upstream_versions[project] = winner
 
-    VERSIONS['upstream'] = upstream_versions
+    VERSIONS['upstream'] = collections.OrderedDict(
+        sorted(upstream_versions.items()))
 
 
-def retrieve_local_versions(conf):
-    local_versions = dict()
-    for project in MAJOR_VERSIONS_MAP:
-        series = MAJOR_VERSIONS_MAP[project]
-        for project_section in [match.group(0) for match in
-                                (re.search('^{}(?:-base)?$'.format(project),
-                                           section) for section in
-                                 conf._groups) if match]:
-            archive = conf[project_section]['location'].split('/')[-1]
-            if (archive.endswith('.tar.gz') and
-                    archive.startswith('{}-{}'.format(project, series))):
-                split = '{}-|.tar.gz'.format(project)
-                local_versions[project] = re.split(split, archive)[1]
-
-    VERSIONS['local'] = local_versions
+def retrieve_local_versions():
+    for section in common_config.SOURCES:
+        if section not in NOT_PROJECTS:
+            project = section.split('-')[0]
+            version = common_config.SOURCES[section]['location'].split(
+                '/')[-1].split('.tar.gz')[0]
+            if '-' in version:
+                version = version.split('-')[1]
+            VERSIONS['local'][project] = version
 
 
 def more_recent(candidate, reference):
@@ -130,8 +117,8 @@ def main():
     conf = cfg.ConfigOpts()
     common_config.parse(conf, sys.argv[1:], prog='kolla-build')
 
+    retrieve_local_versions()
     retrieve_upstream_versions()
-    retrieve_local_versions(conf)
 
     compare_versions()