diff --git a/src/command.cpp b/src/command.cpp
index e400e0ef95be0eebaa6eff52d5f22115af056a2b..84ace413e748245a7089605dce1a8e1b409d3e94 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -79,6 +79,8 @@ Command Command::fromString(const QString& source)
             return parseUpdateExperimentState(rootobj);
         case Action::setTargetState:
             return parseSetTargetState(rootobj);
+        case Action::fillHistogram:
+            return parseFillHistogram(rootobj);
         case Action::sendHistogramUpdate:
         case Action::moveTargetCloser:
         case Action::moveTargetFarther:
@@ -93,7 +95,6 @@ Command Command::fromString(const QString& source)
         // Not yet implemented:
         case Action::queryServerInformation:
         case Action::updateHistogram:
-        case Action::fillHistogram:
             return Command();
         default:
             return Command();
@@ -228,6 +229,20 @@ Protocol::Command Protocol::Command::parseSetTargetState(const QJsonObject& inpu
            );
 }
 
+Protocol::Command Protocol::Command::parseFillHistogram(const QJsonObject& input)
+{
+    if (!input.keys().contains(QStringLiteral("adcchannels")) || !input.value(QStringLiteral("adcchannels")).isString()) {
+        logError(QStringLiteral("fillHistogram command does not contain adcchannels."));
+        return Command();
+    }
+
+    return Command(
+               Action::fillHistogram,
+               Arguments{std::make_pair(QStringLiteral("adcchannels"), input.value(QStringLiteral("adcchannels")).toString())},
+               input.value(QStringLiteral("token")).toString()
+           );
+}
+
 QString Command::toString() const
 {
     if (action == Action::invalid)
diff --git a/src/command.h b/src/command.h
index d6e9586d703d998d15ba6eaad457e9e5ca008529..e83a26606283ace8c0752585958da8df85c24d7a 100644
--- a/src/command.h
+++ b/src/command.h
@@ -74,6 +74,7 @@ private:
     static Command parseError(const QJsonObject& input);
     static Command parseUpdateExperimentState(const QJsonObject& input);
     static Command parseSetTargetState(const QJsonObject& input);
+    static Command parseFillHistogram(const QJsonObject& input);
 
     static QString getActionString(const Action action);
 };