diff --git a/installer/data/mysql/atomicupdate/bug_31391_-_update_UseRecalls_syspref.pl b/installer/data/mysql/atomicupdate/bug_31391_-_update_UseRecalls_syspref.pl
new file mode 100755
index 0000000000..74887002ed
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug_31391_-_update_UseRecalls_syspref.pl
@@ -0,0 +1,18 @@
+use Modern::Perl;
+use Koha::Installer::Output qw(say_warning say_failure say_success say_info);
+
+return {
+ bug_number => "31391",
+ description => "Staff-side recalls",
+ up => sub {
+ my ($args) = @_;
+ my ( $dbh, $out ) = @$args{qw(dbh out)};
+ try {
+ $dbh->do(q{UPDATE systempreferences SET value = "off" WHERE variable = "UseRecalls" AND value = "0"});
+ $dbh->do(q{UPDATE systempreferences SET value = "opac" WHERE variable = "UseRecalls" AND value = "1"});
+ say_success( $out, "Updated system preference 'UseRecalls' to describe interface choice instead of YesNo" );
+ } catch {
+ say_failure( $out, "Database modification failed with errors: $_" );
+ };
+ },
+};
diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql
index d513d59912..4bdc353f6a 100644
--- a/installer/data/mysql/mandatory/sysprefs.sql
+++ b/installer/data/mysql/mandatory/sysprefs.sql
@@ -909,7 +909,7 @@ INSERT INTO systempreferences ( `variable`, `value` ) VALUES
('UseLibraryFloatLimits', '0'),
('UseLocationAsAQInSIP', '0'),
('UseOCLCEncodingLevels','0'),
-('UseRecalls','0'),
+('UseRecalls','off'),
('UseTransportCostMatrix','0'),
('UseWYSIWYGinSystemPreferences','0'),
('viewISBD','1'),
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
index 3ad9402d48..b8e32d335d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -1587,11 +1587,14 @@ Circulation:
class: integer
- days.
-
+ - Recalls
- pref: UseRecalls
choices:
- 1: Use
- 0: "Don't use"
- - recalls. Make sure you configure circulation and fine rules for recalls once enabled.
+ off: are disabled
+ opac: can be placed through the OPAC only
+ staff: can be placed through the staff interface only
+ opac_and_staff: can be placed through both the OPAC and staff interface
+ - . Make sure you configure circulation and fine rules for recalls once enabled.
SIP2:
-