diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm
index dac6a9334e42bb08bd1bc3da2765a04502f59cdc..3779ca82bde24f9f6f7039c038c1249e0c8a3068 100644
--- a/lib/AccountManager/App.pm
+++ b/lib/AccountManager/App.pm
@@ -4,15 +4,11 @@ use strict;
 use warnings;
 
 use CGI;
-use DateTime;
 use English qw(-no_match_vars);
-use Encode;
 use Log::Any::Adapter;
 use List::MoreUtils qw(uniq);
-use MIME::Lite;
 use Template;
 use Template::Constants qw(:chomp);
-use Text::CSV;
 
 use AccountManager::Account;
 use AccountManager::Account::Manager;
@@ -553,6 +549,7 @@ sub req_complete_challenge {
     }
 
     # compute a new token
+    eval "require DateTime";
     my $validity_period =
         $self->{configuration}->{service}->{tokens_validity_period};
     my $token = AccountManager::Token->new(
@@ -605,10 +602,13 @@ sub req_complete_challenge {
     $tt2->process('send_authentication_token.tt2.html', $data, \$html_content);
 
     # wrap in message
+    eval "require MIME::Lite";
+    eval "require Encode";
+
     my $message = MIME::Lite->new(
         From    => sprintf('eduGAIN Access Check <%s>', $self->{configuration}->{mailer}->{from}),
         To      => $self->{in}->{email},
-        Subject => encode("MIME-Header", sprintf('[eduGAIN Access Check] %s', $self->{lh}->maketext("Test accounts request"))),
+        Subject => Encode::encode("MIME-Header", sprintf('[eduGAIN Access Check] %s', $self->{lh}->maketext("Test accounts request"))),
         Type    => 'multipart/alternative',
     );
     $message->attach(
@@ -737,7 +737,7 @@ sub req_create_accounts {
         $self->{configuration}->{$entity}->{account_validity_period} ||
         $self->{configuration}->{service}->{account_validity_period};
 
-
+    eval "require DateTime";
     my $download_token = AccountManager::Token->new(
         db              => $self->{db},
         email_address   => $self->{in}->{email},
@@ -923,6 +923,7 @@ sub req_download_accounts {
         -content_disposition => 'attachment; filename="accounts.csv"'
     );
 
+    eval "require Text::CSV";
     my $csv = Text::CSV->new ({ binary => 1, eol => "\r\n", quote_space => 0 });
     $csv->print(\*STDOUT, [ qw/
         username