diff --git a/lib/icinga/clusterevents-check.cpp b/lib/icinga/clusterevents-check.cpp
index e294d224b..3c8261446 100644
--- a/lib/icinga/clusterevents-check.cpp
+++ b/lib/icinga/clusterevents-check.cpp
@@ -158,24 +158,15 @@ void ClusterEvents::ExecuteCheckFromQueue(const MessageOrigin::Ptr& origin, cons
 					<< pr.ExitStatus << ", output: " << pr.Output;
 			}
 
-			String output = pr.Output.Trim();
-
-			std::pair<String, String> co = PluginUtility::ParseCheckOutput(output);
-			CheckResult::Ptr cr = new CheckResult();
-			cr->SetCommand(commandLine);
-			cr->SetOutput(co.first);
-			cr->SetPerformanceData(PluginUtility::SplitPerfdata(co.second));
-			cr->SetState(PluginUtility::ExitStatusToState(pr.ExitStatus));
-			cr->SetExitStatus(pr.ExitStatus);
-			cr->SetExecutionStart(pr.ExecutionStart);
-			cr->SetExecutionEnd(pr.ExecutionEnd);
-
 			Dictionary::Ptr executedParams = new Dictionary();
 			executedParams->Set("execution", params->Get("source"));
 			executedParams->Set("host", params->Get("host"));
 			if (params->Contains("service"))
 				executedParams->Set("service", params->Get("service"));
-			executedParams->Set("check_result", Serialize(cr));
+			executedParams->Set("exit", pr.ExitStatus);
+			executedParams->Set("output", pr.Output);
+			executedParams->Set("start", pr.ExecutionStart);
+			executedParams->Set("end", pr.ExecutionEnd);
 
 			if (origin->IsLocal()) {
 				ClusterEvents::ExecutedCommandAPIHandler(origin, executedParams);
@@ -216,7 +207,10 @@ void ClusterEvents::ExecuteCheckFromQueue(const MessageOrigin::Ptr& origin, cons
 			executedParams->Set("host", params->Get("host"));
 			if (params->Contains("service"))
 				executedParams->Set("service", params->Get("service"));
-			executedParams->Set("check_result", Serialize(cr));
+			double now = Utility::GetTime();
+			executedParams->Set("error", cr->GetOutput());
+			executedParams->Set("start", now);
+			executedParams->Set("end", now);
 
 			if (origin->IsLocal()) {
 				ClusterEvents::ExecutedCommandAPIHandler(origin, executedParams);
diff --git a/lib/icinga/clusterevents.cpp b/lib/icinga/clusterevents.cpp
index 83b14d5d4..8bca1f1b4 100644
--- a/lib/icinga/clusterevents.cpp
+++ b/lib/icinga/clusterevents.cpp
@@ -1010,14 +1010,21 @@ Value ClusterEvents::ExecutedCommandAPIHandler(const MessageOrigin::Ptr& origin,
 		return Empty;
 	}
 
-	if (!params->Contains("check_result")) {
-		Log(LogNotice, "ClusterEvents")
-				<< "Discarding 'update executions API handler' message for checkable '" << checkable->GetName()
-				<< "' from '" << origin->FromClient->GetIdentity() << "': No check result available.";
-		return Empty;
-	}
+	if (params->Contains("error"))
+		execution->Set("error", params->Get("error"));
+
+	if (params->Contains("exit"))
+		execution->Set("exit", params->Get("exit"));
+
+	if (params->Contains("output"))
+		execution->Set("output", params->Get("output"));
+
+	if (params->Contains("start"))
+		execution->Set("start", params->Get("start"));
+
+	if (params->Contains("end"))
+		execution->Set("end", params->Get("end"));
 
-	execution->Set("check_result", params->Get("check_result"));
 	execution->Set("pending", false);
 
 	/* Broadcast the update */