diff --git a/manifest-pipeline-yocto.yml b/manifest-pipeline-yocto.yml
index e09a2c6922f262b5b996d3699c7c3175c2aee328..c147f41469110e64f48713cc0a2d9ac3d527b56b 100644
--- a/manifest-pipeline-yocto.yml
+++ b/manifest-pipeline-yocto.yml
@@ -18,11 +18,26 @@ variables:
 
   # Projects to include in the changelog in addition to the manifest project
   CHANGELOG_PROJECTS:
+    edgehog/bsp/nxp/linux-seco-imx
+    edgehog/bsp/nxp/u-boot-seco-imx
+    edgehog/bsp/nxp/tools/imx-mkimage
+    edgehog/bsp/rockchip/linux-seco-rk
+    edgehog/bsp/rockchip/u-boot-seco-rk
+    edgehog/bsp/rockchip/tools/rk-tools
+    edgehog/bsp/rockchip/tools/rkbin
+    edgehog/tools/menuconfig
+    edgehog/tools/seco-eeprom-manager
+    edgehog/seco-base
+    edgehog/firmware/tools/STM_D23_Tester
     edgehog/layers/seco/meta-seco-imx
     edgehog/layers/seco/meta-seco-rk
     edgehog/layers/seco/meta-seco-intel
     edgehog/layers/seco/meta-seco-edgehog-things
     edgehog/layers/seco/meta-seco-edgehog-embedded
+    edgehog/layers/seco/meta-seco-rpi
+    edgehog/layers/seco/meta-seco-bsp
+    edgehog/layers/seco/meta-seco-core
+    edgehog/layers/seco/meta-seco-edgehog
     edgehog/layers/external/poky
   IMAGES_PATH: "tmp/deploy/images"
   TAG_NAME: weekly
diff --git a/scripts/changelog_generator.py b/scripts/changelog_generator.py
index 89a774502b003044fc5ef28b17e488a661892a39..904bced86dc0a977d06497e0fb44f2667fe6ad0b 100755
--- a/scripts/changelog_generator.py
+++ b/scripts/changelog_generator.py
@@ -38,6 +38,35 @@ def decode_timestamp(t):
     timestamp = datetime.datetime.strptime(t, GITLAB_TIMEFORMAT)
     return timestamp
 
+def get_project_branch_from_integration(gitlab, project_path, manifest_branch):
+
+    # Get project ID from project path
+    project_id = gitlab.projects.get(project_path).id
+
+    # Get CICD variables for the project
+    variables = gitlab.projects.get(project_id).variables.list()
+
+    # Initialize dictionary to store project branches corresponding to manifest branches
+    branch_project_dict = {}
+
+    # Parse INTEGRATION variable and extract 
+    for variable in variables:
+        if variable.key == 'INTEGRATION':
+            integration_value = variable.value.split('\n')
+            for line in integration_value:
+                parts = line.split(':')
+                branch_project, manifest, branch_manifest = parts
+                if branch_manifest == manifest_branch:
+                    if branch_manifest not in branch_project_dict:
+                        branch_project_dict[branch_manifest] = []
+                    branch_project_dict[branch_manifest].append(branch_project)
+    
+    # If INTEGRATION variable is not defined or no matching branch_project found, use manifest_branch as branch_project
+    if not branch_project_dict:
+        branch_project_dict = {manifest_branch: [manifest_branch]}
+
+    # Return branch_projects corresponding to branch_manifest
+    return branch_project_dict.get(manifest_branch, [])
 
 class Project:
     def __init__(self, project):
@@ -272,23 +301,27 @@ def main(args):
     releases = sorted(releases, key=lambda d: d.tag.timestamp, reverse=False)
 
     for p in projects:
-        for mr in p.project.mergerequests.list(
-            scope="all", state="merged", target_branch=options.branch, per_page="10000"
-        ):
-            m = MergeRequest(mr, p)
-            for r in releases:
-                if r.add_mergerequest(m):
-                    break
-
-        #Iterate again over MR because of the kirkstone/develop -> kirkstone changement
-        old_branch="kirkstone/develop"
-        for mr in p.project.mergerequests.list(
-            scope="all", state="merged", target_branch=old_branch, per_page="10000"
-        ):
-            m = MergeRequest(mr, p)
-            for r in releases:
-                if r.add_mergerequest(m):
-                    break
+        project_namespace=p.project.path_with_namespace
+        branch_list=get_project_branch_from_integration(gitlab, project_namespace, options.branch)
+        for branch in branch_list:
+            #print(f"For this project {project_namespace} we search for the MRs on this branch {branch}")
+            for mr in p.project.mergerequests.list(
+                scope="all", state="merged", target_branch=branch, per_page="10000"
+            ):
+                m = MergeRequest(mr, p)
+                for r in releases:
+                    if r.add_mergerequest(m):
+                        break
+    
+            #Iterate again over MR because of the kirkstone/develop -> kirkstone changement
+            old_branch="kirkstone/develop"
+            for mr in p.project.mergerequests.list(
+                scope="all", state="merged", target_branch=old_branch, per_page="10000"
+            ):
+                m = MergeRequest(mr, p)
+                for r in releases:
+                    if r.add_mergerequest(m):
+                        break
 
     # Sort by date, newest first
     releases = sorted(releases, key=lambda d: d.tag.timestamp, reverse=True)