diff --git a/Jenkinsfile b/Jenkinsfile
index edbc090e7df94a61838ca119fac3f2c88d4a9084..7f2ad699bcb47b7fe0ddfd00649e4b803bbb71dc 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -373,15 +373,29 @@ String getPomVersion(String pomFile){
 }
 
 String generateImageTag() {
-    def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}"
+	if (isReleaseBranch()) {
+        return getPomVersion()
+    }
+
+    return "${getPomVersion()}-${validateBranchName(env.BRANCH_NAME)}${getCommitHash()}".replaceAll("_", "-")
+}
 
-    if (env.BRANCH_NAME == 'main') {
-        imageTag += "-${env.GIT_COMMIT.take(7)}"
+String validateBranchName(branchName) {
+    int maxLength = 20
+    if (branchName.length() > maxLength) {
+        String originalBranchName = branchName
+        branchName = branchName.substring(0, maxLength)
+        echo "WARNING: Branch name '${originalBranchName}' exceeded ${maxLength} characters. " +
+             "It has been truncated to '${branchName}' for deployment purposes."
     }
+    return branchName
+}
 
-    return imageTag
+String getCommitHash() {
+    return "-${env.GIT_COMMIT.take(7)}";
 }
 
+
 String getParentPomVersion(String filePath) {
     def pom = readMavenPom file: filePath
     return pom.parent.version