diff --git a/push_images.sh b/push_images.sh
index 55e9f3959cf935dc8211108d5f87ca07afb796b8..82cda5f3ac81d25f8d90d249f3c58e988fa2df32 100644
--- a/push_images.sh
+++ b/push_images.sh
@@ -7,9 +7,10 @@
 # - Credentials for CODECO private docker registry need to be stored (~/.docker/config.json)
 # - Logged in to docker hub as user hecodeco (docker login -u hecodeco)
 
-SCHEDULER_VERSION="0.3.0"
-SOLVER_VERSION="0.2.0"
-DOCKERHUB_VERSION="1.0"
+SCHEDULER_VERSION="import-v0.4.0"
+SOLVER_VERSION="0.3.5"
+DOCKERHUB_VERSION_SCHEDULER="1.2.0"
+DOCKERHUB_VERSION_SOLVER="1.1.0"
 
 SCHEDULER_PREFIX="colab-repo.intracom-telecom.com:5050/colab-projects/he-codeco/swm/qos-scheduler/"
 SOLVER_PREFIX="colab-repo.intracom-telecom.com:5050/colab-projects/he-codeco/swm/workload-placement-solver/"
@@ -23,13 +24,23 @@ for i in "${SCHEDULER_IMAGES[@]}"; do
     ver=$SCHEDULER_VERSION
     img_tag="$img:$ver"
     echo "Pulling image $img_tag"
-    docker pull $img_tag
-    img_id=$(docker images | grep $img.*$ver | awk {'print $3'})
-    docker_img_tag="$DOCKERHUB_PREFIX$i:$DOCKERHUB_VERSION"
-    echo "Tagging image $img_id $docker_img_tag"
-    docker tag $img_id $docker_img_tag
+    docker pull ${img_tag}_amd64
+    docker pull ${img_tag}_arm64
+#    img_id_amd64=$(docker images | grep $img.*${ver}_amd64 | awk {'print $3'})
+#    img_id_amd64=$(docker images | grep $img.*${ver}_amd64 | awk {'print $3'})
+    docker_img_tag="$DOCKERHUB_PREFIX$i:$DOCKERHUB_VERSION_SCHEDULER"
+    echo "Tagging image $docker_img_tag"
+    docker tag ${img_tag}_amd64 ${docker_img_tag}_amd64
+    docker tag ${img_tag}_arm64 ${docker_img_tag}_arm64
     echo "Pusing image $docker_img_tag"
-    docker push $docker_img_tag 
+    docker push ${docker_img_tag}_amd64
+    docker push ${docker_img_tag}_arm64
+    echo "Building multiarch image ${docker_img_tag}"
+    manifest-tool \
+    push from-args \
+    --platforms linux/amd64,linux/arm64 \
+    --template ${docker_img_tag}_ARCH \
+    --target ${docker_img_tag}
     done
 
 for i in "${SOLVER_IMAGES[@]}"; do 
@@ -37,11 +48,20 @@ for i in "${SOLVER_IMAGES[@]}"; do
     ver=$SOLVER_VERSION
     img_tag="$img:$ver"
     echo "Pulling image $img_tag"
-    docker pull $img_tag
-    img_id=$(docker images | grep $img.*$ver | awk {'print $3'})
-    docker_img_tag="$DOCKERHUB_PREFIX$i:$DOCKERHUB_VERSION"
-    echo "Tagging image $img_id $docker_img_tag"
-    docker tag $img_id $docker_img_tag
+    docker pull ${img_tag}_amd64
+    docker pull ${img_tag}_arm64
+#    img_id=$(docker images | grep $img.*$ver | awk {'print $3'})
+    docker_img_tag="$DOCKERHUB_PREFIX$i:$DOCKERHUB_VERSION_SOLVER"
+    echo "Tagging image $docker_img_tag"
+    docker tag ${img_tag}_amd64 ${docker_img_tag}_amd64
+    docker tag ${img_tag}_arm64 ${docker_img_tag}_arm64
     echo "Pusing image $docker_img_tag"
-    docker push $docker_img_tag 
+    docker push ${docker_img_tag}_amd64
+    docker push ${docker_img_tag}_arm64
+    echo "Building multiarch image ${docker_img_tag}"
+    manifest-tool \
+    push from-args \
+    --platforms linux/amd64,linux/arm64 \
+    --template ${docker_img_tag}_ARCH \
+    --target ${docker_img_tag}
     done