diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8bf89596464dd07f1a9fa33e96aa28e9ee4d7d54..572ab66c5708b1e5579b33c84cb7d1e3b74f43b2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,7 +18,6 @@ variables:
       For instance use `*` to process all updates, `dash` to only process `pkg/dash`.
       Leave it empty to not trigger any update.
     value: ""
-  DASHBOARD_DATA: https://infrastructure.pages.apertis.org/dashboard/packaging.yaml
 
 stages:
   - lint
@@ -87,15 +86,17 @@ packaging-data-fetch-downstream:
         wget
   script:
     - CACHE_ARGS=""
+    - ARTIFACT_URL=${ARTIFACT_URL:-$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_DEFAULT_BRANCH/raw/public/packaging.yaml?job=pages}
     - |
-      if [ -n "$DASHBOARD_DATA" ]
+      if [ "$ARTIFACT_URL" != none ]
       then
-        wget "$DASHBOARD_DATA" -O packaging.yaml || true
+        wget --header "JOB-TOKEN: $CI_JOB_TOKEN" "$ARTIFACT_URL" -O cache.yaml
       fi
     - |
-      if [ -f packaging.yaml ]
+      if [ -e cache.yaml ]
       then
-        CACHE_ARGS="--cache packaging.yaml"
+        echo Load cacheable data from cache.yaml 
+        CACHE_ARGS="--cache cache.yaml"
       fi
     - ./bin/packaging-data-fetch-downstream
         --gitlab-api-token "${DASHBOARD_GITLAB_API_TOKEN}"
diff --git a/localtest b/localtest
index 336b9634c77fd169695b1758bca9c83ebec5ade2..8e6deb3806f4cff0a6e6b2fd4692013d9d66eb96 100755
--- a/localtest
+++ b/localtest
@@ -42,6 +42,7 @@ if __name__ == "__main__":
 
     print("set -eux")
     print(f"FILTER=pkg/{args.filter_packages or '*'}")
+    print("ARTIFACT_URL=none")
     print("TRIGGER_UPDATES=")
     print("TRIGGER_FROM_JOB=")
     print("DASHBOARD_OSCRC=")
@@ -49,6 +50,7 @@ if __name__ == "__main__":
     print("CI_SERVER_URL=")
     print("CI_PROJECT_URL=")
     print("CI_JOB_URL=")
+    print("CI_JOB_TOKEN=")
     print("CI_PIPELINE_URL=")
     print("CI_COMMIT_REF_NAME=wip/test")
     if args.loglevel == logging.DEBUG: