diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
index e430f5e45b..dde1efaf4d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
@@ -217,6 +217,9 @@ legend.collapsed i.fa.fa-caret-down::before {
[% IF ( ERROR_cannot_delete_guarantor ) %]
Cannot delete guarantor(s). A child patron needs a guarantor.
[% END %]
+ [% IF ( ERROR_invalid_relationship ) %]
+ Guarantor relationship is invalid.
+ [% END %]
[% END %]
@@ -554,7 +557,7 @@ legend.collapsed i.fa.fa-caret-down::before {
[% END %]
[% END %]
- [% UNLESS mandatoryrelationship %]
+ [% IF mandatoryrelationship %]
Required
[% END %]
diff --git a/members/memberentry.pl b/members/memberentry.pl
index 3e75eeebde..7ee45c5eed 100755
--- a/members/memberentry.pl
+++ b/members/memberentry.pl
@@ -289,6 +289,22 @@ foreach my $guarantor (@guarantors) {
}
}
+my @valid_relationships = split(/\|/, C4::Context->preference('borrowerRelationship'), -1);
+if (@valid_relationships) {
+ my @new_guarantor_id = $input->multi_param('new_guarantor_id');
+ my @new_guarantor_relationship = $input->multi_param('new_guarantor_relationship');
+
+ for ( my $i = 0 ; $i < scalar @new_guarantor_id; $i++ ) {
+ my $guarantor_id = $new_guarantor_id[$i];
+ my $relationship = $new_guarantor_relationship[$i];
+
+ next unless $guarantor_id;
+ unless ( grep { $_ eq $relationship } @valid_relationships ) {
+ push @errors, 'ERROR_invalid_relationship';
+ }
+ }
+}
+
###############test to take the right zipcode, country and city name ##############
# set only if parameter was passed from the form
$newdata{'city'} = $input->param('city') if defined($input->param('city'));