diff --git a/docs/blueprints/application/application_domain_model.txt b/docs/blueprints/application/application_domain_model.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b27c87682e05104845dbc9ac7d4284d72f9b94e3
--- /dev/null
+++ b/docs/blueprints/application/application_domain_model.txt
@@ -0,0 +1,150 @@
+@startuml
+entity Course {
+    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)
+}
+entity Lektion {
+    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()
+}
+entity FolienSatz {
+    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)
+    {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)
+}
+entity Folie {
+    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)
+    {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)
+}
+entity Abbildung {
+    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()
+    {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)
+}
+Course "1" *--> "*" Workflow: workflows
+Workflow "*" --> "1" Course:  course
+Workflow "1" *--> "*" Lektion: lektionen
+Lektion "*" --> "1" Workflow: course_workflow
+Lektion "1" o--> "*" Abbildung: abbildungen
+Abbildung "*" --> "1" Lektion: lektion
+Lektion "1" *--> "*" FolienSatz: foliensaetze
+FolienSatz "*" --> "1" Lektion: lektion
+FolienSatz "1" *--> "*" Folie: folien
+FolienSatz "1" *--> "*" Abbildung: abbildungen
+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)
+}
+ArtefactContentService : SQLAlchemy database
+ArtefactContentService : String[] courses
+ArtefactContentService : String[] workflows
+ArtefactContentService : String[] lektionen
+ArtefactContentService : String[] course_names
+class artefact_content_views {
+    url_root()
+    url_home()
+    url_update_data()
+    url_rename()
+    url_kurse_all()
+    url_kurse_workflow_lektionen(workflow_id: Integer)
+    url_kurse_workflow_lektion_folien(lektion_id: Integer)
+    url_abbbildung_id(abbildung_id: Integer)
+    url_db_dump()
+    url_db_reimport()
+    task_data_update()
+    task_rename_src_files()
+}
+@enduml
diff --git a/docs/blueprints/ecdc/ecdc_domain_model.txt b/docs/blueprints/ecdc/ecdc_domain_model.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b27c87682e05104845dbc9ac7d4284d72f9b94e3
--- /dev/null
+++ b/docs/blueprints/ecdc/ecdc_domain_model.txt
@@ -0,0 +1,150 @@
+@startuml
+entity Course {
+    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)
+}
+entity Lektion {
+    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()
+}
+entity FolienSatz {
+    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)
+    {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)
+}
+entity Folie {
+    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)
+    {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)
+}
+entity Abbildung {
+    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()
+    {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)
+}
+Course "1" *--> "*" Workflow: workflows
+Workflow "*" --> "1" Course:  course
+Workflow "1" *--> "*" Lektion: lektionen
+Lektion "*" --> "1" Workflow: course_workflow
+Lektion "1" o--> "*" Abbildung: abbildungen
+Abbildung "*" --> "1" Lektion: lektion
+Lektion "1" *--> "*" FolienSatz: foliensaetze
+FolienSatz "*" --> "1" Lektion: lektion
+FolienSatz "1" *--> "*" Folie: folien
+FolienSatz "1" *--> "*" Abbildung: abbildungen
+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)
+}
+ArtefactContentService : SQLAlchemy database
+ArtefactContentService : String[] courses
+ArtefactContentService : String[] workflows
+ArtefactContentService : String[] lektionen
+ArtefactContentService : String[] course_names
+class artefact_content_views {
+    url_root()
+    url_home()
+    url_update_data()
+    url_rename()
+    url_kurse_all()
+    url_kurse_workflow_lektionen(workflow_id: Integer)
+    url_kurse_workflow_lektion_folien(lektion_id: Integer)
+    url_abbbildung_id(abbildung_id: Integer)
+    url_db_dump()
+    url_db_reimport()
+    task_data_update()
+    task_rename_src_files()
+}
+@enduml
diff --git a/docs/blueprints/owid/owid_domain_model.txt b/docs/blueprints/owid/owid_domain_model.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b27c87682e05104845dbc9ac7d4284d72f9b94e3
--- /dev/null
+++ b/docs/blueprints/owid/owid_domain_model.txt
@@ -0,0 +1,150 @@
+@startuml
+entity Course {
+    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)
+}
+entity Lektion {
+    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()
+}
+entity FolienSatz {
+    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)
+    {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)
+}
+entity Folie {
+    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)
+    {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)
+}
+entity Abbildung {
+    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()
+    {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)
+}
+Course "1" *--> "*" Workflow: workflows
+Workflow "*" --> "1" Course:  course
+Workflow "1" *--> "*" Lektion: lektionen
+Lektion "*" --> "1" Workflow: course_workflow
+Lektion "1" o--> "*" Abbildung: abbildungen
+Abbildung "*" --> "1" Lektion: lektion
+Lektion "1" *--> "*" FolienSatz: foliensaetze
+FolienSatz "*" --> "1" Lektion: lektion
+FolienSatz "1" *--> "*" Folie: folien
+FolienSatz "1" *--> "*" Abbildung: abbildungen
+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)
+}
+ArtefactContentService : SQLAlchemy database
+ArtefactContentService : String[] courses
+ArtefactContentService : String[] workflows
+ArtefactContentService : String[] lektionen
+ArtefactContentService : String[] course_names
+class artefact_content_views {
+    url_root()
+    url_home()
+    url_update_data()
+    url_rename()
+    url_kurse_all()
+    url_kurse_workflow_lektionen(workflow_id: Integer)
+    url_kurse_workflow_lektion_folien(lektion_id: Integer)
+    url_abbbildung_id(abbildung_id: Integer)
+    url_db_dump()
+    url_db_reimport()
+    task_data_update()
+    task_rename_src_files()
+}
+@enduml
diff --git a/docs/blueprints/who/who_domain_model.txt b/docs/blueprints/who/who_domain_model.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b27c87682e05104845dbc9ac7d4284d72f9b94e3
--- /dev/null
+++ b/docs/blueprints/who/who_domain_model.txt
@@ -0,0 +1,150 @@
+@startuml
+entity Course {
+    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)
+}
+entity Lektion {
+    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()
+}
+entity FolienSatz {
+    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)
+    {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)
+}
+entity Folie {
+    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)
+    {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)
+}
+entity Abbildung {
+    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()
+    {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)
+}
+Course "1" *--> "*" Workflow: workflows
+Workflow "*" --> "1" Course:  course
+Workflow "1" *--> "*" Lektion: lektionen
+Lektion "*" --> "1" Workflow: course_workflow
+Lektion "1" o--> "*" Abbildung: abbildungen
+Abbildung "*" --> "1" Lektion: lektion
+Lektion "1" *--> "*" FolienSatz: foliensaetze
+FolienSatz "*" --> "1" Lektion: lektion
+FolienSatz "1" *--> "*" Folie: folien
+FolienSatz "1" *--> "*" Abbildung: abbildungen
+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)
+}
+ArtefactContentService : SQLAlchemy database
+ArtefactContentService : String[] courses
+ArtefactContentService : String[] workflows
+ArtefactContentService : String[] lektionen
+ArtefactContentService : String[] course_names
+class artefact_content_views {
+    url_root()
+    url_home()
+    url_update_data()
+    url_rename()
+    url_kurse_all()
+    url_kurse_workflow_lektionen(workflow_id: Integer)
+    url_kurse_workflow_lektion_folien(lektion_id: Integer)
+    url_abbbildung_id(abbildung_id: Integer)
+    url_db_dump()
+    url_db_reimport()
+    task_data_update()
+    task_rename_src_files()
+}
+@enduml