Index: openacs-4/packages/ims-ent/tcl/ims-ent-dotlrn-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ims-ent/tcl/ims-ent-dotlrn-procs.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/ims-ent/tcl/ims-ent-dotlrn-procs.tcl	11 Jun 2004 23:02:21 -0000	1.2
+++ openacs-4/packages/ims-ent/tcl/ims-ent-dotlrn-procs.tcl	2 Jul 2004 20:35:37 -0000	1.3
@@ -605,7 +605,7 @@
 	# if the community_id doesn't exist, then its an error
 	if [empty_string_p $community_id] {
 	    set success_p 0
-	    set result(message) "<membership>: A class with this class instance key '$class_instance_key' doesn't exist"		    
+	    set result(message) "<membership>: The community_id $community_id doesn't exist"		    
 	} else {
 
 	    # now lets call the proc defined as param, it must
Index: openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.tcl	16 Jun 2004 23:06:45 -0000	1.4
+++ openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.tcl	2 Jul 2004 20:35:37 -0000	1.5
@@ -252,6 +252,8 @@
 
 	set group_source $source
 
+	set member_list [list]
+
 	foreach member_node [xml_node_get_children_by_name $mem_node "member"] {
 
 	    set sourcedidtype [xml_get_child_node_attribute_by_path $member_node {sourcedid} "sourcedidtype"]
@@ -278,8 +280,25 @@
 		-roletype $roletype \
 		-operation $operation
 
+	    lappend member_list $id
+
 	}
 
+	if {$operation == "snapshot"} {
+	    set non_users_list [db_list get_non_sent_users { *SQL* }]
+	    set member_list [join $member_list ", "]
+	    foreach id $non_users_list {
+		ims_enterprise::ims_dotlrn::membership::membership \
+		    -job_id $job_id \
+		    -class_instance_key $class_instance_key \
+		    -community_id $community_id \
+		    -id $id \
+		    -authority_id $authority_id \
+		    -roletype $roletype \
+		    -operation delete
+	    }
+	}
+
     }
 }
 
Index: openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.xql,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.xql	9 Jun 2004 18:08:07 -0000	1.1
+++ openacs-4/packages/ims-ent/tcl/ims-ent-parser-procs.xql	2 Jul 2004 20:35:37 -0000	1.2
@@ -112,4 +112,13 @@
 	limit 1
     </querytext>
   </fullquery>
+
+  <fullquery name="ims_enterprise::parser::membership_to_dotlrn.get_non_sent_users">
+    <querytext>
+      select user_id
+      from dotlrn_member_rels_full
+      where community_id = :community_id
+      and user_id not in (:member_list)
+    </querytext>
+  </fullquery>
 </queryset>
\ No newline at end of file
Index: openacs-4/packages/ims-ent/www/doc/ims-ent.txt
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ims-ent/www/doc/ims-ent.txt,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/ims-ent/www/doc/ims-ent.txt	17 Jun 2004 21:58:39 -0000	1.2
+++ openacs-4/packages/ims-ent/www/doc/ims-ent.txt	2 Jul 2004 20:38:10 -0000	1.3
@@ -164,10 +164,12 @@
 <url>  <--> external_url (just for deps)
 
 
+Aditional notes:
+* It handles snapshot for membership since it do checks now for those persons that do not continue to be members (that are not comming as transactions from the incremental process).
 
+
 Not supported yet:
 * communities
 * sub-groups
 * mapping relation of the type department-->subject-->class using the <membership> tag, we see that this tag is more oriented in the case of a class to a sub-class relation rather than between the ones mentioned (since in .LRN we don't use at all a dep or sub portal). To make a relation between dep-sub-cla use the <relationship relation = "1"> to indicate the parent(1) or child(2).
-* better way to handle snapshot for membership since it do not checks now for those persons that do not continue to be members, but if the incremental process send info about that dropped membership, it will drop it as well.
 * Deal with photos from <person>