diff --git a/full/Changes b/full/Changes
index 653149b..c367b10 100644
--- a/full/Changes
+++ b/full/Changes
@@ -9,6 +9,9 @@
  - Updated admin filter by using admin token and role checks.
 2022-03-18
  - Added an OAuth2 admin API to delete expired/revoked access and refresh tokens.
+2022-03-28
+ - Updated admin filter (admintoken as a form param) and uses 
+   it for the closing index reader API. 
 
 # version 0.65.1
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2AdminController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2AdminController.java
index 336f1a8..f51ab78 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2AdminController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2AdminController.java
@@ -37,7 +37,7 @@
     
     @POST
     @Path("/token/clean")
-    public Response cleanExpiredInvalidToken (String token,
+    public Response cleanExpiredInvalidToken (
             @Context SecurityContext securityContext) {
 
         TokenContext context =
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
deleted file mode 100644
index 229e303..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import javax.servlet.ServletContext;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.SecurityContext;
-import javax.ws.rs.ext.Provider;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-
-import de.ids_mannheim.korap.dao.AdminDao;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-
-/**
- * @author hanl, margaretha
- * 
- * @see {@link AuthenticationFilter}
- */
-@Component
-@Provider
-public class AdminFilter extends AuthenticationFilter {
-
-    private @Context ServletContext servletContext;
-    @Autowired
-    private AdminDao adminDao;
-    @Autowired
-    private KustvaktResponseHandler kustvaktResponseHandler;
-
-    @Override
-    public ContainerRequest filter (ContainerRequest request) {
-        ContainerRequest superRequest = super.filter(request);
-
-        String adminToken = superRequest.getEntity(String.class);
-
-        SecurityContext securityContext = superRequest.getSecurityContext();
-        TokenContext tokenContext =
-                (TokenContext) securityContext.getUserPrincipal();
-        String username = tokenContext.getUsername();
-
-        if (adminToken != null && !adminToken.isEmpty()) {
-            // startswith token=
-            adminToken = adminToken.substring(6);
-            if (adminToken.equals(servletContext.getInitParameter("adminToken"))) {
-                return superRequest;
-            }
-        }
-
-        if (adminDao.isAdmin(username)) {
-            return superRequest;
-        }
-        throw kustvaktResponseHandler.throwit(new KustvaktException(
-                StatusCodes.AUTHORIZATION_FAILED,
-                "Unauthorized operation for user: " + username, username));
-    }
-
-    @Override
-    public ContainerRequestFilter getRequestFilter () {
-        return this;
-    }
-
-    @Override
-    public ContainerResponseFilter getResponseFilter () {
-        return null;
-    }
-}
