Index: /LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm
===================================================================
--- /LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm	(revision 104)
+++ /LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm	(revision 105)
@@ -284,5 +284,5 @@
 sub sync_object {
     my ($self, $srcobj, %options) = @_;
-    $self->is_supported_object($srcobj->type) or return;
+    $self->is_supported_object($srcobj->type) or return '';
     my @fields = $options{attrs}
         ? @{ $options{attrs} }
@@ -294,10 +294,12 @@
     }
     if (my $dstobj = $self->get_object($srcobj->type, $srcobj->id)) {
-        return $dstobj->set_c_fields(%data);
+        return 'SYNCHED' if ($dstobj->set_c_fields(%data));
     } elsif(!$options{nocreate}) {
-        return $self->create_c_object($srcobj->type, $srcobj->id, %data);
+        return 'CREATE' if ($self->create_c_object($srcobj->type, $srcobj->id, %data));
     } else {
-        return 0;
+        return '';
     }
+
+    return;
 }
 
Index: /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/Group.pm
===================================================================
--- /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/Group.pm	(revision 104)
+++ /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/Group.pm	(revision 105)
@@ -47,5 +47,5 @@
     my ($self, $base, $mode) = @_;
     (
-        qw(gidNumber description sAMAccountName member memberUID),
+        qw(gidNumber description member memberUID), # sAMAccountName: conflict with user
         ($mode !~ /w/
             ? qw(cn dn)
@@ -69,4 +69,5 @@
     }
     my $msg = $base->ldap->add($entry);
+    warn $msg->error if ($msg->code);
     return $msg->code ? 0 : 1;
 }
@@ -115,7 +116,4 @@
                 } # else {} # can't happen
                 my $mesg = $self->{entry}->update($self->base->ldap);
-                if ($mesg->code) {
-                    warn $mesg->error;
-                }
             }
             next;
@@ -133,8 +131,4 @@
                     $self->{entry}->add(member => $user->get_field('dn'));
                 } # else {} # can't happen
-                my $mesg = $self->{entry}->update($self->base->ldap);
-                if ($mesg->code) {
-                    warn $mesg->error;
-                }
             }
             next;
Index: /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/User.pm
===================================================================
--- /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/User.pm	(revision 104)
+++ /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/User.pm	(revision 105)
@@ -123,4 +123,5 @@
     my ($self, %data) = @_;
     my %ndata;
+    my $res = '0E0';
     while (my ($f, $val) = each(%data)) {
         $f eq 'memberOf' and do {
@@ -137,7 +138,4 @@
                 } # else {} # can't happen
                 my $mesg = $self->{entry}->update($self->base->ldap);
-                if ($mesg->code) {
-                    warn $mesg->error;
-                }
             }
             next;
Index: /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/objects.pm
===================================================================
--- /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/objects.pm	(revision 104)
+++ /LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ad/objects.pm	(revision 105)
@@ -121,5 +121,5 @@
 
     foreach (keys %fields) {
-        $self->get_field_name($_, 'w') or return;
+        $self->get_field_name($_, 'w') or next;
         $self->_populate_entry($self->{entry}, $_, $fields{$_});
     }
Index: /LATMOS-Accounts/lib/LATMOS/Accounts/Synchro.pm
===================================================================
--- /LATMOS-Accounts/lib/LATMOS/Accounts/Synchro.pm	(revision 104)
+++ /LATMOS-Accounts/lib/LATMOS/Accounts/Synchro.pm	(revision 105)
@@ -118,5 +118,4 @@
         # TODO optimize this, using rev of objects
 
-        warn "Sync objects $otype\n";
         foreach my $destbase (@obj_dest_base) {
             $callback->($otype, $destbase);
@@ -134,15 +133,26 @@
                 $self->val($self->from->label, $destbase->label),
             );
-            warn "objects $otype " . $self->from->label . " => " . $destbase->label . "\n";
             my @common_fields = $options{attr_cb}->($self->from, $destbase, $otype) or return;
-            warn "Synching fields: " . join(', ', sort @common_fields) . "\n";
             my %exists = map { $_ => 1 } $destbase->list_objects($otype);
             foreach my $uid (@lobjfrom) {
                 my $sobj = $self->from->get_object($otype, $uid);
-                $destbase->sync_object(
-                    $sobj,
-                    nocreate => ($self->{options}{nocreate} || $options{nocreate}),
-                ) unless($self->{options}{test});
-                warn "  $otype $uid: synched\n";
+                if (!$self->{options}{test}) {
+                    my $res = $destbase->sync_object(
+                        $sobj,
+                        nocreate => ($self->{options}{nocreate} || $options{nocreate}),
+                    );
+                    if (defined $res) {
+                        printf(
+                            "%s::%s::%s => %s (%s)\n",
+                            $self->from->label, $otype, $uid,
+                            $destbase->label, $res
+                        ) if ($res);
+                    } else {
+                        warn sprintf(
+                            "Error syncing %s::%s::%s => %s\n",
+                            $self->from->label, $otype, $uid, $destbase->label
+                        ); 
+                    }
+                }
             }
         }
@@ -159,5 +169,5 @@
             foreach (keys %exists) {
                 if (!$srcexists{$_}) {
-                    warn "delete $otype $_\n";
+                    print "delete " . $destbase->name . '::' . $otype . '::' . "$_\n";
                     $destbase->delete_object($otype, $_);
                 }
