diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 9bc3327..7ac9e93 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -182,7 +182,7 @@
                 const char* output = PyBytes_AS_STRING(pBytes);
                 try
                 {
-                    orderedJSON json = nlohmann::json::parse(output);
+                    orderedJSON json = orderedJSON::parse(output);
                     return prettyJSON(json);
                 }
                 catch (std::exception& e)
diff --git a/extensions/openpower-pels/user_data_json.cpp b/extensions/openpower-pels/user_data_json.cpp
index 4e15284..791c39c 100644
--- a/extensions/openpower-pels/user_data_json.cpp
+++ b/extensions/openpower-pels/user_data_json.cpp
@@ -128,7 +128,7 @@
         cborData.resize(data.size() - sizeof(pad) - pad);
     }
 
-    orderedJSON json = nlohmann::json::from_cbor(cborData);
+    orderedJSON json = orderedJSON::from_cbor(cborData);
 
     return prettyJSON(componentID, subType, version, json);
 }
@@ -207,7 +207,7 @@
         {
             std::string jsonString{data.begin(), data.begin() + data.size()};
 
-            orderedJSON json = nlohmann::json::parse(jsonString);
+            orderedJSON json = orderedJSON::parse(jsonString);
 
             return prettyJSON(componentID, subType, version, json);
         }
@@ -309,7 +309,7 @@
                 const char* output = PyBytes_AS_STRING(pBytes);
                 try
                 {
-                    orderedJSON json = nlohmann::json::parse(output);
+                    orderedJSON json = orderedJSON::parse(output);
                     return prettyJSON(componentID, subType, version, json);
                 }
                 catch (std::exception& e)
