diff --git a/src/entity_manager/perform_scan.cpp b/src/entity_manager/perform_scan.cpp
index 305363e..6ba362b 100644
--- a/src/entity_manager/perform_scan.cpp
+++ b/src/entity_manager/perform_scan.cpp
@@ -521,6 +521,17 @@
             }
         }
 
+        // If we end up here and the path is empty, we have Probe: "True"
+        // and we dont want that to show up in the associations.
+        if (!path.empty())
+        {
+            auto boardType = record.find("Type")->get<std::string>();
+            auto boardName = record.find("Name")->get<std::string>();
+            std::string boardInventoryPath =
+                em_utils::buildInventorySystemPath(boardName, boardType);
+            _em.topology.addProbePath(boardInventoryPath, path);
+        }
+
         // overwrite ourselves with cleaned up version
         _em.systemConfiguration[recordName] = record;
         _missingConfigurations.erase(recordName);
diff --git a/src/entity_manager/topology.cpp b/src/entity_manager/topology.cpp
index 8f00ff4..bac8654 100644
--- a/src/entity_manager/topology.cpp
+++ b/src/entity_manager/topology.cpp
@@ -15,6 +15,9 @@
               {"Board", "Chassis", "PowerSupply"});
 const AssocName assocPoweredBy = assocPowering.getReverse();
 
+const AssocName assocProbing = AssocName("probing", "probed_by", {}, {});
+const AssocName assocProbedBy = assocProbing.getReverse();
+
 const std::vector<AssocName> supportedAssocs = {
     assocContaining,
     assocContainedBy,
@@ -164,6 +167,18 @@
     {
         fillAssocsForPortId(result, boardPaths, port.second);
     }
+
+    for (const auto& [boardPath, probePaths] : probePaths)
+    {
+        if (std::ranges::contains(boardPaths, boardPath))
+        {
+            for (const auto& path : probePaths)
+            {
+                result[boardPath].insert(
+                    {assocProbing.name, assocProbedBy.name, path});
+            }
+        }
+    }
     return result;
 }
 
@@ -246,4 +261,14 @@
     {
         port.second.erase(boardPath);
     }
+
+    probePaths.erase(boardName);
+}
+
+void Topology::addProbePath(const std::string& boardPath,
+                            const std::string& probePath)
+{
+    lg2::info("Probe path added: {PROBE} probed_by {BOARD} boards config",
+              "PROBE", probePath, "BOARD", boardPath);
+    probePaths[boardPath].emplace(probePath);
 }
diff --git a/src/entity_manager/topology.hpp b/src/entity_manager/topology.hpp
index 164b2bf..d176f76 100644
--- a/src/entity_manager/topology.hpp
+++ b/src/entity_manager/topology.hpp
@@ -47,6 +47,11 @@
                   const nlohmann::json& exposesItem);
     std::unordered_map<std::string, std::set<Association>> getAssocs(
         BoardPathsView boardPaths);
+
+    // Adds an entry to probePaths for object mapper board path
+    // and inventory board path.
+    void addProbePath(const std::string& boardPath,
+                      const std::string& probePath);
     void remove(const std::string& boardName);
 
   private:
@@ -83,4 +88,9 @@
 
     std::unordered_map<Path, BoardType> boardTypes;
     std::unordered_map<BoardName, Path> boardNames;
+
+    // Represents the mapping between inventory object pathes of a
+    // probed configuration and the object paths of DBus interfaces
+    // it was probed on.
+    std::unordered_map<Path, std::set<Path>> probePaths;
 };
