diff --git a/runbot/models/batch.py b/runbot/models/batch.py
index 29717cb5..4e5f1d7e 100644
--- a/runbot/models/batch.py
+++ b/runbot/models/batch.py
@@ -286,6 +286,7 @@ class Batch(models.Model):
                 'commit_link_ids': [(6, 0, [commit_link_by_repos[repo.id].id for repo in trigger_repos])],
                 'modules': bundle.modules,
                 'dockerfile_id': dockerfile_id,
+                'create_batch_id': self.id,
             }
             params_value['builds_reference_ids'] = trigger._reference_builds(bundle)
 
diff --git a/runbot/models/build.py b/runbot/models/build.py
index 429367f6..f3e2f68a 100644
--- a/runbot/models/build.py
+++ b/runbot/models/build.py
@@ -49,6 +49,7 @@ class BuildParameters(models.Model):
     version_id = fields.Many2one('runbot.version', required=True, index=True)
     project_id = fields.Many2one('runbot.project', required=True, index=True)  # for access rights
     trigger_id = fields.Many2one('runbot.trigger', index=True)  # for access rights
+    create_batch_id = fields.Many2one('runbot.batch')
     category = fields.Char('Category', index=True)  # normal vs nightly vs weekly, ...
     dockerfile_id = fields.Many2one('runbot.dockerfile', index=True, default=lambda self: self.env.ref('runbot.docker_default', raise_if_not_found=False))
     skip_requirements = fields.Boolean('Skip requirements.txt auto install')
@@ -91,6 +92,8 @@ class BuildParameters(models.Model):
                 'dockerfile_id': param.dockerfile_id.id,
                 'skip_requirements': param.skip_requirements,
             }
+            if param.trigger_id.batch_dependent:
+                cleaned_vals['create_batch_id'] = param.create_batch_id.id,
             param.fingerprint = hashlib.sha256(str(cleaned_vals).encode('utf8')).hexdigest()
 
     @api.depends('commit_link_ids')
diff --git a/runbot/models/repo.py b/runbot/models/repo.py
index e0660abb..dad25628 100644
--- a/runbot/models/repo.py
+++ b/runbot/models/repo.py
@@ -43,6 +43,7 @@ class Trigger(models.Model):
     repo_ids = fields.Many2many('runbot.repo', relation='runbot_trigger_triggers', string="Triggers", domain="[('project_id', '=', project_id)]")
     dependency_ids = fields.Many2many('runbot.repo', relation='runbot_trigger_dependencies', string="Dependencies")
     config_id = fields.Many2one('runbot.build.config', string="Config", required=True)
+    batch_dependent = fields.Boolean('Batch Dependent', help="Force adding batch in build parameters to make it unique and give access to bundle")
 
     ci_context = fields.Char("Ci context", default='ci/runbot', tracking=True)
     category_id = fields.Many2one('runbot.category', default=lambda self: self.env.ref('runbot.default_category', raise_if_not_found=False))
diff --git a/runbot/views/build_views.xml b/runbot/views/build_views.xml
index c2bf7528..76578c9c 100644
--- a/runbot/views/build_views.xml
+++ b/runbot/views/build_views.xml
@@ -16,6 +16,9 @@
                                 <field name="match_type"/>
                             </tree>
                         </field>
+                        <field name="trigger_id"/>
+                        <field name="create_batch_id"/>
+                        <field name="dockerfile_id"/>
                     </group>
                 </sheet>
             </form>
diff --git a/runbot/views/repo_views.xml b/runbot/views/repo_views.xml
index 2a41b090..98eba586 100644
--- a/runbot/views/repo_views.xml
+++ b/runbot/views/repo_views.xml
@@ -17,6 +17,7 @@
                 <field name="repo_ids"/>
                 <field name="dependency_ids"/>
                 <field name="config_id"/>
+                <field name="batch_dependent"/>
                 <field name="version_domain" widget="domain" options="{'model': 'runbot.version', 'in_dialog': True}"/>
                 <field name="hide"/>
                 <field name="manual"/>