diff --git a/src/logger/privacy_encoder.cc b/src/logger/privacy_encoder.cc
index 603e901..3374e7f 100644
--- a/src/logger/privacy_encoder.cc
+++ b/src/logger/privacy_encoder.cc
@@ -93,6 +93,11 @@
                                        observation, metric_def, report_def));
       break;
     }
+    case ReportDefinition::FLEETWIDE_MEANS: {
+      CB_ASSIGN_OR_RETURN(
+          indices, PrepareIndexVectorForFleetwideMeansReport(observation, metric_def, report_def));
+      break;
+    }
 
     default:
       return util::Status(util::UNIMPLEMENTED, "this is not yet implemented");
diff --git a/src/logger/privacy_encoder_test.cc b/src/logger/privacy_encoder_test.cc
index 1279111..129fdf8 100644
--- a/src/logger/privacy_encoder_test.cc
+++ b/src/logger/privacy_encoder_test.cc
@@ -96,15 +96,44 @@
   EXPECT_EQ(status_or.status().error_code(), util::INVALID_ARGUMENT);
 }
 
-TEST_F(PrivacyEncoderTest, MakePrivateObservationsUnimplementedReportType) {
+TEST_F(PrivacyEncoderTest, MakePrivateObservationsImplemented) {
+  std::vector<ReportDefinition::ReportType> implemented_report_types = {
+      ReportDefinition::UNIQUE_DEVICE_COUNTS,
+      ReportDefinition::FLEETWIDE_OCCURRENCE_COUNTS,
+      ReportDefinition::HOURLY_VALUE_NUMERIC_STATS,
+      ReportDefinition::UNIQUE_DEVICE_NUMERIC_STATS,
+      ReportDefinition::FLEETWIDE_MEANS,
+      ReportDefinition::HOURLY_VALUE_HISTOGRAMS,
+      ReportDefinition::UNIQUE_DEVICE_HISTOGRAMS};
+
   MetricDefinition metric_def;
   ReportDefinition report_def;
   report_def.set_privacy_level(ReportDefinition::LOW_PRIVACY);
-  report_def.set_report_type(ReportDefinition::CUSTOM_RAW_DUMP);
   Observation observation;
-  auto status_or = MakePrivateObservations(&observation, metric_def, report_def);
-  ASSERT_FALSE(status_or.ok());
-  EXPECT_EQ(status_or.status().error_code(), util::UNIMPLEMENTED);
+
+  for (const ReportDefinition::ReportType report_type : implemented_report_types) {
+    report_def.set_report_type(report_type);
+    EXPECT_NE(MakePrivateObservations(&observation, metric_def, report_def).status().error_code(),
+              util::UNIMPLEMENTED);
+  }
+}
+
+// MakePrivateObservations() is not implemented yet for these report types. Move report types to the
+// MakePrivateObservationsImplemented test as they are implemented.
+TEST_F(PrivacyEncoderTest, MakePrivateObservationsUnimplemented) {
+  std::vector<ReportDefinition::ReportType> unimplemented_report_types = {
+      ReportDefinition::FLEETWIDE_HISTOGRAMS, ReportDefinition::STRING_COUNTS};
+
+  MetricDefinition metric_def;
+  ReportDefinition report_def;
+  report_def.set_privacy_level(ReportDefinition::LOW_PRIVACY);
+
+  Observation observation;
+  for (const ReportDefinition::ReportType report_type : unimplemented_report_types) {
+    report_def.set_report_type(report_type);
+    EXPECT_EQ(MakePrivateObservations(&observation, metric_def, report_def).status().error_code(),
+              util::UNIMPLEMENTED);
+  }
 }
 
 TEST_F(PrivacyEncoderTest, MakePrivateObservationsNullObservation) {
