diff --git a/vars/startComponentsLogs.groovy b/vars/startComponentsLogs.groovy
index a485be4..f62d70f 100644
--- a/vars/startComponentsLogs.groovy
+++ b/vars/startComponentsLogs.groovy
@@ -1,13 +1,47 @@
+#!/usr/bin/env groovy
+// -----------------------------------------------------------------------
+// Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// -----------------------------------------------------------------------
+// Intent:
 // check if kail is installed, if not installs it
 // and then uses it to collect logs on specified containers
-
+//
 // appsToLog is a list of kubernetes labels used by kail to get the logs
 // the generated log file is named with the string after =
 // for example app=bbsim will generate a file called bbsim.log
-
+//
 // to archive the logs use: archiveArtifacts artifacts: '${logsDir}/*.log'
+// -----------------------------------------------------------------------
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'vars/startComponentLogs.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def call(Map config) {
 
+    String iam = getIam('main')
+    println("** ${iam}: ENTER")
+
     def tagPrefix = "jenkins"
 
     def defaultConfig = [
@@ -32,14 +66,9 @@
     def cfg = defaultConfig + config
 
     // check if kail is installed and if not installs it
-    sh """
-    if ! command -v kail &> /dev/null
-    then
-        bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/bin"
-    fi
-    """
+    sh("""make -C "$WORKSPACE/voltha-system-tests" KAIL_PATH="$WORKSPACE/bin" kail""")
 
-    // fi the logsDir does not exists dir() will create it
+    // if logsDir does not exists dir() will create it
     dir(cfg.logsDir) {
         for(int i = 0;i<cfg.appsToLog.size();i++) {
             def label = cfg.appsToLog[i]
@@ -51,4 +80,9 @@
             """
         }
     }
-}
\ No newline at end of file
+
+    println("** ${iam}: LEAVE")
+    return
+}
+
+// [EOF]
