diff --git a/jjb/pipeline/omec-postmerge.groovy b/jjb/pipeline/omec-postmerge.groovy
index aaac1b7..06e2be2 100644
--- a/jjb/pipeline/omec-postmerge.groovy
+++ b/jjb/pipeline/omec-postmerge.groovy
@@ -12,8 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// omec-postmerge.groovy
-// Combines docker-publish, deploy and test pipelines into one job that can be triggered by a GitHub PR merge
+// Builds and publishes OMEC docker images. Triggered by GitHub PR merge.
 
 
 pipeline {
@@ -57,92 +56,6 @@
         }
       }
     }
-
-    stage ("Get Image Tags"){
-      steps {
-        script {
-          hssdb_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/c3po-hssdb/tags/' | jq '.results[] | select(.name | test("${c3poBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          hss_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/c3po-hss/tags/' | jq '.results[] | select(.name | test("${c3poBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          mme_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/nucleus/tags/' | jq '.results[] | select(.name | test("${nucleusBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          spgwc_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/spgw/tags/' | jq '.results[] | select(.name | test("${spgwBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          bess_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/upf-epc-bess/tags/' | jq '.results[] | select(.name | test("${upfBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          zmqiface_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/upf-epc-cpiface/tags/' | jq '.results[] | select(.name | test("${upfBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-          pfcpiface_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/upf-epc-pfcpiface/tags/' | jq '.results[] | select(.name | test("${upfBranchName}-[0-9a-z]{7}\$")) | select(.last_updater_username=="onfauto") |.name' | head -1 | tr -d \\\""""
-
-          hssdb_image = "${params.registryProxy}/c3po-hssdb:"+hssdb_tag
-          hss_image = "${params.registryProxy}/c3po-hss:"+hss_tag
-          mme_image = "${params.registryProxy}/nucleus:"+mme_tag
-          spgwc_image = "${params.registryProxy}/spgw:"+spgwc_tag
-          bess_image = "${params.registryProxy}/upf-epc-bess:"+bess_tag
-          zmqiface_image = "${params.registryProxy}/upf-epc-cpiface:"+zmqiface_tag
-          pfcpiface_image = "${params.registryProxy}/upf-epc-pfcpiface:"+pfcpiface_tag
-
-          updatedImages = ""
-          switch("${params.repoName}") {
-          case "c3po":
-            hssdb_image = "${params.registryProxy}/c3po-hssdb:${branchName}-${abbreviated_commit_hash}"
-            hss_image = "${params.registryProxy}/c3po-hss:${branchName}-${abbreviated_commit_hash}"
-            updatedImages += hssdb_image + ","
-            updatedImages += hss_image
-            break
-          case "spgw":
-            spgwc_image = "${params.registryProxy}/spgw:${branchName}-${abbreviated_commit_hash}"
-            updatedImages += spgwc_image
-            break
-          case "Nucleus":
-            mme_image = "${params.registryProxy}/nucleus:${branchName}-${abbreviated_commit_hash}"
-            updatedImages += mme_image
-            break
-          case "upf-epc":
-            bess_image = "${params.registryProxy}/upf-epc-bess:${branchName}-${abbreviated_commit_hash}"
-            zmqiface_image = "${params.registryProxy}/upf-epc-cpiface:${branchName}-${abbreviated_commit_hash}"
-            pfcpiface_image = "${params.registryProxy}/upf-epc-pfcpiface:${branchName}-${abbreviated_commit_hash}"
-            updatedImages += bess_image + ","
-            updatedImages += zmqiface_image + ","
-            updatedImages += pfcpiface_image + ","
-            updatedImages += bess_image + "-ivybridge,"
-            updatedImages += zmqiface_image + "-ivybridge,"
-            updatedImages += pfcpiface_image + "-ivybridge"
-            break
-          }
-        }
-      }
-    }
-
-    stage ("Deploy and Test"){
-      options {
-        lock(resource: 'aether-dev-cluster')
-      }
-
-      stages {
-        stage ("Deploy OMEC"){
-          steps {
-            echo "Using hssdb image: ${hssdb_image}"
-            echo "Using hss image: ${hss_image}"
-            echo "Using mme image: ${mme_image}"
-            echo "Using spgwc image: ${spgwc_image}"
-            echo "Using bess image: ${bess_image}"
-            echo "Using zmqiface image: ${zmqiface_image}"
-            echo "Using pfcpiface image: ${pfcpiface_image}"
-            build job: "omec_deploy_dev", parameters: [
-                  string(name: 'hssdbImage', value: "${hssdb_image.trim()}"),
-                  string(name: 'hssImage', value: "${hss_image.trim()}"),
-                  string(name: 'mmeImage', value: "${mme_image.trim()}"),
-                  string(name: 'spgwcImage', value: "${spgwc_image.trim()}"),
-                  string(name: 'bessImage', value: "${bess_image.trim()}"),
-                  string(name: 'zmqifaceImage', value: "${zmqiface_image.trim()}"),
-                  string(name: 'pfcpifaceImage', value: "${pfcpiface_image.trim()}"),
-            ]
-          }
-        }
-
-        stage ("Run NG40 Tests"){
-          steps {
-            build job: "omec_ng40-test_dev"
-          }
-        }
-      }
-    }
   }
   post {
     failure {
