diff --git a/jenkins/ci.jpl b/jenkins/ci.jpl
index 21c5c9a..f2e897d 100644
--- a/jenkins/ci.jpl
+++ b/jenkins/ci.jpl
@@ -91,14 +91,8 @@
 @NonCPS
 def generateLavaParam(build_params) {
   def params = []
-  if (build_params["TFM_PLATFORM"] == "arm/musca_b1/sse_200" && \
-      build_params["OTP"] == "ENABLED") {
-    params += string(name: "TARGET_PLATFORM", value: "MUSCA_B1_OTP")
-  }
-  else {
-    params += string(name: "TARGET_PLATFORM", \
-                     value: mapPlatform[build_params["TFM_PLATFORM"]])
-  }
+  params += string(name: "TARGET_PLATFORM", \
+                   value: mapPlatform[build_params["TFM_PLATFORM"]])
   params += string(name: "COMPILER", \
                    value: build_params["COMPILER"].split('_')[0])
   params += string(name: "PSA_API_SUITE", \
@@ -245,15 +239,6 @@
                      env.JOB_NAME.equals("tf-m-build-and-test")) {
               print("LAVA is not needed for ${build_url}")
             }
-            // Only submit LAVA test for a specified OTP enabled config in nightly or release job
-            else if (params_collection["OTP"] == "ENABLED" && \
-                     params_collection["CONFIG_NAME"] != "MUSCA_B1_GCC_PSA_3_REG_Debug_OTP_BL2_NS") {
-              print("LAVA is not needed for ${build_url}")
-            }
-            else if (params_collection["CONFIG_NAME"] == "MUSCA_B1_GCC_PSA_3_REG_Debug_OTP_BL2_NS" && \
-                     !(env.JOB_NAME.equals("tf-m-nightly") || env.JOB_NAME.equals("tf-m-release"))) {
-              print("LAVA is not needed for ${build_url}")
-            }
             // Submit LAVA tests
             else {
               submit_lava_tests(config, results, build_res, params, params_collection)
@@ -359,19 +344,12 @@
                         result.value[2]['ISOLATION_LEVEL'], \
                         result.value[2]['TEST_REGRESSION'], \
                         result.value[2]['TEST_PSA_API'], \
-                        result.value[2]['PROFILE'], \
-                        result.value[2]['PARTITION_PS'], \
-                        result.value[2]['OTP']])
+                        result.value[2]['PROFILE']])
     }
   }
   resultsParam.each { result ->
-    if (result[2] == 'arm/musca_b1/sse_200') {
-      if (result[13] != 'off') {
-        result[2] = 'arm/musca_b1/sse_200_OTP'
-      }
-    }
     result[3] = result[3].split('_')[0]
-    build_params = result[7..12]
+    build_params = result[7..11]
     configName = ""
     for (map_cfg in mapConfigs) {
       if (build_params[0..4] == map_cfg[0..4]) {
@@ -393,7 +371,7 @@
   resultsParam.each { result ->
     current_row = result[2..4]
     cfgs.each {cfg ->
-      if (cfg == result[14]) {
+      if (cfg == result[12]) {
         current_row.add(cfg)
         current_row.add(result[1])
       }
