diff --git a/Jenkinsfile b/Jenkinsfile
index 6399482..a7b7755 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -2,6 +2,9 @@
 
 env.IGNORE_LIST = ["All-Users"]
 
+env.approvers = 'ali@onlab.us'
+env.recipients = 'ali@onlab.us'
+
 @NonCPS
 def jsonParseList(def json) {
     j = json.minus(")]}'")
@@ -19,32 +22,89 @@
     return new groovy.json.JsonSlurperClassic().parseText(j)
 }
 
-def createBranch(def proj, def branch) {
-    cmd = 'ssh -p 29418 gerrit.opencord.org gerrit create-branch ' + proj + " " + branch + " master"
+def createBranch(def proj, def branch, def parent) {
+    cmd = 'ssh -p 29418 gerrit.opencord.org gerrit create-branch ' + proj + " " + branch + " " + parent
     sh returnStdout: true, script: cmd 
 }
 
-def checkBranchExists(def proj) {
-    println proj
+int checkBranchExists(def proj) {
     if (env.IGNORE_LIST.contains(proj)) {
-        return
+        return 0
     }
     url = 'https://gerrit.opencord.org/projects/' + proj + '/branches/' + env.BRANCH_NAME
     response = httpRequest url: url, validResponseCodes: '200,404'
     if (response.status == 404) {
-        createBranch(proj, env.BRANCH_NAME)
+        createBranch(proj, env.BRANCH_NAME, 'master')
+        return 1
     }
+    return 0
 }
 
 node ('master') {
-    //def metadata = input id: 'release-build', message: 'Should I perform a release?', parameters: [booleanParam(defaultValue: true, description: 'Build and release onos applications', name: 'build_onos_apps'), string(defaultValue: '', description: '', name: 'release_version')], submitter: 'ash'
 
-    //println metadata['release_version']
-    //println metadata['build_onos_apps']
+    stage 'Check and create support branches'
     def url = 'https://gerrit.opencord.org/projects/?type=CODE'
     def response = httpRequest url: url, validResponseCodes: '200'
     def info = jsonParseList(response.content)
+    int created = 0
     for (index = 0; index < info.size(); index++) {
-        checkBranchExists(info[index])
+        created += checkBranchExists(info[index])
+    }
+
+    if (created == 0) {
+
+        def now = new Date()
+        branch = 'cord-' + now.format("yyyyMMdd-HH:mm", TimeZone.getTimeZone('UTC'))
+
+        stage 'Release?'
+        mail to: env.approvers,
+            subject: "Job '${JOB_NAME}' is waiting up for promotion",
+            body: "Please go to ${BUILD_URL}input and promote or abort the release"
+        def metadata = input id: 'release-build', message: 'Should I perform a release?',
+             parameters: [booleanParam(defaultValue: true,
+             description: 'Release onos applications (assumes versions have been updated)', name: 'build_onos_apps'), 
+             string(defaultValue: branch, description: 'Release version', name: 'release_version')], submitter: 'ash'
+
+        if (metadata['release_version'] == 'None') {
+            error 'Release version cannot be None'
+        }
+
+        stage 'Create new manifest branch'
+        createBranch('manifest', metadata['release_version'], env.BRANCH_NAME)
+        checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: metadata['release_version'] ]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace'], [$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'dd9d4677-2415-4f82-8e79-99dcd530f023', url: 'ssh://jenkins@gerrit.opencord.org:29418/manifest']]]
+        sh returnStdout: true, script: 'git checkout ' + metadata['release_version']
+        sh returnStdout: true, script: 'git pull origin ' + metadata['release_version']
+        sh returnStdout: true, script: 'cp ' + env.JENKINS_HOME + '/tmp/manifest-' + env.BRANCH_NAME + '.xml default.xml' 
+    
+        sh returnStdout: true, script: 'git commit -a -m "JENKINS: Updating manifest"'
+        sh returnStdout: true, script: 'git push origin ' + metadata['release_version']
+
+        stage 'Build and Release ONOS applications'
+   
+        if (metadata['build_onos_apps']) {
+            checkout changelog: false, poll: false, scm: [$class: 'RepoScm', currentBranch: true, 
+                manifestBranch: env.BRANCH_NAME, manifestGroup: 'onos', 
+                manifestRepositoryUrl: 'https://gerrit.opencord.org/manifest', quiet: true]
+            if (env.BRANCH_NAME == 'master') {
+                sh returnStdout: true, script: 'cd onos-apps/apps && mvn clean deploy'
+            } else {
+                sh returnStdout: true, script: 'cd onos-apps/apps && mvn -Prelease clean deploy'
+            }
+        }
+
+        mail to: env.recipients,
+            subject: "Nightly bleeding edge ' + branch + ' released',
+            replyTo: 'cord-discuss@opencord.org',
+            body: '''Hi CORD Community,
+
+    A new bleeding edge version of cord is available, feel free to test it. 
+    You can obtain it using the following commands:
+
+    repo init -u https://gerrit.opencord.org -b $metadata['release_version']
+    repo sync
+
+    --
+    CORD Automated Release
+    '''
     }
 }
