diff --git a/src/amf/amfd/sg.cc b/src/amf/amfd/sg.cc
index 98cccc6..a28da06 100644
--- a/src/amf/amfd/sg.cc
+++ b/src/amf/amfd/sg.cc
@@ -2375,3 +2375,17 @@ bool AVD_SG::is_equal() const {
            (sg_redundancy_model == SA_AMF_N_WAY_ACTIVE_REDUNDANCY_MODEL)) &&
           (equal_ranked_su == true) && (saAmfSGAutoAdjust == SA_TRUE));
 }
+/**
+ * @brief       This function checks if there is any same ranked SU
+ *              which is Unlocked and can be Instantiated
+ *
+ * @param       pointer to su
+ *
+ */
+bool AVD_SG::find_instantiable_same_rank_su(AVD_SU *su) {
+  for (const auto &i_su : list_of_su) {
+    if (i_su->is_instantiable() && (i_su->saAmfSURank == su->saAmfSURank))
+      return true;
+  }
+  return false;
+}
diff --git a/src/amf/amfd/sg.h b/src/amf/amfd/sg.h
index 96187ef..81595a2 100644
--- a/src/amf/amfd/sg.h
+++ b/src/amf/amfd/sg.h
@@ -450,6 +450,7 @@ class AVD_SG {
   uint32_t pref_inservice_sus() const;
   // Checks if si_equal_distribution is configured for the SG.
   bool is_equal() const;
+  bool find_instantiable_same_rank_su(AVD_SU *su);
 
  private:
   // disallow copy and assign, TODO(hafe) add common macro for this
diff --git a/src/amf/amfd/sgproc.cc b/src/amf/amfd/sgproc.cc
index 0dbaa59..ea7bcf4 100644
--- a/src/amf/amfd/sgproc.cc
+++ b/src/amf/amfd/sgproc.cc
@@ -1924,20 +1924,6 @@ uint32_t in_serv_su(AVD_SG *sg) {
   TRACE_LEAVE2("%u", in_serv);
   return in_serv;
 }
-/**
- * @brief       This function checks if there is any same ranked SU
- *              which is Unlocked and can be Instantiated
- *
- * @param       pointer to su
- *
- */
-uint32_t find_instantiable_same_rank_su(AVD_SU *su) {
-  for (const auto &i_su : su->sg_of_su->list_of_su) {
-    if (i_su->is_instantiable() && (i_su->saAmfSURank == su->saAmfSURank))
-      return true;
-  }
-  return false;
-}
 /*****************************************************************************
  * Function: avd_sg_app_su_inst_func
  *
@@ -2027,7 +2013,7 @@ uint32_t avd_sg_app_su_inst_func(AVD_CL_CB *cb, AVD_SG *sg) {
           /* If SU is in Locked State, find if there is any other SU in the same rank
            * which can provide Service(Unlocked SU)
            */
-          if(i_su->saAmfSUAdminState == SA_AMF_ADMIN_LOCKED) {
+          if(i_su->is_instantiable() == false) {
             if (find_instantiable_same_rank_su(i_su))
               continue;
           }
