diff --git a/jenkins/ci.jpl b/jenkins/ci.jpl
index 25e6eb6..4d971bc 100644
--- a/jenkins/ci.jpl
+++ b/jenkins/ci.jpl
@@ -1,6 +1,6 @@
 #!/usr/bin/env groovy
 //-------------------------------------------------------------------------------
-// Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+// Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
 //
 // SPDX-License-Identifier: BSD-3-Clause
 //
@@ -92,8 +92,14 @@
 @NonCPS
 def generateLavaParam(build_params) {
   def params = []
-  params += string(name: "TARGET_PLATFORM", \
-                   value: mapPlatform[build_params["TFM_PLATFORM"]])
+  if (build_params["TFM_PLATFORM"] == "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: "COMPILER", \
                    value: mapCompiler[build_params["TOOLCHAIN_FILE"]])
   params += string(name: "PSA_API_SUITE", \
@@ -169,13 +175,21 @@
       error("Build failed at ${build_url}")
     }
     else if (params_collection["NS"] == "False" || \
-             params_collection["OTP"] == "ENABLED" || \
              (params_collection["TFM_PLATFORM"].contains("musca_b1") && \
              env.JOB_NAME.equals("tf-m-build-and-test")) || \
              (params_collection["PROFILE"] == "profile_medium" && \
               params_collection["PARTITION_PS"] == "OFF")) {
       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_ARMCLANG_PSA_3_REG_Debug_OTP_BL2_NS") {
+      print("LAVA is not needed for ${build_url}")
+    }
+    else if (params_collection["CONFIG_NAME"] == "MUSCA_B1_ARMCLANG_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}")
+    }
     else {
       print("Doing LAVA stuff for ${build_url}")
       params += generateLavaParam(params_collection)
diff --git a/lava_helper/jinja2_templates/musca_b1_otp.jinja2 b/lava_helper/jinja2_templates/musca_b1_otp.jinja2
new file mode 100644
index 0000000..54014da
--- /dev/null
+++ b/lava_helper/jinja2_templates/musca_b1_otp.jinja2
@@ -0,0 +1,47 @@
+{#------------------------------------------------------------------------------
+# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-----------------------------------------------------------------------------#}
+{% extends 'jinja2_templates/base.jinja2' %}
+{% block actions %}
+actions:
+    - deploy:
+        timeout:
+          minutes: 12
+        to: musca
+        images:
+          test_binary:
+            url: {{ firmware_url }}
+
+    - boot:
+        method: musca
+
+    - test:
+        monitors:
+        {%- for monitor in test.monitors %}
+        - name: "{{monitor.name}}"
+          start: "{{monitor.start}}"
+          end: "{{monitor.end}}"
+          pattern: "{{monitor.pattern}}"
+          fixupdict:
+              '{{monitor.fixup.pass}}': pass
+              '{{monitor.fixup.fail}}': fail
+        {% endfor %}
+
+tags:
+    - otp
+{% endblock %}
+
+{% block metadata %}
+metadata:
+  build_no: {{ build_no }}
+  compiler: {{ compiler }}
+  build_type: {{ build_type }}
+  boot_type: {{ boot_type }}
+  name: {{ name }}
+  platform: {{ platform }}
+  build_name: {{ build_name }}
+  build_job_url: {{ build_job_url }}
+{% endblock %}
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index 1373c21..c77ab37 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -8,7 +8,7 @@
 
 __copyright__ = """
 /*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2021, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -2820,6 +2820,78 @@
     },
 }
 
+# Musca-B1 with BL2 bootloader and OTP enabled
+# unified hex file comprising of both bl2.bin and tfm_s_ns_signed.bin
+# srec_cat bin/bl2.bin -Binary -offset 0xA000000 bin/tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
+musca_b1_otp_bl2 = {
+    "templ": "musca_b1_otp.jinja2",
+    "job_name": "musca_b1_opt_bl2",
+    "device_type": "musca-b",
+    "job_timeout": 24,
+    "action_timeout": 12,
+    "monitor_timeout": 10,
+    "poweroff_timeout": 40,
+    "platforms": {"MUSCA_B1_OTP": ""},
+    "compilers": ["ARMCLANG"],
+    "build_types": ["Debug"],
+    "boot_types": ["BL2"],
+    "tests": {
+        "RegressionIPCTfmLevel3": {
+            "binaries": {
+                "firmware": "tfm.hex",
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Secure test suites summary',
+                    'end': 'End of Secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage_"
+                         "s_interface_tests_tfm_sst_test_2xxx_"),
+                        "sst_reliability_tests_tfm_sst_test_3xxx_",
+                        "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
+                        ("psa_internal_trusted_storage_"
+                         "s_interface_tests_tfm_its_test_2xxx_"),
+                        "its_reliability_tests_tfm_its_test_3xxx_",
+                        ("audit_"
+                         "logging_secure_interface_test_tfm_audit_test_1xxx_"),
+                        "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
+                        ("initial_attestation_service_"
+                         "secure_interface_tests_tfm_attest_test_1xxx_"),
+                    ]
+                },
+                {
+                    'name': 'Non_Secure_Test_Suites_Summary',
+                    'start': 'Non-secure test suites summary',
+                    'end': r'End of Non-secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage"
+                         "_ns_interface_tests_tfm_sst_test_1xxx_"),
+                        ("psa_internal_trusted_storage"
+                         "_ns_interface_tests_tfm_its_test_1xxx_"),
+                        ("auditlog_"
+                         "non_secure_interface_test_tfm_audit_test_1xxx_"),
+                        ("crypto_"
+                         "non_secure_interface_test_tfm_crypto_test_6xxx_"),
+                        ("initial_attestation_service_"
+                         "non_secure_interface_tests_tfm_attest_test_2xxx_"),
+                        "core_non_secure_positive_tests_tfm_core_test_1xxx_"
+                    ]
+                }
+            ]  # Monitors
+        },
+    },
+}
+
+
 # All configurations should be mapped here
 lava_gen_config_map = {
     "mps2_an521_bl2": tfm_mps2_sse_200,
@@ -2829,6 +2901,7 @@
     "fvp_mps2_an519_nobl2": fvp_mps2_an519_nobl2,
     "qemu_mps2_bl2": qemu_mps2_bl2,
     "musca_b1": musca_b1_bl2,
+    "musca_b1_otp": musca_b1_otp_bl2,
 }
 
 lavagen_config_sort_order = [
