diff --git a/bin/update-metadata.in b/bin/update-metadata.in index 59979b3c62c326ecd17b269929b84ada4f975bdf..38a97475ed064d4518e886e453b9c0cfa3931ce9 100755 --- a/bin/update-metadata.in +++ b/bin/update-metadata.in @@ -108,28 +108,28 @@ foreach my $id (keys %{$configuration->{federations}}) { ); $entity->update(); } else { - $entity = AccountManager::Entity->new( - db => $db, - type => $entry->{type}, - entityid => $entry->{entityid}, - display_name => $entry->{display_name}, - information_url => $entry->{information_url}, - organization_url => $entry->{organization_url}, - ); - if ($entry->{contacts}) { - my @contacts = + eval { + $entity = AccountManager::Entity->new( + db => $db, + type => $entry->{type}, + entityid => $entry->{entityid}, + display_name => $entry->{display_name}, + information_url => $entry->{information_url}, + organization_url => $entry->{organization_url}, + ); + if ($entry->{contacts}) { + my @contacts = uniq grep { $_ } map { $_->{EmailAddress} } @{$entry->{contacts}}; - $entity->contacts(@contacts); - } - $entity->federations($id); - eval { + $entity->contacts(@contacts); + } + $entity->federations($id); $entity->save(); }; if ($EVAL_ERROR) { - warn "error while saving entity $entry->{entityid}: $EVAL_ERROR"; + warn "error while processing entity $entry->{entityid}: $EVAL_ERROR"; } }