diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
index 5481b8257082656430d2bc3b06d3bab62401cc68..e4ef69df2799613253252a71600bed3fa7e91374 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
@@ -21,6 +21,7 @@ import de.rki.coronawarnapp.test.tasks.ui.TestTaskControllerFragment
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.vaccination.ui.VaccinationTestFragment
 
 class TestMenuFragmentViewModel @AssistedInject constructor() : CWAViewModel() {
 
@@ -41,6 +42,7 @@ class TestMenuFragmentViewModel @AssistedInject constructor() : CWAViewModel() {
             PresenceTracingTestFragment.MENU_ITEM,
             HomeTestCardsFragment.MENU_ITEM,
             CoronaTestTestFragment.MENU_ITEM,
+            VaccinationTestFragment.MENU_ITEM,
         ).let { MutableLiveData(it) }
     }
     val showTestScreenEvent = SingleLiveEvent<TestMenuItem>()
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
index 65aa2e6524a9f0a56a2ae9c9dff8d3e590c2e4fe..169db08040f337e8563ed1a33380324bd005a4af 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
@@ -34,6 +34,7 @@ import de.rki.coronawarnapp.test.submission.ui.SubmissionTestFragment
 import de.rki.coronawarnapp.test.submission.ui.SubmissionTestFragmentModule
 import de.rki.coronawarnapp.test.tasks.ui.TestTaskControllerFragment
 import de.rki.coronawarnapp.test.tasks.ui.TestTaskControllerFragmentModule
+import de.rki.coronawarnapp.vaccination.ui.VaccinationTestFragmentModule
 
 @Module
 abstract class MainActivityTestModule {
@@ -85,4 +86,7 @@ abstract class MainActivityTestModule {
 
     @ContributesAndroidInjector(modules = [CoronaTestTestFragmentModule::class])
     abstract fun coronaTest(): CoronaTestTestFragment
+
+    @ContributesAndroidInjector(modules = [VaccinationTestFragmentModule::class])
+    abstract fun vaccinationTest(): VaccinationTestFragmentModule
 }
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5e9b68b66a6e10c22fb1f41c574c26893b2be2fe
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragment.kt
@@ -0,0 +1,29 @@
+package de.rki.coronawarnapp.vaccination.ui
+
+import android.annotation.SuppressLint
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentTestVaccinationBinding
+import de.rki.coronawarnapp.test.menu.ui.TestMenuItem
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+@SuppressLint("SetTextI18n")
+class VaccinationTestFragment : Fragment(R.layout.fragment_test_vaccination), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val vm: VaccinationTestFragmentViewModel by cwaViewModels { viewModelFactory }
+
+    private val binding: FragmentTestVaccinationBinding by viewBindingLazy()
+
+    companion object {
+        val MENU_ITEM = TestMenuItem(
+            title = "Vaccination",
+            description = "View & Control vaccination related features.",
+            targetId = R.id.vaccinationTestFragment
+        )
+    }
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentModule.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..fb24039c60b2b4cfbea5e2a91e7d9672922eb806
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentModule.kt
@@ -0,0 +1,18 @@
+package de.rki.coronawarnapp.vaccination.ui
+
+import dagger.Binds
+import dagger.Module
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class VaccinationTestFragmentModule {
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(VaccinationTestFragmentViewModel::class)
+    abstract fun testVaccinationFragment(
+        factory: VaccinationTestFragmentViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b9e4d4498f23b25c08f5e004052c04cab18e71de
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/vaccination/ui/VaccinationTestFragmentViewModel.kt
@@ -0,0 +1,15 @@
+package de.rki.coronawarnapp.vaccination.ui
+
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+
+class VaccinationTestFragmentViewModel @AssistedInject constructor(
+    dispatcherProvider: DispatcherProvider,
+) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<VaccinationTestFragmentViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_vaccination.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_vaccination.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f170270ef7d2fae1b85e6a096cf3e2900c8e1af9
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_vaccination.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="HardcodedText">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="8dp"
+        android:orientation="vertical"
+        android:paddingBottom="32dp">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            style="@style/Card"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/spacing_tiny"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
+            android:orientation="vertical">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Vaccinations"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
index fcb6ad2366b5adc63ef6954a1d6f37083b4163c6..ae905210d89a2d8ea86c9e993a1069a97e442686 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
@@ -55,6 +55,9 @@
         <action
             android:id="@+id/action_test_menu_fragment_to_coronaTestTestFragment"
             app:destination="@id/coronaTestTestFragment" />
+        <action
+            android:id="@+id/action_test_menu_fragment_to_vaccinationTestFragment"
+            app:destination="@id/vaccinationTestFragment" />
     </fragment>
 
     <fragment
@@ -160,6 +163,11 @@
     <fragment
         android:id="@+id/coronaTestTestFragment"
         android:name="de.rki.coronawarnapp.test.coronatest.ui.CoronaTestTestFragment"
-        tools:layout="@layout/fragment_test_coronatest"
-        android:label="CoronaTestTestFragment" />
+        android:label="CoronaTestTestFragment"
+        tools:layout="@layout/fragment_test_coronatest" />
+    <fragment
+        android:id="@+id/vaccinationTestFragment"
+        android:name="de.rki.coronawarnapp.vaccination.ui.VaccinationTestFragment"
+        android:label="VaccinationTestFragment"
+        tools:layout="@layout/fragment_test_vaccination" />
 </navigation>
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
index 30e1176b6710fb4b85a68de0738a3a18fd41eb14..b81d1a5fc8e55cf43f5b8db0c0788af8fcc918d4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
@@ -9,13 +9,13 @@ import de.rki.coronawarnapp.release.NewReleaseInfoFragment
 import de.rki.coronawarnapp.release.NewReleaseInfoFragmentModule
 import de.rki.coronawarnapp.tracing.ui.details.TracingDetailsFragmentModule
 import de.rki.coronawarnapp.ui.coronatest.rat.profile.RATProfileUIModule
-import de.rki.coronawarnapp.ui.presencetracing.PresenceTracingUIModule
 import de.rki.coronawarnapp.ui.information.InformationFragmentModule
 import de.rki.coronawarnapp.ui.interoperability.InteroperabilityConfigurationFragment
 import de.rki.coronawarnapp.ui.interoperability.InteroperabilityConfigurationFragmentModule
 import de.rki.coronawarnapp.ui.main.home.HomeFragmentModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaAnalyticsModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityModule
+import de.rki.coronawarnapp.ui.presencetracing.PresenceTracingUIModule
 import de.rki.coronawarnapp.ui.settings.SettingFragmentsModule
 import de.rki.coronawarnapp.ui.settings.SettingsResetFragment
 import de.rki.coronawarnapp.ui.settings.SettingsResetModule
@@ -23,6 +23,7 @@ import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionFragmentModule
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+import de.rki.coronawarnapp.vaccination.ui.VaccinationUIModule
 
 @Module(
     includes = [
@@ -37,6 +38,7 @@ import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
         AnalyticsUIModule::class,
         PresenceTracingUIModule::class,
         RATProfileUIModule::class,
+        VaccinationUIModule::class,
     ]
 )
 abstract class MainActivityModule {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/ApplicationComponent.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/ApplicationComponent.kt
index 574ed5dbcdd248c658dc375b0b2b0539adfd76f3..d66b60dcd5db6a9aacc4d26d9d26840286d77825 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/ApplicationComponent.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/ApplicationComponent.kt
@@ -44,6 +44,7 @@ import de.rki.coronawarnapp.util.encryptionmigration.EncryptionErrorResetTool
 import de.rki.coronawarnapp.util.security.SecurityModule
 import de.rki.coronawarnapp.util.serialization.SerializationModule
 import de.rki.coronawarnapp.util.worker.WorkerBinder
+import de.rki.coronawarnapp.vaccination.core.VaccinationModule
 import javax.inject.Singleton
 
 @Singleton
@@ -78,6 +79,7 @@ import javax.inject.Singleton
         SecurityModule::class,
         PresenceTracingModule::class,
         CoronaTestModule::class,
+        VaccinationModule::class,
     ]
 )
 interface ApplicationComponent : AndroidInjector<CoronaWarnApplication> {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/ProofCertificate.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/ProofCertificate.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9db77d4b5649307834fd35f7992e6077b8e7d48a
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/ProofCertificate.kt
@@ -0,0 +1,8 @@
+package de.rki.coronawarnapp.vaccination.core
+
+import org.joda.time.Instant
+
+interface ProofCertificate {
+
+    val expiresAt: Instant
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt
new file mode 100644
index 0000000000000000000000000000000000000000..24dc25d45caae12f33e4ee93c27421eacaf39491
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt
@@ -0,0 +1,32 @@
+package de.rki.coronawarnapp.vaccination.core
+
+import org.joda.time.Instant
+import org.joda.time.LocalDate
+
+data class VaccinatedPerson(
+    val vaccinationCertificates: Set<VaccinationCertificate>,
+    val proofCertificates: Set<ProofCertificate>,
+    val isRefreshing: Boolean,
+    val lastUpdatedAt: Instant,
+) {
+    val identifier: VaccinatedPersonIdentifier = ""
+
+    val firstName: String
+        get() = ""
+
+    val lastName: String
+        get() = ""
+
+    val dateOfBirth: LocalDate
+        get() = LocalDate.now()
+
+    val vaccinationStatus: Status
+        get() = Status.INCOMPLETE
+
+    enum class Status {
+        INCOMPLETE,
+        COMPLETE
+    }
+}
+
+typealias VaccinatedPersonIdentifier = String
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationCertificate.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationCertificate.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e2c3580d36048dade75af6a5b846fdeb32988d7e
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationCertificate.kt
@@ -0,0 +1,27 @@
+package de.rki.coronawarnapp.vaccination.core
+
+import de.rki.coronawarnapp.ui.Country
+import org.joda.time.Instant
+import org.joda.time.LocalDate
+
+interface VaccinationCertificate {
+
+    val firstName: String
+    val lastName: String
+    val dateOfBirth: LocalDate
+
+    val vaccinatedAt: Instant
+
+    val vaccinationName: String
+    val vaccinationManufacturer: String
+
+    val chargeId: String
+
+    val certificateIssuer: String
+    val certificateCountry: Country
+
+    val certificateId: String
+
+    val identifier: VaccinatedPersonIdentifier
+        get() = ""
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a8347a192f3011c53a2f139323433e186e44fd18
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinationModule.kt
@@ -0,0 +1,6 @@
+package de.rki.coronawarnapp.vaccination.core
+
+import dagger.Module
+
+@Module
+class VaccinationModule
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationCertificateQRCode.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationCertificateQRCode.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ad4ff24d66c095b366fc303af897299321717b59
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationCertificateQRCode.kt
@@ -0,0 +1,9 @@
+package de.rki.coronawarnapp.vaccination.core.qrcode
+
+// TODO
+data class VaccinationCertificateQRCode(
+    // Vaccine or prophylaxis
+    val vaccineNameId: String,
+    val vaccineMedicinalProduct: String,
+    val marketAuthorizationHolder: String,
+)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationQRCodeValidator.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationQRCodeValidator.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e3767500cea953be680dea3be28ab5c06f52ef42
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/qrcode/VaccinationQRCodeValidator.kt
@@ -0,0 +1,12 @@
+package de.rki.coronawarnapp.vaccination.core.qrcode
+
+import dagger.Reusable
+import javax.inject.Inject
+
+@Reusable
+class VaccinationQRCodeValidator @Inject constructor() {
+
+    fun validate(raw: String): VaccinationCertificateQRCode {
+        throw NotImplementedError()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ba12dd14b5721602a37668447ad651e2b77b8204
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt
@@ -0,0 +1,25 @@
+package de.rki.coronawarnapp.vaccination.core.repository
+
+import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson
+import de.rki.coronawarnapp.vaccination.core.VaccinationCertificate
+import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateQRCode
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.emptyFlow
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class VaccinationRepository @Inject constructor() {
+
+    val vaccinationInfos: Flow<Set<VaccinatedPerson>> = emptyFlow()
+
+    suspend fun registerVaccination(
+        qrCode: VaccinationCertificateQRCode
+    ): VaccinationCertificate {
+        throw NotImplementedError()
+    }
+
+    fun clear() {
+        throw NotImplementedError()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/ProofCertificateServerData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/ProofCertificateServerData.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f298c33287488bab4704e00cfda3570da5b50271
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/ProofCertificateServerData.kt
@@ -0,0 +1,3 @@
+package de.rki.coronawarnapp.vaccination.core.server
+
+interface ProofCertificateServerData
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationProofServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationProofServer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8259e4855f9567628a75dd586470d6f83b2b4098
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationProofServer.kt
@@ -0,0 +1,15 @@
+package de.rki.coronawarnapp.vaccination.core.server
+
+import de.rki.coronawarnapp.vaccination.core.VaccinationCertificate
+
+/**
+ * Talks with IBM servers?
+ */
+class VaccinationProofServer {
+
+    suspend fun getProofCertificate(
+        vaccinationCertificate: Set<VaccinationCertificate>
+    ): ProofCertificateServerData {
+        throw NotImplementedError()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationServer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4f2c5e9fc53ac18b3b4d5dc7d269f7837212b93f
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationServer.kt
@@ -0,0 +1,17 @@
+package de.rki.coronawarnapp.vaccination.core.server
+
+import java.util.Locale
+
+/**
+ * Talks with CWA servers
+ */
+class VaccinationServer {
+    suspend fun getVaccinationValueSets(languageCode: Locale): VaccinationValueSet {
+        throw NotImplementedError()
+    }
+
+    fun clear() {
+        // Clear cache
+        throw NotImplementedError()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationValueSet.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationValueSet.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f8c9d6d923ae637fe079c2a6c0aecc35a37c49a0
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/server/VaccinationValueSet.kt
@@ -0,0 +1,7 @@
+package de.rki.coronawarnapp.vaccination.core.server
+
+import java.util.Locale
+
+interface VaccinationValueSet {
+    val languageCode: Locale
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/VaccinationUIModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/VaccinationUIModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e98e08156b85f0aab8dad37cec0169a86b7ed83a
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/VaccinationUIModule.kt
@@ -0,0 +1,6 @@
+package de.rki.coronawarnapp.vaccination.ui
+
+import dagger.Module
+
+@Module
+class VaccinationUIModule
diff --git a/Corona-Warn-App/src/main/res/navigation/vaccination_nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/vaccination_nav_graph.xml
new file mode 100644
index 0000000000000000000000000000000000000000..516c9387c07be143992c95e4d1c0b7cea1b2ca43
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/navigation/vaccination_nav_graph.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<navigation xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/vaccination_nav_graph">
+
+
+</navigation>
\ No newline at end of file