diff --git a/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in.proto b/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in.proto
new file mode 100644
index 0000000000000000000000000000000000000000..5e3fdf892809ea3de57161cf40060fb737b3c50b
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in.proto
@@ -0,0 +1,34 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.evreg;
+
+import "internal/evreg/signed_event.proto";
+
+message CheckIn {
+  uint32 trl = 1;
+  SignedEvent signedEvent = 2;
+  uint32 checkinTime = 3; 
+  uint32 checkoutTime = 4; 
+}
+
+message CheckInOption1 {
+  uint32 trl = 1;
+  bytes eventKey = 2; // 16 byte random string
+  uint32 checkinTime = 3; 
+  uint32 checkoutTime = 4; 
+}
+message CheckInOption2 {
+  uint32 trl = 1;
+  bytes rei = 2; // 16 byte random string
+}
+message CheckInOption3 {
+  uint32 trl = 1;
+  bytes checkinRei = 2; // 16 byte random string
+  bytes checkoutRei = 3; // 16 byte random string
+}
+message CheckInOption4 {
+  uint32 trl = 1;
+  SignedEvent signedEvent = 2;
+  uint32 checkinTime = 3; 
+  uint32 checkoutTime = 4; 
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in_export.proto b/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in_export.proto
new file mode 100644
index 0000000000000000000000000000000000000000..5ef3d0a4abe9d2a808d8b21e70c5580176c698da
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/evreg/check_in_export.proto
@@ -0,0 +1,30 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.evreg;
+
+
+import "internal/evreg/check_in.proto";
+
+message CheckInExport {
+  repeated CheckInExportItem checkIns = 1;
+}
+
+message CheckInExportItem {
+  uint32 trl = 1;
+  bytes eventKey = 2; // 16 byte random string
+  uint32 checkinTime = 3; 
+  uint32 checkoutTime = 4; 
+}
+
+message CheckInExportOption1 {
+  repeated CheckInOption1 checkIns = 1;
+}
+
+message CheckInExportOption2 {
+  repeated CheckInOption2 checkIns = 1;
+}
+
+message CheckInExportOption3 {
+  repeated CheckInOption3 checkIns = 1;
+}
+
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/evreg/event.proto b/Server-Protocol-Buffer/src/main/proto/internal/evreg/event.proto
new file mode 100644
index 0000000000000000000000000000000000000000..c567f95503d0f796208d793bea5bdf2b01fae877
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/evreg/event.proto
@@ -0,0 +1,12 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.evreg;
+
+
+message Event {
+  bytes guid = 1;
+  string description = 2;
+  uint32 start = 3;
+  uint32 end = 4;
+  uint32 defaultCheckInLengthInMinutes = 5;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/evreg/signed_event.proto b/Server-Protocol-Buffer/src/main/proto/internal/evreg/signed_event.proto
new file mode 100644
index 0000000000000000000000000000000000000000..bcf33008dfdb4f59692bf08d3b4c786e78815de2
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/evreg/signed_event.proto
@@ -0,0 +1,10 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.evreg;
+
+import "internal/evreg/event.proto";
+
+message SignedEvent {
+  Event event = 1;
+  bytes signature = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp.proto
new file mode 100644
index 0000000000000000000000000000000000000000..f8831e5184e810de369d5d556b4c432e4dd53076
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp.proto
@@ -0,0 +1,9 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.ppdd;
+
+
+message ELSOneTimePassword {
+
+  string otp = 1;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_android.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_android.proto
new file mode 100644
index 0000000000000000000000000000000000000000..0b01eae144108cce115085d627034ee8267797a2
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_android.proto
@@ -0,0 +1,13 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.ppdd;
+
+import "internal/ppdd/ppac_android.proto";
+import "internal/ppdd/els_otp.proto";
+
+message ELSOneTimePasswordRequestAndroid {
+
+  PPACAndroid authentication = 1;
+
+  ELSOneTimePassword payload = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_ios.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_ios.proto
new file mode 100644
index 0000000000000000000000000000000000000000..1495785c2ad6b789a2a1cbaa3b16f8dda49c0883
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/els_otp_request_ios.proto
@@ -0,0 +1,13 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.ppdd;
+
+import "internal/ppdd/ppac_ios.proto";
+import "internal/ppdd/els_otp.proto";
+
+message ELSOneTimePasswordRequestIOS {
+
+  PPACIOS authentication = 1;
+
+  ELSOneTimePassword payload = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_android.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_android.proto
index 1153d872fcb12ab5ba93d38d6e8386a6cf38ca41..0e1cd12374a0b5e564951cf5e900dc108842948c 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_android.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_android.proto
@@ -10,4 +10,4 @@ message PPADataRequestAndroid {
   PPACAndroid authentication = 1;
 
   PPADataAndroid payload = 2;
-}
\ No newline at end of file
+}
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_ios.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_ios.proto
index 18118015327dc1d782df1b31dfd0be8a9cd1c1e4..e7feff7b800c2d254707d792e55a0c2131db9d50 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_ios.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppa_data_request_ios.proto
@@ -10,4 +10,4 @@ message PPADataRequestIOS {
   PPACIOS authentication = 1;
 
   PPADataIOS payload = 2;
-}
\ No newline at end of file
+}
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_android.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_android.proto
index 98aa1159a75bfe7a99318ee88fa2cbe888a6e78a..8e52a3ad922bece16394bd7679707f1028604ae6 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_android.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_android.proto
@@ -8,4 +8,4 @@ message PPACAndroid {
   string safetyNetJws = 1;
 
   string salt = 2;
-}
\ No newline at end of file
+}
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_ios.proto b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_ios.proto
index 93fcdf23e00191f66557fd163b5c5e82d39a5bba..214426ca0d9cc2446524e2940e5e395b2c12df7e 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_ios.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/ppdd/ppac_ios.proto
@@ -8,4 +8,4 @@ message PPACIOS {
   string deviceToken = 1;
 
   string apiToken = 2;
-}
\ No newline at end of file
+}
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/submission_payload.proto b/Server-Protocol-Buffer/src/main/proto/internal/submission_payload.proto
index 3d574f61541d07742a410f481051bdbffd1c77ba..5c7ce61c8b935b7ba505cd6fe0f77b1b2430604a 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/submission_payload.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/submission_payload.proto
@@ -3,6 +3,7 @@ syntax = "proto2";
 package de.rki.coronawarnapp.server.protocols.internal;
 
 import "external/exposurenotification/temporary_exposure_key_export.proto";
+import "internal/evreg/check_in.proto";
 
 message SubmissionPayload {
   repeated de.rki.coronawarnapp.server.protocols.external.exposurenotification.TemporaryExposureKey keys = 1;
@@ -10,4 +11,5 @@ message SubmissionPayload {
   repeated string visitedCountries = 3;
   optional string origin = 4;
   optional bool consentToFederation = 5;
+  repeated de.rki.coronawarnapp.server.protocols.internal.evreg.CheckIn checkIns = 6;
 }
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
index 4b66239e8a7006d19da6882316be38e92127ecf0..3a1c608852dd20043a198f3c22213917e308cdd5 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_android.proto
@@ -3,9 +3,11 @@ syntax = "proto3";
 package de.rki.coronawarnapp.server.protocols.internal.v2;
 
 import "internal/v2/app_features.proto";
+import "internal/v2/event_registration_parameters.proto";
 import "internal/v2/exposure_detection_parameters.proto";
 import "internal/v2/key_download_parameters.proto";
 import "internal/v2/ppdd_edus_parameters.proto";
+import "internal/v2/ppdd_els_parameters.proto";
 import "internal/v2/ppdd_ppa_parameters.proto";
 import "internal/v2/risk_calculation_parameters.proto";
 
@@ -30,6 +32,9 @@ message ApplicationConfigurationAndroid {
 
   PPDDEventDrivenUserSurveyParametersAndroid eventDrivenUserSurveyParameters = 10;
   PPDDPrivacyPreservingAnalyticsParametersAndroid privacyPreservingAnalyticsParameters = 11;
+  PPDDErrorLogSharingParametersAndroid errorLogSharingParameters = 12;
+
+  EventRegistrationParameters eventRegistrationParameters = 13;
 }
 
 message DiagnosisKeysDataMapping {
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_ios.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_ios.proto
index b9c24f0d1f7e75cee721cdb0024b9da3b80ec689..e57b4a2ea15d0828a9014f35bfd820bbe74a281a 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_ios.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/app_config_ios.proto
@@ -3,9 +3,11 @@ syntax = "proto3";
 package de.rki.coronawarnapp.server.protocols.internal.v2;
 
 import "internal/v2/app_features.proto";
+import "internal/v2/event_registration_parameters.proto";
 import "internal/v2/exposure_detection_parameters.proto";
 import "internal/v2/key_download_parameters.proto";
 import "internal/v2/ppdd_edus_parameters.proto";
+import "internal/v2/ppdd_els_parameters.proto";
 import "internal/v2/ppdd_ppa_parameters.proto";
 import "internal/v2/risk_calculation_parameters.proto";
 import "internal/v2/semantic_version.proto";
@@ -29,6 +31,9 @@ message ApplicationConfigurationIOS {
 
   PPDDEventDrivenUserSurveyParametersIOS eventDrivenUserSurveyParameters = 9;
   PPDDPrivacyPreservingAnalyticsParametersIOS privacyPreservingAnalyticsParameters = 10;
+  PPDDErrorLogSharingParametersIOS errorLogSharingParameters = 11;
+
+  EventRegistrationParameters eventRegistrationParameters = 12;
 }
 
 message ExposureConfiguration {
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/event_registration_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/event_registration_parameters.proto
new file mode 100644
index 0000000000000000000000000000000000000000..5394e14bf36e22c1b9c6fe0059b704ccaa2cf2d8
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/event_registration_parameters.proto
@@ -0,0 +1,14 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+import "internal/v2/risk_calculation_parameters.proto";
+
+message EventRegistrationParameters {
+
+  // Note: this is very much work in progress!
+
+  // repeated TransmissionRiskValueMapping transmissionRiskValueMapping = 1;
+
+  // repeated NormalizedTimeToRiskLevelMapping normalizedTimePerCheckInToRiskLevelMapping = 2;
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/ppdd_els_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/ppdd_els_parameters.proto
new file mode 100644
index 0000000000000000000000000000000000000000..2e88893bd7fe5ae23dc10a3b0a0fd1cae3044e72
--- /dev/null
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/ppdd_els_parameters.proto
@@ -0,0 +1,18 @@
+// This file is auto-generated, DO NOT make any changes here
+syntax = "proto3";
+package de.rki.coronawarnapp.server.protocols.internal.v2;
+
+import "internal/v2/ppdd_ppac_parameters.proto";
+
+message PPDDErrorLogSharingParametersIOS {
+  PPDDErrorLogSharingParametersCommon common = 1;
+  PPDDPrivacyPreservingAccessControlParametersIOS ppac = 2;
+}
+
+message PPDDErrorLogSharingParametersAndroid {
+  PPDDErrorLogSharingParametersCommon common = 1;
+  PPDDPrivacyPreservingAccessControlParametersAndroid ppac = 2;
+}
+
+message PPDDErrorLogSharingParametersCommon {
+}
\ No newline at end of file
diff --git a/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto b/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
index 955db85e121dd20a1b987dcdace78648e884808a..5ce9691d8fd1b6776093b270f2961bc981f7a9cf 100644
--- a/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
+++ b/Server-Protocol-Buffer/src/main/proto/internal/v2/risk_calculation_parameters.proto
@@ -17,7 +17,9 @@ message RiskCalculationParameters {
 
   TransmissionRiskLevelEncoding trlEncoding = 6;
 
-  double transmissionRiskLevelMultiplier = 7;
+  double transmissionRiskLevelMultiplier = 7 [deprecated = true];
+
+  repeated TransmissionRiskValueMapping transmissionRiskValueMapping = 8;
 }
 
 message Range {
@@ -62,4 +64,9 @@ message TransmissionRiskLevelEncoding {
   int32 reportTypeOffsetSelfReport = 4;
   int32 reportTypeOffsetConfirmedClinicalDiagnosis = 5;
   int32 reportTypeOffsetConfirmedTest = 6;
+}
+
+message TransmissionRiskValueMapping {
+  int32 transmissionRiskLevel = 1;
+  double transmissionRiskValue = 2;
 }
\ No newline at end of file