diff --git a/README.md b/README.md
index beca4498565599217d182755026cd426db686465..1c033c69d97baa21a8446cbdff2cb86e91ad96a5 100644
--- a/README.md
+++ b/README.md
@@ -204,6 +204,7 @@ class WhoGlobalDataImportTable(db.Model):
 * Fixed #4 data update for 3NF ecdc_europa_data_import
 
 ### 0.0.10 Release
+* Issue #24 update_data
 * Issue #26 /admin/database/dump
 * Issue #28 /admin/database/import
 * Issue #29 /who/info 
diff --git a/org/woehlke/covid19/rki/rki_model.py b/org/woehlke/covid19/rki/rki_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..647bc471472e2bff2c6d360f71c038866c25975f
--- /dev/null
+++ b/org/woehlke/covid19/rki/rki_model.py
@@ -0,0 +1,283 @@
+from flask_sqlalchemy import Pagination
+from sqlalchemy import and_, func
+from database import db, ITEMS_PER_PAGE
+from sqlalchemy.orm import joinedload, raiseload
+
+
+class RkiDateReported(db.Model):
+    __tablename__ = 'rki_date_reported'
+
+    id = db.Column(db.Integer, primary_key=True)
+    date_reported = db.Column(db.String(255), nullable=False, unique=True)
+
+    @classmethod
+    def remove_all(cls):
+        db.session.execute("delete from " + cls.__tablename__)
+        db.session.commit()
+        return None
+
+    @classmethod
+    def get_all_as_page(cls, page):
+        return db.session.query(cls).order_by(cls.date_reported.desc()).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_all(cls):
+        return db.session.query(cls).all()
+
+    @classmethod
+    def get_all_as_dict(cls):
+        dates_reported = {}
+        for my_date_reported in cls.get_all():
+            dates_reported[my_date_reported.date_reported] = my_date_reported
+        return dates_reported
+
+    @classmethod
+    def get_by_id(cls, other_id):
+        return db.session.query(cls).filter(cls.id == other_id).one()
+
+    @classmethod
+    def find_by_date_reported(cls, i_date_reported):
+        return db.session.query(cls).filter(cls.date_reported == i_date_reported).one_or_none()
+
+
+class RkiRegion(db.Model):
+    __tablename__ = 'rki_region'
+
+    id = db.Column(db.Integer, primary_key=True)
+    region = db.Column(db.String(255), unique=True)
+
+    @classmethod
+    def remove_all(cls):
+        db.session.execute("delete from " + cls.__tablename__)
+        db.session.commit()
+        return None
+
+    @classmethod
+    def get_all(cls):
+        return db.session.query(cls).all()
+
+    @classmethod
+    def get_all_as_page(cls, page):
+        return db.session.query(cls).order_by(cls.region).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_all_as_dict(cls):
+        regions = {}
+        for my_region in cls.get_all():
+            regions[my_region.region] = my_region
+        return regions
+
+    @classmethod
+    def get_by_id(cls, other_id):
+        return db.session.query(cls).filter(cls.id == other_id).one()
+
+    @classmethod
+    def find_by_region(cls, i_who_region):
+        my_region = db.session.query(cls).filter(cls.region == i_who_region).one_or_none()
+        return my_region
+
+
+class RkiCountry(db.Model):
+    __tablename__ = 'rki_country'
+
+    id = db.Column(db.Integer, primary_key=True)
+    country_code = db.Column(db.String(255), unique=True, nullable=False)
+    country = db.Column(db.String(255), unique=True, nullable=False)
+    region_id = db.Column(db.Integer, db.ForeignKey('who_region.id'), nullable=False)
+    region = db.relationship(
+        'WhoRegion',
+        lazy='subquery',
+        order_by='WhoRegion.region')
+
+    @classmethod
+    def remove_all(cls):
+        db.session.execute("delete from " + cls.__tablename__)
+        db.session.commit()
+        return None
+
+    @classmethod
+    def get_all_as_page(cls, page):
+        return db.session.query(cls).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_all(cls):
+        return db.session.query(cls).order_by(cls.country).all()
+
+    @classmethod
+    def get_all_as_dict(cls):
+        countries = {}
+        for my_country in cls.get_all():
+            countries[my_country.country_code] = my_country
+        return countries
+
+    @classmethod
+    def get_by_id(cls, other_id):
+        return db.session.query(cls).filter(cls.id == other_id).one()
+
+    @classmethod
+    def get_germany(cls):
+        return db.session.query(cls).filter(cls.country_code == 'DE').one()
+
+    @classmethod
+    def find_by_country_code_and_country_and_who_region_id(cls, i_country_code, i_country, my_region):
+        return db.session.query(cls).filter(
+            and_(
+                cls.country_code == i_country_code,
+                cls.country == i_country,
+                cls.region_id == my_region.id
+            )
+        ).one_or_none()
+
+    @classmethod
+    def find_by_country_code(cls, i_country_code):
+        return db.session.query(cls).filter(
+                cls.country_code == i_country_code
+        ).one_or_none()
+
+    @classmethod
+    def get_who_countries_for_region(cls, region, page):
+        return db.session.query(cls).filter(
+            cls.region == region
+        ).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE)
+
+
+class RkiGermanyData(db.Model):
+    __tablename__ = 'rki_global_data'
+
+    id = db.Column(db.Integer, primary_key=True)
+    cases_new = db.Column(db.Integer, nullable=False)
+    cases_cumulative = db.Column(db.Integer, nullable=False)
+    deaths_new = db.Column(db.Integer, nullable=False)
+    deaths_cumulative = db.Column(db.Integer, nullable=False)
+    date_reported_id = db.Column(db.Integer,
+        db.ForeignKey('who_date_reported.id'), nullable=False)
+    date_reported = db.relationship(
+        'WhoDateReported', lazy='joined', order_by='desc(WhoDateReported.date_reported)')
+    country_id = db.Column(db.Integer,
+        db.ForeignKey('who_country.id'), nullable=False)
+    country = db.relationship(
+        'WhoCountry', lazy='joined', order_by='asc(WhoCountry.country)')
+
+    @classmethod
+    def remove_all(cls):
+        db.session.execute("delete from " + cls.__tablename__)
+        db.session.commit()
+        return None
+
+    @classmethod
+    def get_all_as_page(cls, page):
+        return db.session.query(cls).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_all(cls):
+        return db.session.query(cls).all()
+
+    @classmethod
+    def get_by_id(cls, other_id):
+        return db.session.query(cls).filter(cls.id == other_id).one()
+
+    @classmethod
+    def find_one_or_none_by_date_and_country(cls, my_date_reported, my_country):
+        return db.session.query(cls).filter(
+            and_(
+                cls.date_reported_id == my_date_reported.id,
+                cls.country_id == my_country.id
+            )
+        ).one_or_none()
+
+    @classmethod
+    def get_data_for_country(cls, who_country, page):
+        return db.session.query(cls).filter(
+            cls.country_id == who_country.id
+        ).populate_existing().options(
+            joinedload(cls.country).subqueryload(RkiCountry.region),
+            joinedload(cls.date_reported)
+        ).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_data_for_day(cls, date_reported, page):
+        return db.session.query(cls).filter(
+                cls.date_reported_id == date_reported.id
+            ).populate_existing().options(
+                joinedload(cls.country).subqueryload(RkiCountry.region),
+                joinedload(cls.date_reported)
+            ).order_by(
+                cls.deaths_new.desc(),
+                cls.cases_new.desc(),
+                cls.deaths_cumulative.desc(),
+                cls.cases_cumulative.desc()
+            ).paginate(page, per_page=ITEMS_PER_PAGE)
+
+
+class RkiGermanyDataImportTable(db.Model):
+    __tablename__ = 'rki_global_data_import'
+
+    id = db.Column(db.Integer, primary_key=True)
+    date_reported = db.Column(db.String(255), nullable=False)
+    country_code = db.Column(db.String(255), nullable=False)
+    country = db.Column(db.String(255), nullable=False)
+    who_region = db.Column(db.String(255), nullable=False)
+    new_cases = db.Column(db.String(255), nullable=False)
+    cumulative_cases = db.Column(db.String(255), nullable=False)
+    new_deaths = db.Column(db.String(255), nullable=False)
+    cumulative_deaths = db.Column(db.String(255), nullable=False)
+    row_imported = db.Column(db.Boolean, nullable=False)
+
+    @classmethod
+    def remove_all(cls):
+        db.session.execute("delete from " + cls.__tablename__)
+        db.session.commit()
+        return None
+
+    @classmethod
+    def get_all_as_page(cls, page):
+        return db.session.query(cls).paginate(page, per_page=ITEMS_PER_PAGE)
+
+    @classmethod
+    def get_all(cls):
+        return db.session.query(cls).all()
+
+    @classmethod
+    def get_by_id(cls, other_id):
+        return db.session.query(cls).filter(cls.id == other_id).one()
+
+    @classmethod
+    def get_regions(cls):
+        return db.session.query(cls.who_region).distinct()
+
+    @classmethod
+    def get_dates_reported(cls):
+        return db.session.query(cls.date_reported).distinct()
+
+    @classmethod
+    def get_for_one_day(cls, day):
+        return db.session.query(cls).filter(cls.date_reported == day).all()
+
+    @classmethod
+    def get_new_dates_as_array(cls):
+        sql_query = """
+            select
+                date_reported
+            from
+                who_global_data_import
+            where
+                date_reported
+            not in (
+            select
+                distinct
+                    who_date_reported.date_reported
+                from
+                    who_global_data
+                left join
+                    who_date_reported
+                on
+                    who_global_data.date_reported_id=who_date_reported.id
+            )
+            group by
+                who_global_data_import.date_reported
+            order by date_reported desc
+            """
+        new_dates = []
+        for item in db.session.execute(sql_query):
+            new_dates.append(item['date_reported'])
+        return new_dates
diff --git a/org/woehlke/covid19/rki/rki_service.py b/org/woehlke/covid19/rki/rki_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..0faea52962ed13301d1585b6cad89d22fdeed18e
--- /dev/null
+++ b/org/woehlke/covid19/rki/rki_service.py
@@ -0,0 +1,76 @@
+import os
+from database import app
+from org.woehlke.covid19.who.who_service_download import WhoServiceDownload
+from org.woehlke.covid19.who.who_service_import import WhoServiceImport
+from org.woehlke.covid19.who.who_service_update import WhoServiceUpdate
+
+rki_service = None
+
+
+class RkiService:
+    def __init__(self, database):
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service [init]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv"
+        self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name
+        self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name
+        self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name
+        self.who_service_download = WhoServiceDownload(database)
+        self.who_service_import = WhoServiceImport(database)
+        self.who_service_update = WhoServiceUpdate(database)
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service [ready]")
+
+    def run_download(self):
+        app.logger.info(" run update [begin]")
+        app.logger.info("------------------------------------------------------------")
+        success = self.who_service_download.download_file()
+        app.logger.info("")
+        app.logger.info(" run update [done]")
+        app.logger.info("------------------------------------------------------------")
+        return success
+
+    def run_update(self, import_file=True):
+        app.logger.info(" run update [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.who_service_import.import_file()
+        self.who_service_update.update_db()
+        app.logger.info("")
+        app.logger.info(" run update [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def run_update_short(self, import_file=True):
+        app.logger.info(" run update short [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.who_service_import.import_file()
+        self.who_service_update.update_db_short()
+        app.logger.info("")
+        app.logger.info(" run update short [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def run_update_initial(self, import_file=True):
+        app.logger.info(" run update initial [begin]")
+        app.logger.info("------------------------------------------------------------")
+        if import_file:
+            self.who_service_import.import_file()
+        self.who_service_update.update_db_initial()
+        app.logger.info("")
+        app.logger.info(" run update initial [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def run_update_countries(self):
+        app.logger.info(" run update countries [begin]")
+        app.logger.info("------------------------------------------------------------")
+        self.who_service_update.update_who_country()
+        app.logger.info("")
+        app.logger.info(" run update countries [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
diff --git a/org/woehlke/covid19/rki/rki_service_download.py b/org/woehlke/covid19/rki/rki_service_download.py
new file mode 100644
index 0000000000000000000000000000000000000000..087673723c83a89e9d6456bcb388029b698b2017
--- /dev/null
+++ b/org/woehlke/covid19/rki/rki_service_download.py
@@ -0,0 +1,56 @@
+import os
+import wget
+from flask import flash
+from database import app
+
+rki_service_download = None
+
+
+class RkiServiceDownload:
+    def __init__(self, database):
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" RKI Service Download [init]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        self.__who_cvsfile_name = "RKI-COVID-19-DE-data.csv"
+        self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name
+        self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name
+        self.__url_src_data = "https://opendata.arcgis.com/datasets/ef4b445a53c1406892257fe63129a8ea_0.csv"
+
+        self.__rki_landkreise_url_src ="https://opendata.arcgis.com/datasets/917fc37a709542548cc3be077a786c17_0.csv"
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" RKI Service Download [ready]")
+
+    def download_file(self):
+        app.logger.info(" download - RKI [begin] ")
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" FILE: "+self.__src_who_cvsfile_name+" ")
+        app.logger.info(" FROM: "+self.__url_src_data+" ")
+        app.logger.info("------------------------------------------------------------")
+        os.makedirs('data', exist_ok=True)
+        try:
+            os.remove(self.__src_who_cvsfile_name)
+            data_file = wget.download(self.__url_src_data, self.__src_who_cvsfile_name)
+            app.logger.info(" " + data_file + " ")
+        except RuntimeError as error:
+            app.logger.info("############################################################")
+            app.logger.info(" " + error + " ")
+            app.logger.info("############################################################")
+            flash(message="error while downloading: " + self.__url_src_data, category='error')
+        except Exception as error:
+            app.logger.info("############################################################")
+            app.logger.info(error)
+            app.logger.info("############################################################")
+            flash(message="error after downloading: " + self.__who_cvsfile_name, category='error')
+        except AttributeError as aerror:
+            app.logger.info("############################################################")
+            app.logger.info(aerror)
+            app.logger.info("############################################################")
+        finally:
+            app.logger.info("------------------------------------------------------------")
+            app.logger.info(" download - RKI [done] ")
+            msg = "downloaded: " + self.__who_cvsfile_name + " "
+            flash(msg)
+        return self
+
diff --git a/org/woehlke/covid19/rki/rki_service_import.py b/org/woehlke/covid19/rki/rki_service_import.py
new file mode 100644
index 0000000000000000000000000000000000000000..3adcea0f47053ac3417ba241e1f1aca79704a097
--- /dev/null
+++ b/org/woehlke/covid19/rki/rki_service_import.py
@@ -0,0 +1,74 @@
+import os
+import sys
+import csv
+import psycopg2
+from database import db, app
+from org.woehlke.covid19.who.who_model import WhoGlobalDataImportTable
+
+
+rki_service_import = None
+
+
+class RkiServiceImport:
+    def __init__(self, database):
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service Import [init]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv"
+        self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name
+        self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name
+        self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service Import [ready]")
+
+    def import_file(self):
+        app.logger.info(" import WHO [begin]")
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" FILE:  "+self.__src_who_cvsfile_name)
+        app.logger.info(" TABLE: who_global_data_import")
+        app.logger.info("------------------------------------------------------------")
+        row = None
+        if sys.platform == 'linux':
+            keyDate_reported ='\ufeffDate_reported'
+        else:
+            keyDate_reported = 'Date_reported'
+        try:
+            WhoGlobalDataImportTable.remove_all()
+            with open(self.__src_who_cvsfile_name, newline='\n') as csv_file:
+                file_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"')
+                k = 0
+                for row in file_reader:
+                    o = WhoGlobalDataImportTable(
+                        date_reported=row[keyDate_reported],
+                        country_code=row['Country_code'],
+                        country=row['Country'],
+                        who_region=row['WHO_region'],
+                        new_cases=row['New_cases'],
+                        cumulative_cases=row['Cumulative_cases'],
+                        new_deaths=row['New_deaths'],
+                        cumulative_deaths=row['Cumulative_deaths'],
+                        row_imported=False
+                    )
+                    db.session.add(o)
+                    if (k % 2000) == 0:
+                        db.session.commit()
+                        app.logger.info(" import WHO  ... " + str(k) + " rows")
+                    k = k + 1
+                db.session.commit()
+        except KeyError as error:
+            app.logger.warning("WARN: import WHO [begin]")
+            app.logger.warning(":::"+str(error)+":::")
+            for item_key, item_value in row.items():
+                app.logger.warning(item_key+" : "+item_value)
+            app.logger.warning("WARN: import WHO [end]")
+        except (Exception, psycopg2.DatabaseError) as error:
+            app.logger.warning("WARN: import WHO [begin]")
+            app.logger.warning(error)
+            app.logger.warning("WARN: import WHO [end]")
+        finally:
+            app.logger.info("")
+            app.logger.info("------------------------------------------------------------")
+            app.logger.info(" import WHO [done]")
+        return self
diff --git a/org/woehlke/covid19/rki/rki_service_update.py b/org/woehlke/covid19/rki/rki_service_update.py
new file mode 100644
index 0000000000000000000000000000000000000000..6cbc6052154d2c1f417af3e85fcb32bc3ca7a0fa
--- /dev/null
+++ b/org/woehlke/covid19/rki/rki_service_update.py
@@ -0,0 +1,239 @@
+import os
+from database import db, app
+from org.woehlke.covid19.who.who_model import WhoRegion, WhoDateReported, WhoCountry, WhoGlobalData
+from org.woehlke.covid19.who.who_model import WhoGlobalDataImportTable
+
+
+rki_service_update = None
+
+
+class RkiServiceUpdate:
+    def __init__(self, database):
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service Update [init]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv"
+        self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name
+        self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name
+        self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" WHO Service Update [ready]")
+
+    def __update_who_date_reported(self):
+        app.logger.info(" update who_date_reported [begin]")
+        app.logger.info("------------------------------------------------------------")
+        i = 0
+        for i_date_reported, in WhoGlobalDataImportTable.get_dates_reported():
+            c = WhoDateReported.find_by_date_reported(i_date_reported)
+            if c is None:
+                o = WhoDateReported(date_reported=i_date_reported)
+                db.session.add(o)
+                app.logger.info(" update who_date_reported "+i_date_reported+" added NEW")
+            if i % 10 == 0:
+                app.logger.info(" update who_date_reported "+i_date_reported+" not added")
+                db.session.commit()
+            i += 1
+        db.session.commit()
+        app.logger.info("")
+        app.logger.info(" update who_date_reported [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def __update_who_region(self):
+        app.logger.info(" update who_region [begin]")
+        app.logger.info("------------------------------------------------------------")
+        i = 0
+        for i_who_region, in db.session.query(WhoGlobalDataImportTable.who_region).distinct():
+            c = db.session.query(WhoRegion).filter(WhoRegion.region == i_who_region).count()
+            if c == 0:
+                o = WhoRegion(region=i_who_region)
+                db.session.add(o)
+                app.logger.info(i_who_region +" added NEW ")
+            else:
+                app.logger.info(i_who_region +" not added ")
+            if i % 10 == 0:
+                db.session.commit()
+            i += 1
+        db.session.commit()
+        app.logger.info("")
+        app.logger.info(" update who_region [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def __update_who_country(self):
+        app.logger.info(" update who_country [begin]")
+        app.logger.info("------------------------------------------------------------")
+        sql_text = """
+        select distinct 
+            who_global_data_import.country_code,
+            who_global_data_import.country,
+            who_global_data_import.who_region
+        from who_global_data_import
+        """
+        result = db.session.execute(sql_text).fetchall()
+        for result_item in result:
+            i_country_code = result_item.country_code
+            i_country = result_item.country
+            i_who_region = result_item.who_region
+            output = i_country_code + " " + i_country + " " + i_who_region
+            my_region = WhoRegion.find_by_region(i_who_region)
+            my_country = WhoCountry.find_by_country_code_and_country_and_who_region_id(
+                i_country_code, i_country, my_region
+            )
+            if my_country is None:
+                o = WhoCountry(
+                    country=i_country,
+                    country_code=i_country_code,
+                    region=my_region)
+                db.session.add(o)
+                db.session.commit()
+                my_country = WhoCountry.find_by_country_code_and_country_and_who_region_id(
+                    i_country_code, i_country, my_region
+                )
+                output += " added NEW "
+            else:
+                output += " not added "
+            output += i_country_code + " id=" + str(my_country.id)
+            app.logger.info(output)
+        db.session.commit()
+        app.logger.info("")
+        app.logger.info(" update who_country [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def __update_who_global_data(self):
+        app.logger.info(" update WHO [begin]")
+        app.logger.info("------------------------------------------------------------")
+        dates_reported = WhoDateReported.get_all_as_dict()
+        regions = WhoRegion.get_all_as_dict()
+        countries = WhoCountry.get_all_as_dict()
+
+        #
+        #
+        i = 0
+        result = WhoGlobalDataImportTable.get_all()
+        for result_item in result:
+            my_country = countries[result_item.country_code]
+            my_date_reported = dates_reported[result_item.date_reported]
+            result_who_global_data = WhoGlobalData.find_one_or_none_by_date_and_country(
+                my_date_reported,
+                my_country)
+            if result_who_global_data is None:
+                o = WhoGlobalData(
+                    cases_new=int(result_item.new_cases),
+                    cases_cumulative=int(result_item.cumulative_cases),
+                    deaths_new=int(result_item.new_deaths),
+                    deaths_cumulative=int(result_item.cumulative_deaths),
+                    date_reported=my_date_reported,
+                    country=my_country
+                )
+                db.session.add(o)
+            if i % 2000 == 0:
+                app.logger.info(" update WHO ... "+str(i)+" rows")
+                db.session.commit()
+            i += 1
+        db.session.commit()
+        app.logger.info(" update WHO :  "+str(i)+" total rows")
+        app.logger.info(" update WHO [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def __update_who_global_data_short(self):
+        app.logger.info(" update WHO short [begin]")
+        app.logger.info("------------------------------------------------------------")
+        new_dates_reported_from_import = WhoGlobalDataImportTable.get_new_dates_as_array()
+        i = 0
+        for my_date_reported in new_dates_reported_from_import:
+            my_date = WhoDateReported.find_by_date_reported(my_date_reported)
+            for result_item in WhoGlobalDataImportTable.get_for_one_day(my_date_reported):
+                my_country = WhoCountry.find_by_country_code(result_item.country_code)
+                o = WhoGlobalData(
+                    cases_new=int(result_item.new_cases),
+                    cases_cumulative=int(result_item.cumulative_cases),
+                    deaths_new=int(result_item.new_deaths),
+                    deaths_cumulative=int(result_item.cumulative_deaths),
+                    date_reported=my_date,
+                    country=my_country
+                )
+                db.session.add(o)
+                result_item.row_imported = True
+                db.session.add(result_item)
+                i += 1
+                if i % 500 == 0:
+                    app.logger.info(" update WHO short ... "+str(i)+" rows")
+                    db.session.commit()
+            db.session.commit()
+        app.logger.info(" update WHO short :  "+str(i)+" total rows")
+        app.logger.info(" update WHO short [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def __update_who_global_data_initial(self):
+        app.logger.info(" update WHO initial [begin]")
+        app.logger.info("------------------------------------------------------------")
+        WhoGlobalData.remove_all()
+        new_dates_reported_from_import = WhoGlobalDataImportTable.get_new_dates_as_array()
+        i = 0
+        for my_date_reported in new_dates_reported_from_import:
+            my_date = WhoDateReported.find_by_date_reported(my_date_reported)
+            for result_item in WhoGlobalDataImportTable.get_for_one_day(my_date_reported):
+                my_country = WhoCountry.find_by_country_code(result_item.country_code)
+                o = WhoGlobalData(
+                    cases_new=int(result_item.new_cases),
+                    cases_cumulative=int(result_item.cumulative_cases),
+                    deaths_new=int(result_item.new_deaths),
+                    deaths_cumulative=int(result_item.cumulative_deaths),
+                    date_reported=my_date,
+                    country=my_country
+                )
+                db.session.add(o)
+                result_item.row_imported = True
+                db.session.add(result_item)
+                i += 1
+                if i % 500 == 0:
+                    app.logger.info(" update WHO initial ... "+str(i)+" rows")
+                    db.session.commit()
+            db.session.commit()
+        app.logger.info(" update WHO initial :  "+str(i)+" total rows")
+        app.logger.info(" update WHO initial [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def update_db(self):
+        app.logger.info(" update db [begin]")
+        app.logger.info("------------------------------------------------------------")
+        self.__update_who_date_reported()
+        self.__update_who_region()
+        self.__update_who_country()
+        self.__update_who_global_data()
+        app.logger.info(" update db [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def update_db_short(self):
+        app.logger.info(" update db short [begin]")
+        app.logger.info("------------------------------------------------------------")
+        self.__update_who_date_reported()
+        self.__update_who_region()
+        self.__update_who_country()
+        self.__update_who_global_data_short()
+        app.logger.info(" update db short [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def update_db_initial(self):
+        app.logger.info(" update db initial [begin]")
+        app.logger.info("------------------------------------------------------------")
+        self.__update_who_date_reported()
+        self.__update_who_region()
+        self.__update_who_country()
+        self.__update_who_global_data_initial()
+        app.logger.info(" update db initial [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def update_who_country(self):
+        self.__update_who_country()
+        return self