diff --git a/jenkins/ci-pipelines/ci_helper.groovy b/jenkins/ci-pipelines/ci_helper.groovy
index 974cd8d..a731267 100644
--- a/jenkins/ci-pipelines/ci_helper.groovy
+++ b/jenkins/ci-pipelines/ci_helper.groovy
@@ -15,10 +15,8 @@
  *   under the License.
  */
 
-artifactory_server_id = 'artifactory-osm'
-
-def get_archive(mdg, branch, build_name, build_number, pattern='*') {
-    server = Artifactory.server artifactory_server_id
+def get_archive(artifactory_server, mdg, branch, build_name, build_number, pattern='*') {
+    server = Artifactory.server artifactory_server
 
     println("retrieve archive for ${mdg}/${branch}/${build_name}/${build_number}/${pattern}")
 
@@ -72,8 +70,8 @@
     return sh(returnStdout: true, script: "lxc list ${container_name} -c 4|grep eth0 |awk '{print \$2}'").trim()
 }
 
-def archive(mdg,branch,status) {
-    server = Artifactory.server artifactory_server_id
+def archive(artifactory_server,mdg,branch,status) {
+    server = Artifactory.server artifactory_server
 
     def properties = "branch=${branch};status=${status}"
     def repo_prefix = 'osm-'
@@ -113,10 +111,10 @@
 
 //CANNOT use build promotion with OSS version of artifactory
 // For now, will publish downloaded artifacts into a new repo.
-def promote_build(mdg,branch,buildInfo) {
+def promote_build(artifactory_server,mdg,branch,buildInfo) {
     println("Promoting build: mdg: ${mdg} branch: ${branch} build: ${buildInfo.name}/${buildInfo.number}")
 
-    server = Artifactory.server artifactory_server_id
+    server = Artifactory.server artifactory_server
 
     //def properties = "branch=${branch};status=${status}"
     def repo_prefix = 'osm-'
diff --git a/jenkins/ci-pipelines/ci_stage_2.groovy b/jenkins/ci-pipelines/ci_stage_2.groovy
index 45cbc7d..d90ee2b 100644
--- a/jenkins/ci-pipelines/ci_stage_2.groovy
+++ b/jenkins/ci-pipelines/ci_stage_2.groovy
@@ -26,7 +26,7 @@
     }
 }
 
-def ci_pipeline(mdg,url_prefix,project,branch,refspec,revision,build_system) {
+def ci_pipeline(mdg,url_prefix,project,branch,refspec,revision,build_system,artifactory_server) {
     println("build_system = ${build_system}")
     ci_helper = load "devops/jenkins/ci-pipelines/ci_helper.groovy"
 
@@ -65,7 +65,7 @@
 
     stage('Archive') {
         sh(returnStdout:true,  script: 'devops-stages/stage-archive.sh').trim()
-        ci_helper.archive(mdg,branch,'untested')
+        ci_helper.archive(artifactory_server,mdg,branch,'untested')
     }
 
     if ( build_system ) {
diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy
index 6b1198b..4c5712b 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -29,6 +29,7 @@
         string(defaultValue: '', description: '', name: 'UPSTREAM_JOB_NUMBER'),
         string(defaultValue: '', description: '', name: 'UPSTREAM_JOB_NUMBER'),
         string(defaultValue: 'dpkg1', description: '', name: 'GPG_KEY_NAME'),
+        string(defaultValue: 'artifactory-osm', description: '', name: 'ARTIFACTORY_SERVER'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
     ])
@@ -68,7 +69,7 @@
                         //options = get_env_from_build('build.env')
                         build_num = ci_helper.get_env_value('build.env','BUILD_NUMBER')
                         //build_num = sh(returnStdout:true,  script: "cat build.env | awk -F= '/BUILD_NUMBER/{print \$2}'").trim()
-                        ci_helper.get_archive(component,GERRIT_BRANCH, "${component}-stage_2 :: ${GERRIT_BRANCH}", build_num)
+                        ci_helper.get_archive(params.ARTIFACTORY_SERVER,component,GERRIT_BRANCH, "${component}-stage_2 :: ${GERRIT_BRANCH}", build_num)
 
                         // cleanup any prevously defined dists
                         sh "rm -rf dists"
@@ -89,7 +90,7 @@
                         build_num = ci_helper.get_env_value('build.env','BUILD_NUMBER')
                         component = ci_helper.get_mdg_from_project(ci_helper.get_env_value('build.env','GERRIT_PROJECT'))
 
-                        ci_helper.get_archive(component,GERRIT_BRANCH, "${component}-stage_2 :: ${GERRIT_BRANCH}", build_num)
+                        ci_helper.get_archive(params.ARTIFACTORY_SERVER,component,GERRIT_BRANCH, "${component}-stage_2 :: ${GERRIT_BRANCH}", build_num)
 
                         sh "rm -rf dists"
                     }
@@ -179,7 +180,7 @@
 
             // Archive the tested repo
             dir("repo/${RELEASE}") {
-                ci_helper.archive(RELEASE,GERRIT_BRANCH,'tested')
+                ci_helper.archive(params.ARTIFACTORY_SERVER,RELEASE,GERRIT_BRANCH,'tested')
             }
         }
     }
