diff --git a/web/html/src/manager/audit/subscription-matching/subscription-matching-messages.tsx b/web/html/src/manager/audit/subscription-matching/subscription-matching-messages.tsx
index f886dcc5b51..27ad02fc2c1 100644
--- a/web/html/src/manager/audit/subscription-matching/subscription-matching-messages.tsx
+++ b/web/html/src/manager/audit/subscription-matching/subscription-matching-messages.tsx
@@ -15,58 +15,68 @@ type Props = {
 
 class Messages extends React.Component<Props> {
   buildRows = (rawMessages, systems, subscriptions) => {
+    Loggerhead.debug("Messages: " + JSON.stringify(rawMessages));
+    Loggerhead.debug("Systems: " + JSON.stringify(systems));
+    Loggerhead.debug("Subscriptions: " + JSON.stringify(subscriptions));
     return rawMessages.map(function (rawMessage, index) {
       const data = rawMessage["data"];
-      var message: string;
-      var additionalInformation: any;
-      switch (rawMessage["type"]) {
-        case "unknown_part_number":
-          message = t("Unsupported part number detected");
-          additionalInformation = data["part_number"];
-          break;
-        case "physical_guest":
-          message = t("Physical system is reported as virtual guest, please check hardware data");
-          additionalInformation = systems[data["id"]].name;
-          break;
-        case "guest_with_unknown_host":
-          message = t("Virtual guest has unknown host, assuming it is a physical system");
-          additionalInformation = systems[data["id"]].name;
-          break;
-        case "unknown_cpu_count":
-          message = t("System has an unknown number of sockets, assuming 16");
-          additionalInformation = systems[data["id"]].name;
-          break;
-        case "hb_merge_subscriptions":
-          message = t("Two subscriptions with the same part number are in a bundle - merged into a single one");
-          additionalInformation = subscriptions[data["new_subscription_id"]].partNumber;
-          break;
-        case "merge_subscriptions":
-          message = t(
-            "Two subscriptions with the same part number (and other properties) have been merged together - start/end dates might be indicative"
-          );
-          additionalInformation = data["part_number"];
-          break;
-        case "adjust_pinned_match":
-          message = t("Pinned match adjusted due to merged subscriptions");
-          additionalInformation =
-            t("Subscription IDs") +
-            ": " +
-            data["new_subscription_id"] +
-            ", " +
-            data["old_subscription_id"] +
-            ", " +
-            t("System") +
-            ": " +
-            systems[data["system_id"]].name;
-          break;
-        case "no_products_associated":
-          message = t("Subscription with unsupported part number and no associated product has been ignored.");
-          additionalInformation = data["part_number"];
-          break;
-        default:
-          message = rawMessage["type"]; // we do not know the shape of the data, it could even be a complex nested object (bsc#1125600)
+      if (systems[data["id"]]) {
+        var message: string;
+        var additionalInformation: any;
+        switch (rawMessage["type"]) {
+          case "unknown_part_number":
+            message = t("Unsupported part number detected");
+            additionalInformation = data["part_number"];
+            break;
+          case "physical_guest":
+            message = t("Physical system is reported as virtual guest, please check hardware data");
+            additionalInformation = systems[data["id"]].name;
+            break;
+          case "guest_with_unknown_host":
+            message = t("Virtual guest has unknown host, assuming it is a physical system");
+            additionalInformation = systems[data["id"]].name;
+            break;
+          case "unknown_cpu_count":
+            message = t("System has an unknown number of sockets, assuming 16");
+            additionalInformation = systems[data["id"]].name;
+            break;
+          case "hb_merge_subscriptions":
+            message = t("Two subscriptions with the same part number are in a bundle - merged into a single one");
+            additionalInformation = subscriptions[data["new_subscription_id"]].partNumber;
+            break;
+          case "merge_subscriptions":
+            message = t(
+              "Two subscriptions with the same part number (and other properties) have been merged together - start/end dates might be indicative"
+            );
+            additionalInformation = data["part_number"];
+            break;
+          case "adjust_pinned_match":
+            message = t("Pinned match adjusted due to merged subscriptions");
+            additionalInformation =
+              t("Subscription IDs") +
+              ": " +
+              data["new_subscription_id"] +
+              ", " +
+              data["old_subscription_id"] +
+              ", " +
+              t("System") +
+              ": " +
+              systems[data["system_id"]].name;
+            break;
+          case "no_products_associated":
+            message = t("Subscription with unsupported part number and no associated product has been ignored.");
+            additionalInformation = data["part_number"];
+            break;
+          default:
+            message = rawMessage["type"]; // we do not know the shape of the data, it could even be a complex nested object (bsc#1125600)
 
-          additionalInformation = JSON.stringify(data);
+            additionalInformation = JSON.stringify(data);
+        }
+      } else {
+        Loggerhead.debug(
+          "System: " + data["id"] + " not found in server data. Skipping ..." + JSON.stringify(rawMessage)
+        );
+        return undefined;
       }
       return {
         id: index,
@@ -83,7 +93,9 @@ class Messages extends React.Component<Props> {
         <div>
           <p>{t("Please review warning and information messages below.")}</p>
           <Table
-            data={this.buildRows(this.props.messages, this.props.systems, this.props.subscriptions)}
+            data={this.buildRows(this.props.messages, this.props.systems, this.props.subscriptions).filter(
+              (row) => row
+            )}
             identifier={(row) => row.id}
             initialSortColumnKey="message"
           >
