diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 5fabdd8..226f408 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -336,13 +336,25 @@
         tgt = 'I@docker:client:stack:jenkins and cfg01*'
         jenkins_params = self.get_single_pillar(
             tgt=tgt, pillar="jenkins:client:master")
-        jenkins_port = jenkins_params['port']
-        jenkins_user = jenkins_params['username']
-        jenkins_pass = jenkins_params['password']
+        jenkins_host = jenkins_params.get('host')
+        jenkins_port = jenkins_params.get('port')
+        jenkins_protocol = jenkins_params.get('proto', 'http')
+        jenkins_user = jenkins_params.get('username', 'admin')
+        jenkins_pass = jenkins_params.get('password')
+
+        if not all([jenkins_host,
+                    jenkins_port,
+                    jenkins_protocol,
+                    jenkins_user,
+                    jenkins_pass]):
+            raise LookupError(
+                "Some of the required parameters for Jenkins not set in the "
+                "pillar jenkins:client:master on {0}: {1}"
+                .format(tgt, jenkins_params))
 
         with open(env_jenkins_day01_filename, 'w') as f:
             f.write(
-                'export JENKINS_URL=http://{host}:{port}\n'
+                'export JENKINS_URL={protocol}://{host}:{port}\n'
                 'export JENKINS_USER={user}\n'
                 'export JENKINS_PASS={password}\n'
                 'export JENKINS_START_TIMEOUT=60\n'
@@ -357,8 +369,9 @@
                 '  # Timeout waiting for job in queue to start building"\n'
                 'echo "export JENKINS_BUILD_TIMEOUT=${{JENKINS_BUILD_TIMEOUT}}'
                 '  # Timeout waiting for building job to complete"\n'
-                .format(host=self.host, port=jenkins_port,
-                        user=jenkins_user, password=jenkins_pass)
+                .format(host=jenkins_host, port=jenkins_port,
+                        protocol=jenkins_protocol, user=jenkins_user,
+                        password=jenkins_pass)
             )
 
     def create_env_jenkins_cicd(self):
@@ -377,14 +390,25 @@
                       .format(env_jenkins_cicd_filename, tgt, e.message))
             return
 
-        jenkins_host = jenkins_params['host']
-        jenkins_port = jenkins_params['port']
-        jenkins_user = jenkins_params['username']
-        jenkins_pass = jenkins_params['password']
+        jenkins_host = jenkins_params.get('host')
+        jenkins_port = jenkins_params.get('port')
+        jenkins_protocol = jenkins_params.get('proto', 'http')
+        jenkins_user = jenkins_params.get('username', 'admin')
+        jenkins_pass = jenkins_params.get('password')
+
+        if not all([jenkins_host,
+                    jenkins_port,
+                    jenkins_protocol,
+                    jenkins_user,
+                    jenkins_pass]):
+            raise LookupError(
+                "Some of the required parameters for Jenkins not set in the "
+                "pillar jenkins:client:master on {0}: {1}"
+                .format(tgt, jenkins_params))
 
         with open(env_jenkins_cicd_filename, 'w') as f:
             f.write(
-                'export JENKINS_URL=http://{host}:{port}\n'
+                'export JENKINS_URL={protocol}://{host}:{port}\n'
                 'export JENKINS_USER={user}\n'
                 'export JENKINS_PASS={password}\n'
                 'export JENKINS_START_TIMEOUT=60\n'
@@ -400,7 +424,8 @@
                 'echo "export JENKINS_BUILD_TIMEOUT=${{JENKINS_BUILD_TIMEOUT}}'
                 '  # Timeout waiting for building job to complete"\n'
                 .format(host=jenkins_host, port=jenkins_port,
-                        user=jenkins_user, password=jenkins_pass)
+                        protocol=jenkins_protocol, user=jenkins_user,
+                        password=jenkins_pass)
             )
 
     def create_env_k8s(self):
