diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_simulation/SimulationMovement_buildSlapOS.py b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_simulation/SimulationMovement_buildSlapOS.py
index 34779781a8dadb9c27e6246c31c22aca749d1c1a..cea5ac70a94f98f1fc965877a65dc85df502fcac 100644
--- a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_simulation/SimulationMovement_buildSlapOS.py
+++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_simulation/SimulationMovement_buildSlapOS.py
@@ -6,6 +6,8 @@ root_applied_rule = context.getRootAppliedRule()
 root_applied_rule_path = root_applied_rule.getPath()
 
 business_link = context.getCausalityValue(portal_type='Business Link')
+if business_link is None:
+  raise ValueError('Movement without business link: %s' % context.getRelativeUrl())
 lock_tag = 'build_in_progress_%s_%s' % (business_link.getUid(), root_applied_rule.getUid())
 if context.getPortalObject().portal_activities.countMessageWithTag(lock_tag) == 0:
   business_link.build(path='%s/%%' % root_applied_rule_path, activate_kw={'tag': tag})