diff --git a/jjb/pipeline/voltha/master/physical-build.groovy b/jjb/pipeline/voltha/master/physical-build.groovy
index 7501144..17d48b3 100755
--- a/jjb/pipeline/voltha/master/physical-build.groovy
+++ b/jjb/pipeline/voltha/master/physical-build.groovy
@@ -22,13 +22,31 @@
       remote: 'https://gerrit.opencord.org/ci-management.git'
 ])
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'jjb/pipeline/master/physical-build.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
-  sh """
+    String iam = getIam('deploy_custom_oltAdapterChart')
+    println("** ${iam}: ENTER")
+
+    sh """
     helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
    """
+
+    println("** ${iam}: LEAVE")
+    return
 }
 
 pipeline {
diff --git a/jjb/pipeline/voltha/playground/physical-build.groovy b/jjb/pipeline/voltha/playground/physical-build.groovy
index fc931d5..701be97 100644
--- a/jjb/pipeline/voltha/playground/physical-build.groovy
+++ b/jjb/pipeline/voltha/playground/physical-build.groovy
@@ -25,54 +25,31 @@
       remote: 'https://gerrit.opencord.org/ci-management.git'
 ])
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'jjb/pipeline/playground/physical-build.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
 // -----------------------------------------------------------------------
-// Intent: Visible in jenkins UI, job configure screen
-// -----------------------------------------------------------------------
-def getIam(String func)
-{
-    /*
-     [TODO]
-     -----------------------------------------------------------------------
-     java stack trace is hosed due to jenkins internal meddeling to support
-     serializable.  Lets see if groovy Throwable wrapper can produce a
-     better answer.
-     -----------------------------------------------------------------------
-     */
-
-    try
-    {
-        throw new Exception('Generating a stacktrace')
-    }
-    catch (Throwable err)
-    {
-        // https://docs.groovy-lang.org/2.4.7/html/api/org/codehaus/groovy/GroovyException.html
-        err.printStackTrace()
-        stack = err.getStackTrace()
-    }
-
-    // Cannot rely on a stack trace due to jenkins manipulation
-    String src = [
-        'jjb',
-        'pipeline',
-        'voltha',
-        'playground',
-        'physical-build.groovy'
-    ].join('/')
-
-    String iam = [src, func].join('::')
-    iam += sprintf('[ver:1.0]')
-    return iam
-}
-
-// -----------------------------------------------------------------------
 // -----------------------------------------------------------------------
 def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
-  sh """
+    String iam = getIam('deploy_custom_oltAdapterChart')
+    println("** ${iam}: ENTER")
+
+    sh """
     helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
    """
+
+    println("** ${iam}: LEAVE")
+    return
 }
 
 pipeline
diff --git a/jjb/pipeline/voltha/voltha-2.11/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.11/physical-build.groovy
index 7501144..b985ed1 100755
--- a/jjb/pipeline/voltha/voltha-2.11/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.11/physical-build.groovy
@@ -22,13 +22,31 @@
       remote: 'https://gerrit.opencord.org/ci-management.git'
 ])
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'jjb/pipeline/votlha-2.11/physical-build.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
-  sh """
+    String iam = getIam('deploy_custom_oltAdapterChart')
+    println("** ${iam}: ENTER")
+
+    sh """
     helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
    """
+
+    println("** ${iam}: LEAVE")
+    return    
 }
 
 pipeline {
diff --git a/jjb/pipeline/voltha/voltha-2.12/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.12/physical-build.groovy
index 7501144..7916679 100755
--- a/jjb/pipeline/voltha/voltha-2.12/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.12/physical-build.groovy
@@ -22,13 +22,31 @@
       remote: 'https://gerrit.opencord.org/ci-management.git'
 ])
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'jjb/pipeline/voltha-2.12/physical-build.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
-  sh """
+    String iam = getIam('deploy_custom_oltAdapterChart')
+    println("** ${iam}: ENTER")
+
+    sh """
     helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
    """
+
+    println("** ${iam}: LEAVE")
+    return
 }
 
 pipeline {
diff --git a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
index 0729089..80df9d5 100644
--- a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
@@ -22,13 +22,31 @@
       remote: 'https://gerrit.opencord.org/ci-management.git'
 ])
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+    // Cannot rely on a stack trace due to jenkins manipulation
+    String src = 'jjb/pipeline/voltha-2.8/physical-build.groovy'
+    String iam = [src, func].join('::')
+    return iam
+}
+
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
 def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
-  sh """
+    String iam = getIam('deploy_custom_oltAdapterChart')
+    println("** ${iam}: ENTER")
+
+    sh """
     helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
    """
+
+    println("** ${iam}: LEAVE")
+    return
 }
 
 pipeline {
