diff --git a/jjb/pipeline/license-check.groovy b/jjb/pipeline/license-check.groovy
new file mode 100644
index 0000000..69212c6
--- /dev/null
+++ b/jjb/pipeline/license-check.groovy
@@ -0,0 +1,50 @@
+// 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.
+
+repos = params.repos.split(",")
+
+def stepsForParallel = repos.collectEntries {
+    ["${it}" : checkRepo(it)]
+}
+
+node ("${TestNodeName}") {
+    timeout (100) {
+        try {
+            stage ("Cleanup") {
+                sh returnStdout: true, script: "rm -rf *"
+            }
+            stage ("Check repositories") {
+                parallel stepsForParallel
+            }
+            currentBuild.result = 'SUCCESS'
+        } catch (err) {
+            currentBuild.result = 'FAILURE'
+            step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${notificationEmail}", sendToIndividuals: false])
+        }
+        echo "RESULT: ${currentBuild.result}"
+    }
+}
+
+def checkRepo(repo) {
+    return {
+        withCredentials([sshUserPrivateKey(credentialsId: '315e1f56-7193-464e-8af1-97bf7b1ee541', keyFileVariable: 'KEY')]) {
+            sh returnStdout: true, script: """
+                chmod 600 $KEY && eval `ssh-agent -s` && ssh-add $KEY &&
+                ssh-keyscan -p 29418 gerrit.opencord.org >> ~/.ssh/known_hosts &&
+                git clone -b ${branch} ssh://mcord-private@gerrit.opencord.org:29418/${repo}
+            """
+        }
+        hub_detect("--detect.source.path=${repo} --detect.blackduck.signature.scanner.snippet.mode=true --detect.project.name=${prefix}-${repo} --detect.project.version.name=${branch} --detect.search.depth=20")
+    }
+}
