diff --git a/src/ci/mcp/Tools.groovy b/src/ci/mcp/Tools.groovy
index 2c1986f..6772288 100644
--- a/src/ci/mcp/Tools.groovy
+++ b/src/ci/mcp/Tools.groovy
@@ -3,6 +3,13 @@
 /**
  * https://issues.jenkins-ci.org/browse/JENKINS-26481
  * fix groovy List.collect()
+**/
+@NonCPS
+def constructString(ArrayList options, String keyOption, String separator = " ") {
+  return options.collect{ keyOption + it }.join(separator).replaceAll("\n", "")
+}
+
+/**
  * Build command line options, e.g:
  *    cmd_opts=["a=b", "c=d", "e=f"]
  *    key = "--build-arg "
@@ -15,8 +22,31 @@
  * @param keyOption key that should be added before each option
  * @param separator Separator between key+Option pairs
  */
-
-@NonCPS
 def getCommandBuilder(ArrayList options, String keyOption, String separator = " ") {
-  return options.collect{ keyOption + it }.join(separator).replaceAll("\n", "")
+  return constructString(options, keyOption)
+}
+
+/**
+* Return string of mandatory build properties for binaries
+* User can also add some custom properties
+*
+* @param customProperties a Array of Strings that should be added to mandatory props
+*        in format ["prop1=value1", "prop2=value2"]
+**/
+def getBinaryBuildProperties(ArrayList customProperties) {
+
+  def namespace = "com.mirantis."
+  def properties = [
+    "gerritProject=${env.GERRIT_PROJECT}",
+    "gerritChangeNumber=${env.GERRIT_CHANGE_NUMBER}",
+    "gerritPatchsetNumber=${env.GERRIT_PATCHSET_NUMBER}",
+    "gerritChangeId=${env.GERRIT_CHANGE_ID}",
+    "gitSha=${env.GERRIT_PATCHSET_REVISION}"
+  ]
+
+  if (customProperties){
+    properties.addAll(customProperties)
+  }
+
+  return constructString(properties, namespace, ";")
 }
