diff --git a/common.bash b/common.bash
index f61b220..3ef722b 100644
--- a/common.bash
+++ b/common.bash
@@ -1,3 +1,3 @@
 maintainer="tier"
 imagename="midpoint"
-tag="latest"
+tag="laboratory"
diff --git a/demo/complex2s/add-ref-groups.sh b/demo/complex2s/add-ref-groups.sh
old mode 100644
new mode 100755
index d35b173..a60c2f1
--- a/demo/complex2s/add-ref-groups.sh
+++ b/demo/complex2s/add-ref-groups.sh
@@ -1,3 +1,3 @@
 source ../../library.bash
 
-execute_gsh complex2_grouper_daemon_1 add-ref-groups.gsh
+execute_gsh complex2s_grouper_daemon_1 add-ref-groups.gsh
diff --git a/demo/complex2s/after-installation.sh b/demo/complex2s/after-installation.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/create-ref-loaders.sh b/demo/complex2s/create-ref-loaders.sh
old mode 100644
new mode 100755
index 627a186..39d690e
--- a/demo/complex2s/create-ref-loaders.sh
+++ b/demo/complex2s/create-ref-loaders.sh
@@ -1,3 +1,3 @@
 source ../../library.bash
 
-execute_gsh complex2_grouper_daemon_1 create-ref-loaders.gsh
+execute_gsh complex2s_grouper_daemon_1 create-ref-loaders.gsh
diff --git a/demo/complex2s/get-import-sis-persons-status.sh b/demo/complex2s/get-import-sis-persons-status.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/midpoint-objects/resources/resource-grouper.xml b/demo/complex2s/midpoint-objects/resources/resource-grouper.xml
index eab3832..eafe0ff 100644
--- a/demo/complex2s/midpoint-objects/resources/resource-grouper.xml
+++ b/demo/complex2s/midpoint-objects/resources/resource-grouper.xml
@@ -38,7 +38,7 @@
     </connectorRef>
     <connectorConfiguration>
         <icfc:configurationProperties>
-            <rest:baseUrl>https://192.168.56.101:9443</rest:baseUrl>
+            <rest:baseUrl>https://grouper-ws:443</rest:baseUrl>
             <rest:username>banderson</rest:username>
             <rest:password>password</rest:password>
             <rest:superGroup>etc:midpointGroups</rest:superGroup>
@@ -66,7 +66,7 @@
         <connectorConfiguration>
             <conf:sources>
                 <amqp091>
-                    <uri>amqp://192.168.56.101:5672</uri>
+                    <uri>amqp://mq:5672</uri>
                     <username>guest</username>
                     <password>guest</password>
                     <queue>sampleQueue</queue>
diff --git a/demo/complex2s/midpoint-objects/systemConfigurations/SystemConfiguration.xml b/demo/complex2s/midpoint-objects/systemConfigurations/SystemConfiguration.xml
index 4d8dba6..42f9af5 100644
--- a/demo/complex2s/midpoint-objects/systemConfigurations/SystemConfiguration.xml
+++ b/demo/complex2s/midpoint-objects/systemConfigurations/SystemConfiguration.xml
@@ -24,6 +24,72 @@
          <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</channel>
       </operationExecution>
       <globalSecurityPolicyRef xmlns:tns="http://midpoint.evolveum.com/xml/ns/public/common/common-3" oid="00000000-0000-0000-0000-000000000120" relation="org:default" type="tns:SecurityPolicyType"/>
+      <modelHooks>
+         <change>
+            <hook>
+               <name>Recompute affected users</name>
+               <state>final</state>
+               <focusType>OrgType</focusType>
+               <script>
+                  <code>
+                      import com.evolveum.midpoint.prism.delta.*
+                      import com.evolveum.midpoint.xml.ns._public.common.common_3.*
+                      import com.evolveum.midpoint.prism.path.*
+ 
+                      log.info('Starting Org change hook execution')
+
+                      affectedUsers = new HashSet()
+                        
+                      MEMBER_PATH = ItemPath.create(ObjectType.F_EXTENSION, 'member')
+                        
+                      for (delta in modelContext.allChanges) {
+                         if (delta.objectTypeClass == OrgType.class) {
+                            log.info('Found Org delta: {}', delta)
+                            if (delta.isDelete()) {
+                               addFromObject(affectedUsers, modelContext.focusContext.objectOld)
+                            } else {
+                               memberDelta = delta.findPropertyDelta(MEMBER_PATH)
+                               if (memberDelta != null) {
+                                  log.info('Found member delta: {}', memberDelta)
+                                  if (memberDelta.isReplace()) {
+                                     addFromObject(affectedUsers, modelContext.focusContext.objectOld)
+                                     addFromValues(affectedUsers, memberDelta.valuesToReplace)
+                                  } else {
+                                     addFromValues(affectedUsers, memberDelta.valuesToAdd)
+                                     addFromValues(affectedUsers, memberDelta.valuesToDelete)
+                                  }
+                               }
+                            }
+                         }
+                      }
+                      log.info('Affected users = {}', affectedUsers)
+                      for (userName in affectedUsers) {
+                         user = midpoint.searchObjectByName(UserType.class, userName)
+                         if (user != null) {
+                            midpoint.addRecomputeTrigger(user, null)
+                            log.info('Recompute trigger added to {}', user)
+                         } else {
+                            log.warn('User {} couldn\'t be found', userName)
+                         }
+                      }
+                      log.info('Finishing Org change hook execution')
+                        
+                      def addFromObject(users, object) {
+                         addFromValues(users, object?.findExtensionItem('member')?.values)
+                      }
+                      def addFromValues(users, values) {
+                         if (values != null) {
+                            for (value in values) {
+                               users.add(value.realValue)
+                            }
+                         }
+                      }
+                  </code>
+               </script>
+            </hook>
+         </change>
+      </modelHooks>
+
       <logging>
          <classLogger id="1">
             <level>ERROR</level>
diff --git a/demo/complex2s/mq/container_files/usr-local-bin/demo-entrypoint.sh b/demo/complex2s/mq/container_files/usr-local-bin/demo-entrypoint.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/mq/container_files/usr-local-bin/initialize-rabbitmq.sh b/demo/complex2s/mq/container_files/usr-local-bin/initialize-rabbitmq.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/recompute.sh b/demo/complex2s/recompute.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/show-queue-size.sh b/demo/complex2s/show-queue-size.sh
old mode 100644
new mode 100755
index 7749953..2687686
--- a/demo/complex2s/show-queue-size.sh
+++ b/demo/complex2s/show-queue-size.sh
@@ -1 +1 @@
-docker exec complex2_mq_1 rabbitmqctl list_queues
+docker exec complex2s_mq_1 rabbitmqctl list_queues
diff --git a/demo/complex2s/test-resource-grouper.sh b/demo/complex2s/test-resource-grouper.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/test-resources-1.sh b/demo/complex2s/test-resources-1.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/tests/resources/rabbitmq/check-samplequeue.sh b/demo/complex2s/tests/resources/rabbitmq/check-samplequeue.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/update-bgasper-in-grouper.sh b/demo/complex2s/update-bgasper-in-grouper.sh
old mode 100644
new mode 100755
index b849cbb..78d9912
--- a/demo/complex2s/update-bgasper-in-grouper.sh
+++ b/demo/complex2s/update-bgasper-in-grouper.sh
@@ -2,4 +2,4 @@
 
 source ../../library.bash
 
-execute_gsh complex2_grouper_daemon_1 update-bgasper-in-grouper.gsh
+execute_gsh complex2s_grouper_daemon_1 update-bgasper-in-grouper.gsh
diff --git a/demo/complex2s/upload-async-update-task.sh b/demo/complex2s/upload-async-update-task.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/upload-import-sis-persons.sh b/demo/complex2s/upload-import-sis-persons.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/upload-objects.sh b/demo/complex2s/upload-objects.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/upload-reconcile-grouper-groups.sh b/demo/complex2s/upload-reconcile-grouper-groups.sh
old mode 100644
new mode 100755
diff --git a/demo/complex2s/upload-reconcile-grouper-users.sh b/demo/complex2s/upload-reconcile-grouper-users.sh
old mode 100644
new mode 100755