diff --git a/manifest-pipeline-yocto.yml b/manifest-pipeline-yocto.yml
index ef82378a5b24128bab44331c3e834d2c904d8ba9..58f13284ad912dbcf9dbe20000ef45a14106e4cb 100644
--- a/manifest-pipeline-yocto.yml
+++ b/manifest-pipeline-yocto.yml
@@ -194,6 +194,9 @@ retrigger:
          if [ ${CI_PIPELINE_SOURCE} == "pipeline" ]; then
             BUILD_BRANCH="${CI_COMMIT_REF_NAME}"
          fi
+         if [ ${CI_PIPELINE_SOURCE} == "schedule" ]; then
+            BUILD_BRANCH="${CI_COMMIT_BRANCH}"
+         fi
          echo "This is the manifest repository URL used for the build: ${CI_REPOSITORY_URL}"
          echo "This is the manifest branch used for the build: ${BUILD_BRANCH}"
          echo "This is the board for which the build will be performed: ${BOARD}"
@@ -201,46 +204,13 @@ retrigger:
          echo "This is the image name will be assigned to software artifacts: ${IMAGE_NAME}"
       - |
         su secous -c "
-        git config --global url.https://github.com/.insteadOf git://github.com/
-        git config --global url.https://gitlab-ci-token:${GITBOT_TOKEN}@git.seco.com/.insteadOf https://git.seco.com/
-        repo init -u ${CI_REPOSITORY_URL} -b ${BUILD_BRANCH}; 
-        repo sync -j$(nproc) --fetch-submodules;
+        sh scripts/build_setup.sh $GITBOT_TOKEN $CI_REPOSITORY_URL $BUILD_BRANCH $DEFCONFIG_FILE $RECIPE_NAME
         . ./seco-setup.sh -d ${DEFCONFIG_FILE};
         . ./seco-setup.sh -c;
-        if [ -z "$CI_COMMIT_TAG" ]; then
-            sed -i -e '/DL_DIR ?=/d' conf/local.conf;
-            echo 'DL_DIR = \"/var/cache/edgehog_downloads\"' >> conf/local.conf;
-            if [[ $PROCESSOR == *imx6* && "$CI_JOB_NAME" != *"embedded"* ]]; 
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx6\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *imx8* && "$CI_JOB_NAME" != *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx8\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *rk* && "$CI_JOB_NAME" != *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-rk\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *intel* && "$CI_JOB_NAME" != *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-intel\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *imx6* && "$CI_JOB_NAME" == *"embedded"* ]]; 
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx6-embedded\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *imx8* && "$CI_JOB_NAME" == *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx8-embedded\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *rk* && "$CI_JOB_NAME" == *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-rk-embedded\"' >> conf/local.conf;
-            elif [[ $PROCESSOR == *intel* && "$CI_JOB_NAME" == *"embedded"* ]];
-              then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-intel-embedded\"' >> conf/local.conf;
-            fi;
-        fi; 
-        echo '###############################'
-        echo '#### Displaying local.conf ####'
-        echo '###############################'
-        cat conf/local.conf
+        sh scripts/yocto_cache_setup.sh $PROCESSOR
         time bitbake ${RECIPE_NAME};
         if [[ "$CI_JOB_NAME" != *"embedded"* ]]; then time bitbake seco-bundle-edgehog; fi;
         "
-      - ls -la
-      - pwd
-      - echo "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE"
-      - ls -la "$BUILD_DIRECTORY"
-      - ls -la "$BUILD_DIRECTORY/$IMAGES_PATH/"
-      - ls -la "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE"
       - echo "$BUILD_DIRECTORY/$IMAGES_PATH/$MACHINE" > $BASEDIR/pathname.txt
   
   after_script:
diff --git a/scripts/build_setup.sh b/scripts/build_setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1529ea072c1daef839b4481884015ece4472b343
--- /dev/null
+++ b/scripts/build_setup.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+GITBOT_TOKEN=$1
+CI_REPOSITORY_URL=$2
+BUILD_BRANCH=$3
+DEFCONFIG_FILE=$4
+RECIPE_NAME=$5
+
+git config --global url.https://github.com/.insteadOf git://github.com/
+git config --global url.https://gitlab-ci-token:${GITBOT_TOKEN}@git.seco.com/.insteadOf https://git.seco.com/
+repo init -u ${CI_REPOSITORY_URL} -b ${BUILD_BRANCH}
+repo sync -j$(nproc) --fetch-submodules --no-clone-bundle
+
+RECIPES="u-boot-seco-rk linux-seco-rk u-boot-seco-imx linux-seco-imx imx-mkimage"
+for str in $RECIPES; do
+    if echo "$BUILD_BRANCH" | grep -q "$str"; then 
+        filename=$(find layers/meta-seco-imx layers/meta-seco-rk -name "*$str*" -type f -exec grep -l "SRCBRANCH = " {} \;)
+        echo $filename
+        RECIPE_BRANCH=$(echo "$BUILD_BRANCH" | sed "s|.*$str/||"i | sed 's/\/into.*//')
+        sed -i "s/\(SRCBRANCH = \).*/\1\"$(echo "$RECIPE_BRANCH" | sed 's/[\/&]/\\&/g')\"/" $filename
+        cat $filename
+    fi
+done
\ No newline at end of file
diff --git a/scripts/yocto_cache_setup.sh b/scripts/yocto_cache_setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2742283cbfc05998f317386fbbcadec83b6d99af
--- /dev/null
+++ b/scripts/yocto_cache_setup.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+PROCESSOR=$1
+
+sed -i -e '/DL_DIR ?=/d' conf/local.conf;
+echo 'DL_DIR = \"/var/cache/edgehog_downloads\"' >> conf/local.conf;
+if [[ $PROCESSOR == *imx6* ]]; 
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx6\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *imx8* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-imx8\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *rk* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-rk\"' >> conf/local.conf;
+elif [[ $PROCESSOR == *intel* ]];
+  then echo 'SSTATE_DIR = \"/var/cache/edgehog_sstate-intel\"' >> conf/local.conf;
+fi
+
+echo '###############################'
+echo '#### Displaying local.conf ####'
+echo '###############################'
+cat conf/local.conf
\ No newline at end of file