diff --git a/redfish-core/lib/cpudimm.hpp b/redfish-core/lib/cpudimm.hpp
index ca2f164..ada4332 100644
--- a/redfish-core/lib/cpudimm.hpp
+++ b/redfish-core/lib/cpudimm.hpp
@@ -216,32 +216,28 @@
             aResp->res.jsonValue["Name"] = "DIMM Slot";
 
             const auto memorySizeProperty = properties.find("MemorySizeInKB");
-            if (memorySizeProperty == properties.end())
+            if (memorySizeProperty != properties.end())
             {
-                // Important property not in result
-                messages::internalError(aResp->res);
+                const uint32_t *memorySize =
+                    sdbusplus::message::variant_ns::get_if<uint32_t>(
+                        &memorySizeProperty->second);
+                if (memorySize == nullptr)
+                {
+                    // Important property not in desired type
+                    messages::internalError(aResp->res);
 
-                return;
+                    return;
+                }
+                if (*memorySize == 0)
+                {
+                    // Slot is not populated, set status end return
+                    aResp->res.jsonValue["Status"]["State"] = "Absent";
+                    aResp->res.jsonValue["Status"]["Health"] = "OK";
+                    // HTTP Code will be set up automatically, just return
+                    return;
+                }
+                aResp->res.jsonValue["CapacityMiB"] = (*memorySize >> 10);
             }
-            const uint32_t *memorySize =
-                sdbusplus::message::variant_ns::get_if<uint32_t>(
-                    &memorySizeProperty->second);
-            if (memorySize == nullptr)
-            {
-                // Important property not in desired type
-                messages::internalError(aResp->res);
-
-                return;
-            }
-            if (*memorySize == 0)
-            {
-                // Slot is not populated, set status end return
-                aResp->res.jsonValue["Status"]["State"] = "Absent";
-                aResp->res.jsonValue["Status"]["Health"] = "OK";
-                // HTTP Code will be set up automatically, just return
-                return;
-            }
-            aResp->res.jsonValue["CapacityMiB"] = (*memorySize >> 10);
             aResp->res.jsonValue["Status"]["State"] = "Enabled";
             aResp->res.jsonValue["Status"]["Health"] = "OK";
 
