diff --git a/daily_jenkins_job_report/daily_report/config.py b/daily_jenkins_job_report/daily_report/config.py
index 4ea0949..6928bb2 100755
--- a/daily_jenkins_job_report/daily_report/config.py
+++ b/daily_jenkins_job_report/daily_report/config.py
@@ -6,7 +6,6 @@
 # For updating Google sheets
 GOOGLE_AUTH = '/home/ubuntu/osccore-qa-testing-tools/daily_jenkins_job_report/daily_report/oscore-e717344565a0.json'
 GOOGLE_SHEET_NAME = 'June 2019'
-ALL_GS_JOBS =  [{'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-barbican-pike', 'row_number': 4, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-ssl-pike', 'row_number': 5, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-octavia-pike', 'row_number': 6, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-manila-pike', 'row_number': 7, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-telemetry-pike', 'row_number': 8, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-barbican-queens', 'row_number': 9, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-telemetry-queens', 'row_number': 10, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-manila-queens', 'row_number': 11, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-ssl-queens', 'row_number': 12, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-octavia-queens', 'row_number': 13, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-ocata-xenial_virtual-mcp11-aio-stable/ocata', 'row_number': 14, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-ocata-xenial_openstack-ovs-core-designate-ocata', 'row_number': 15, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-newton', 'row_number': 16, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-mitaka', 'row_number': 17, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-ocata', 'row_number': 18, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-pike', 'row_number': 19, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-advanced-keystone-queens', 'row_number': 20, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-extra-ssl-pike', 'row_number': 21, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-telemetry-ceph-queens', 'row_number': 22, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-octavia-pike', 'row_number': 23, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-extra-ssl-queens', 'row_number': 24, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-octavia-queens', 'row_number': 25, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-barbican-pike', 'row_number': 26, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-barbican-ssl-queens', 'row_number': 27, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-ironic-pike', 'row_number': 28, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ironic-queens', 'row_number': 29, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio (stepler AIO)', 'row_number': 30, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ceph-queens (stepler CC)', 'row_number': 31, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ironic-ceph-queens', 'row_number': 32, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-extra-ssl-queens', 'row_number': 33, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-barbican-ssl-queens', 'row_number': 34, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-telemetry-ceph-queens', 'row_number': 35, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-extra-ssl-pike', 'row_number': 36, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-mitaka', 'row_number': 37, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-extra-ssl-pike', 'row_number': 38, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-designate-ocata', 'row_number': 39, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.8.0_openstack-ovs-core-pike', 'row_number': 40, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.8.0_openstack-ovs-core-queens', 'row_number': 41, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ssl-queens', 'row_number': 42, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-mitaka', 'row_number': 43, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ocata', 'row_number': 44, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ssl-pike', 'row_number': 45, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-openstack-upgrade-pike-queens-core-barbican', 'row_number': 46, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-openstack-upgrade-pike-queens-core-ssl', 'row_number': 47, 'column_number': 'A'}]
 
 # For get_jobs_results.py save_results_to_html method
 GENERATED_REPORT = '/var/www/oscore_jobs.com/html/reports/'
@@ -15,7 +14,7 @@
 LIST_OF_COLUMNS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
                    'M', 'N',
                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-                   'AB', 'AC',
+                   'AA', 'AB', 'AC',
                    'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM',
                    'AN', 'AO',
                    'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY',
@@ -31,10 +30,9 @@
              'oscore-test-release-2018.11.0',
              ]
 
-SINGLEJOBS = ['oscore-test-openstack-upgrade-pike-queens-core-ssl',
+SINGLEJOBS = ['oscore-test-openstack-upgrade-pike-queens-core-barbican',
+              'oscore-test-openstack-upgrade-pike-queens-core-ssl',
               'oscore-test-openstack-upgrade-pike-queens-core-extra-ssl',
-              'oscore-stepler-virtual_mcp11_aio-pike-nightly',
-              'oscore-stepler-virtual_mcp11_aio-queens-nightly',
               'oscore-test-openstack-upgrade-pike-queens-core-ironic',
               'oscore-test-mcp-update-core-barbican-queens-2019.2.0-TO-testing',
               ]
diff --git a/daily_jenkins_job_report/daily_report/generate_report.py b/daily_jenkins_job_report/daily_report/generate_report.py
index c12c577..aa6a8ff 100755
--- a/daily_jenkins_job_report/daily_report/generate_report.py
+++ b/daily_jenkins_job_report/daily_report/generate_report.py
@@ -204,8 +204,7 @@
 
 if __name__ == '__main__':
     all_jobs_results = get_all_jobs_results()
-
-    print('all_jobs_results', all_jobs_results)
+    logger.info(f'all_jobs_results: {all_jobs_results}')
 
     save_results_to_html(all_jobs_results)
     update_google_sheets.update_google_sheet(all_jobs_results)
diff --git a/daily_jenkins_job_report/daily_report/update_google_sheets.py b/daily_jenkins_job_report/daily_report/update_google_sheets.py
index a19a347..86b74b7 100755
--- a/daily_jenkins_job_report/daily_report/update_google_sheets.py
+++ b/daily_jenkins_job_report/daily_report/update_google_sheets.py
@@ -75,16 +75,29 @@
                                 network_team_cell = get_network_team_cell(column_to_update, gs['row_number'])
                                 self.wks.update_acell(network_team_cell, 'Area of networking team')
 
+        for gs in gs_jobs:
+            for single_job in jobs_for_update['single_results']:
+                if jobs_for_update['single_results'][single_job]['job_name'] == gs['gs_job_name'] and jobs_for_update['single_results'][single_job]['build_status'] != 'No Results' and jobs_for_update['single_results'][single_job]['build_status'] != 'None':
+                    logger.info(f'Single jobs, column to update {column_to_update}')
+
+                    cell = f"{column_to_update}{gs['row_number']}"
+                    if jobs_for_update['single_results'][single_job]['build_status'] == 'FAILURE':
+                        jobs_for_update['single_results'][single_job]['build_status'] = 'FAILED'
+
+                    if not self.wks.acell(cell).value:
+                        self.wks.update_acell(cell, jobs_for_update['single_results'][single_job]['build_status'])
+
     def get_all_gs_jobs(self, column_number='A'):
         """
         Gets all the google sheet jobs for updating from the first column
         """
         logger.info('Getting all the google sheet jobs for updating from the first column')
         all_jobs = []
-        for i in range(4, 48):
+        for i in range(3, 41):
             all_jobs.append({'gs_job_name': self.wks.acell(column_number + str(i)).value,
                              'row_number': i,
                              'column_number': column_number})
+        logger.info(f'All google jobs: {all_jobs}')
         return all_jobs
 
     def get_today_date_column(self):
@@ -150,10 +163,10 @@
     The main function for updating google sheets.
     All the functions for updating are here
     """
-
-    all_gs_jobs = config.ALL_GS_JOBS
     all_jobs = update_multy_job_names(all_jobs_results)
 
     gs = UpdateGoogleSheets()
     column = gs.get_today_date_column()
+
+    all_gs_jobs = gs.get_all_gs_jobs()
     gs.update_gs_jobs(all_gs_jobs, all_jobs, column)
