diff --git a/docker-mirror-images.groovy b/docker-mirror-images.groovy
index a0866ee..163ec5a 100644
--- a/docker-mirror-images.groovy
+++ b/docker-mirror-images.groovy
@@ -66,10 +66,7 @@
 
 timeout(time: 4, unit: 'HOURS') {
     node(slaveNode) {
-        def user = ''
-        wrap([$class: 'BuildUser']) {
-            user = env.BUILD_USER_ID
-        }
+        def user = jenkinsUtils.currentUsername()
         currentBuild.description = "${user}: [${env.SOURCE_IMAGE_TAG} => ${env.IMAGE_TAG}]\n${env.IMAGE_LIST}"
         try {
             allowedGroups = ['release-engineering']
@@ -78,9 +75,9 @@
             tagInRelease = tags.any { tag -> releaseTags.any { tag.contains(it) } }
             if (tagInRelease) {
                 if (!jenkinsUtils.currentUserInGroups(allowedGroups)) {
-                    error: "You - ${currentUserName} - don't have permissions to run this job with tags ${tags}!"
+                    error: "You - ${user} - don't have permissions to run this job with tags ${tags}!"
                 } else {
-                    echo "User `${currentUserName}` belongs to group `${env.JENKINS_ADMIN_GROUP}`. Proceeding..."
+                    echo "User `${user}` belongs to one of groups `${allowedGroups}`. Proceeding..."
                 }
             }
             stage("Mirror Docker Images") {
diff --git a/generate-repo-snapshot-context.groovy b/generate-repo-snapshot-context.groovy
new file mode 100644
index 0000000..e51dbc4
--- /dev/null
+++ b/generate-repo-snapshot-context.groovy
@@ -0,0 +1,75 @@
+/**
+ Repo-resolver job which will generate current repo snapshots
+ in Reclass format for testing/nightly,proposed versions.
+
+ Output example:
+
+ parameters:
+   _param:
+      nightly:
+        linux_system_repo_mcp_salt_url: http://mirror.mirantis.com/.snapshots/nightly-salt-formulas-xenial-2018-12-21-181741
+      testing:
+        linux_system_repo_mcp_salt_url: http://mirror.mirantis.com/.snapshots/nightly-salt-formulas-xenial-2018-12-21-181741
+      proposed:
+        linux_system_repo_mcp_salt_url: http://mirror.mirantis.com/.snapshots/nightly-salt-formulas-xenial-2018-12-21-181741
+
+ * Expected parameters:
+   MIRROR_HOST - Mirror host to use to generate snapshots context
+*/
+common = new com.mirantis.mk.Common()
+mirror = new com.mirantis.mk.Mirror()
+
+mirrorHost = env.MIRROR_HOST ?: 'mirror.mirantis.com'
+slaveNode = env.SLAVE_NODE ?: 'virtual'
+
+node(slaveNode) {
+
+    def fileName = 'repo-context.yml'
+    // TODO: replace with dynamical subsetting from reclass
+    def ceph_codename = 'luminous'
+    def elasticsearch_version = '5'
+    def glusterfs_version_number = '3.8'
+    def saltstack_version_number = '2017.7'
+    def versions = ['testing', 'proposed', 'nightly']
+    def components = [
+        'repo_mcp_aptly':'aptly',
+        'repo_mcp_cassandra':'cassandra',
+        'repo_mcp_ceph': "ceph-${ceph_codename}",
+        'repo_mcp_docker_legacy': 'docker-1.x',
+        'repo_mcp_docker':'docker',
+        'repo_mcp_elasticsearch_curator': 'elasticsearch-curator-5',
+        'repo_mcp_elasticsearch': "elasticsearch-${elasticsearch_version}.x",
+        'repo_mcp_extra': 'extra',
+        'repo_mcp_glusterfs': "glusterfs-${glusterfs_version_number}",
+        'repo_mcp_influxdb': 'influxdb',
+        'repo_mcp_jenkins': 'jenkins',
+        'repo_mcp_maas': 'maas',
+        'repo_mcp_percona': 'percona',
+        'repo_mcp_saltstack': "saltstack-${saltstack_version_number}",
+        'repo_mcp_fluentd_url': 'td-agent',
+        'repo_mcp_salt_url': 'salt-formulas',
+    ]
+
+    stage('Generate context') {
+        def meta = ['_param': [:]]
+        versions.each {
+            // ubuntu has target.txt in version root
+            meta['_param'][it] = ['linux_system_repo_ubuntu_url': mirror.getLatestSnapshotMeta(mirrorHost, it, '', 'ubuntu')['repoUrl'] ]
+        }
+        components.each { componentKey, componentRepo ->
+            for(version in versions) {
+                def versionMeta = [:]
+                try {
+                    versionMeta["linux_system_repo_${componentKey}_url"] = mirror.getLatestSnapshotMeta(mirrorHost, version, componentRepo)['repoUrl']
+                } catch(Exception e) {
+                    common.errorMsg(e)
+                    continue
+                }
+                meta['_param'][version] << versionMeta
+            }
+        }
+
+        writeYaml file: fileName, data: ['parameters': meta ]
+        archiveArtifacts artifacts: fileName
+    }
+}
\ No newline at end of file
