diff --git a/src/third_party/starboard/rdk/shared/system/system_get_property.cc b/src/third_party/starboard/rdk/shared/system/system_get_property.cc
index 9fad8ff..2aec496 100644
--- a/src/third_party/starboard/rdk/shared/system/system_get_property.cc
+++ b/src/third_party/starboard/rdk/shared/system/system_get_property.cc
@@ -118,14 +118,14 @@
 }
 
 bool GetModelName(char* out_value, int value_length) {
-  const char* env = std::getenv("COBALT_MODEL_NAME");
-  if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
-    return true;
-
   std::string prop;
   if (SystemProperties::GetModelName(prop))
     return CopyStringAndTestIfSuccess(out_value, value_length, prop.c_str());
 
+  const char* env = std::getenv("COBALT_MODEL_NAME");
+  if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
+    return true;
+
   const char kPrefixStr[] = "MODEL_NUM=";
   const size_t kPrefixStrLength = SB_ARRAY_SIZE(kPrefixStr) - 1;
   if (TryReadFromPropertiesFile(kPrefixStr, kPrefixStrLength, out_value, value_length)) {
@@ -139,16 +139,16 @@
 }
 
 bool GetOperatorName(char* out_value, int value_length) {
-  const char* env = std::getenv("COBALT_OPERATOR_NAME");
-  if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
-    return true;
-  
   std::string prop;
   if (SystemProperties::GetBrandName(prop)) {
     return CopyStringAndTestIfSuccess(
       out_value, value_length, prop.c_str());
   }
 
+  const char* env = std::getenv("COBALT_OPERATOR_NAME");
+  if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
+    return true;
+
   FILE* partnerId = fopen("/opt/www/authService/partnerId3.dat", "r");
   if (partnerId) {
     bool result = false;
@@ -170,16 +170,16 @@
 }
 
 bool GetManufacturerName(char* out_value, int value_length) {
-    const char* env = std::getenv("COBALT_MANUFACTURE_NAME");
-    if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
-        return true;
-
     std::string prop;
     if (SystemProperties::GetIntegratorName(prop)) {
       return CopyStringAndTestIfSuccess(
         out_value, value_length, prop.c_str());
     }
 
+    const char* env = std::getenv("COBALT_MANUFACTURE_NAME");
+    if (env && CopyStringAndTestIfSuccess(out_value, value_length, env))
+        return true;
+
     const char kPrefixStr[] = "MANUFACTURE=";
     const size_t kPrefixStrLength = SB_ARRAY_SIZE(kPrefixStr) - 1;
     if (TryReadFromPropertiesFile(kPrefixStr, kPrefixStrLength, out_value, value_length))
