diff --git a/README.md b/README.md
index d7d1736..52d9733 100644
--- a/README.md
+++ b/README.md
@@ -15,16 +15,15 @@ The image contains the midPoint application along with some TIER-specific compon
   - `shibboleth` to show integration with Shibboleth IdP,
   - `postgresql` to show how to use alternative dockerized repository,
   - `extrepo` to show how to use external repository,
-  - `complex` to demonstrate more complex deployment of midPoint in a sample university environment, featuring midPoint along with Grouper, LDAP directory, RabbitMQ, Shibboleth IdP, source and target systems.
+  - `grouper` to demonstrate more complex deployment of midPoint in a sample university environment, featuring midPoint along with Grouper, LDAP directory, RabbitMQ, Shibboleth IdP, source and target systems.
 
 # Build instructions
 ```
 $ ./build.sh
 ```
-You can then continue with one of demo composition, e.g. simple or complex one.
+You can then continue with one of demo composition.
 
 # Documentation
 Please see [Dockerized midPoint](https://spaces.at.internet2.edu/display/MID/Dockerized+midPoint) wiki page.
 
 This is a work in progress, suitable for testing.
-For details on the project, see [Status of the work](https://spaces.at.internet2.edu/display/MID/Status+of+the+work).
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-academic-person.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-academic-person.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-academic-person.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-academic-person.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-affiliation.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-affiliation.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-affiliation.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-affiliation.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-course.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-course.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-course.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-course.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-department.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-department.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-department.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-department.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-generic-grouper-group.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-generic-grouper-group.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-generic-grouper-group.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-generic-grouper-group.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-mailing-list.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-mailing-list.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-mailing-list.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-mailing-list.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-midpoint-group.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-midpoint-group.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-midpoint-group.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-midpoint-group.xml
diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-non-academic-person.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-non-academic-person.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/archetypes/archetype-non-academic-person.xml
rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-non-academic-person.xml
diff --git a/demo/grouper/midpoint-objects/functionLibraries/function-library-grouper.xml b/demo/grouper/midpoint-objects (obsolete)/functionLibraries/function-library-grouper.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/functionLibraries/function-library-grouper.xml
rename to demo/grouper/midpoint-objects (obsolete)/functionLibraries/function-library-grouper.xml
diff --git a/demo/grouper/midpoint-objects/objectTemplates/template-user.xml b/demo/grouper/midpoint-objects (obsolete)/objectTemplates/template-user.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/objectTemplates/template-user.xml
rename to demo/grouper/midpoint-objects (obsolete)/objectTemplates/template-user.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-affiliations.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-affiliations.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-affiliations.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-affiliations.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-courses.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-courses.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-courses.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-courses.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-departments.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-departments.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-departments.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-departments.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-generic-groups.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-generic-groups.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-generic-groups.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-generic-groups.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-grouper-sysadmin.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-grouper-sysadmin.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-grouper-sysadmin.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-grouper-sysadmin.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-mailing-lists.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-mailing-lists.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-mailing-lists.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-mailing-lists.xml
diff --git a/demo/grouper/midpoint-objects/orgs/org-midpoint-groups.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-midpoint-groups.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/orgs/org-midpoint-groups.xml
rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-midpoint-groups.xml
diff --git a/demo/grouper/midpoint-objects/resources/ldap-main.xml b/demo/grouper/midpoint-objects (obsolete)/resources/ldap-main.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/ldap-main.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/ldap-main.xml
diff --git a/demo/grouper/midpoint-objects/resources/resource-grouper.xml b/demo/grouper/midpoint-objects (obsolete)/resources/resource-grouper.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/resource-grouper.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/resource-grouper.xml
diff --git a/demo/grouper/midpoint-objects/resources/scriptedsql-sis-persons.xml b/demo/grouper/midpoint-objects (obsolete)/resources/scriptedsql-sis-persons.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/scriptedsql-sis-persons.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/scriptedsql-sis-persons.xml
diff --git a/demo/grouper/midpoint-objects/resources/target-cs-portal.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-cs-portal.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/target-cs-portal.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/target-cs-portal.xml
diff --git a/demo/grouper/midpoint-objects/resources/target-faculty-portal.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-faculty-portal.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/target-faculty-portal.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/target-faculty-portal.xml
diff --git a/demo/grouper/midpoint-objects/resources/target-mailing-lists.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-mailing-lists.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/resources/target-mailing-lists.xml
rename to demo/grouper/midpoint-objects (obsolete)/resources/target-mailing-lists.xml
diff --git a/demo/grouper/midpoint-objects/roles/metarole-grouper-provided-group.xml b/demo/grouper/midpoint-objects (obsolete)/roles/metarole-grouper-provided-group.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/roles/metarole-grouper-provided-group.xml
rename to demo/grouper/midpoint-objects (obsolete)/roles/metarole-grouper-provided-group.xml
diff --git a/demo/grouper/midpoint-objects/roles/metarole-ldap-group.xml b/demo/grouper/midpoint-objects (obsolete)/roles/metarole-ldap-group.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/roles/metarole-ldap-group.xml
rename to demo/grouper/midpoint-objects (obsolete)/roles/metarole-ldap-group.xml
diff --git a/demo/grouper/midpoint-objects/roles/role-ldap-basic.xml b/demo/grouper/midpoint-objects (obsolete)/roles/role-ldap-basic.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/roles/role-ldap-basic.xml
rename to demo/grouper/midpoint-objects (obsolete)/roles/role-ldap-basic.xml
diff --git a/demo/grouper/midpoint-objects/systemConfigurations/SystemConfiguration.xml b/demo/grouper/midpoint-objects (obsolete)/systemConfigurations/SystemConfiguration.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/systemConfigurations/SystemConfiguration.xml
rename to demo/grouper/midpoint-objects (obsolete)/systemConfigurations/SystemConfiguration.xml
diff --git a/demo/grouper/midpoint-objects/tasks/task-group-scavenger.xml b/demo/grouper/midpoint-objects (obsolete)/tasks/task-group-scavenger.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/tasks/task-group-scavenger.xml
rename to demo/grouper/midpoint-objects (obsolete)/tasks/task-group-scavenger.xml
diff --git a/demo/grouper/midpoint-objects/users/user-banderson.xml b/demo/grouper/midpoint-objects (obsolete)/users/user-banderson.xml
similarity index 100%
rename from demo/grouper/midpoint-objects/users/user-banderson.xml
rename to demo/grouper/midpoint-objects (obsolete)/users/user-banderson.xml
diff --git a/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml b/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml
index b59f5d7..c3ddcda 100644
--- a/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml
+++ b/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml
@@ -25,7 +25,7 @@
 	<name>Grouper reconciliation (groups)</name>
 	<extension xmlns:mext="http://midpoint.evolveum.com/xml/ns/public/model/extension-3"
 			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="c:ExtensionType">
-		<mext:objectclass>ri:CustomPlainGroupObjectClass</mext:objectclass>
+		<mext:objectclass>ri:Group</mext:objectclass>
 	</extension>
 	<taskIdentifier>605a0127-a313-442a-9d5e-151eac8b0745</taskIdentifier>
 	<ownerRef oid="00000000-0000-0000-0000-000000000002" relation="org:default" type="c:UserType">
diff --git a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar
deleted file mode 100644
index b072d05..0000000
Binary files a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar and /dev/null differ
diff --git a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar
new file mode 100644
index 0000000..8418d8d
Binary files /dev/null and b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar differ
diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml
index 9ebd543..c9bd2ae 100644
--- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml
+++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml
@@ -78,12 +78,16 @@
 				import static com.evolveum.midpoint.schema.constants.SchemaConstants.*
 				import com.evolveum.midpoint.schema.util.*
 				import com.evolveum.midpoint.prism.path.*
-                import com.evolveum.midpoint.schema.constants.*
-                import com.evolveum.midpoint.prism.delta.*
+                		import com.evolveum.midpoint.schema.constants.*
+                		import com.evolveum.midpoint.prism.delta.*
                 
-                PLAIN_GROUP_OBJECT_CLASS = new ItemName(MidPointConstants.NS_RI, 'CustomPlainGroupObjectClass')
-                TRIGGER_FIRE_AFTER = 60000
-                TRIGGER_SAFETY_MARGIN = 10000
+                		GROUP_OBJECT_CLASS = new ItemName(MidPointConstants.NS_RI, 'Group')
+                		ATTR_NAME = new ItemName(MidPointConstants.NS_RI, 'name')
+                		ATTR_UUID = new ItemName(MidPointConstants.NS_RI, 'uuid')
+                		ATTR_MEMBER = new ItemName(MidPointConstants.NS_RI, 'member')
+
+                		TRIGGER_FIRE_AFTER = 60000
+                		TRIGGER_SAFETY_MARGIN = 10000
 
 				esbEvent = midpoint.getMessageBodyAsMap(message)['esbEvent'][0]
 				log.info('esbEvent = {}', esbEvent)
@@ -94,11 +98,11 @@
 						log.warn('No group name in membership change message, ignoring it: {}', esbEvent)
 						return null
 					}
-                    groupId = esbEvent['groupId']
-                    if (groupId == null) {
-                        log.warn('No group ID in membership change message, ignoring it: {}', esbEvent)
-                        return null
-                    }
+					groupId = esbEvent['groupId']
+					if (groupId == null) {
+						log.warn('No group ID in membership change message, ignoring it: {}', esbEvent)
+						return null
+					}
 					isExported = matches(groupName, groupIncludePattern, groupExcludePattern)
 					if (!isExported) {
 						log.info('Irrelevant group membership change, ignoring it: {}', groupName)
@@ -110,29 +114,29 @@
 						return null
 					}
 					subjectId = esbEvent['subjectId']
-                    if (subjectId == null) {
-                        log.info('Null subject ID in membership change message, ignoring it: {}', sourceId)
-                        return null
-                    }
+					if (subjectId == null) {
+						log.info('Null subject ID in membership change message, ignoring it: {}', sourceId)
+						return null
+					}
 					log.info('### {} - {} - {}', subjectId, eventType, groupName)
 					identifiers = new HashMap()
-					identifiers.put(ICFS_NAME, groupName)
-					identifiers.put(ICFS_UID, groupId)
+					identifiers.put(ATTR_NAME, groupName)
+					identifiers.put(ATTR_UUID, groupId)
 					ObjectDeltaType delta
 					itemDelta = new ItemDeltaType()
 					itemDelta.modificationType = eventType == 'MEMBERSHIP_ADD' ? ModificationTypeType.ADD : ModificationTypeType.DELETE
-					itemDelta.path = new ItemPathType(ItemPath.create(ShadowType.F_ATTRIBUTES, 'member'))
+					itemDelta.path = new ItemPathType(ItemPath.create(ShadowType.F_ATTRIBUTES, ATTR_MEMBER))
 					itemDelta.value.add(RawType.fromPropertyRealValue(subjectId, null, prismContext))
 					delta = new ObjectDeltaType()
 					delta.changeType = ChangeTypeType.MODIFY
 					delta.itemDelta.add(itemDelta)
                     
-                    added = midpoint
-                            .getOptimizingTriggerCreator(TRIGGER_FIRE_AFTER, TRIGGER_SAFETY_MARGIN)
-                            .createForNamedUser(subjectId)
-                    log.info('Recompute trigger for {}: {}', subjectId, added ? 'added' : 'not added (already present or user not found)')
+                    			added = midpoint
+                            			.getOptimizingTriggerCreator(TRIGGER_FIRE_AFTER, TRIGGER_SAFETY_MARGIN)
+                            			.createForNamedUser(subjectId)
+                    			log.info('Recompute trigger for {}: {}', subjectId, added ? 'added' : 'not added (already present or user not found)')
                     
-					return UcfChangeUtil.create(PLAIN_GROUP_OBJECT_CLASS, identifiers, delta, prismContext)
+					return UcfChangeUtil.create(GROUP_OBJECT_CLASS, identifiers, delta, prismContext)
 				} else if (eventType == 'GROUP_ADD' || eventType == 'GROUP_DELETE') {
 					groupName = esbEvent['name']
 					groupId = esbEvent['id']
@@ -142,8 +146,8 @@
 						return null
 					}
 					identifiers = new HashMap()
-					identifiers.put(ICFS_NAME, groupName)
-					identifiers.put(ICFS_UID, groupId)
+					identifiers.put(ATTR_NAME, groupName)
+					identifiers.put(ATTR_UUID, groupId)
 					ObjectDeltaType delta
 					if (eventType == 'GROUP_DELETE') {
 						delta = new ObjectDeltaType()
@@ -151,7 +155,7 @@
 					} else {
 						delta = null
 					}
-					return UcfChangeUtil.create(PLAIN_GROUP_OBJECT_CLASS, identifiers, delta, prismContext)
+					return UcfChangeUtil.create(GROUP_OBJECT_CLASS, identifiers, delta, prismContext)
 				} else {
 					log.warn('Unsupported event type: {} -> {}', eventType, esbEvent)
 					return null
diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml
index abfe97d..11fc705 100644
--- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml
+++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml
@@ -32,15 +32,15 @@
             <rest:baseUrl>https://grouper-ws:443</rest:baseUrl>
             <rest:username>banderson</rest:username>
             <rest:password>password</rest:password>
-            <rest:superGroup>etc:sysadmingroup</rest:superGroup>		<!-- parameter name will be changed -->
+            <rest:testStem>:</rest:testStem>
+            <!-- no testGroup: we cannot be sure that banderson is a member of sysadmingroup when doing the first test -->
+            <rest:exportStem>:</rest:exportStem>
             <rest:groupIncludePattern>app:.*</rest:groupIncludePattern>
             <rest:groupIncludePattern>test:.*</rest:groupIncludePattern>
             <rest:groupIncludePattern>ref:.*</rest:groupIncludePattern>
             <rest:groupExcludePattern>.*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes)</rest:groupExcludePattern>
             <rest:subjectSource>ldap</rest:subjectSource>
-            <rest:groupSource>g:gsa</rest:groupSource>
             <rest:ignoreSslValidation>true</rest:ignoreSslValidation>
-            <rest:exportStem>:</rest:exportStem>
         </icfc:configurationProperties>
     </connectorConfiguration>
         <additionalConnector>
@@ -86,10 +86,10 @@
         <objectType>
             <kind>entitlement</kind>
             <intent>group</intent>
-            <objectClass>ri:CustomPlainGroupObjectClass</objectClass>
+            <objectClass>ri:Group</objectClass>
             <default>true</default>
             <attribute>
-                <ref>icfs:name</ref>
+                <ref>ri:name</ref>
                 <inbound>
                     <strength>strong</strength>
                     <target>
@@ -139,7 +139,7 @@
             <enabled>true</enabled>
             <kind>entitlement</kind>
             <intent>group</intent>
-            <objectClass>ri:CustomPlainGroupObjectClass</objectClass>
+            <objectClass>ri:Group</objectClass>
             <focusType>OrgType</focusType>
             <correlation>
                 <q:equal>
diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml
index 9970677..ec86810 100644
--- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml
+++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml
@@ -49,6 +49,10 @@
             <level>INFO</level>
             <package>com.evolveum.midpoint.model.impl.lens.Clockwork</package>
         </classLogger>
+        <classLogger>
+            <level>DEBUG</level>
+            <package>com.evolveum.polygon.connector.grouper</package>
+        </classLogger>
         <appender id="11" xsi:type="c:FileAppenderConfigurationType">
             <pattern>%date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n</pattern>
             <name>MIDPOINT_LOG</name>