diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9a4503b9a97cac430cab9d2b052a92a5f70f6191..487fb51a375ee628f6abe1d3c9360f705e977fd4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,8 +18,8 @@ default:
 
 stages:
   - analyze
-  - deploy-test
   - deploy
+  - integrate
 
 workflow:
   rules:
@@ -58,58 +58,83 @@ yamllint:
 # Stage: deploy-test
 # ---------------------------------------------------------------------------------------
 deploy-foobar-manifest:
-  stage: deploy-test
-  # when: manual
-  allow_failure: true
+  stage: deploy
+  variables:
   script:
     - cd ${CI_PROJECT_DIR}
-    - if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then MERGE="--merge"; else MERGE=""; fi
     - PROJECT_ROOT="${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/ci-test"
     - ./deploy_gitlab_ci.py
       --gitlab-url=${CI_SERVER_URL}
       --token=${GITBOT_TOKEN}
       --submodule=.gitlab-ci
       --revision=${CI_COMMIT_SHA}
-      ${MERGE}
       --manifest-project=${PROJECT_ROOT}/minimal-manifest
       ${PROJECT_ROOT}/minimal-foo
       ${PROJECT_ROOT}/minimal-bar
+    - ./create_gitlab_ci_jobs.py
+      --branch="integrate/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}"
+      --manifest-project=${PROJECT_ROOT}/minimal-manifest
+      ${PROJECT_ROOT}/minimal-foo
+      ${PROJECT_ROOT}/minimal-bar
+      > integration-jobs.yml
+  artifacts:
+    paths:
+      - integration-jobs.yml
+
+
+trigger-child:
+  stage: integrate
+  trigger:
+    include:
+      - artifact: integration-jobs.yml
+        job: deploy-foobar-manifest
+
+
+#     project: SECO-Northern-Europe/yocto/infrastructure/ci-test/minimal-bar
+#     branch: "integrate/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}"
+#     strategy: depend
+#
+# minimal-bar: *integrate
+# minimal-foo: *integrate
+
 
 # ---------------------------------------------------------------------------------------
 # Stage: deploy
 # ---------------------------------------------------------------------------------------
-.deploy: &deploy
-  stage: deploy
-  when: manual
-  allow_failure: true
-  script:
-    - cd ${CI_PROJECT_DIR}
-    - if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then MERGE="--merge"; else MERGE=""; fi
-    - ./deploy_gitlab_ci.py
-      --gitlab-url=${CI_SERVER_URL}
-      --token=${GITBOT_TOKEN}
-      --project=${CI_PROJECT_ROOT_NAMESPACE}/${CI_JOB_NAME}
-      --submodule=.gitlab-ci
-      --revision=${CI_COMMIT_SHA}
-      ${MERGE}
-
-3rd-party/kuk/uboot-imx-kuk: *deploy
-kernel/linux-guf: *deploy
-kernel/linux-imx-kuk: *deploy
-kernel/modules/egalaxi2c: *deploy
-kernel/modules/gfplatdetect: *deploy
-tools/gf-emc-test-suite: *deploy
-tools/gf-productiontests: *deploy
-tools/gfeeprom: *deploy
-tools/gfxml2dto: *deploy
-tools/guf-show-demo: *deploy
-tools/libmdb: *deploy
-tools/touchcal-conv: *deploy
-tools/xconfig: *deploy
-yocto/config: *deploy
-yocto/infrastructure/ci-test/minimal-bar: *deploy
-yocto/infrastructure/ci-test/minimal-foo: *deploy
-yocto/infrastructure/ci-test/minimal-manifest: *deploy
-yocto/layers/meta-guf-distro: *deploy
-yocto/layers/meta-guf-machine: *deploy
-yocto/manifest: *deploy
+# .deploy: &deploy
+#   stage: deploy
+#   when: manual
+#   allow_failure: true
+#   script:
+#     - cd ${CI_PROJECT_DIR}
+#     - if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then MERGE="--merge";
+#          else MERGE=""; fi
+#     - ./deploy_gitlab_ci.py
+#       --gitlab-url=${CI_SERVER_URL}
+#       --token=${GITBOT_TOKEN}
+#       --project=${CI_PROJECT_ROOT_NAMESPACE}/${CI_JOB_NAME}
+#       --submodule=.gitlab-ci
+#       --revision=${CI_COMMIT_SHA}
+#       ${MERGE}
+#
+
+# 3rd-party/kuk/uboot-imx-kuk: *deploy
+# kernel/linux-guf: *deploy
+# kernel/linux-imx-kuk: *deploy
+# kernel/modules/egalaxi2c: *deploy
+# kernel/modules/gfplatdetect: *deploy
+# tools/gf-emc-test-suite: *deploy
+# tools/gf-productiontests: *deploy
+# tools/gfeeprom: *deploy
+# tools/gfxml2dto: *deploy
+# tools/guf-show-demo: *deploy
+# tools/libmdb: *deploy
+# tools/touchcal-conv: *deploy
+# tools/xconfig: *deploy
+# yocto/config: *deploy
+# yocto/infrastructure/ci-test/minimal-bar: *deploy
+# yocto/infrastructure/ci-test/minimal-foo: *deploy
+# yocto/infrastructure/ci-test/minimal-manifest: *deploy
+# yocto/layers/meta-guf-distro: *deploy
+# yocto/layers/meta-guf-machine: *deploy
+# yocto/manifest: *deploy
diff --git a/create_gitlab-ci_jobs.py b/create_gitlab-ci_jobs.py
new file mode 100755
index 0000000000000000000000000000000000000000..cdffe2da7d26672954e663b399c48302ac248289
--- /dev/null
+++ b/create_gitlab-ci_jobs.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+import argparse
+import logging
+import sys
+
+from ruamel.yaml import YAML
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        "--project",
+        "--manifest-project",
+        help="""name of the GitLab project""",
+        dest="project",
+    )
+    parser.add_argument(
+        "--branch",
+        help="""integration branch""",
+        dest="branch",
+        required=True,
+    )
+    parser.add_argument(
+        "--merge",
+        help="""if set, perform merge after integration""",
+        dest="merge",
+        action="store_true",
+        required=False,
+        default=False,
+    )
+    parser.add_argument(
+        "projects",
+        help="""List of projects the change should be deployed to additionally
+                to the manifest project given as named parameter.""",
+        nargs="*",
+    )
+    parser.add_argument(
+        "-v",
+        "--verbose",
+        action="store_true",
+        help="""Increase verbosity.""",
+    )
+
+    args, _ = parser.parse_known_args()
+    if args.verbose:
+        logging.basicConfig(level=logging.DEBUG)
+
+    logging.debug("Integrate into: %s", args.project)
+
+    d = dict()
+    integration_jobs = []
+    for p in args.projects:
+        jobname = "integrate-{}".format(p.split("/")[-1])
+        integration_jobs.append(jobname)
+        d[jobname] = {
+            "stage": "integrate",
+            "trigger": {
+                "include": {
+                    "project": p,
+                    "branch": args.branch,
+                    "strategy": "depend",
+                }
+            },
+        }
+        logging.debug(d)
+
+    yaml = YAML()
+    yaml.dump(d, sys.stdout)
+
+
+if __name__ == "__main__":
+    main()