diff --git a/docs/blueprints/who/who_domain_model.txt b/docs/blueprints/who/who_domain_model.txt
index b27c87682e05104845dbc9ac7d4284d72f9b94e3..3387f57f880087f46bb94087fd97faf35d818698 100644
--- a/docs/blueprints/who/who_domain_model.txt
+++ b/docs/blueprints/who/who_domain_model.txt
@@ -1,109 +1,81 @@
 @startuml
-entity Course {
+entity WhoDateReported {
     id: Integer
-    dateiname: String
-    parent_dir: String
-    title: String
-    path_relative: String
-    get_absolute_path()
-    get_relative_path()
-    {classifier} remove_all()
-    {classifier} get_all_as_page(page: Integer)
-    {classifier} get_all()
-    {classifier} get_all_as_dict()
-    {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
-    {classifier} get_kurse_all()
-}
-entity Workflow {
-    id: Integer
-    dateiname: String
-    parent_dir: String
-    get_absolute_path()
-    get_relative_path()
-    {classifier} remove_all()
-    {classifier} get_all_as_page(page: Integer)
-    {classifier} get_all()
-    {classifier} get_all_as_dict()
-    {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
-    {classifier} get_workflow_for_id(workflow_id: Integer)
+	date_reported: String
+    year_week: String
+    datum: Date
+    year: Integer
+    month: Integer
+    day_of_month: Integer
+    day_of_week: Integer
+    week_of_year: Integer
+    {classifier} create_new_object_factory(my_date_rep)
 }
-entity Lektion {
+entity WhoRegion {
     id: Integer
-    dateiname: String
-    parent_dir: String
-    title: String
-    lektion_nr: Integer
-    verified: Boolean
-    get_absolute_path()
-    get_relative_path()
-    {classifier} remove_all()
-    {classifier} get_all_as_page(page: Integer)
-    {classifier} get_all()
-    {classifier} get_all_as_dict()
-    {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
-    {classifier} get_lektionen_for_workflow(workflow: Workflow)
-    {classifier} get_lektion_for_id(lektion_id: Integer)
-    {classifier} get_folien_for_lektion_id(lektion_id: Integer)
-    {classifier} get_all_verified()
+    region: String
 }
-entity FolienSatz {
+entity WhoCountry {
     id: Integer
-    dateiname: String
-    parent_dir: String
-    title: String
-    lektion_nr: Integer
-    foliensatz_nr_in_lektion: Integer
-    get_absolute_path()
-    get_relative_path()
-    {classifier} get_foliensaetze_for_lektion(lektion: Lektion)
+	country_code: String
+    country: String
     {classifier} remove_all()
     {classifier} get_all_as_page(page: Integer)
     {classifier} get_all()
     {classifier} get_all_as_dict()
     {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
+    {classifier} get_germany()
+    {classifier} find_by_country_code_and_country_and_who_region_id(i_country_code, i_country, my_region)
+    {classifier} find_by_country_code(i_country_code)
+    {classifier} find_by_country(i_country)
+    {classifier} get_by_country_code(i_country_code)
+    {classifier} get_by_country(i_country)
+    {classifier} get_who_countries_for_region(region, page)
 }
-entity Folie {
+entity WhoData {
     id: Integer
-    title: String
-    lektion_nr: Integer
-    folien_nr_in_lektion: Integer
-    folien_nr_in_foliensatz: Integer
-    foliensatz_nr_in_lektion: Integer
-    {classifier} get_folien_for_foliensatz(lektion: FolienSatz)
-    {classifier} getFolienKey(lektion_nr: Integer, folien_nr_in_lektion: Integer)
+	cases_new: Integer
+    cases_cumulative: Integer
+    deaths_new: Integer
+    deaths_cumulative: Integer
     {classifier} remove_all()
     {classifier} get_all_as_page(page: Integer)
     {classifier} get_all()
-    {classifier} get_all_as_dict()
     {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
-    {classifier} get_folien_for_lektion(lektion: Lektion)
+    {classifier} find_one_or_none_by_date_and_country(my_date_reported, my_country)
+    {classifier} get_data_for_country(who_country, page)
+    {classifier} get_data_for_day(date_reported, page)
+    {classifier} get_data_for_day_order_by_cases_new(date_reported, page)
+    {classifier} get_data_for_day_order_by_cases_cumulative(date_reported, page)
+    {classifier} get_data_for_day_order_by_deaths_new(date_reported, page)
+    {classifier} get_data_for_day_order_by_deaths_cumulative(date_reported, page)
+    {classifier} get_data_for_country_order_by_cases_new(who_country, page)
+    {classifier} get_data_for_country_order_by_cases_cumulative(who_country, page)
+    {classifier} get_data_for_country_order_by_deaths_new(who_country, page)
+    {classifier} get_data_for_country_order_by_deaths_cumulative(who_country, page)
 }
-entity Abbildung {
+entity WhoImport {
     id: Integer
-    dateiname: String
-    parent_dir: String
-    title: String
-    abbildung_nr_in_lektion: Integer
-    abbildung_nr_in_foliensatz: Integer
-    folien_nr_in_lektion: Integer
-    folien_nr_in_foliensatz: Integer
-    folien_satz_nr: Integer
-    lektion_nr: Integer
-    bildnachweis: Integer
-    get_absolute_path()
-    get_relative_path()
+    date_reported: String
+    country_code: String
+    country: String
+    who_region: String
+    new_cases: String
+    cumulative_cases: String
+    new_deaths: String
+    cumulative_deaths: String
     {classifier} remove_all()
     {classifier} get_all_as_page(page: Integer)
     {classifier} get_all()
-    {classifier} get_all_as_dict()
     {classifier} get_by_id(other_id: Integer)
-    {classifier} find_by_id(other_id: Integer)
+    {classifier} get_regions()
+    {classifier} get_dates_reported()
+    {classifier} get_for_one_day(day: String)
+    {classifier} get_dates_reported_as_array()
+    {classifier} get_new_dates_as_array()
+    {classifier} countries()
 }
+
 Course "1" *--> "*" Workflow: workflows
 Workflow "*" --> "1" Course:  course
 Workflow "1" *--> "*" Lektion: lektionen
@@ -118,22 +90,65 @@ Folie "*" --> "1" FolienSatz: foliensatz
 Folie "1" o--> "*" Abbildung: abbildungen
 Abbildung "*" --> "1" Folie: folie
 Abbildung "*" --> "1" FolienSatz: foliensatz
-class ArtefactContentService {
-    rename_src_files()
-    prepare_data_update()
-    run_data_update()
-    run_db_dump()
-    run_db_reimport()
-    parse_file_name(datei: String)
-    create_or_fetch_folie(file_name_dict, lektion: Lektion)
-    get_abbbildung_for_id(abbbildung_id: Integer)
+
+class WhoService {
+    pretask_database_drop_create()
+    task_database_drop_create()
+    run_download_only()
+    run_import_only()
+    run_update_dimension_tables_only()
+    run_update_fact_table_incremental_only()
+    run_update_fact_table_initial_only()
+    run_update_star_schema_incremental()
+    run_update_star_schema_initial()
+    download_all_files()
+    task_import_all_files()
+    update_dimension_tables_only()
+    update_fact_table_initial_only()
+    update_fact_table_incremental_only()
+}
+class WhoServiceImport {
+    import_file()
+}
+class WhoServiceUpdate {
+    __update_date_reported()
+    __update_region()
+    __update_country()
+    __update_data_incremental()
+    __update_data_initial()
+    __update_dimension_tables()
+    update_dimension_tables_only()
+    update_fact_table_incremental_only()
+    update_fact_table_initial_only()
+    update_star_schema_incremental()
+    update_star_schema_initial()
+}
+class ApplicationServiceConfig {
+	limit_nr: Integer
+    data_path: String
+    slug: String
+    category: String
+    sub_category: String
+    tablename: String
+    cvsfile_name: String
+    url_src: String
+    cvsfile_path: String
+    msg_job: String
+    msg_ok: String
+    msg_error: String
+	create_config_for_who()
+	create_config_for_rki_vaccination()
+	create_config_for_owid()
+	create_config_for_ecdc()
+	create_config_for_rki_bundeslaender()
+	create_config_for_rki_landkreise()
 }
 ArtefactContentService : SQLAlchemy database
 ArtefactContentService : String[] courses
 ArtefactContentService : String[] workflows
 ArtefactContentService : String[] lektionen
 ArtefactContentService : String[] course_names
-class artefact_content_views {
+class who_views {
     url_root()
     url_home()
     url_update_data()