diff --git a/docker-mirror-images.groovy b/docker-mirror-images.groovy
index dc88762..db37364 100644
--- a/docker-mirror-images.groovy
+++ b/docker-mirror-images.groovy
@@ -76,6 +76,7 @@
                             sh("docker push ${targetImageFull}")
                         }
                     }
+                    def buildTime = new Date().format("yyyyMMdd-HH:mm:ss.SSS", TimeZone.getTimeZone('UTC'))
                     if (targetImageFull.contains(externalMarker)) {
                         external = true
                     }
@@ -94,22 +95,23 @@
                         // exactly one, which we pushing now
                         guessImage = targetImageFull.replace(':', '/').replace(targetRegistry, '')
                         ArrayList img_data = new JsonSlurper().parseText(ret)['results']
-                        img_data*.uri.each { imgUrl ->
-                            if (imgUrl.contains(guessImage)) {
-                                artifactoryProperties = [
-                                    'com.mirantis.targetTag'    : env.IMAGE_TAG,
-                                    'com.mirantis.uniqueImageId': unique_image_id,
-                                ]
-                                if (external) {
-                                    artifactoryProperties << ['com.mirantis.externalImage': external]
-                                }
-                                common.infoMsg("artifactoryProperties=> ${artifactoryProperties}")
-                                // Call pipeline-library routine to set properties
-                                def mcp_artifactory = new com.mirantis.mcp.MCPArtifactory()
-                                common.retry(3, 5) {
-                                    mcp_artifactory.setProperties(imgUrl - '/manifest.json', artifactoryProperties)
-                                }
-                            }
+                        def imgUrl = img_data*.uri.find { it.contains(guessImage) } - '/manifest.json'
+                        artifactoryProperties = [
+                            'com.mirantis.targetTag'    : env.IMAGE_TAG,
+                            'com.mirantis.uniqueImageId': unique_image_id,
+                        ]
+                        if (external) {
+                            artifactoryProperties << ['com.mirantis.externalImage': external]
+                        }
+                        // Call pipeline-library routine to set properties
+                        def mcp_artifactory = new com.mirantis.mcp.MCPArtifactory()
+                        def historyProperties = mcp_artifactory.getPropertiesForArtifact(imgUrl).get('com.mirantis.versionHistory', [])
+                        historyProperties.add("${buildTime}%5C=${sourceImage}")
+                        // %5C - backslash symbol is needed
+                        artifactoryProperties << [ 'com.mirantis.versionHistory': historyProperties.join(',') ]
+                        common.infoMsg("artifactoryProperties=> ${artifactoryProperties}")
+                        common.retry(3, 5) {
+                            mcp_artifactory.setProperties(imgUrl, artifactoryProperties)
                         }
                     }
                 }
