diff --git a/.groovylintrc.json b/.groovylintrc.json
new file mode 100644
index 0000000..3392108
--- /dev/null
+++ b/.groovylintrc.json
@@ -0,0 +1,46 @@
+{
+  "extends": "all",
+  "rules": {
+    "basic.DeadCode": "error",
+    "convention.CompileStatic": {
+      "severity": "info"
+    },
+    "convention.FieldTypeRequired": "info",
+    "convention.IfStatementCouldBeTernary": "info",
+    "convention.NoDef": "info",
+    "convention.TrailingComma": "off",
+    "convention.VariableTypeRequired": "info",
+    "dry.DuplicateListLiteral": "info",
+    "dry.DuplicateMapLiteral": "warning",
+    "dry.DuplicateNumberLiteral": {
+      "ignoreNumbers": [0, 1, 2, 3, -1],
+      "severity": "info"
+    },
+    "dry.DuplicateStringLiteral": "info",
+    "exceptions.ThrowException": "info",
+    "exceptions.ThrowNullPointerException": "info",
+    "exceptions.ThrowRuntimeException": "info",
+    "exceptions.ThrowThrowable": "info",
+    "formatting.BracesForClass": "info",
+    "formatting.BracesForForLoop": "info",
+    "formatting.BracesForIfElse": "off",
+    "formatting.BracesForMethod": "off",
+    "formatting.BracesForTryCatchFinally": "off",
+    "formatting.Indentation": {
+      "spacesPerIndentLevel": 4,
+      "severity": "info"
+    },
+    "formatting.SpaceAroundMapEntryColon": "off",
+    "groovyism.ExplicitCallToEqualsMethod": "info",
+    "logging.Println": "off",
+    "unused.UnusedArray": "error",
+    "unused.UnusedObject": "error",
+    "unused.UnusedPrivateField": "error",
+    "unused.UnusedPrivateMethod": "error",
+    "unused.UnusedPrivateMethodParameter": "error",
+    "unused.UnusedVariable": "error",
+    "unnecessary.UnnecessaryReturnKeyword": "off"
+  },
+  "see-also" : {
+      ".groovylintrc-recommended.json" : "https://github.com/nvuillam/npm-groovy-lint/blob/main/lib/.groovylintrc-recommended.json"  }
+}
diff --git a/jjb/verify/bbsim-sadis-server.yaml b/jjb/verify/bbsim-sadis-server.yaml
index 0e5a5e0..7460606 100644
--- a/jjb/verify/bbsim-sadis-server.yaml
+++ b/jjb/verify/bbsim-sadis-server.yaml
@@ -59,4 +59,4 @@
           docker-repo: 'voltha'
           dependency-jobs: 'version-tag_wildcard'
 
-# [EOF] x 2
+# [EOF] x 3
diff --git a/jjb/verify/bbsim.yaml b/jjb/verify/bbsim.yaml
index 65008b7..8036d72 100644
--- a/jjb/verify/bbsim.yaml
+++ b/jjb/verify/bbsim.yaml
@@ -144,4 +144,4 @@
           release-targets: 'release'
           artifact-glob: 'release/*'
 
-# [EOF] x 2-
+# [EOF] x 3
diff --git a/vars/getPodsInfo.groovy b/vars/getPodsInfo.groovy
index 599a824..ecd785c 100644
--- a/vars/getPodsInfo.groovy
+++ b/vars/getPodsInfo.groovy
@@ -1,6 +1,6 @@
 #!/usr/bin/env groovy
 // -----------------------------------------------------------------------
-// Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors
+// Copyright 2021-2024 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.
@@ -18,9 +18,48 @@
 // the only parameter required is the destination folder to store the collected information
 // -----------------------------------------------------------------------
 
-def call(String dest) {
-  sh """
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+String getIam(String func) {
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'vars/getPodsInfo.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
+// -----------------------------------------------------------------------
+// Intent: Log progress message
+// -----------------------------------------------------------------------
+void enter(String name) {
+    // Announce ourselves for log usability
+    String iam = getIam(name)
+    println("${iam}: ENTER")
+    return
+}
+
+// -----------------------------------------------------------------------
+// Intent: Log progress message
+// -----------------------------------------------------------------------
+void leave(String name) {
+    // Announce ourselves for log usability
+    String iam = getIam(name)
+    println("${iam}: LEAVE")
+    return
+}
+
+// -----------------------------------------------------------------------
+// Intent: Script workhorse
+// -----------------------------------------------------------------------
+// def call(String dest) {
+Boolean process(String dest)
+{
+    // [TODO] post release remove '|| true'
+    // Map cmds = [ label : { cmd, file } ]
+    // cmds.for{ rec -> sh("cmd > file")
+
+    sh("""
   mkdir -p ${dest}
+
   # only tee the main infos
   kubectl get pods --all-namespaces -o wide | tee ${dest}/pods.txt || true
   helm ls --all-namespaces | tee ${dest}/helm-charts.txt
@@ -28,9 +67,42 @@
   # everything else should not be dumped on the console
   kubectl get svc --all-namespaces -o wide > ${dest}/svc.txt || true
   kubectl get pvc --all-namespaces -o wide > ${dest}/pvcs.txt || true
-  kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq > ${dest}/pod-images.txt || true
-  kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq > ${dest}/pod-imagesId.txt || true
+  kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" \
+    | sort \
+    | uniq > ${dest}/pod-images.txt || true
+  kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" \
+    | sort \
+    | uniq > ${dest}/pod-imagesId.txt || true
   kubectl describe pods --all-namespaces -l app.kubernetes.io/part-of=voltha > ${dest}/voltha-pods-describe.txt
   kubectl describe pods --all-namespaces -l app=onos-classic > ${dest}/onos-pods-describe.txt
-  """
+""")
+
+    return(true)
 }
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+// def call(Map config=[:])
+def call(String dest)
+{
+    Map config ?: [:]
+
+    try
+    {
+        enter('main')
+        process(dest)
+    }
+    catch (Exception err) // groovylint-disable-line CatchException
+    {
+        String iam = getIam('process')
+        println("** ${iam}: EXCEPTION ${err}")
+        throw err
+    }
+    finally
+    {
+        leave('main')
+    }
+    return
+}
+
+// [EOF]
diff --git a/vars/iam.groovy b/vars/iam.groovy
index e50fc8d..bb33214 100644
--- a/vars/iam.groovy
+++ b/vars/iam.groovy
@@ -1,6 +1,6 @@
 #!/usr/bin/env groovy
 // -----------------------------------------------------------------------
-// Copyright 2023 Open Networking Foundation (ONF) and the ONF Contributors
+// Copyright 2023-2024 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.
@@ -61,8 +61,8 @@
 Boolean process(Map argv)
 {
     String iam = getIam(argv, 'process')
-
-    Boolean leave = false
+    Boolean debug ?: argv.debug
+    Boolean leave ?: argv.leave
 
     // Identify caller with a banner for logging
     if (config.containsKey('enter')) {
@@ -71,9 +71,14 @@
     else if (config.containsKey('leave')) {
         leave = true
     }
-    else
-    {
-        println("** ${iam}: HELLO")
+    else if (debug) {
+        println("** ${iam}: DEBUG=true")
+    }
+
+    // Invoke closure passed in
+    if (config.containsKey('invoke')) {
+        Closure invoke = argv.invoke
+        invoke()
     }
 
     // Display future enhancement list
@@ -91,11 +96,16 @@
 }
 
 // -----------------------------------------------------------------------
-// Intent: Debug method for jenkins jobs identifying caller for logging.
+// Intent: Wrap functions/DSL tokens within a closure to improve logging
+//   o Issue a startup banner
+//   o Invoke task wrapped within the iam(){} closure
+//   o Detect exception/early termination and hilight that detail.
+//   o Issue a shutdown banner
 // -----------------------------------------------------------------------
 // Given:
 //   self    jenkins environment pointer 'this'
 //   config  groovy closure used to pass key/value pairs into argv
+//     invoke   Groovy closure to invoke: (ENTER, closure, LEAVE)
 //     enter    Display "** {iam} ENTER"
 //     leave    Display "** {iam} LEAVE"
 //     todo     Display future enhancement list
@@ -106,8 +116,10 @@
 //   o called from a jenkins {pipeline,stage,script} block.
 //   o iam(this)
 //     {
-//         foo  = bar    // paramter foo is...
-//         tans = fans
+//         debug = false
+//         enter = true
+//         invoke = { println('hello from closure') }
+//         leave = true
 //     }
 // -----------------------------------------------------------------------
 Boolean call\
@@ -122,7 +134,9 @@
     body.delegate        = argv
     body()
 
+    // Running within closure
     String iam = getIam(argv, 'main')
+    Booelan debug ?: argv.debug
 
     println("** ${iam}: argv=${argv}")
 
@@ -140,7 +154,7 @@
             ranToCompletion = true
         }
     }
-    catch (Exception err)
+    catch (Exception err) // groovylint-disable-line CatchException
     {
         println("** ${iam}: EXCEPTION ${err}")
         throw err
@@ -162,6 +176,7 @@
  * -----------------------------------------------------------------------
 [SEE ALSO]
   o https://rtyler.github.io/jenkins.io/doc/book/pipeline/shared-libraries/#defining-a-more-structured-dsl
+  o https://blog.mrhaki.com/2009/11/groovy-goodness-passing-closures-to.html
  * -----------------------------------------------------------------------
  */
 
