diff --git a/Changes b/Changes
index 6b476fc..b586e14 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 # version 1.2-SNAPSHOT
 
 - Reactivate Query Serializer Web-service (#903)
+- Fix deprecated URL constructor (AI assisted)
 
 # version 1.1
 
diff --git a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
index 47fcf76..3900bf6 100644
--- a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.config;
 
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -113,7 +114,7 @@
         if (!issuerStr.startsWith("http")) {
             issuerStr = "http://" + issuerStr;
         }
-        setIssuer(new URL(issuerStr));
+        setIssuer(URI.create(issuerStr).toURL());
     }
 
     private void setOAuth2Configuration (Properties properties) {
diff --git a/src/main/java/de/ids_mannheim/korap/config/JWTSigner.java b/src/main/java/de/ids_mannheim/korap/config/JWTSigner.java
index d8f3341..0443371 100644
--- a/src/main/java/de/ids_mannheim/korap/config/JWTSigner.java
+++ b/src/main/java/de/ids_mannheim/korap/config/JWTSigner.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.config;
 
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.text.ParseException;
 import java.time.Instant;
@@ -56,7 +57,7 @@
 
     public JWTSigner (final byte[] secret, String issuer)
             throws MalformedURLException, JOSEException {
-        this(secret, new URL(issuer), 72 * 60 * 60);
+        this(secret, URI.create(issuer).toURL(), 72 * 60 * 60);
     }
 
     public SignedJWT createJWT (User user, Map<String, Object> attr) {
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/SearchNetworkEndpoint.java b/src/main/java/de/ids_mannheim/korap/core/service/SearchNetworkEndpoint.java
index de6038e..b8392ff 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/SearchNetworkEndpoint.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/SearchNetworkEndpoint.java
@@ -4,6 +4,7 @@
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.URI;
 import java.net.URL;
 
 import org.apache.http.HttpStatus;
@@ -34,7 +35,7 @@
         }
         else {
             try {
-                URL url = new URL(networkEndpointURL);
+                URL url = URI.create(networkEndpointURL).toURL();
                 HttpURLConnection connection = (HttpURLConnection) url
                         .openConnection();
                 connection.setRequestMethod("POST");
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
index a33badd..184913a 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
@@ -4,6 +4,7 @@
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
@@ -320,7 +321,7 @@
                 String pipeURL = pipeArray[i];
                 if (pipeURL.startsWith(config.getPipeHost())) {
                     try {
-                        URL url = new URL(pipeURL);
+                        URL url = URI.create(pipeURL).toURL();
                         HttpURLConnection connection = (HttpURLConnection) url
                                 .openConnection();
                         connection.setRequestMethod("POST");
