diff --git a/jjb/pipeline/workflow-validations.groovy b/jjb/pipeline/workflow-validations.groovy
new file mode 100644
index 0000000..4e51eb0
--- /dev/null
+++ b/jjb/pipeline/workflow-validations.groovy
@@ -0,0 +1,153 @@
+// Copyright 2017-present Open Networking Foundation
+//
+// 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.
+
+// chart-api-test-helm.groovy
+// Checks functionality of the helm-chart, without overriding the version/tag used
+
+pipeline {
+
+  /* no label, executor is determined by JJB */
+  agent {
+    label "${params.executorNode}"
+  }
+
+  stages {
+
+    stage('repo') {
+      steps {
+        checkout(changelog: false, \
+          poll: false,
+          scm: [$class: 'RepoScm', \
+            manifestRepositoryUrl: "${params.manifestUrl}", \
+            manifestBranch: "${params.branch}", \
+            currentBranch: true, \
+            destinationDir: 'cord', \
+            forceSync: true,
+            resetFirst: true, \
+            quiet: true, \
+            jobs: 4, \
+            showAllChanges: true] \
+          )
+      }
+    }
+
+    stage('minikube') {
+      steps {
+        /* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
+        sh '''
+           export MINIKUBE_WANTUPDATENOTIFICATION=false
+           export MINIKUBE_WANTREPORTERRORPROMPT=false
+           export CHANGE_MINIKUBE_NONE_USER=true
+           export MINIKUBE_HOME=$HOME
+           mkdir -p $HOME/.kube || true
+           touch $HOME/.kube/config
+           export KUBECONFIG=$HOME/.kube/config
+           sudo -E /usr/bin/minikube start --vm-driver=none
+           '''
+        script {
+          timeout(3) {
+            waitUntil {
+              sleep 5
+              def kc_ret = sh script: "kubectl get po", returnStatus: true
+              return (kc_ret == 0);
+            }
+          }
+        }
+      }
+    }
+
+    stage('helm') {
+      steps {
+        sh '''
+           helm init
+           sleep 60
+           helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+           '''
+      }
+    }
+
+
+    stage('install/test att-workflow') {
+      steps {
+        sh """
+           #!/usr/bin/env bash
+           set -eu -o pipefail
+
+
+           pushd cord/helm-charts
+
+           helm dep up xos-core
+           helm install xos-core -n xos-core
+
+           helm dep update xos-profiles/att-workflow
+           helm install xos-profiles/att-workflow -n att-workflow
+           helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+           helm install --name cord-kafka incubator/kafka -f examples/kafka-single.yaml
+
+           # wait for services to load
+           JOBS_TIMEOUT=900 ./scripts/wait_for_jobs.sh
+           sleep 300
+           echo "# Checking helm deployments"
+           kubectl get pods
+           helm list
+
+           for hchart in \$(helm list -q);
+           do
+             echo "## 'helm status' for chart: \${hchart} ##"
+             helm status "\${hchart}"
+           done
+           helm test att-workflow
+           popd
+
+           """
+      }
+    }
+  }
+  post {
+    always {
+      sh '''
+
+         kubectl logs att-workflow-api-test --namespace default
+         kubectl get pods --all-namespaces
+
+         # copy robot logs
+         if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
+         cp -r /tmp/helm_test_attworkflow_logs_*/*ml ./RobotLogs
+
+         echo "# removing helm deployments"
+         kubectl get pods
+         helm list
+
+         for hchart in \$(helm list -q);
+         do
+           echo "## Purging chart: \${hchart} ##"
+           helm delete --purge "\${hchart}"
+         done
+
+         sudo minikube delete
+         '''
+         step([$class: 'RobotPublisher',
+            disableArchiveOutput: false,
+            logFileName: 'RobotLogs/log*.html',
+            otherFiles: '',
+            outputFileName: 'RobotLogs/output*.xml',
+            outputPath: '.',
+            passThreshold: 100,
+            reportFileName: 'RobotLogs/report*.html',
+            unstableThreshold: 0]);
+         step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org, teo@opennetworking.org", sendToIndividuals: false])
+
+    }
+  }
+}
diff --git a/jjb/workflow-validations.yaml b/jjb/workflow-validations.yaml
new file mode 100644
index 0000000..ac0a951
--- /dev/null
+++ b/jjb/workflow-validations.yaml
@@ -0,0 +1,47 @@
+---
+# workflow validations job
+
+- project:
+    name: att-workflow-validations
+
+    project-name: '{name}'
+
+    jobs:
+      - 'wf-validation'
+
+- job-template:
+    id: 'wf-validation'
+    name: 'workflow-validations'
+
+    node: 'ubuntu16.04-basebuild-1c-2g'
+
+    description: |
+      <!-- Managed by Jenkins Job Builder -->
+      Created by {id} job-template from ci-management/jjb/workflow-validations.yaml  <br /><br />
+      Tests run nightly for validation of particular workflows. Kafka events simulated and XOS model states validated
+
+    properties:
+      - cord-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+          artifact-num-to-keep: '{artifact-num-to-keep}'
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: '{build-timeout}'
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    parameters:
+      - string:
+          name: branch
+          default: 'master'
+          description: 'Name of the repo branch to use'
+
+    project-type: pipeline
+    concurrent: false
+
+    dsl: !include-raw-escape: pipeline/workflow-validations.groovy
+
+    triggers:
+       - timed: |
+                 TZ=America/Los_Angeles
+                 H 10 * * *
diff --git a/packer/provision/basebuild.sh b/packer/provision/basebuild.sh
index 5388459..9ca0453 100644
--- a/packer/provision/basebuild.sh
+++ b/packer/provision/basebuild.sh
@@ -94,6 +94,7 @@
         pyyaml \
         robotframework \
         robotframework-httplibrary \
+        robotframework-kafkalibrary \
         robotframework-requests \
         robotframework-sshlibrary \
         virtualenv
