diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index ace6184..9613494 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -30,6 +30,9 @@
 # NS interface implemented by NSPE
 set(NS_INTERFACE_DIR     ${CMAKE_CURRENT_SOURCE_DIR}/../ns_interface)
 
+# nsid_manager
+set(NSID_MGR_DIR         ${NS_INTERFACE_DIR}/ns_client_ext)
+
 #################### TF-M NS interface (header only) ###########################
 
 add_library(tfm_ns_interface INTERFACE)
@@ -47,6 +50,7 @@
 target_include_directories(tfm_ns_interface
     INTERFACE
         ${NS_INTERFACE_DIR}
+        ${NSID_MGR_DIR}
 )
 
 # PSA interface files are generated from a template
@@ -65,7 +69,7 @@
     INTERFACE
         $<$<BOOL:${TFM_PSA_API}>:TFM_PSA_API>
         $<$<STREQUAL:${TEST_PSA_API},IPC>:PSA_API_TEST_IPC>
-        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:TFM_NS_CLIENT_IDENTIFICATION>
+        $<$<BOOL:${TFM_NS_MANAGE_NSID}>:TFM_NS_MANAGE_NSID>
         $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:TFM_MULTI_CORE_TOPOLOGY>
         $<$<BOOL:${TFM_MULTI_CORE_NS_OS}>:TFM_MULTI_CORE_NS_OS>
         $<$<AND:$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>,$<BOOL:${TFM_MULTI_CORE_NS_OS}>>:TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD>
@@ -76,6 +80,11 @@
 
 add_library(tfm_api_ns STATIC)
 
+target_sources(tfm_api_ns
+    PRIVATE
+        $<$<BOOL:${TFM_NS_MANAGE_NSID}>:${NSID_MGR_DIR}/tfm_nsid_manager.c>
+)
+
 if (${TFM_PSA_API})
     target_sources(tfm_api_ns PRIVATE
         $<$<OR:$<BOOL:${FORWARD_PROT_MSG}>,$<BOOL:${TFM_PARTITION_PLATFORM}>>:${INTERFACE_SRC_DIR}/tfm_platform_ipc_api.c>
@@ -269,9 +278,11 @@
 
 target_sources(CMSIS_5_tfm_ns
     INTERFACE
+        ${NSID_MGR_DIR}/tz_shim_layer.c
         ${CMSIS_5_PATH}/RTOS2/RTX/Config/RTX_Config.c
         ${CMSIS_5_PATH}/RTOS2/RTX/Source/rtx_lib.c
         ${CMAKE_CURRENT_SOURCE_DIR}/os_wrapper_cmsis_rtos_v2.c
+        $<$<BOOL:${TFM_NS_MANAGE_NSID}>:${CMAKE_CURRENT_SOURCE_DIR}/tfm_nsid_map_table.c>
 )
 
 target_include_directories(CMSIS_5_tfm_ns
@@ -280,9 +291,15 @@
         ${CMSIS_5_PATH}/RTOS2/Include
         ${CMSIS_5_PATH}/RTOS2/RTX/Include
         ${CMSIS_5_PATH}/RTOS2/RTX/Config
+        $<$<BOOL:${TFM_NS_MANAGE_NSID}>:${CMAKE_CURRENT_SOURCE_DIR}>
 )
 
 target_link_libraries(CMSIS_5_tfm_ns
     INTERFACE
         platform_ns
 )
+
+target_compile_definitions(CMSIS_5_tfm_ns
+    INTERFACE
+        $<$<BOOL:${TFM_NS_MANAGE_NSID}>:TFM_NS_MANAGE_NSID>
+)
diff --git a/app/main_ns.c b/app/main_ns.c
index 2df4ffd..33a70db 100644
--- a/app/main_ns.c
+++ b/app/main_ns.c
@@ -9,6 +9,7 @@
 #include "cmsis_os2.h"
 #include "cmsis_compiler.h"
 #include "tfm_ns_interface.h"
+#include "tfm_nsid_manager.h"
 #if defined(TEST_FRAMEWORK_NS) || defined(TEST_FRAMEWORK_S)
 #include "tfm_integ_test.h"
 #endif
@@ -52,7 +53,8 @@
  || defined(PSA_API_TEST_NS)
 static const osThreadAttr_t thread_attr = {
     .name = "test_thread",
-    .stack_size = 4096U
+    .stack_size = 4096U,
+    .tz_module = ((TZ_ModuleId_t)TFM_DEFAULT_NSID)
 };
 #endif
 
diff --git a/app/os_wrapper_cmsis_rtos_v2.c b/app/os_wrapper_cmsis_rtos_v2.c
old mode 100644
new mode 100755
index 810a244..ec785f2
--- a/app/os_wrapper_cmsis_rtos_v2.c
+++ b/app/os_wrapper_cmsis_rtos_v2.c
@@ -9,16 +9,22 @@
 #include "os_wrapper/mutex.h"
 #include "os_wrapper/semaphore.h"
 
-#include <string.h>
 #include "cmsis_os2.h"
 
+#include "tfm_nsid_manager.h"
+#ifdef TFM_NS_MANAGE_NSID
+#include "tfm_nsid_map_table.h"
+#endif
+
 /* This is an example OS abstraction layer for CMSIS-RTOSv2 */
 
 void *os_wrapper_thread_new(const char *name, int32_t stack_size,
                             os_wrapper_thread_func func, void *arg,
                             uint32_t priority)
 {
-    osThreadAttr_t task_attribs = {.tz_module = 1};
+    osThreadAttr_t task_attribs = {
+        .tz_module = ((TZ_ModuleId_t)TFM_DEFAULT_NSID)
+    };
 
     /* By default, the thread starts as osThreadDetached */
     if (stack_size != OS_WRAPPER_DEFAULT_STACK_SIZE) {
@@ -27,6 +33,10 @@
     task_attribs.name = name;
     task_attribs.priority = (osPriority_t) priority;
 
+#ifdef TFM_NS_MANAGE_NSID
+    task_attribs.tz_module = (TZ_ModuleId_t)nsid_mgr_get_thread_nsid(name);
+#endif
+
     return (void *)osThreadNew(func, arg, &task_attribs);
 }
 
diff --git a/test/suites/ps/non_secure/psa_ps_ns_interface_testsuite.c b/test/suites/ps/non_secure/psa_ps_ns_interface_testsuite.c
index 6aee714..cdb0cd1 100644
--- a/test/suites/ps/non_secure/psa_ps_ns_interface_testsuite.c
+++ b/test/suites/ps/non_secure/psa_ps_ns_interface_testsuite.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2021, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -62,13 +62,13 @@
 static void tfm_ps_test_1013(struct test_result_t *ret);
 static void tfm_ps_test_1014(struct test_result_t *ret);
 static void tfm_ps_test_1015(struct test_result_t *ret);
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
+#ifdef TFM_NS_MANAGE_NSID
 static void tfm_ps_test_1016(struct test_result_t *ret);
 static void tfm_ps_test_1017(struct test_result_t *ret);
 static void tfm_ps_test_1018(struct test_result_t *ret);
 static void tfm_ps_test_1019(struct test_result_t *ret);
 static void tfm_ps_test_1020(struct test_result_t *ret);
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
+#endif /* TFM_NS_MANAGE_NSID */
 static void tfm_ps_test_1021(struct test_result_t *ret);
 static void tfm_ps_test_1022(struct test_result_t *ret);
 static void tfm_ps_test_1023(struct test_result_t *ret);
@@ -106,7 +106,7 @@
      "Remove interface with write once UID"},
     {&tfm_ps_test_1015, "TFM_NS_PS_TEST_1015",
      "Remove interface with invalid UID"},
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
+#ifdef TFM_NS_MANAGE_NSID
     {&tfm_ps_test_1016, "TFM_NS_PS_TEST_1016",
      "Get interface with invalid thread name"},
     {&tfm_ps_test_1017, "TFM_NS_PS_TEST_1017",
@@ -117,7 +117,7 @@
      "Attempt to access UID belonging to another thread"},
     {&tfm_ps_test_1020, "TFM_NS_PS_TEST_1020",
      "Set UID alternately from two threads"},
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
+#endif /* TFM_NS_MANAGE_NSID */
     {&tfm_ps_test_1021, "TFM_NS_PS_TEST_1021",
      "Block compaction after remove"},
     {&tfm_ps_test_1022, "TFM_NS_PS_TEST_1022",
@@ -855,7 +855,7 @@
     ret->val = TEST_PASSED;
 }
 
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
+#ifdef TFM_NS_MANAGE_NSID
 /**
  * \brief Sets UID with a valid thread name.
  */
@@ -1449,7 +1449,7 @@
 
     tfm_ps_run_test("Thread_A", ret, tfm_ps_test_1020_task_7);
 }
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
+#endif /* TFM_NS_MANAGE_NSID */
 
 /**
  * \brief Tests data block compact feature.
