diff --git a/test-salt-model-wrapper.groovy b/test-salt-model-wrapper.groovy
index 99384ec..6adc720 100644
--- a/test-salt-model-wrapper.groovy
+++ b/test-salt-model-wrapper.groovy
@@ -77,7 +77,7 @@
 }
 
 def checkReclassSystemDocumentationCommit(gerritLib, gerritCredentials) {
-    gerrit.gerritPatchsetCheckout([
+    gerritLib.gerritPatchsetCheckout([
         credentialsId: gerritCredentials
     ])
 
@@ -153,8 +153,8 @@
             }
             ArrayList descriptionMsgs = [ "<font color='red'>${buildType} detected!</font> Running with next parameters:" ]
             for(String project in projectsMap.keySet()) {
-                descriptionMsgs.add("Ref for ${project} => ${project.ref}")
-                descriptionMsgs.add("Branch for ${project} => ${project.branch}")
+                descriptionMsgs.add("Ref for ${project} => ${projectsMap[project]['ref']}")
+                descriptionMsgs.add("Branch for ${project} => ${projectsMap[project]['branch']}")
             }
             descriptionMsgs.add("Distrib revision => ${distribRevision}")
             currentBuild.description = descriptionMsgs.join('\n')
@@ -169,8 +169,9 @@
                 if (['master'].contains(gerritBranch) && !documentationOnly) {
                     for (int i = 0; i < testModels.size(); i++) {
                         def cluster = testModels[i]
-                        def clusterGitUrl = projectsMap[reclassSystemRepo].url.substring(0, defaultGitUrl.lastIndexOf("/") + 1) + cluster
-                        branches["reclass-system-${cluster}"] = runTestSaltModelReclass(cluster, projectsMap[reclassSystemRepo].url, clusterGitUrl, projectsMap[reclassSystemRepo].ref)
+                        //def clusterGitUrl = projectsMap[reclassSystemRepo]['url'].substring(0, defaultGitUrl.lastIndexOf("/") + 1) + cluster
+                        def clusterGitUrl = ''
+                        branches["reclass-system-${cluster}"] = runTestSaltModelReclass(cluster, projectsMap[reclassSystemRepo]['url'], clusterGitUrl, projectsMap[reclassSystemRepo]['ref'])
                     }
                 } else {
                     common.warningMsg("Tests for ${testModels} skipped!")
