diff --git a/boards/.c31.yml b/boards/.c31.yml
index 79655158172fe95166cb579eeb39d30066c146d8..d01d0dbb74795e072b8da1a182a0f4e50614f947 100644
--- a/boards/.c31.yml
+++ b/boards/.c31.yml
@@ -12,6 +12,7 @@ build-edgehog-c31:
      DEFCONFIG_FILE: seco_sbc_c31_edgehog
      RECIPE_NAME: seco-image-edgehog
      IMAGE_NAME: edgehog-things-image
+     KERNEL: 4-19-111
      
 deploy-edgehog-c31:
   extends: .deploy
diff --git a/manifest-pipeline-yocto.yml b/manifest-pipeline-yocto.yml
index c90c4c7b3fd8e100ddaa8a62f6a2dea4216b47fb..217854b37a72e9ad50365e0cabc36786b20e6de3 100644
--- a/manifest-pipeline-yocto.yml
+++ b/manifest-pipeline-yocto.yml
@@ -252,11 +252,11 @@ retrigger:
     - if: $CI_PIPELINE_SOURCE == "schedule" 
     - if: $CI_COMMIT_TAG
  script:
-      - BASE_DIRECTORY=$PWD
       - echo "Deploying packages..."
       - echo "This is the board for which the build has been performed... ${BOARD}"
       - echo "This is the recipe name associated to that build... ${RECIPE_NAME}"
       - echo "This is the image name will be assigned to software artifacts... ${IMAGE_NAME}"
+      - BASE_DIRECTORY=$PWD
       - ART_PATH=$(cat pathname.txt)
       - DEPLOY_DATE=$(date +%Y%m%d)
       - DEPLOY_PATH="${TAG_NAME}/week_$(date +%U)"
@@ -268,194 +268,14 @@ retrigger:
           AZURE_CONTAINER_NAME="${AZURE_PUBLIC_CONTAINER_NAME}"
           AZURE_PATH="${AZURE_PATH}/edgehog"
         fi
-      - |
-         uboot_filename="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
-         uboot_filename_latest="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
-         kernel_filename="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
-         kernel_filename_latest="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
-         filesystem_name="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.bz2"
-         filesystem_name_latest="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.bz2"
-         image_name="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE"."$IMAGE_EXTENSION""
-         image_name_latest="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest."$IMAGE_EXTENSION""
-         bmap_name="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".rootfs.wic.bmap"
-         bmap_name_latest="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.rootfs.wic.bmap"
-         bundle_filename="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".raucb"
-         bundle_filename_latest="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_latest.raucb"
-        
-         if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then      
-
-            echo "##################################################################"
-            echo "#######################  BUNDLE FILE  ############################"
-            echo "##################################################################"
-
-            #Copy the bundle file and rename it
-            find $ART_PATH -iname *"$MACHINE.raucb" -exec cp -L {} $BASE_DIRECTORY/ \;
-            mv *raucb $BASE_DIRECTORY/$bundle_filename
-            az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                   --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                   --container-name $AZURE_CONTAINER_NAME \
-                                   --file $BASE_DIRECTORY/$bundle_filename \
-                                   --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename \
-                                   --overwrite
-
-            if [ ! -n "$CI_COMMIT_TAG" ]; then
-             az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                    --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                    --container-name $AZURE_CONTAINER_NAME \
-                                    --file $BASE_DIRECTORY/$bundle_filename \
-                                    --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename_latest \
-                                    --overwrite
-            fi
-         fi
-
-         case none in 
-            *${UBOOT_FILE}*) echo "Not deploying U-Boot for this board since not present";;
-            *              )
-                             echo "##################################################################" 
-                             echo "########################  UBOOT  #################################"
-                             echo "##################################################################"
-
-                             #Compress the uboot package and create a tar.gz file
-                             echo $ART_PATH
-                             ls -la $ART_PATH
-                             find $ART_PATH -iname $UBOOT_FILE -exec cp -L {} $BASE_DIRECTORY/ \;
-                             echo "${UBOOT_FILE}"
-                             ls -la
-                             tar -czvf $BASE_DIRECTORY/$uboot_filename -C $BASE_DIRECTORY $UBOOT_FILE
-                             ls -la
-
-                             az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                                    --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                                    --container-name $AZURE_CONTAINER_NAME \
-                                                    --file $BASE_DIRECTORY/$uboot_filename \
-                                                    --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename \
-                                                    --overwrite
-
-                             if [ ! -n "$CI_COMMIT_TAG" ]; then 
-                               az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                                      --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                                      --container-name $AZURE_CONTAINER_NAME \
-                                                      --file $BASE_DIRECTORY/$uboot_filename \
-                                                      --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename_latest \
-                                                      --overwrite
-                             fi
-                             echo "Finishing U-Boot upload";;
-         esac      
-
-         case none in 
-            *${KERNEL_FILE}*)  echo "Not deploying Kernel for this board since not present";;
-            *               )
-                               echo "##################################################################"
-                               echo "########################  KERNEL  ################################"
-                               echo "##################################################################"
-
-                               kernel_dir="$BASE_DIRECTORY/seco-kernel-$BOARD-$PROCESSOR"
-                               mkdir -p $kernel_dir/boot $kernel_dir/lib
-
-                               #Find all the needed kernel packages and copy them inside the proper folders
-                               find $BASE_DIRECTORY/$ART_PATH -iname $KERNEL_FILE \
-                                                              -exec cp -L {} $kernel_dir/boot \;
-                               find $BASE_DIRECTORY/$ART_PATH -maxdepth 2 -iname *.dtb \
-                                                              -exec cp -L {} $kernel_dir/boot \;
-                               find $BASE_DIRECTORY/$ART_PATH -iname *.dtbo \
-                                                              -exec cp -L {} $kernel_dir/boot \;
-                               find $BASE_DIRECTORY/$ART_PATH -iname *fw*.bin \
-                                                              -exec cp -L {} $kernel_dir/boot \;
-                               find $BASE_DIRECTORY/$ART_PATH -iname modules-seco-*.tgz \
-                                                              -exec cp -L {} $BASE_DIRECTORY/temp_mod.tgz \;
-                               tar -xf $BASE_DIRECTORY/temp_mod.tgz -C $kernel_dir
-                               rm $BASE_DIRECTORY/temp_mod.tgz
-
-                               #Compress the kernel package and create a tar.gz file
-                               tar -czvf $BASE_DIRECTORY/$kernel_filename -C $kernel_dir boot lib
-                               rm -rf $kernel_dir
-                               az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                                      --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                                      --container-name $AZURE_CONTAINER_NAME \
-                                                      --file $BASE_DIRECTORY/$kernel_filename \
-                                                      --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename \
-                                                      --overwrite
-
-                               if [ ! -n "$CI_COMMIT_TAG" ]; then
-                                 az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                                        --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                                        --container-name $AZURE_CONTAINER_NAME \
-                                                        --file $BASE_DIRECTORY/$kernel_filename \
-                                                        --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename_latest \
-                                                        --overwrite
-                               fi
-                               echo "Finishing Kernel upload";;         
-         esac   
-
-         echo "##################################################################"
-         echo "######################  FILESYSTEM  ##############################"
-         echo "##################################################################"
-         find $BASE_DIRECTORY/$ART_PATH -iname *."$FS_EXTENSION" \
-                                        -exec cp -L {} $BASE_DIRECTORY/filesystemTMP.tar.bz2 \;
-         mv filesystemTMP.tar.bz2 $BASE_DIRECTORY/$filesystem_name
-         az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                --container-name $AZURE_CONTAINER_NAME \
-                                --file $BASE_DIRECTORY/$filesystem_name \
-                                --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name \
-                                --overwrite
-
-         if [ ! -n "$CI_COMMIT_TAG" ]; then
-           az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                  --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                  --container-name $AZURE_CONTAINER_NAME \
-                                  --file $BASE_DIRECTORY/$filesystem_name \
-                                  --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name_latest \
-                                  --overwrite
-         fi
-
-         echo "################################################################"
-         echo "#######################  BMAP IMAGE  ###########################"
-         echo "################################################################"
-
-         #Copy the BMAP .wic image and rename it
-         find $BASE_DIRECTORY/$ART_PATH \
-               -iname *rootfs."$IMAGE_EXTENSION" \
-               -exec cp -L {} . \;
-         mv *rootfs."$IMAGE_EXTENSION" $BASE_DIRECTORY/$image_name
-         az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                --container-name $AZURE_CONTAINER_NAME \
-                                --file $BASE_DIRECTORY/$image_name \
-                                --name $AZURE_PATH/$DEPLOY_PATH/$image_name \
-                                --overwrite
-
-         if [ ! -n "$CI_COMMIT_TAG" ]; then
-          az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                 --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                 --container-name $AZURE_CONTAINER_NAME \
-                                 --file $BASE_DIRECTORY/$image_name \
-                                 --name $AZURE_PATH/$DEPLOY_PATH/$image_name_latest \
-                                 --overwrite
-         fi
-
-         echo "################################################################"
-         echo "#######################  BMAP FILE  ############################"
-         echo "################################################################"
-
-         #Copy the bmap files and rename it
-         find $ART_PATH -iname *rootfs.wic.bmap -exec cp -L {} $BASE_DIRECTORY/ \;
-         mv *rootfs.wic.bmap $BASE_DIRECTORY/$bmap_name
-         az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                --container-name $AZURE_CONTAINER_NAME \
-                                --file $BASE_DIRECTORY/$bmap_name \
-                                --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name \
-                                --overwrite
-         
-         if [ ! -n "$CI_COMMIT_TAG" ]; then
-          az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                                 --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                                 --container-name $AZURE_CONTAINER_NAME \
-                                 --file $BASE_DIRECTORY/$bmap_name \
-                                 --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name_latest \
-                                 --overwrite
-         fi 
+      - sh scripts/artifacts_name.sh $TAG_NAME     \
+                                     $DEPLOY_DATE
+      - sh scripts/deploy_artifacts.sh $BASE_DIRECTORY           \
+                                       $ART_PATH                 \
+                                       $DEPLOY_PATH              \
+                                       $AZURE_STORAGE_SAS_TOKEN  \
+                                       $AZURE_CONTAINER_NAME     \
+                                       $AZURE_PATH
 
  after_script:
      - |
@@ -485,61 +305,13 @@ retrigger:
         echo ""$BOARD"_"$IMAGE_NAME" URLs" >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
         echo "##################################################################" >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
 
-        uboot_filename="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
-        uboot_filename_latest="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
-        kernel_filename="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
-        kernel_filename_latest="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
-        filesystem_name="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.bz2"
-        filesystem_name_latest="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.bz2"
-        image_name="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE"."$IMAGE_EXTENSION""
-        image_name_latest="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest."$IMAGE_EXTENSION""
-        bmap_name="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".rootfs.wic.bmap"
-        bmap_name_latest="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.rootfs.wic.bmap"
-        bundle_filename="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".raucb"
-        bundle_filename_latest="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_latest.raucb"
-
-        if [ "$CI_JOB_STATUS" == "success" ]; then
-            if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then
-              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-            fi
-            case none in 
-            *${UBOOT_FILE}*) echo "Not deployed U-Boot for this board since not present";;
-            *              )
-                             echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt;;
-            esac
-
-            case none in 
-            *${KERNEL_FILE}*) echo "Not deployed Kernel for this board since not present";;
-            *               )
-                              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt;;
-            esac
-            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$image_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-
-            if [ ! -n "$CI_COMMIT_TAG" ]; then
-              if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then
-                echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-              fi
-
-              case none in 
-              *${UBOOT_FILE}*) echo "Not deployed U-Boot for this board since not present";;
-              *              )
-                               echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt;;
-              esac
-
-              case none in 
-              *${KERNEL_FILE}*) echo "Not deployed Kernel for this board since not present";;
-              *               )
-                              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt;;
-              esac
-              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$image_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-              echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-            fi
-        else
-            echo -e "JOBS FAILED" >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
-        fi
+     - sh scripts/artifacts_name.sh $TAG_NAME  \
+                                    $DEPLOY_DATE
+     - sh scripts/generate_report.sh $DEPLOY_PATH     \
+                                     $AZURE_STORAGE_SAS_TOKEN  \
+                                     $AZURE_CONTAINER_NAME     \
+                                     $AZURE_PATH
+        
  allow_failure: true
  artifacts:
    paths:
@@ -583,74 +355,26 @@ notify:
   rules:
     - *schedule_tag_rule
   script:
-     - |      
-       echo -e "The job results for all boards are listed below (also available by clicking on the **Job Report** button)." >> Job_message.txt
-       echo -e "The paths to all packages can be accessed by clicking on the **Link Report** button." >> Job_message.txt
-       echo -e "The changelog can be accessed by clicking on the **Changelog** button." >> Job_message.txt
-       echo -e "*We kindly ask developers to check job results so that in case of failures a fix to eventual bugs can be promptly made.*" >> Job_message.txt
-
-       AZURE_PATH="edgehog/reports"
-       if [ -n "$CI_COMMIT_TAG" ]; then
-         tag=${CI_COMMIT_TAG}
-         AZURE_STORAGE_SAS_TOKEN="${AZURE_STORAGE_PUBLIC_SAS_TOKEN}"
-         AZURE_CONTAINER_NAME="${AZURE_PUBLIC_CONTAINER_NAME}"
-       else
-         tag=$(date +%Y%m%d)
-       fi
-
-       cat Job_message.txt Job_message_*.txt > Job_message_edgehog_${tag}.txt
-       cat Job_report_*.txt > Job_report_edgehog_${tag}.txt
-       cat Link_report_*.txt > Link_report_edgehog_${tag}.txt
-
-       cat changelog.md > Changelog_edgehog_${tag}.md
-
-       sed -i -E 's/\"//g' Link_report_edgehog_${tag}.txt
-
-       az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                              --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                              --container-name $AZURE_CONTAINER_NAME \
-                              --file Job_report_edgehog_${tag}.txt \
-                              --name ${AZURE_PATH}/Job_report_edgehog_${tag}.txt \
-                              --overwrite
-       
-       az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                              --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                              --container-name $AZURE_CONTAINER_NAME \
-                              --file Link_report_edgehog_${tag}.txt \
-                              --name ${AZURE_PATH}/Link_report_edgehog_${tag}.txt \
-                              --overwrite
-
-       az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
-                              --sas-token $AZURE_STORAGE_SAS_TOKEN \
-                              --container-name $AZURE_CONTAINER_NAME \
-                              --file Changelog_edgehog_${tag}.md \
-                              --name ${AZURE_PATH}/Changelog_edgehog_${tag}.md \
-                              --overwrite
-
-       cp .gitlab-ci/notification.json .
-       job_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Job_report_edgehog_${tag}.txt)"
-       job_report="$(echo $job_report | sed -E 's/\s.*$//')"
-       jq --arg job_var $job_report '.potentialAction[0].targets[0].uri = $job_var' notification.json > notification_1.json
-
-       link_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Link_report_edgehog_${tag}.txt)"
-       link_report="$(echo $link_report | sed -E 's/\s.*$//')"
-       jq --arg link_var $link_report '.potentialAction[1].targets[0].uri = $link_var' notification_1.json > notification_2.json
-
-       changelog_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Changelog_edgehog_${tag}.md)"
-       changelog_report="$(echo $changelog_report | sed -E 's/\s.*$//')"
-       jq --arg changelog_var $changelog_report '.potentialAction[2].targets[0].uri = $changelog_var' notification_2.json > notification_3.json
-       sed -i -E 's/\\"//g' notification_3.json
-
-       jq --arg text "$(cat Job_message_edgehog_${tag}.txt)" '.text = $text' notification_3.json > notification_4.json
-       sed -i -E 's/\\n/ \\n\\n /g' notification_4.json
-
-       curl -X POST -H "Content-Type: application/json" --data @notification_4.json $WEBHOOK
-       
-       cp Link_report_edgehog_${tag}.txt Link_report.txt
-       sed -i 's/\"//g' Link_report.txt
-
-       echo "${changelog_report#?}" | cut -f1 -d"?" > changelog_link.txt
-  
+     - | 
+        echo -e "The job results for all boards are listed below (also available by clicking on the **Job Report** button)." >> Job_message.txt
+        echo -e "The paths to all packages can be accessed by clicking on the **Link Report** button." >> Job_message.txt
+        echo -e "The changelog can be accessed by clicking on the **Changelog** button." >> Job_message.txt
+        echo -e "*We kindly ask developers to check job results so that in case of failures a fix to eventual bugs can be promptly made.*" >> Job_message.txt
+
+        AZURE_PATH="edgehog/reports"
+
+        if [ -n "$CI_COMMIT_TAG" ]; then
+          TAG_NAME=${CI_COMMIT_TAG}
+          AZURE_STORAGE_SAS_TOKEN="${AZURE_STORAGE_PUBLIC_SAS_TOKEN}"
+          AZURE_CONTAINER_NAME="${AZURE_PUBLIC_CONTAINER_NAME}"
+        else
+          TAG_NAME=$(date +%Y%m%d)
+        fi
+     - sh scripts/notify_message.sh $AZURE_PATH               \
+                                    $TAG_NAME                 \
+                                    $AZURE_STORAGE_SAS_TOKEN  \
+                                    $AZURE_CONTAINER_NAME
+
   artifacts:
     expire_in: 4 weeks
     paths:
diff --git a/scripts/artifacts_name.sh b/scripts/artifacts_name.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ad6a32d332bc3c615ad54b0b80bc28cdf3742261
--- /dev/null
+++ b/scripts/artifacts_name.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+TAG_NAME=$1
+DEPLOY_DATE=$2
+
+export uboot_filename="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
+export uboot_filename_latest="seco_"$PROCESSOR"_"$BOARD"_uboot-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
+export kernel_filename="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.gz"
+export kernel_filename_latest="seco_"$PROCESSOR"_"$BOARD"_kernel-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.gz"
+export filesystem_name="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".tar.bz2"
+export filesystem_name_latest="seco_"$PROCESSOR"_"$BOARD"_filesystem-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.tar.bz2"
+export image_name="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE"."$IMAGE_EXTENSION""
+export image_name_latest="seco_"$PROCESSOR"_"$BOARD"_"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest."$IMAGE_EXTENSION""
+export bmap_name="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".rootfs.wic.bmap"
+export bmap_name_latest="seco_"$PROCESSOR"_"$BOARD"_bmapfile-"$IMAGE_NAME"_"$KERNEL"_"$TAG_NAME"_latest.rootfs.wic.bmap"
+export bundle_filename="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_"$DEPLOY_DATE".raucb"
+export bundle_filename_latest="seco_"$PROCESSOR"_"$BOARD"_edgehog-bundle_"$KERNEL"_"$TAG_NAME"_latest.raucb"
\ No newline at end of file
diff --git a/scripts/deploy_artifacts.sh b/scripts/deploy_artifacts.sh
new file mode 100644
index 0000000000000000000000000000000000000000..93c2d33b8a24d4aa5c27151d7a777f026c8afe3b
--- /dev/null
+++ b/scripts/deploy_artifacts.sh
@@ -0,0 +1,185 @@
+#!/bin/ash
+
+BASE_DIRECTORY=$1          
+ART_PATH=$2          
+DEPLOY_PATH=$3             
+AZURE_STORAGE_SAS_TOKEN=$4 
+AZURE_CONTAINER_NAME=$5     
+AZURE_PATH=$6
+
+if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then
+
+    echo "##################################################################"
+    echo "#######################  BUNDLE FILE  ############################"
+    echo "##################################################################"
+
+    #Copy the bundle file and rename it
+    find $ART_PATH -iname *"$MACHINE.raucb" -exec cp -L {} $BASE_DIRECTORY/ \;
+    mv *raucb $BASE_DIRECTORY/$bundle_filename
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$bundle_filename \
+        --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename \
+        --overwrite
+
+    if [ ! -n "$CI_COMMIT_TAG" ]; then
+        az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+            --sas-token $AZURE_STORAGE_SAS_TOKEN \
+            --container-name $AZURE_CONTAINER_NAME \
+            --file $BASE_DIRECTORY/$bundle_filename \
+            --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename_latest \
+            --overwrite
+    fi
+fi
+
+case none in
+*${UBOOT_FILE}*) echo "Not deploying U-Boot for this board since not present" ;;
+*)
+    echo "##################################################################"
+    echo "########################  UBOOT  #################################"
+    echo "##################################################################"
+
+    #Compress the uboot package and create a tar.gz file
+    echo $ART_PATH
+    ls -la $ART_PATH
+    find $ART_PATH -iname $UBOOT_FILE -exec cp -L {} $BASE_DIRECTORY/ \;
+    echo "${UBOOT_FILE}"
+    ls -la
+    tar -czvf $BASE_DIRECTORY/$uboot_filename -C $BASE_DIRECTORY $UBOOT_FILE
+    ls -la
+
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$uboot_filename \
+        --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename \
+        --overwrite
+
+    if [ ! -n "$CI_COMMIT_TAG" ]; then
+        az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+            --sas-token $AZURE_STORAGE_SAS_TOKEN \
+            --container-name $AZURE_CONTAINER_NAME \
+            --file $BASE_DIRECTORY/$uboot_filename \
+            --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename_latest \
+            --overwrite
+    fi
+    echo "Finishing U-Boot upload"
+    ;;
+esac
+
+case none in
+*${KERNEL_FILE}*) echo "Not deploying Kernel for this board since not present" ;;
+*)
+    echo "##################################################################"
+    echo "########################  KERNEL  ################################"
+    echo "##################################################################"
+
+    kernel_dir="$BASE_DIRECTORY/seco-kernel-$BOARD-$PROCESSOR"
+    mkdir -p $kernel_dir/boot $kernel_dir/lib
+
+    #Find all the needed kernel packages and copy them inside the proper folders
+    find $BASE_DIRECTORY/$ART_PATH -iname $KERNEL_FILE \
+        -exec cp -L {} $kernel_dir/boot \;
+    find $BASE_DIRECTORY/$ART_PATH -maxdepth 2 -iname *.dtb \
+        -exec cp -L {} $kernel_dir/boot \;
+    find $BASE_DIRECTORY/$ART_PATH -iname *.dtbo \
+        -exec cp -L {} $kernel_dir/boot \;
+    find $BASE_DIRECTORY/$ART_PATH -iname *fw*.bin \
+        -exec cp -L {} $kernel_dir/boot \;
+    find $BASE_DIRECTORY/$ART_PATH -iname modules-seco-*.tgz \
+        -exec cp -L {} $BASE_DIRECTORY/temp_mod.tgz \;
+    tar -xf $BASE_DIRECTORY/temp_mod.tgz -C $kernel_dir
+    rm $BASE_DIRECTORY/temp_mod.tgz
+
+    #Compress the kernel package and create a tar.gz file
+    tar -czvf $BASE_DIRECTORY/$kernel_filename -C $kernel_dir boot lib
+    rm -rf $kernel_dir
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$kernel_filename \
+        --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename \
+        --overwrite
+
+    if [ ! -n "$CI_COMMIT_TAG" ]; then
+        az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+            --sas-token $AZURE_STORAGE_SAS_TOKEN \
+            --container-name $AZURE_CONTAINER_NAME \
+            --file $BASE_DIRECTORY/$kernel_filename \
+            --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename_latest \
+            --overwrite
+    fi
+    echo "Finishing Kernel upload"
+    ;;
+esac
+
+echo "##################################################################"
+echo "######################  FILESYSTEM  ##############################"
+echo "##################################################################"
+find $BASE_DIRECTORY/$ART_PATH -iname *."$FS_EXTENSION" \
+    -exec cp -L {} $BASE_DIRECTORY/filesystemTMP.tar.bz2 \;
+mv filesystemTMP.tar.bz2 $BASE_DIRECTORY/$filesystem_name
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file $BASE_DIRECTORY/$filesystem_name \
+    --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name \
+    --overwrite
+
+if [ ! -n "$CI_COMMIT_TAG" ]; then
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$filesystem_name \
+        --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name_latest \
+        --overwrite
+fi
+
+echo "################################################################"
+echo "#######################  BMAP IMAGE  ###########################"
+echo "################################################################"
+
+#Copy the BMAP .wic image and rename it
+find $BASE_DIRECTORY/$ART_PATH \
+    -iname *rootfs."$IMAGE_EXTENSION" \
+    -exec cp -L {} . \;
+mv *rootfs."$IMAGE_EXTENSION" $BASE_DIRECTORY/$image_name
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file $BASE_DIRECTORY/$image_name \
+    --name $AZURE_PATH/$DEPLOY_PATH/$image_name \
+    --overwrite
+
+if [ ! -n "$CI_COMMIT_TAG" ]; then
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$image_name \
+        --name $AZURE_PATH/$DEPLOY_PATH/$image_name_latest \
+        --overwrite
+fi
+
+echo "################################################################"
+echo "#######################  BMAP FILE  ############################"
+echo "################################################################"
+
+#Copy the bmap files and rename it
+find $ART_PATH -iname *rootfs.wic.bmap -exec cp -L {} $BASE_DIRECTORY/ \;
+mv *rootfs.wic.bmap $BASE_DIRECTORY/$bmap_name
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file $BASE_DIRECTORY/$bmap_name \
+    --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name \
+    --overwrite
+
+if [ ! -n "$CI_COMMIT_TAG" ]; then
+    az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+        --sas-token $AZURE_STORAGE_SAS_TOKEN \
+        --container-name $AZURE_CONTAINER_NAME \
+        --file $BASE_DIRECTORY/$bmap_name \
+        --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name_latest \
+        --overwrite
+fi
diff --git a/scripts/generate_report.sh b/scripts/generate_report.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cd3e82cc609465830d6ef1fc1d1212252fb8d0ee
--- /dev/null
+++ b/scripts/generate_report.sh
@@ -0,0 +1,53 @@
+#!/bin/ash
+
+DEPLOY_PATH=$1
+AZURE_STORAGE_SAS_TOKEN=$2
+AZURE_CONTAINER_NAME=$3
+AZURE_PATH=$4
+
+if [ "$CI_JOB_STATUS" == "success" ]; then
+    if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+    fi
+    case none in
+    *${UBOOT_FILE}*) echo "Not deployed U-Boot for this board since not present" ;;
+    *)
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+        ;;
+    esac
+
+    case none in
+    *${KERNEL_FILE}*) echo "Not deployed Kernel for this board since not present" ;;
+    *)
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+        ;;
+    esac
+    echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+    echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$image_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+    echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+
+    if [ ! -n "$CI_COMMIT_TAG" ]; then
+        if [[ "${CI_JOB_NAME}" != *"embedded"* ]]; then
+            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bundle_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+        fi
+
+        case none in
+        *${UBOOT_FILE}*) echo "Not deployed U-Boot for this board since not present" ;;
+        *)
+            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$uboot_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+            ;;
+        esac
+
+        case none in
+        *${KERNEL_FILE}*) echo "Not deployed Kernel for this board since not present" ;;
+        *)
+            echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$kernel_filename_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+            ;;
+        esac
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$filesystem_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$image_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+        echo -e $(az storage blob url --container-name $AZURE_CONTAINER_NAME --name $AZURE_PATH/$DEPLOY_PATH/$bmap_name_latest) | sed -E 's/\?s.*//' >> Link_report_"$BOARD"_"$IMAGE_NAME".txt
+    fi
+else
+    echo -e "JOBS FAILED" >>Link_report_"$BOARD"_"$IMAGE_NAME".txt
+fi
diff --git a/scripts/notify_message.sh b/scripts/notify_message.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3f4633b1b7a16c69a079cc62f3f4faf42f0aee2a
--- /dev/null
+++ b/scripts/notify_message.sh
@@ -0,0 +1,59 @@
+#!/bin/ash
+
+AZURE_PATH=$1
+TAG_NAME=$2                 
+AZURE_STORAGE_SAS_TOKEN=$3
+AZURE_CONTAINER_NAME=$4
+
+cat Job_message.txt Job_message_*.txt >Job_message_edgehog_${TAG_NAME}.txt
+cat Job_report_*.txt >Job_report_edgehog_${TAG_NAME}.txt
+cat Link_report_*.txt >Link_report_edgehog_${TAG_NAME}.txt
+
+cat changelog.md >Changelog_edgehog_${TAG_NAME}.md
+
+sed -i -E 's/\"//g' Link_report_edgehog_${TAG_NAME}.txt
+
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file Job_report_edgehog_${TAG_NAME}.txt \
+    --name ${AZURE_PATH}/Job_report_edgehog_${TAG_NAME}.txt \
+    --overwrite
+
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file Link_report_edgehog_${TAG_NAME}.txt \
+    --name ${AZURE_PATH}/Link_report_edgehog_${TAG_NAME}.txt \
+    --overwrite
+
+az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT \
+    --sas-token $AZURE_STORAGE_SAS_TOKEN \
+    --container-name $AZURE_CONTAINER_NAME \
+    --file Changelog_edgehog_${TAG_NAME}.md \
+    --name ${AZURE_PATH}/Changelog_edgehog_${TAG_NAME}.md \
+    --overwrite
+
+cp .gitlab-ci/notification.json .
+job_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Job_report_edgehog_${TAG_NAME}.txt)"
+job_report="$(echo $job_report | sed -E 's/\s.*$//')"
+jq --arg job_var $job_report '.potentialAction[0].targets[0].uri = $job_var' notification.json >notification_1.json
+
+link_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Link_report_edgehog_${TAG_NAME}.txt)"
+link_report="$(echo $link_report | sed -E 's/\s.*$//')"
+jq --arg link_var $link_report '.potentialAction[1].targets[0].uri = $link_var' notification_1.json >notification_2.json
+
+changelog_report="$(az storage blob url --container-name $AZURE_CONTAINER_NAME --name ${AZURE_PATH}/Changelog_edgehog_${TAG_NAME}.md)"
+changelog_report="$(echo $changelog_report | sed -E 's/\s.*$//')"
+jq --arg changelog_var $changelog_report '.potentialAction[2].targets[0].uri = $changelog_var' notification_2.json >notification_3.json
+sed -i -E 's/\\"//g' notification_3.json
+
+jq --arg text "$(cat Job_message_edgehog_${TAG_NAME}.txt)" '.text = $text' notification_3.json >notification_4.json
+sed -i -E 's/\\n/ \\n\\n /g' notification_4.json
+
+curl -X POST -H "Content-Type: application/json" --data @notification_4.json $WEBHOOK
+
+cp Link_report_edgehog_${TAG_NAME}.txt Link_report.txt
+sed -i 's/\"//g' Link_report.txt
+
+echo "${changelog_report#?}" | cut -f1 -d"?" >changelog_link.txt