diff --git a/analyzer/resolution.cpp b/analyzer/resolution.cpp
index 4adb4f2..bfcb800 100644
--- a/analyzer/resolution.cpp
+++ b/analyzer/resolution.cpp
@@ -123,6 +123,22 @@
 
 //------------------------------------------------------------------------------
 
+void __calloutBackplane(ServiceData& io_sd, const callout::Priority& i_priority)
+{
+    // TODO: There isn't a device tree object for this. So will need to hardcode
+    //       the location code for now. In the future, we will need a mechanism
+    //       to make this data driven.
+
+    nlohmann::json callout;
+    callout["LocationCode"] = "P0";
+    callout["Priority"]     = i_priority.getUserDataString();
+    callout["Deconfigured"] = false;
+    callout["Guarded"]      = false;
+    io_sd.addCallout(callout);
+}
+
+//------------------------------------------------------------------------------
+
 void HardwareCalloutResolution::resolve(ServiceData& io_sd) const
 {
     // Get the target for the hardware callout.
@@ -210,13 +226,7 @@
 
     // Callout everything else in between.
     // TODO: For P10 (OMI bus and XBUS), the callout is simply the backplane.
-    //       There isn't a devtree object for this, yet. So will need to
-    //       hardcode the location code for now. In the future, we will need a
-    //       mechanism to make this data driven.
-    nlohmann::json bpCallout;
-    bpCallout["LocationCode"] = "P0";
-    bpCallout["Priority"]     = iv_priority.getUserDataString();
-    io_sd.addCallout(bpCallout);
+    __calloutBackplane(io_sd, iv_priority);
 
     // Guard the RX endpoint.
     Guard guard =
@@ -243,36 +253,18 @@
 
 void ClockCalloutResolution::resolve(ServiceData& io_sd) const
 {
-    // Add the callout to the service data.
-    // TODO: For P10, the callout is simply the backplane. There isn't a devtree
-    //       object for this, yet. So will need to hardcode the location code
-    //       for now. In the future, we will need a mechanism to make this data
-    //       driven.
-    nlohmann::json callout;
-    callout["LocationCode"] = "P0";
-    callout["Priority"]     = iv_priority.getUserDataString();
-    io_sd.addCallout(callout);
-
-    // Add the guard info to the service data.
-    // TODO: Still waiting for clock targets to be defined in the device tree.
-    //       For get the processor path for the FFDC.
-    // static const std::map<callout::ClockType, std::string> m = {
-    //     {callout::ClockType::OSC_REF_CLOCK_0, ""},
-    //     {callout::ClockType::OSC_REF_CLOCK_1, ""},
-    // };
-    // auto target = std::string{util::pdbg::getPath(m.at(iv_clockType))};
-    // auto guardPath = util::pdbg::getPhysDevPath(target);
-    // Guard guard = io_sd.addGuard(guardPath, iv_guard);
-    auto target    = __getRootCauseChipTarget(io_sd);
-    auto guardPath = util::pdbg::getPhysDevPath(target);
+    // Callout the clock target.
+    // TODO: For P10, the callout is simply the backplane. Also, there are no
+    //       clock targets in the device tree. So at the moment there is no
+    //       guard support for clock targets.
+    __calloutBackplane(io_sd, iv_priority);
 
     // Add the callout FFDC to the service data.
+    // TODO: Add the target and guard type if guard is ever supported.
     nlohmann::json ffdc;
     ffdc["Callout Type"] = "Clock Callout";
     ffdc["Clock Type"]   = iv_clockType.getString();
-    ffdc["Target"]       = guardPath;
     ffdc["Priority"]     = iv_priority.getRegistryString();
-    ffdc["Guard Type"]   = ""; // TODO: guard.getString();
     io_sd.addCalloutFFDC(ffdc);
 }
 
diff --git a/test/resolution_test.cpp b/test/resolution_test.cpp
index 24a5213..e92ca9d 100644
--- a/test/resolution_test.cpp
+++ b/test/resolution_test.cpp
@@ -97,6 +97,22 @@
 
 //------------------------------------------------------------------------------
 
+void __calloutBackplane(ServiceData& io_sd, const callout::Priority& i_priority)
+{
+    // TODO: There isn't a device tree object for this. So will need to hardcode
+    //       the location code for now. In the future, we will need a mechanism
+    //       to make this data driven.
+
+    nlohmann::json callout;
+    callout["LocationCode"] = "P0";
+    callout["Priority"]     = i_priority.getUserDataString();
+    callout["Deconfigured"] = false;
+    callout["Guarded"]      = false;
+    io_sd.addCallout(callout);
+}
+
+//------------------------------------------------------------------------------
+
 void HardwareCalloutResolution::resolve(ServiceData& io_sd) const
 {
     // Get the location code and entity path for this target.
@@ -180,13 +196,7 @@
 
     // Callout everything else in between.
     // TODO: For P10 (OMI bus and XBUS), the callout is simply the backplane.
-    //       There isn't a devtree object for this, yet. So will need to
-    //       hardcode the location code for now. In the future, we will need a
-    //       mechanism to make this data driven.
-    nlohmann::json bpCallout;
-    bpCallout["LocationCode"] = "P0";
-    bpCallout["Priority"]     = iv_priority.getUserDataString();
-    io_sd.addCallout(bpCallout);
+    __calloutBackplane(io_sd, iv_priority);
 
     // Guard the RX endpoint.
     Guard guard = io_sd.addGuard(rxPath, iv_guard);
@@ -230,35 +240,18 @@
 
 void ClockCalloutResolution::resolve(ServiceData& io_sd) const
 {
-    // Add the callout to the service data.
-    // TODO: For P10, the callout is simply the backplane. There isn't a devtree
-    //       object for this, yet. So will need to hardcode the location code
-    //       for now. In the future, we will need a mechanism to make this data
-    //       driven.
-    nlohmann::json callout;
-    callout["LocationCode"] = "P0";
-    callout["Priority"]     = iv_priority.getUserDataString();
-    io_sd.addCallout(callout);
-
-    // Add the guard info to the service data.
-    // TODO: Still waiting for clock targets to be defined in the device tree.
-    //       For get the processor path for the FFDC.
-    // static const std::map<callout::ClockType, std::string> m = {
-    //     {callout::ClockType::OSC_REF_CLOCK_0, ""},
-    //     {callout::ClockType::OSC_REF_CLOCK_1, ""},
-    // };
-    // auto target = std::string{util::pdbg::getPath(m.at(iv_clockType))};
-    // auto guardPath = util::pdbg::getPhysDevPath(target);
-    // Guard guard = io_sd.addGuard(guardPath, iv_guard);
-    auto guardPath = __getRootCauseChipPath(io_sd);
+    // Callout the clock target.
+    // TODO: For P10, the callout is simply the backplane. Also, there are no
+    //       clock targets in the device tree. So at the moment there is no
+    //       guard support for clock targets.
+    __calloutBackplane(io_sd, iv_priority);
 
     // Add the callout FFDC to the service data.
+    // TODO: Add the target and guard type if guard is ever supported.
     nlohmann::json ffdc;
     ffdc["Callout Type"] = "Clock Callout";
     ffdc["Clock Type"]   = iv_clockType.getString();
-    ffdc["Target"]       = guardPath;
     ffdc["Priority"]     = iv_priority.getRegistryString();
-    ffdc["Guard Type"]   = ""; // TODO: guard.getString();
     io_sd.addCalloutFFDC(ffdc);
 }
 
@@ -319,6 +312,8 @@
         "Priority": "H"
     },
     {
+        "Deconfigured": false,
+        "Guarded": false,
         "LocationCode": "P0",
         "Priority": "L"
     }
@@ -336,6 +331,8 @@
         "Priority": "H"
     },
     {
+        "Deconfigured": false,
+        "Guarded": false,
         "LocationCode": "P0",
         "Priority": "L"
     }
@@ -482,6 +479,8 @@
         "Priority": "A"
     },
     {
+        "Deconfigured": false,
+        "Guarded": false,
         "LocationCode": "P0",
         "Priority": "L"
     }
@@ -534,6 +533,8 @@
     j = sd.getCalloutList();
     s = R"([
     {
+        "Deconfigured": false,
+        "Guarded": false,
         "LocationCode": "P0",
         "Priority": "H"
     }
@@ -546,9 +547,7 @@
     {
         "Callout Type": "Clock Callout",
         "Clock Type": "OSC_REF_CLOCK_1",
-        "Guard Type": "",
-        "Priority": "high",
-        "Target": "/proc0"
+        "Priority": "high"
     }
 ])";
     EXPECT_EQ(s, j.dump(4));
