diff --git a/auth/src/main/java/AuthPolicy.java b/auth/src/main/java/AuthPolicy.java
index 8c3d60f3b88d9899726e44c213a751d6cbb3a203..04717140aecbeb276cec172626ec66bfac32c768 100644
--- a/auth/src/main/java/AuthPolicy.java
+++ b/auth/src/main/java/AuthPolicy.java
@@ -53,7 +53,7 @@ public class AuthPolicy
 
       access = Access.PUBLIC_AND_AUTHORIZED_PRIVATE;
 
-      LOGGER.info("User [Groups]: " + userName + " [ " + String.join(" ", userGroups) + " ]" );
+      LOGGER.finer("User [Groups]: " + userName + " [ " + String.join(" ", userGroups) + " ]" );
    }
 
 
@@ -67,7 +67,7 @@ public class AuthPolicy
          userName = null;
          userGroups = null;
          userGroupsValid = false;
-         LOGGER.info("Non authenticated request (UserPrincipal null in HttpServletRequest)");
+         LOGGER.finer("Non authenticated request (UserPrincipal null in HttpServletRequest)");
       }
       else
       {
@@ -81,12 +81,12 @@ public class AuthPolicy
 
             access = Access.PUBLIC_AND_AUTHORIZED_PRIVATE;
 
-            LOGGER.info("User [Groups]: " + userName + " [ " + String.join(" ", userGroups) + " ]" );
+            LOGGER.finer("User [Groups]: " + userName + " [ " + String.join(" ", userGroups) + " ]" );
          }
          else
          {
             userName = principal.getName();
-            LOGGER.info("DBG principal not instance of VlkbUser, but has user-name: " + userName);
+            LOGGER.finer("DBG principal not instance of VlkbUser, but has user-name: " + userName);
             userGroups = new String[]{""};//{"VLKB.groupA", "AllPrivate"}; // was for shiro
             userGroupsValid = true;
             access = Access.PUBLIC_AND_AUTHORIZED_PRIVATE;
@@ -163,13 +163,13 @@ public class AuthPolicy
       this.dbUserName = dbUserName;
       this.dbPassword = dbPassword;
 
-      LOGGER.info("with String[] trace");
+      LOGGER.finer("with String[] trace");
       return filterAuthorized(new ArrayList<String>(Arrays.asList(pubdidArr)), dbConnUrl);
    }
 
    private String[] filterAuthorized(ArrayList<String> pubdidList, String dbConnUrl)
    {
-      //LOGGER.info("with List <String> trace");
+      //LOGGER.fine("with List <String> trace");
       switch(access)
       {
          case PUBLIC_ONLY :
@@ -189,25 +189,25 @@ public class AuthPolicy
 
    private void filterNotPublic(ArrayList<String> pubdids, String dbConnUrl)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
       assert pubdids != null;
-      //LOGGER.info("PublisherDID list original : " + String.join(" ", pubdids));
+      //LOGGER.finer("PublisherDID list original : " + String.join(" ", pubdids));
 
       List<AuthPolicyDb.PubdidGroups> privateUniqPubdids = db_queryPrivateUniqPubdidGroups(dbConnUrl, pubdids);
       List<String> notAuthorizedUniqPubdids = pubdidsNotPublic(privateUniqPubdids, userGroups);
 
-      LOGGER.info("AuthZ removes: " + String.join(" ", notAuthorizedUniqPubdids));
+      LOGGER.finest("AuthZ removes: " + String.join(" ", notAuthorizedUniqPubdids));
 
       removeNotAuthorized(pubdids, notAuthorizedUniqPubdids);
 
-      //LOGGER.info("PublisherDID list filtered : " + (pubdids.isEmpty() ? "" : String.join(" ", pubdids)));
+      //LOGGER.finest("PublisherDID list filtered : " + (pubdids.isEmpty() ? "" : String.join(" ", pubdids)));
    }
 
 
    private List<String> pubdidsNotPublic(List<AuthPolicyDb.PubdidGroups> pubdidList, String[] userGroups)
    {
-      LOGGER.info("trace");
-      //LOGGER.info("userGroups: " + String.join(" ",userGroups));
+      LOGGER.fine("trace");
+      //LOGGER.finer("userGroups: " + String.join(" ",userGroups));
 
       List<String> pubdidsNotAuthorizedList = new LinkedList<String>();
       ListIterator<AuthPolicyDb.PubdidGroups> it = pubdidList.listIterator();
@@ -216,7 +216,7 @@ public class AuthPolicy
       {
          AuthPolicyDb.PubdidGroups pubdidGroups = it.next();
 
-         //LOGGER.info(pubdidGroups.pubdid + " : " + String.join(" ",pubdidGroups.groups));
+         //LOGGER.finest(pubdidGroups.pubdid + " : " + String.join(" ",pubdidGroups.groups));
 
          if( true )// isIntersectionEmpty(pubdidGroups.groups, userGroups) )
          {
@@ -231,18 +231,18 @@ public class AuthPolicy
 
    private void filterNotAuthorized(ArrayList<String> pubdids, String dbConnUrl)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
       assert pubdids != null;
-      //LOGGER.info("PublisherDID list original : " + String.join(" ", pubdids));
+      //LOGGER.finer("PublisherDID list original : " + String.join(" ", pubdids));
 
       List<AuthPolicyDb.PubdidGroups> privateUniqPubdids = db_queryPrivateUniqPubdidGroups(dbConnUrl, pubdids);
       List<String> notAuthorizedUniqPubdids = pubdidsNotAuthorized(privateUniqPubdids, userGroups);
 
-      LOGGER.info("AuthZ removes: " + String.join(" ", notAuthorizedUniqPubdids));
+      LOGGER.finest("AuthZ removes: " + String.join(" ", notAuthorizedUniqPubdids));
 
       removeNotAuthorized(pubdids, notAuthorizedUniqPubdids);
 
-      //LOGGER.info("PublisherDID list filtered : " + (pubdids.isEmpty() ? "" : String.join(" ", pubdids)));
+      //LOGGER.finest("PublisherDID list filtered : " + (pubdids.isEmpty() ? "" : String.join(" ", pubdids)));
    }
 
 
@@ -296,8 +296,8 @@ public class AuthPolicy
 
    private List<String> pubdidsNotAuthorized(List<AuthPolicyDb.PubdidGroups> pubdidList, String[] userGroups)
    {
-      LOGGER.info("trace");
-      //LOGGER.info("userGroups: " + String.join(" ",userGroups));
+      LOGGER.fine("trace");
+      //LOGGER.finer("userGroups: " + String.join(" ",userGroups));
 
       List<String> pubdidsNotAuthorizedList = new LinkedList<String>();
       ListIterator<AuthPolicyDb.PubdidGroups> it = pubdidList.listIterator();
@@ -306,7 +306,7 @@ public class AuthPolicy
       {
          AuthPolicyDb.PubdidGroups pubdidGroups = it.next();
 
-         //LOGGER.info(pubdidGroups.pubdid + " : " + String.join(" ",pubdidGroups.groups));
+         //LOGGER.finest(pubdidGroups.pubdid + " : " + String.join(" ",pubdidGroups.groups));
 
          if( isIntersectionEmpty(pubdidGroups.groups, userGroups) )
          {
diff --git a/auth/src/main/java/AuthPolicyDb.java b/auth/src/main/java/AuthPolicyDb.java
index 9f737ece7415810ae6d92fecca867f70d7385675..7eeb8a5b316e554c8e0201cb73506b03da700630 100644
--- a/auth/src/main/java/AuthPolicyDb.java
+++ b/auth/src/main/java/AuthPolicyDb.java
@@ -104,7 +104,7 @@ public class AuthPolicyDb
       //String TheQuery = "SELECT obs_publisher_did,groups FROM permissions "
       //   + "WHERE (obs_publisher_did IN (\'"+commaSepObscorePubdids+"\'));";
 
-      //LOGGER.info(TheQuery);
+      //LOGGER.finest(TheQuery);
 
       List<PubdidGroups> pubdidGroups = new LinkedList<PubdidGroups>();
       try
@@ -134,7 +134,7 @@ public class AuthPolicyDb
       }
       catch (ClassNotFoundException e)
       {
-         LOGGER.info("DB driver "+ DB_DRIVER +" not found: " + e.getMessage());
+         LOGGER.severe("DB driver "+ DB_DRIVER +" not found: " + e.getMessage());
          e.printStackTrace();
       }
       finally
@@ -148,21 +148,21 @@ public class AuthPolicyDb
 
    private void closeAll()
    {
-         if(res  != null ) try { res.close(); } catch(Exception e) {LOGGER.info("DB ResultSet::close() failed");}
-         if(st   != null ) try { st.close();  } catch(Exception e) {LOGGER.info("DB Statement::close() failed");}
-         if(conn != null ) try { conn.close();} catch(Exception e) {LOGGER.info("DB Connection::close() failed");} 
+         if(res  != null ) try { res.close(); } catch(Exception e) {LOGGER.severe("DB ResultSet::close() failed");}
+         if(st   != null ) try { st.close();  } catch(Exception e) {LOGGER.severe("DB Statement::close() failed");}
+         if(conn != null ) try { conn.close();} catch(Exception e) {LOGGER.severe("DB Connection::close() failed");} 
   }
 
    private void logSqlExInfo(SQLException se){
 
       /* dbconn.print_class_vars(); */
 
-      System.err.println("SQLState : " + se.getSQLState());
-      System.err.println("ErrorCode: " + se.getErrorCode());
-      System.err.println("Message  : " + se.getMessage());
+      LOGGER.severe("SQLState : " + se.getSQLState());
+      LOGGER.severe("ErrorCode: " + se.getErrorCode());
+      LOGGER.severe("Message  : " + se.getMessage());
       Throwable t = se.getCause();
       while(t != null) {
-         System.err.println("Cause: " + t);
+         LOGGER.severe("Cause: " + t);
          t = t.getCause();
       }
    }
@@ -184,8 +184,7 @@ public class AuthPolicyDb
          DriverManager.registerDriver(new org.postgresql.Driver());
          */
 
-      /*LOGGER.info(getClasspathString());*/
-      LOGGER.info(getRegisteredDriverList());
+      LOGGER.finest(getRegisteredDriverList());
 
       // FIXME seems DriverManager expects jdbc:postgresql driver scheme, it does not support postgresql:// scheme
       // additionally:
@@ -195,7 +194,7 @@ public class AuthPolicyDb
       // by extracting userName and password from the URL-string and prepending 'jdbc:'
       // 
 
-      /*         LOGGER.info("DBMS URL: " + dbConnUrl);
+      /*         LOGGER.finest("DBMS URL: " + dbConnUrl);
                  URI dbConnUri = new URI(dbConnUrl);
 
                  String userInfoString = dbConnUri.getUserInfo(); 
@@ -210,9 +209,9 @@ public class AuthPolicyDb
                  String password = userInfo[1];
 
                  String dbConnJdbcUrl = "jdbc:" + dbConnUrl.replace(userInfoString + "@", "");
-                 */       LOGGER.info("DBMS URL: " + dbConnUrl);
-      LOGGER.info("DBMS userName: " + dbUserName);
-      LOGGER.info("DBMS password: " + dbPassword);
+                 */       LOGGER.finest("DBMS URL: " + dbConnUrl);
+      LOGGER.finest("DBMS userName: " + dbUserName);
+      LOGGER.finest("DBMS password: " + dbPassword);
 
       conn = DriverManager.getConnection(dbConnUrl, dbUserName, dbPassword);
 
diff --git a/auth/src/main/java/IA2TokenConvFilter.java b/auth/src/main/java/IA2TokenConvFilter.java
index a64c181ed275cda3bfd0af2e7b84a2b37dc0f709..b91cfacadf42e06c3ff3a296da607b761c493475 100644
--- a/auth/src/main/java/IA2TokenConvFilter.java
+++ b/auth/src/main/java/IA2TokenConvFilter.java
@@ -21,25 +21,25 @@ import java.security.Principal;
 
 public class IA2TokenConvFilter implements Filter
 {
-  private static final Logger LOGGER = Logger.getLogger("IA2TokenConvFilter");
+  private static final Logger LOGGER = Logger.getLogger(IA2TokenConvFilter.class.getName());
 
    @Override
    public void init(FilterConfig fc) throws ServletException
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
    }
 
    @Override
    public void destroy()
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
                    throws IOException, ServletException
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
         HttpServletRequest  request  = (HttpServletRequest)  req;
         HttpServletResponse response = (HttpServletResponse) res;
@@ -47,7 +47,7 @@ public class IA2TokenConvFilter implements Filter
         String authHeader = request.getHeader("Authorization");
         if (authHeader != null)
         {
-            LOGGER.info("Authorization header: " + authHeader.substring(0, 7+60) + " ...");
+            LOGGER.finer("Authorization header: " + authHeader.substring(0, 7+60) + " ...");
             if (authHeader.startsWith("Bearer "))
             {
 
diff --git a/auth/src/main/java/IamSigningKeyResolver.java b/auth/src/main/java/IamSigningKeyResolver.java
index ff89893067b2748ea91f6cda0d638eb0b3ea9126..8c64a674d3dc20a3eeb85d866ba8a8fc1a77e652 100644
--- a/auth/src/main/java/IamSigningKeyResolver.java
+++ b/auth/src/main/java/IamSigningKeyResolver.java
@@ -59,7 +59,7 @@ public class IamSigningKeyResolver extends SigningKeyResolverAdapter
    @Override
    public Key resolveSigningKey(JwsHeader jwsHeader, Claims claims)
    {
-      LOGGER.info( "IamSigningKeyResolver::resolveSigningKey" );
+      LOGGER.fine( "trace" );
 
       //inspect the header or claims, lookup and return the signing key
 
@@ -83,7 +83,7 @@ public class IamSigningKeyResolver extends SigningKeyResolverAdapter
    private Key lookupVerificationKey(String keyId)
          throws Exception, GeneralSecurityException
       {
-         LOGGER.info( "IamSigningKeyResolver::lookupVerificationKey" );
+         LOGGER.fine( "trace" );
 
          String jsonKeys = doHttps();
 
@@ -95,7 +95,7 @@ public class IamSigningKeyResolver extends SigningKeyResolverAdapter
 
    private String doHttps() throws Exception
    {
-      LOGGER.info("doHttps : " + keysURL);
+      LOGGER.fine("trace keysURL : " + keysURL);
 
       URL myUrl = new URL(keysURL);
       HttpsURLConnection conn = (HttpsURLConnection)myUrl.openConnection();
@@ -118,7 +118,7 @@ public class IamSigningKeyResolver extends SigningKeyResolverAdapter
    private Key getKeyFromKeys(String jsonKeys, String keyId)
          throws JsonProcessingException, GeneralSecurityException, IOException
       {
-         LOGGER.info( "IamSigningKeyResolver::getKeyFromKeys");
+         LOGGER.fine( "trace" );
 
          Key key = null;
 
@@ -131,13 +131,13 @@ public class IamSigningKeyResolver extends SigningKeyResolverAdapter
             {
                String nodeContent = mapper.writeValueAsString(node);
 
-               LOGGER.info("key: " + nodeContent);
+               LOGGER.finest("key: " + nodeContent);
 
                Jwk<?> jwk = Jwks.parser().build().parse(nodeContent);
 
                String jwkkid = jwk.getId();
 
-               LOGGER.info("kid-token : " + keyId + "kid-store : " + jwkkid + " key-type: " + jwk.getType());
+               LOGGER.finest("kid-token : " + keyId + "kid-store : " + jwkkid + " key-type: " + jwk.getType());
 
                if(keyId.equals(jwkkid))
                {
diff --git a/auth/src/main/java/IamTokenFilter.java b/auth/src/main/java/IamTokenFilter.java
index f434f824fb0f3e03e69398bd23795d69f148d5eb..b4f255f6653353769f80ef0f8ca8cc46c042f1b4 100644
--- a/auth/src/main/java/IamTokenFilter.java
+++ b/auth/src/main/java/IamTokenFilter.java
@@ -35,7 +35,7 @@ import javax.servlet.ServletOutputStream;
 
 public class IamTokenFilter implements Filter
 {
-   private static final Logger LOGGER = Logger.getLogger("IamTokenFilter");
+   private static final Logger LOGGER = Logger.getLogger(IamTokenFilter.class.getName());
    private static final IamTokenSettings settings = IamTokenSettings.getInstance();
 
    final String RESPONSE_ENCODING = "utf-8";
@@ -64,7 +64,7 @@ public class IamTokenFilter implements Filter
       if(authHeader==null)
       {
          final String AUTH_ERR = "Request without Authorization header. Only authenticated requests allowed.";
-         LOGGER.info(AUTH_ERR);
+         LOGGER.warning(AUTH_ERR);
          sendAuthenticationError((HttpServletResponse)resp, writer, AUTH_ERR);
       }
       else
@@ -73,7 +73,7 @@ public class IamTokenFilter implements Filter
 
          if (authHeader.startsWith("Bearer ") && (authHeader.length() > "Bearer ".length()))
          {
-            LOGGER.info("Request with Authorization header and has Bearer entry");
+            LOGGER.warning("Request with Authorization header and has Bearer entry");
             String token = authHeader.substring("Bearer ".length()).trim();
 
             doFilterBearer(req, token, resp, chain);
@@ -82,7 +82,7 @@ public class IamTokenFilter implements Filter
          {
             final String AUTH_ERR = "Authorization header with Bearer-token expected, but it starts with : "
                + authHeader.substring(0, "Bearer ".length()) + "...";
-            LOGGER.info(AUTH_ERR);
+            LOGGER.warning(AUTH_ERR);
             sendUsageError((HttpServletResponse)resp, writer, AUTH_ERR);
          }
       }
@@ -94,6 +94,8 @@ public class IamTokenFilter implements Filter
    private void doFilterBearer(ServletRequest req, String token, ServletResponse resp, FilterChain chain)
          throws IOException, ServletException
       {
+         LOGGER.fine("trace");
+
          HttpServletRequest  request  = (HttpServletRequest) req;
          HttpServletResponse response = (HttpServletResponse)resp;
 
@@ -112,42 +114,42 @@ public class IamTokenFilter implements Filter
                String ivoidPath = ivoid.getLocalPart();
                String tokenPath = insResp.getPathFromStorageReadScope();
 
-               LOGGER.info("Path from IVOID: " + ivoidPath);
-               LOGGER.info("Path from token: " + tokenPath);
+               LOGGER.finest("Path from IVOID: " + ivoidPath);
+               LOGGER.finest("Path from token: " + tokenPath);
 
                if(tokenPath.endsWith(ivoidPath))
                {
-                  LOGGER.info("Access authorized.");
+                  LOGGER.finest("Access authorized.");
                   chain.doFilter(request, response);
                }
                else
                {
                   final String AUTH_ERR = "Bearer token does not authorize access to : " + ivoidPath;
-                  LOGGER.info(AUTH_ERR);
+                  LOGGER.finer(AUTH_ERR);
                   sendAuthorizationError(response, writer, AUTH_ERR);
                }
             }
             else
             {
                final String AUTH_ERR = "Bearer-token is inactive.";
-               LOGGER.info(AUTH_ERR);
+               LOGGER.finer(AUTH_ERR);
                sendAuthorizationError(response, writer, AUTH_ERR);
             }
 
          }
          catch(IndexOutOfBoundsException ex)
          {
-            LOGGER.info("IndexOutOfBoundsException: " + ex.getMessage());
+            LOGGER.warning("IndexOutOfBoundsException: " + ex.getMessage());
             sendUsageError(response, writer, ex.getMessage());
          }
          catch(IllegalArgumentException ex)
          {
-            LOGGER.info("IllegalArgumentException: " + ex.getMessage());
+            LOGGER.warning("IllegalArgumentException: " + ex.getMessage());
             sendUsageError(response, writer, ex.getMessage());
          }
          catch(Exception ex)
          {
-            LOGGER.info("Exception: " + ex.getMessage());
+            LOGGER.severe("Exception: " + ex.getMessage());
             ex.printStackTrace();
             sendError(response, writer, ex.toString());
          }
@@ -240,9 +242,9 @@ public class IamTokenFilter implements Filter
 
      String  qString = request.getQueryString();
      if(qString == null)
-     LOGGER.info(request.getRequestURL().toString());
+     LOGGER.finest(request.getRequestURL().toString());
      else
-     LOGGER.info(request.getRequestURL() + "    " + qString);
+     LOGGER.finest(request.getRequestURL() + "    " + qString);
 
      String authHeader = request.getHeader("Authorization");
      if (authHeader == null)
@@ -255,7 +257,7 @@ public class IamTokenFilter implements Filter
      }
      else
      {
-     LOGGER.info("Request without Authorization header, no Principal added");
+     LOGGER.finest("Request without Authorization header, no Principal added");
      response.sendError(HttpServletResponse.SC_BAD_REQUEST,
      "No Authorization in HTTP-header. Only authorized requests allowed.");
      }
@@ -266,7 +268,7 @@ public class IamTokenFilter implements Filter
 
      if (authHeader.startsWith("Bearer ") && (authHeader.length() > "Bearer ".length()))
      {
-     LOGGER.info("Request with Authorization header and has Bearer entry");
+     LOGGER.finest("Request with Authorization header and has Bearer entry");
 
      String jws = authHeader.substring("Bearer ".length());
 
@@ -345,7 +347,7 @@ public class IamTokenFilter implements Filter
 
    Claims claims = jws.getBody();
 
-   LOGGER.info("scope: " + (String)claims.get("scope"));
+   LOGGER.finest("scope: " + (String)claims.get("scope"));
 
    List<String> scopes = parseScopes(claims);
 
@@ -359,11 +361,11 @@ public class IamTokenFilter implements Filter
    }
    }
 
-   LOGGER.info("storage.read: " + storageReadScope);
+   LOGGER.finest("storage.read: " + storageReadScope);
 
    String path = storageReadScope.substring(storageReadScope.lastIndexOf(":") + 1);
 
-   LOGGER.info("path: " + path);
+   LOGGER.finest("path: " + path);
 
    // set User/Principal
 
diff --git a/auth/src/main/java/IntrospectResponse.java b/auth/src/main/java/IntrospectResponse.java
index 4ac4b8b0e519cf051c34e6f47683a944bcfd1174..e7c0f4e0760f3e757b2edd408141074a2bb69e2c 100644
--- a/auth/src/main/java/IntrospectResponse.java
+++ b/auth/src/main/java/IntrospectResponse.java
@@ -20,7 +20,7 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect;
 
 class IntrospectResponse
 {
-   private static final Logger LOGGER = Logger.getLogger("IntrospectResponse");
+   private static final Logger LOGGER = Logger.getLogger(IntrospectResponse.class.getName());
 
    public boolean active;
    public String  scope;
@@ -59,7 +59,7 @@ class IntrospectResponse
 
    private String doHttps(String uPass, String url, String postParams) throws Exception
    {
-      LOGGER.info("doHttps : " + url);
+      LOGGER.fine("url : " + url);
 
       URL myUrl = new URL(url);
       HttpsURLConnection conn = (HttpsURLConnection)myUrl.openConnection();
diff --git a/auth/src/main/java/NeaSigningKeyResolver.java b/auth/src/main/java/NeaSigningKeyResolver.java
index 72af2343a183b24d4c8e9977fd0823ad4fb05200..4ec28dcb91bb85584e4d878fb0faa420107441ea 100644
--- a/auth/src/main/java/NeaSigningKeyResolver.java
+++ b/auth/src/main/java/NeaSigningKeyResolver.java
@@ -63,7 +63,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
 
    private String doHttps() throws Exception
    {
-      LOGGER.info("doHttps : " + keysURL);
+      LOGGER.fine("keysURL : " + keysURL);
 
       URL myUrl = new URL(keysURL);
       HttpsURLConnection conn = (HttpsURLConnection)myUrl.openConnection();
@@ -105,7 +105,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
    private String getCertFromKeys(String jsonKeys, String keyId)
          throws JsonProcessingException, GeneralSecurityException, IOException
       {
-         LOGGER.info( "NeaSigningKeyResolver::getCertFromKeys");
+         LOGGER.fine( "trace");
 
          ObjectMapper mapper = new ObjectMapper();
 
@@ -119,7 +119,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
                String nodeContent = mapper.writeValueAsString(node);
                NeaKey key = mapper.readValue(nodeContent,NeaKey.class);
 
-               LOGGER.info("keyId    : " + keyId
+               LOGGER.finest("keyId    : " + keyId
                      +"\nKey::kid : " + key.kid);
 
                if(keyId.equals(key.kid))
@@ -138,7 +138,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
    private PublicKey getPublicKeyFromPemCert(String certBase64)
          throws GeneralSecurityException
       {
-         LOGGER.info( "NeaSigningKeyResolver::getPublicKeyFromPemCert");
+         LOGGER.fine( "trace" );
 
          CertificateFactory fac = CertificateFactory.getInstance("X509");
          ByteArrayInputStream in = new ByteArrayInputStream(Base64.getDecoder().decode(certBase64));
@@ -152,7 +152,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
    private Key lookupVerificationKey(String keyId)
          throws Exception, GeneralSecurityException
       {
-         LOGGER.info( "NeaSigningKeyResolver::lookupVerificationKey" );
+         LOGGER.fine( "trace" );
 
          String jsonKeys = doHttps();
 
@@ -169,7 +169,7 @@ public class NeaSigningKeyResolver extends SigningKeyResolverAdapter
    @Override
    public Key resolveSigningKey(JwsHeader jwsHeader, Claims claims)
    {
-      LOGGER.info( "NeaSigningKeyResolver::resolveSigningKey" );
+      LOGGER.fine( "trace" );
 
       //inspect the header or claims, lookup and return the signing key
 
diff --git a/auth/src/main/java/NeaTokenFilter.java b/auth/src/main/java/NeaTokenFilter.java
index f24dc4c3ab688d2c096083e403991d97af58a3af..cbb5fc24a9a1ab5ee1031cce02fff558431694e8 100644
--- a/auth/src/main/java/NeaTokenFilter.java
+++ b/auth/src/main/java/NeaTokenFilter.java
@@ -34,7 +34,7 @@ import javax.servlet.http.HttpServletResponse;
 
 public class NeaTokenFilter implements Filter
 {
-   private static final Logger LOGGER = Logger.getLogger("NeaTokenFilter");
+   private static final Logger LOGGER = Logger.getLogger(NeaTokenFilter.class.getName());
    private static final NeaTokenSettings settings = NeaTokenSettings.getInstance();
 
    final String resourceId = settings.security.resourceId; //"vlkb"
@@ -57,9 +57,9 @@ public class NeaTokenFilter implements Filter
 
    String  qString = request.getQueryString();
    if(qString == null)
-      LOGGER.info(request.getRequestURL().toString());
+      LOGGER.finest(request.getRequestURL().toString());
    else
-      LOGGER.info(request.getRequestURL() + "    " + qString);
+      LOGGER.finest(request.getRequestURL() + "    " + qString);
 
    String authHeader = request.getHeader("Authorization");
    if (authHeader == null)
@@ -72,7 +72,7 @@ public class NeaTokenFilter implements Filter
       }
       else
       {
-         LOGGER.info("Request without Authorization header, no Principal added");
+         LOGGER.warning("Request without Authorization header, no Principal added");
          response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                "No Authorization in HTTP-header. Only authorized requests allowed.");
       }
@@ -83,7 +83,7 @@ public class NeaTokenFilter implements Filter
 
       if (authHeader.startsWith("Bearer ") && (authHeader.length() > "Bearer ".length()))
       {
-         LOGGER.info("Request with Authorization header and has Bearer entry");
+         LOGGER.finer("Request with Authorization header and has Bearer entry");
 
          String jws = authHeader.substring("Bearer ".length());
 
diff --git a/auth/src/main/java/NeaTokenSettings.java b/auth/src/main/java/NeaTokenSettings.java
index ce71c442a1d34e917e403ccab445f983f884a5b0..766d3906c830b582ec3471b286370b34cb1cd22b 100644
--- a/auth/src/main/java/NeaTokenSettings.java
+++ b/auth/src/main/java/NeaTokenSettings.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 
 class NeaTokenSettings
 {
-   private static final Logger LOGGER = Logger.getLogger("NeaTokenSettings");
+   //private static final Logger LOGGER = Logger.getLogger(NeaTokenSettings.class.getName());
 
    static final String VLKB_PROPERTIES = "neatoken.properties";
 
diff --git a/data-access/servlet/src/main/java/common/Subsurvey.java b/data-access/servlet/src/main/java/common/Subsurvey.java
index d5dfe48c2136518a42a5b38b555e94c2446149e3..d8f64cfc297b91560d1168871f142331e147c9f1 100644
--- a/data-access/servlet/src/main/java/common/Subsurvey.java
+++ b/data-access/servlet/src/main/java/common/Subsurvey.java
@@ -15,7 +15,7 @@ import java.util.ArrayList;
 
 class Subsurvey
 {
-   private static final Logger LOGGER = Logger.getLogger("Subsurvey");
+   private static final Logger LOGGER = Logger.getLogger(Subsurvey.class.getName());
 
    String description;
    String surveyname;
@@ -62,7 +62,7 @@ class Subsurvey
 
    static public Subsurvey findSubsurveyByStoragePath(Subsurvey[] dbSubsurveys, String storagePath)
    {
-      LOGGER.info("trace storagePath: " + storagePath);
+      LOGGER.fine("trace storagePath: " + storagePath);
 
       for(Subsurvey curr : dbSubsurveys)
       {
@@ -109,15 +109,15 @@ class Subsurvey
 
    public static Subsurvey[] loadSubsurveys(String csvFilename)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       /* avoid access files-system if csv-filename not configured */
       if( (csvFilename == null) || ( (csvFilename != null) && (csvFilename.length() < 1) ) )
       {
-         LOGGER.warning("csvFilename is empty, metadata not loaded");
+         LOGGER.config("csvFilename is empty, metadata not loaded");
          return null;
       }
-      LOGGER.info("load from: " + csvFilename);
+      LOGGER.config("load from: " + csvFilename);
 
       try
       {
@@ -147,13 +147,13 @@ class Subsurvey
       }
       catch(IOException ex) 
       {
-         LOGGER.info("Error while loading " + csvFilename + " -> " + ex.getMessage());
+         LOGGER.warning("While loading " + csvFilename + " -> " + ex.getMessage());
          return null;
          //throw new IllegalStateException("Error while loading " + csvFilename + " file", ex);
       }
       catch(CsvValidationException ex) 
       {
-         LOGGER.info("Error while reading " + csvFilename + " -> " + ex.getMessage());
+         LOGGER.warning("While reading " + csvFilename + " -> " + ex.getMessage());
          return null;
          //throw new IllegalStateException("Error while reading " + csvFilename + " file", ex);
       }
diff --git a/data-access/servlet/src/main/java/ops/CutArgs.java b/data-access/servlet/src/main/java/ops/CutArgs.java
index 2203c9cdf9069c458fc3c607796b381a55d51a2a..d677c1469000c317252d5fee69b6af8ac6e83769 100644
--- a/data-access/servlet/src/main/java/ops/CutArgs.java
+++ b/data-access/servlet/src/main/java/ops/CutArgs.java
@@ -53,11 +53,11 @@ import vo.parameter.*;
 // FIXME or clla this Jdl.java ?
 class CutArgs
 {
-   static final Logger LOGGER = Logger.getLogger("CutArgs");
+   static final Logger LOGGER = Logger.getLogger(CutArgs.class.getName());
 
    static CutArgs[] parseCutArgsArr(String jsonString)
    {
-      LOGGER.info("trace : " + jsonString);
+      LOGGER.fine("trace : " + jsonString);
 
       List<CutArgs> argsList = new ArrayList<CutArgs>();
 
@@ -71,7 +71,7 @@ class CutArgs
          {
             // FIXME check type
             JSONObject jElem = (JSONObject) o;
-            LOGGER.info("jElem: " + jElem.toString());
+            LOGGER.finest("jElem: " + jElem.toString());
 
             CutArgs args = new CutArgs();
 
@@ -102,7 +102,7 @@ class CutArgs
             if(jCoord != null)
             {
                // legacy
-               LOGGER.info("TEST: " + jCoord.toString());
+               LOGGER.finest("TEST: " + jCoord.toString());
 
                args.lon = (Double) jCoord.get("l");
                args.lat = (Double) jCoord.get("b");
diff --git a/data-access/servlet/src/main/java/ops/JdlMCutout.java b/data-access/servlet/src/main/java/ops/JdlMCutout.java
index 4b24b11bce6ae559c0c431f51773da3a5e704ad9..a8f10b79bcea936915487bd79bf5d7d9d4304a47 100644
--- a/data-access/servlet/src/main/java/ops/JdlMCutout.java
+++ b/data-access/servlet/src/main/java/ops/JdlMCutout.java
@@ -12,7 +12,7 @@ import org.json.simple.parser.ParseException;
 
 public class JdlMCutout
 {
-   static final Logger LOGGER = Logger.getLogger("JdlMCutout");
+   static final Logger LOGGER = Logger.getLogger(JdlMCutout.class.getName());
 
 
    /* used in mcutout to resolve pubdids to pathanme+hdunum */
@@ -137,9 +137,9 @@ public class JdlMCutout
 
             JSONArray jsonArray = (JSONArray)jsonObject.get("responses");
 
-            LOGGER.info("jsonArray.size  [responses]: " + jsonArray.size());
+            LOGGER.finest("jsonArray.size  [responses]: " + jsonArray.size());
             //MCutResult.Cut[] cutResArr = new MCutResult.Cut[jsonArray.size()];
-            //LOGGER.info("cutResArr.length[responses]: " + cutResArr.length);
+            //LOGGER.finest("cutResArr.length[responses]: " + cutResArr.length);
 
             ArrayList<MCutResult.Cut> cutResList = new ArrayList<MCutResult.Cut>();
 
@@ -148,7 +148,7 @@ public class JdlMCutout
             Iterator<JSONObject> itr = jsonArray.iterator();
             while (itr.hasNext())
             {
-               LOGGER.info("i: " + String.valueOf(i));
+               LOGGER.finest("i: " + String.valueOf(i));
                JSONObject jObj = itr.next();
 
                MCutResult mc = new MCutResult();
@@ -172,7 +172,7 @@ public class JdlMCutout
             cuts.fileSize = fileSize;
             cuts.fileName = fileName;
             cuts.cutResArr = cutResList.toArray(new MCutResult.Cut[0]);//cutResArr;
-            LOGGER.info("cuts.cutResArr.length[responses]: " + cuts.cutResArr.length);
+            LOGGER.finest("cuts.cutResArr.length[responses]: " + cuts.cutResArr.length);
          }
       }
       catch  (ParseException e)
diff --git a/data-access/servlet/src/main/java/ops/Regrid.java b/data-access/servlet/src/main/java/ops/Regrid.java
index 148c377b719a176dd4efd800d7aff6e48f06eeb8..04ef0662988a25a28633179a43725aef8f5d83aa 100644
--- a/data-access/servlet/src/main/java/ops/Regrid.java
+++ b/data-access/servlet/src/main/java/ops/Regrid.java
@@ -4,7 +4,7 @@
 // - merge : high level, which uses mergefiles after cutout
 
 import java.util.logging.Logger;
-import java.util.logging.Level;
+//import java.util.logging.Level;
 
 import java.io.IOException;
 import java.util.*; // ArrayList<String>
@@ -64,9 +64,9 @@ class Regrid
             Vnaxis.add(nx);
 
          } catch (FitsException e) {
-            LOGGER.log(Level.SEVERE, "dimensions:",e);
+            LOGGER.severe("dimensions: " + e.getMessage());
          } catch (IOException e) {
-            LOGGER.log(Level.SEVERE, "dimensions:",e);
+            LOGGER.severe("dimensions:" + e.getMessage());
          }
       }
       // check that dimensions in all files match
@@ -126,7 +126,7 @@ class Regrid
             // get card values as string (for exact match comparison to avoid string -> double conversion artifacts)
             // String allcardstr   = f.getHDU(0).getHeader().findKey("CRVAL3");
             // String cardvaluestr = f.getHDU(0).getHeader().findCard("CRVAL3").getValue();
-            // LOGGER.info("CRVAL3 as string: " + cardvaluestr);
+            // LOGGER.finest("CRVAL3 as string: " + cardvaluestr);
 
             Vcrval.add(f.getHDU(0).getHeader().getDoubleValue("CRVAL3"));
             Vcrpix.add(f.getHDU(0).getHeader().getDoubleValue("CRPIX3"));
@@ -135,16 +135,16 @@ class Regrid
 
 
          } catch (FitsException e) {
-            LOGGER.log(Level.SEVERE, "regrid_vel2:",e);
+            LOGGER.severe("regrid_vel2: " + e.getMessage());
          } catch (IOException e) {
-            LOGGER.log(Level.SEVERE, "regrid_vel2:",e);
+            LOGGER.severe("regrid_vel2: " + e.getMessage());
          }
 
       }
       /*/ debug print
         for( int ix = 0; ix < Vcrval.size() ; ix++ ) {
 
-        LOGGER.info(ix +
+        LOGGER.finest(ix +
         " " + Vcrval.get(ix) +
         " " + Vcdelt.get(ix) +
         " " + Vcrpix.get(ix) +
@@ -161,7 +161,7 @@ class Regrid
       // max diff(CRVAL3) << absvalue(CDELT3)
       //
       long dnaxis = Collections.max(Vnaxis) - Collections.min(Vnaxis);
-      //LOGGER.info("dNAXIS : " + dnaxis);
+      //LOGGER.finest("dNAXIS : " + dnaxis);
       if( dnaxis != 0 ) {
          return false;
       }
@@ -173,12 +173,12 @@ class Regrid
 
       // FIXME use exceptions instead...
       if(absavgCDELT == 0.0) {
-         LOGGER.warning("regrid: avg(CDELT3) == 0");
+         LOGGER.finest("regrid: avg(CDELT3) == 0");
          return false;
       }
 
       double dcdelt = java.lang.Math.abs(maxCDELT - minCDELT);
-      //LOGGER.info("dCDELT : " + dcdelt
+      //LOGGER.finest("dCDELT : " + dcdelt
       //                   + " ratio: " +
       //                   String.format("%.1f",100.0*dcdelt/absavgCDELT)
       //                   + " %" );
@@ -189,7 +189,7 @@ class Regrid
       double minCRVAL = Collections.min(Vcrval);
       double maxCRVAL = Collections.max(Vcrval);
       double dcrval = java.lang.Math.abs(maxCRVAL - minCRVAL);
-      //LOGGER.info("dCRVAL : " + dcrval + "|CDELT| : " + absavgCDELT
+      //LOGGER.finest("dCRVAL : " + dcrval + "|CDELT| : " + absavgCDELT
       //                   + " ratio: " +
       //                   String.format("%.1f",100.0*dcrval/absavgCDELT)
       //                   + " %" );
@@ -242,7 +242,7 @@ class Regrid
 
          } catch(Exception e) {
             // FIXME do error handling properly...
-            LOGGER.log(Level.SEVERE, "regrid_vel2:", e);
+            LOGGER.severe("regrid_vel2: " + e.getMessage());
          }
 
       }
diff --git a/data-access/servlet/src/main/java/ops/Reproject.java b/data-access/servlet/src/main/java/ops/Reproject.java
index 4245798092a8787a3f229fc4c9ecf68855475e0e..0e1cb009621087ae3aea119a25b54f9b2c2aeb41 100644
--- a/data-access/servlet/src/main/java/ops/Reproject.java
+++ b/data-access/servlet/src/main/java/ops/Reproject.java
@@ -23,9 +23,9 @@ class Reproject implements Runnable
    public void run()
    {
       String name = Thread.currentThread().getName();
-      VlkbAmqp.LOGGER.info("Start of " + name);
+      VlkbAmqp.LOGGER.fine("Start of " + name);
       response = datasets.mergefiles_reproject(id, prefix, fileName);
-      VlkbAmqp.LOGGER.info("End   of " + name);
+      VlkbAmqp.LOGGER.fine("End   of " + name);
    }
 
 }
diff --git a/data-access/servlet/src/main/java/ops/SodaImpl.java b/data-access/servlet/src/main/java/ops/SodaImpl.java
index 637c28324bee70b7d4627a1a97e22086d5dd4d28..4c69b407be0b6c926db3693e10f967957336c161 100644
--- a/data-access/servlet/src/main/java/ops/SodaImpl.java
+++ b/data-access/servlet/src/main/java/ops/SodaImpl.java
@@ -30,7 +30,7 @@ import vo.parameter.*;
 
 class SodaImpl implements Soda
 {
-   private static final Logger LOGGER = Logger.getLogger("SodaImpl");
+   private static final Logger LOGGER = Logger.getLogger(SodaImpl.class.getName());
    private static Settings.FITSPaths fitsPaths = null;
 
    private SodaImpl() {}
@@ -38,7 +38,7 @@ class SodaImpl implements Soda
 
    public SodaImpl(Settings.FITSPaths fitsPaths)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
       this.fitsPaths = fitsPaths;
    }
 
@@ -47,6 +47,8 @@ class SodaImpl implements Soda
          Pos pos, Band band, Time time, Pol pol, String pixels,
          OutputStream outputStream)  throws IOException, InterruptedException
    {
+      LOGGER.fine("trace");
+
       Instant start = Instant.now();
 
       boolean has_overlap  = false;
@@ -67,7 +69,7 @@ class SodaImpl implements Soda
          jReq.add(time);
          jReq.add(pol);
          String coordString = jReq.toString();
-         LOGGER.info("coordString: " + coordString);
+         LOGGER.finest("coordString: " + coordString);
 
          /* calc bounds */
 
@@ -79,7 +81,7 @@ class SodaImpl implements Soda
 
          ExecCmd execBounds = new ExecCmd();
          execBounds.doRun(bos, cmdBounds);
-         LOGGER.info("execBounds exitValue: " + execBounds.exitValue);
+         LOGGER.finest("execBounds exitValue: " + execBounds.exitValue);
 
          boolean has_result = (execBounds.exitValue == 0);
 
@@ -88,7 +90,7 @@ class SodaImpl implements Soda
             boundsString = new String(bos.toByteArray());
 
             boundsString = replaceWithGrid(boundsString, pos, band, time, pol);
-            LOGGER.info("boundsString(with GRID): " + boundsString);
+            LOGGER.finest("boundsString(with GRID): " + boundsString);
 
             has_overlap = !((boundsString != null) && boundsString.trim().isEmpty());
 
@@ -101,7 +103,7 @@ class SodaImpl implements Soda
          bos.close();
 
          Instant boundsDone = Instant.now();
-         LOGGER.info("EXECTIME boundsDone: " + Duration.between(start, boundsDone));
+         LOGGER.finer("EXECTIME boundsDone: " + Duration.between(start, boundsDone));
       }
 
       if(has_overlap || pixels_valid)
@@ -119,12 +121,12 @@ class SodaImpl implements Soda
          cmdCut[5] = fitsPaths.cutouts();
 
          if(outputStream == null)
-            LOGGER.info("supplied outputStream for cut-file is null");
+            LOGGER.finest("supplied outputStream for cut-file is null");
 
          ExecCmd execCut = new ExecCmd();
          execCut.doRun(outputStream, cmdCut);
 
-         LOGGER.info("execCut exitValue: " + execCut.exitValue);
+         LOGGER.finest("execCut exitValue: " + execCut.exitValue);
 
          boolean cut_successful = (execCut.exitValue == 0);
 
@@ -134,7 +136,7 @@ class SodaImpl implements Soda
          }
 
          Instant cutDone = Instant.now();
-         LOGGER.info("EXECTIME    cutDone: " + Duration.between(start, cutDone));
+         LOGGER.finer("EXECTIME    cutDone: " + Duration.between(start, cutDone));
       }
       else
       {
@@ -146,6 +148,8 @@ class SodaImpl implements Soda
 
    private String genRegionForVlkbOverlapCmd(Pos pos, Band band)
    {
+      LOGGER.fine("trace");
+
       String region = "";
 
       if(pos != null)
@@ -171,7 +175,7 @@ class SodaImpl implements Soda
          }
          else 
          {
-            LOGGER.info("FIXME here Exception: POLYGON not supported or pos.shape invalid: " + pos.shape);
+            LOGGER.finest("FIXME here Exception: POLYGON not supported or pos.shape invalid: " + pos.shape);
          }
 
       }
@@ -194,12 +198,12 @@ class SodaImpl implements Soda
       // remove end-of-line (was added by vlkb_ast.cpp: cout << ... << endl)
       String lineSeparator = System.lineSeparator();
       wcsBounds = wcsBounds.replace(lineSeparator, "");
-      LOGGER.info("BOUNDS: " + wcsBounds);
+      LOGGER.finest("BOUNDS: " + wcsBounds);
 
       // replace in wcsBounds those bounds where pos,band,time or pol has system=GRID
 
       String[] substr = wcsBounds.split("(?=AXES)", 2);
-      for(String ss : substr) LOGGER.info("boundsResult: " + ss);
+      for(String ss : substr) LOGGER.finest("boundsResult: " + ss);
 
       String boundsString = substr[0];
       boolean noOverlap = ((boundsString != null) && boundsString.trim().isEmpty());
@@ -213,12 +217,12 @@ class SodaImpl implements Soda
          if(substr.length > 1)
          {
             axesTypes = substr[1].replace("AXES"," ").trim();
-            LOGGER.info("AXES TYPES: " + axesTypes);
+            LOGGER.finest("AXES TYPES: " + axesTypes);
 
             String[] bnds  = normalize(boundsString);
             String[] types = normalize(axesTypes);
             // assert: bnds.length == types.length
-            LOGGER.info("boundsCount: " + bnds.length  + " typesCount: " + types.length);
+            LOGGER.finest("boundsCount: " + bnds.length  + " typesCount: " + types.length);
 
             if(bnds.length == types.length)
                boundsString = replaceBounds(bnds, types, pos, band);
@@ -246,7 +250,7 @@ class SodaImpl implements Soda
          }
       }
 
-      LOGGER.info("replaced: " + String.join(" ", bnds)) ;
+      LOGGER.finest("replaced: " + String.join(" ", bnds)) ;
 
       return "[" + String.join(" ", bnds)  + "]";
    }
@@ -256,7 +260,7 @@ class SodaImpl implements Soda
    private String[] normalize(String spaceStr)
    {
       String other = spaceStr.replace("[","").replace("]","");
-      LOGGER.info("normalize: " + other);
+      LOGGER.finest("normalize: " + other);
       return other.split("\\s+");
    }
 
diff --git a/data-access/servlet/src/main/java/ops/VlkbAmqp.java b/data-access/servlet/src/main/java/ops/VlkbAmqp.java
index 64af5a4a34f47fda5492bb42cda18cc749988c84..0184865308de4475c1e981d5a41b3a9e9b118508 100644
--- a/data-access/servlet/src/main/java/ops/VlkbAmqp.java
+++ b/data-access/servlet/src/main/java/ops/VlkbAmqp.java
@@ -29,7 +29,7 @@ import vo.parameter.*;
 
 class VlkbAmqp implements Vlkb
 {
-   static final Logger LOGGER = Logger.getLogger("VlkbAmqp");
+   static final Logger LOGGER = Logger.getLogger(VlkbAmqp.class.getName());
 
    private Settings    settings   = null;
    private Subsurvey[] subsurveys = null;
@@ -37,7 +37,7 @@ class VlkbAmqp implements Vlkb
 
    public VlkbAmqp()
    {
-      LOGGER.info("trace VlkbAmqp()");
+      LOGGER.fine("trace VlkbAmqp()");
       this.settings = Settings.getInstance();
       this.resolver = (settings.dbConn.isDbUriEmpty() ? new ResolverFromId(subsurveys)
             : new ResolverByObsCore(settings.dbConn, subsurveys));
@@ -46,7 +46,7 @@ class VlkbAmqp implements Vlkb
 
    public VlkbAmqp(Settings settings)
    {
-      LOGGER.info("trace VlkbAmqp(settings)");
+      LOGGER.fine("trace VlkbAmqp(settings)");
       this.settings = settings;
       this.resolver = (settings.dbConn.isDbUriEmpty() ? new ResolverFromId(subsurveys)
             : new ResolverByObsCore(settings.dbConn, subsurveys));
@@ -56,7 +56,7 @@ class VlkbAmqp implements Vlkb
 
    public VlkbAmqp(Settings settings, Subsurvey[] subsurveys)
    {
-      LOGGER.info("trace VlkbAmqp(settings, subsurveys)");
+      LOGGER.fine("trace VlkbAmqp(settings, subsurveys)");
       this.settings = settings;
       this.subsurveys = subsurveys;
       this.resolver = (settings.dbConn.isDbUriEmpty() ? new ResolverFromId(subsurveys)
@@ -69,7 +69,7 @@ class VlkbAmqp implements Vlkb
    public CutResult doMerge(String[] idArr, Coord coord, boolean countNullValues)
       throws FileNotFoundException, IOException
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       return merge(idArr, coord, countNullValues);
    }
@@ -82,11 +82,11 @@ class VlkbAmqp implements Vlkb
       boolean countNullValues, FitsCard[] extraCards)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace: " + pos.toString() );
+         LOGGER.fine("trace: " + pos.toString() );
 
          CutResult cutResult = new CutResult();
 
-         LOGGER.info("Using AMQP");
+         LOGGER.finer("Using AMQP");
 
          JsonEncoder jReq = new JsonEncoder();
          jReq.add(relPathname, hdunum);
@@ -113,7 +113,7 @@ class VlkbAmqp implements Vlkb
          boolean countNullValues, Subsurvey[] subsurveys)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace");
+         LOGGER.fine("trace");
 
          FitsCard[] extraCards = null;
 
@@ -128,7 +128,7 @@ class VlkbAmqp implements Vlkb
          }
          else
          {
-            LOGGER.info("Resolver returns subsurveyId null: no extraCards loaded.");
+            LOGGER.finer("Resolver returns subsurveyId null: no extraCards loaded.");
          }
 
          final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file
@@ -148,13 +148,13 @@ class VlkbAmqp implements Vlkb
    public MCutResult doMCutout(String jdlJson)
          throws IOException
       {
-         LOGGER.info("trace");
+         LOGGER.fine("trace");
 
          MCutResult mCutResult;
 
-         LOGGER.info("doMCutout over AMQP");
+         LOGGER.finer("doMCutout over AMQP");
          String updatedJsonString = JdlMCutout.resolveAndUpdateJsonRequest(jdlJson, settings, subsurveys);
-         LOGGER.info("doMCutout over AMQP : " + updatedJsonString);
+         LOGGER.finest("doMCutout over AMQP : " + updatedJsonString);
          String outJson = RpcOverAmqp.doRpc(settings.amqpConn,  JdlMCutout.mcutoutToJson(updatedJsonString) );
          mCutResult = JdlMCutout.responseFromMCutoutJson(outJson);
 
@@ -199,9 +199,9 @@ class VlkbAmqp implements Vlkb
       //Subsurvey.subsurveysFindCards(subsurveys, rsl.obsCollection());//rsl.subsurveyId);
       String absSubimgPathname = settings.fitsPaths.cutouts() + "/"
          + generateSubimgPathname(rsl.relPathname(), rsl.hdunum());
-      LOGGER.info("absSubimgPathname: " + absSubimgPathname);
+      LOGGER.finest("absSubimgPathname: " + absSubimgPathname);
 
-      LOGGER.info("Using AMQP");
+      LOGGER.finer("Using AMQP");
 
       JsonEncoder jReq = new JsonEncoder();
       jReq.add(rsl.relPathname(), rsl.hdunum());
@@ -223,7 +223,7 @@ class VlkbAmqp implements Vlkb
 
    protected CutResult merge(String[] pubdids, Coord coord, Boolean countNullValues)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       ArrayList<CutResult> allresults = new ArrayList<CutResult>();
 
@@ -256,7 +256,7 @@ class VlkbAmqp implements Vlkb
             Boolean changed = grid.regrid_vel2(allCutPathnames);
             if(changed){
                //allresults.add("MSG Keywords CDELT3, CRVAL3 were adjusted for merge regridding.");
-               LOGGER.info("MSG Keywords CDELT3, CRVAL3 were adjusted for merge regridding.");
+               LOGGER.finer("MSG Keywords CDELT3, CRVAL3 were adjusted for merge regridding.");
             }
          }
 
@@ -308,7 +308,7 @@ class VlkbAmqp implements Vlkb
          String prefix,          // IN prefix added after filename-start-word
          String[] filestomerge)  // IN abs path with filenames to be merged
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       String InJson = JsonEncoderMerge.mergefilesToJson( prefix, filestomerge);
       String OutJson = RpcOverAmqp.doRpc(settings.amqpConn, InJson);
@@ -325,10 +325,10 @@ class VlkbAmqp implements Vlkb
          String prefix,          // IN prefix added after filename-start-word
          String[] filestomerge)  // IN abs path with filenames to be merged
    {
-      LOGGER.info("mergefiles_parallel()");
+      LOGGER.fine("trace");
 
       String[] responseCH = mergefiles_common_header(jobId, logfilename, prefix, filestomerge);
-      for(String sentence : responseCH) VlkbAmqp.LOGGER.info("responseCmnHdr: " + sentence);
+      for(String sentence : responseCH) VlkbAmqp.LOGGER.finest("responseCmnHdr: " + sentence);
       // check if response errored -> abort with 500: Internal Server Error & log details
 
       int threadsCount = filestomerge.length;
@@ -360,7 +360,7 @@ class VlkbAmqp implements Vlkb
          }
 
 
-         for(String sentence : reprojectArr[i].response) VlkbAmqp.LOGGER.info("response[" + String.valueOf(i) + "]: " + sentence);
+         for(String sentence : reprojectArr[i].response) VlkbAmqp.LOGGER.finest("response[" + String.valueOf(i) + "]: " + sentence);
          if(!isResponseOk(reprojectArr[i].response))
          {
             ;// FIXME response incorrect -> abort merge-job, free resources
@@ -391,7 +391,7 @@ class VlkbAmqp implements Vlkb
          String prefix,          // IN prefix added after filename-start-word
          String[] filestomerge)  // IN abs path with filenames to be merged
    {
-      LOGGER.info("mergefiles_split_execution()");
+      LOGGER.fine("trace");
 
       String[] responseCH = mergefiles_common_header(jobId, logfilename, prefix, filestomerge);
       // check if response errored -> abort with 500: Internal Server Error & log details
@@ -414,7 +414,7 @@ class VlkbAmqp implements Vlkb
          String prefix,          // IN prefix added after filename-start-word
          String[] filestomerge)  // IN abs path with filenames to be merged
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       String InJson = JsonEncoderMerge.mergefilesCommonHeaderToJson(jobId, prefix, filestomerge);
       String OutJson = RpcOverAmqp.doRpc(settings.amqpConn, InJson);
@@ -429,7 +429,7 @@ class VlkbAmqp implements Vlkb
          String prefix,          // IN prefix added after filename-start-word
          String fitsfilename)    // IN logfilename without path
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       String InJson = JsonEncoderMerge.mergefilesReprojectToJson(jobId, prefix, fitsfilename);
       String OutJson = RpcOverAmqp.doRpc(settings.amqpConn, InJson);
@@ -443,7 +443,7 @@ class VlkbAmqp implements Vlkb
          String jobId,     // IN jobId to distinguish parallel executed requests
          String prefix)          // IN prefix added after filename-start-word
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       String InJson = JsonEncoderMerge.mergefilesAddReprojectedToJson(jobId, prefix);
       String OutJson = RpcOverAmqp.doRpc(settings.amqpConn, InJson);
@@ -462,7 +462,7 @@ class VlkbAmqp implements Vlkb
    // -- from cutout: the cutout filename (server local)
    private String[] selectCutPathnames(CutResult[] results) {
 
-      LOGGER.info("selectCutPathnames()");
+      LOGGER.fine("trace");
 
       // return only data (without MSG's LOG's etc)
       ArrayList<String> data = new ArrayList<String>();
@@ -470,7 +470,7 @@ class VlkbAmqp implements Vlkb
       // sanity check - move after doFunc call (here covered by exception)
       // FIXME consider catch null-pointer-exception
       if(results == null) {
-         LOGGER.info("selectCutPathnames: results-table is null.");
+         LOGGER.finest("selectCutPathnames: results-table is null.");
          return null;
       }
 
@@ -489,8 +489,8 @@ class VlkbAmqp implements Vlkb
          String localfname = res.substring(4);//.replaceAll(FITScutpath, "");
          String[] ssfn = localfname.split(":");
          //String[] ssfn = localfname.substring(4).split(":");
-         LOGGER.info("ssfn[0]: " + ssfn[0]);
-         LOGGER.info("ssfn[1]: " + ssfn[1]);
+         LOGGER.finest("ssfn[0]: " + ssfn[0]);
+         LOGGER.finest("ssfn[1]: " + ssfn[1]);
          data.add(ssfn[1]);
          //data.add(localfname);
          break;
diff --git a/data-access/servlet/src/main/java/ops/VlkbCli.java b/data-access/servlet/src/main/java/ops/VlkbCli.java
index f49b229a531f9cbb018455cb1028404ca611b9f7..f10ff25fd7f7c8f1e8ae2ea78b3317a2633035d3 100644
--- a/data-access/servlet/src/main/java/ops/VlkbCli.java
+++ b/data-access/servlet/src/main/java/ops/VlkbCli.java
@@ -39,7 +39,7 @@ import vo.parameter.*;
 
 class VlkbCli implements Vlkb
 {
-   static final Logger LOGGER = Logger.getLogger("VlkbCli");
+   static final Logger LOGGER = Logger.getLogger(VlkbCli.class.getName());
 
    private Settings    settings   = null;
    private Subsurvey[] subsurveys = null;
@@ -49,7 +49,7 @@ class VlkbCli implements Vlkb
 
    public VlkbCli()
    {
-      LOGGER.info("trace VlkbCli()");
+      LOGGER.fine("trace VlkbCli()");
       this.settings = Settings.getInstance();
       this.soda = new SodaImpl(settings.fitsPaths);
       this.resolver = (settings.dbConn.isDbUriEmpty() ? new ResolverFromId(subsurveys)
@@ -59,7 +59,7 @@ class VlkbCli implements Vlkb
 
    public VlkbCli(Settings settings)
    {
-      LOGGER.info("trace VlkbCli(settings)");
+      LOGGER.fine("trace VlkbCli(settings)");
       this.settings = settings;
       this.soda = new SodaImpl(settings.fitsPaths);
       this.resolver = (settings.dbConn.isDbUriEmpty() ? new ResolverFromId(subsurveys)
@@ -69,7 +69,7 @@ class VlkbCli implements Vlkb
 
    public VlkbCli(Settings settings, Subsurvey[] subsurveys)
    {
-      LOGGER.info("trace VlkbCli(settings, subsurveys)");
+      LOGGER.fine("trace VlkbCli(settings, subsurveys)");
       this.settings = settings;
       this.subsurveys = subsurveys;
       this.soda = new SodaImpl(settings.fitsPaths);
@@ -82,7 +82,7 @@ class VlkbCli implements Vlkb
    public CutResult doMerge(String[] idArr, Coord coord, boolean countNullValues)
       throws FileNotFoundException, IOException
    {
-      LOGGER.info("trace doMerge by CLI is NOT IMPLEMENTED (only by AMQP)");
+      LOGGER.fine("trace doMerge by CLI is NOT IMPLEMENTED (only by AMQP)");
 
       return new CutResult();
    }
@@ -94,16 +94,16 @@ class VlkbCli implements Vlkb
          boolean countNullValues, FitsCard[] extraCards)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace: " + pos.toString() );
+         LOGGER.fine("trace: " + pos.toString() );
 
          CutResult cutResult = new CutResult();
 
-         LOGGER.info("Using doStream() to local file");
+         LOGGER.finer("Using doStream() to local file");
 
          String absSubimgPathname = settings.fitsPaths.cutouts()
             + "/" + generateSubimgPathname(relPathname, hdunum);
 
-         LOGGER.info("Uses local filename : " + absSubimgPathname);
+         LOGGER.finer("Uses local filename : " + absSubimgPathname);
 
          OutputStream fileOutputStream = new FileOutputStream( new File(absSubimgPathname) );
 
@@ -120,7 +120,7 @@ class VlkbCli implements Vlkb
 
          if(extraCards == null || (extraCards.length < 1))
          {
-            LOGGER.info("Adding extraCards to cut-file implemented only in VlkbAmql");
+            LOGGER.finer("Adding extraCards to cut-file implemented only in VlkbAmql");
          }
 
          cutResult.pixels = null;
@@ -143,7 +143,7 @@ class VlkbCli implements Vlkb
 
          ExecCmd exec = new ExecCmd();
          exec.doRun(bos, cmdBounds);
-         LOGGER.info("exec NullVals exitValue: " + exec.exitValue);
+         LOGGER.finest("exec NullVals exitValue: " + exec.exitValue);
 
          bos.close();
 
@@ -151,7 +151,7 @@ class VlkbCli implements Vlkb
          if(hasResult)
          {
             String nullValsString = new String(bos.toByteArray());
-            LOGGER.info("vlkb nullvals: " + nullValsString);
+            LOGGER.finest("vlkb nullvals: " + nullValsString);
 
             if((nullValsString != null) && nullValsString.trim().isEmpty())
             {
@@ -183,7 +183,7 @@ class VlkbCli implements Vlkb
          boolean countNullValues/*, Subsurvey[] subsurveys*/)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace");
+         LOGGER.fine("trace");
 
          FitsCard[] extraCards = null;
 
@@ -198,7 +198,7 @@ class VlkbCli implements Vlkb
          }
          else
          {
-            LOGGER.info("Resolver returns subsurveyId null: no extraCards loaded.");
+            LOGGER.finer("Resolver returns subsurveyId null: no extraCards loaded.");
          }
 
          final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file
@@ -237,7 +237,7 @@ class VlkbCli implements Vlkb
    public MCutResult doMCutout(String jdlJson)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace");
+         LOGGER.fine("trace");
 
          MCutResult mCutResult;
 
@@ -253,7 +253,7 @@ class VlkbCli implements Vlkb
 
    private MCutResult.Cut[] doCutouts(CutArgs[] cutArgsArr)
    {
-      LOGGER.info("trace, count of cuts : " + String.valueOf( cutArgsArr.length ) );
+      LOGGER.fine("trace, count of cuts : " + String.valueOf( cutArgsArr.length ) );
 
       List<MCutResult.Cut> cutResList = new ArrayList<MCutResult.Cut>();
 
@@ -266,7 +266,7 @@ class VlkbCli implements Vlkb
 
          cut.index = ix++;
 
-         LOGGER.info("cut" + String.valueOf(cut.index) + " : " + cut.content);
+         LOGGER.finest("cut" + String.valueOf(cut.index) + " : " + cut.content);
 
          cutResList.add(cut);
       }
@@ -297,7 +297,7 @@ class VlkbCli implements Vlkb
 
          for(MCutResult.Cut cut : cutArr)
          {
-            LOGGER.info("cut-id"+ String.valueOf(cut.index) + " -> " + cut.content);
+            LOGGER.finest("cut-id"+ String.valueOf(cut.index) + " -> " + cut.content);
             if(cut.contentType == MCutResult.Cut.ContentType.FILENAME)
             {
                Path p = Paths.get(cut.content);
@@ -336,7 +336,7 @@ class VlkbCli implements Vlkb
    private MCutResult.Cut doFileByIdWithErr(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
          boolean countNullValues/*, Subsurvey[] subsurveys*/)
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       MCutResult mCutResult = new MCutResult();
       MCutResult.Cut cut = mCutResult.new Cut(/* FIXME eventually add here new Inputs(id, pos,..) */);
@@ -354,19 +354,19 @@ class VlkbCli implements Vlkb
       {
          cut.content = "MultiValuedParamNotSupported: " + ex.getMessage();
          cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST;
-         LOGGER.info(cut.content);
+         LOGGER.warning(cut.content);
       }
       catch(IllegalArgumentException ex) 
       {
          cut.content = "IllegalArgumentException: " + ex.getMessage();
          cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST;
-         LOGGER.info(cut.content);
+         LOGGER.warning(cut.content);
       }
       catch(Exception ex) 
       {
          cut.content     = "Exception: " + ex.getMessage();
          cut.contentType = MCutResult.Cut.ContentType.SERVICE_ERROR;
-         LOGGER.info(cut.content);
+         LOGGER.severe(cut.content);
          ex.printStackTrace();
       }
 
diff --git a/data-access/servlet/src/main/java/ops/amqp/JsonDecoder.java b/data-access/servlet/src/main/java/ops/amqp/JsonDecoder.java
index 93263e836e0b9157fadff65a3847822eb9b4a6dd..cfc3b72f566504320a955fd2be3fa78e73733966 100644
--- a/data-access/servlet/src/main/java/ops/amqp/JsonDecoder.java
+++ b/data-access/servlet/src/main/java/ops/amqp/JsonDecoder.java
@@ -31,7 +31,7 @@ import org.json.simple.parser.ParseException;
 
 public class JsonDecoder
 {
- static final Logger LOGGER = Logger.getLogger("JsonDecoder");
+ static final Logger LOGGER = Logger.getLogger(JsonDecoder.class.getName());
 
    public static CutResult responseFromCutoutJson(String response)
       // throws ParseException
@@ -77,7 +77,7 @@ public class JsonDecoder
       }
       catch  (ParseException e)
       {
-         LOGGER.info(e.getMessage());
+         LOGGER.severe(e.getMessage());
          e.printStackTrace();
          throw new IllegalStateException("Internal system error.");
       }
diff --git a/data-access/servlet/src/main/java/ops/amqp/JsonEncoder.java b/data-access/servlet/src/main/java/ops/amqp/JsonEncoder.java
index 08918487d7143169942376eb3da961e2e406f2f9..52a8a43687e718b4fca2b94e3964fd762b5904b3 100644
--- a/data-access/servlet/src/main/java/ops/amqp/JsonEncoder.java
+++ b/data-access/servlet/src/main/java/ops/amqp/JsonEncoder.java
@@ -12,7 +12,7 @@ import vo.parameter.*;
 
 public class JsonEncoder
 {
-   static final Logger LOGGER = Logger.getLogger("JsonEncoder");
+   static final Logger LOGGER = Logger.getLogger(JsonEncoder.class.getName());
 
    private JSONObject obj;
 
@@ -23,8 +23,6 @@ public class JsonEncoder
 
    public void add(String pathname, int hdunum)
    {
-      LOGGER.info("trace" + pathname);
-
       this.obj.put("img_pathname", pathname);
       this.obj.put("img_hdunum",   hdunum);
    }
@@ -35,6 +33,8 @@ public class JsonEncoder
 
    public void add(Pos pos)
    {
+      LOGGER.fine("trace");
+
       if(pos != null)
       {
          JSONObject j = new JSONObject();
diff --git a/data-access/servlet/src/main/java/ops/amqp/RpcOverAmqp.java b/data-access/servlet/src/main/java/ops/amqp/RpcOverAmqp.java
index ff4068ec88f6e13092cd9a9920fa7f4a33c96b80..8aa1b1ad2144f8a8561a0a381ecd62657f4612cf 100644
--- a/data-access/servlet/src/main/java/ops/amqp/RpcOverAmqp.java
+++ b/data-access/servlet/src/main/java/ops/amqp/RpcOverAmqp.java
@@ -25,7 +25,7 @@ import java.util.UUID;
 
 public class RpcOverAmqp
 {
- private static final Logger LOGGER = Logger.getLogger("RpcOverAmqp");
+ private static final Logger LOGGER = Logger.getLogger(RpcOverAmqp.class.getName());
 
 	private final boolean NO_ACK = true;
 	// affects message consume from queue:
@@ -48,6 +48,8 @@ public class RpcOverAmqp
 
  public static String doRpc(Settings.AmqpConn  amqpConn, String InStr)
    {
+      LOGGER.fine("trace");
+
       final String userName = "guest";
       final String password = "guest";
       // FIXME move these to Settings
@@ -64,13 +66,13 @@ public class RpcOverAmqp
 
       try
       {
-         LOGGER.info("Sent request : " + InStr);
+         LOGGER.finer("Sent request : " + InStr);
          OutStr = rpc.callAndWaitReply(InStr);
-         LOGGER.info("Got response : " + OutStr);
+         LOGGER.finer("Got response : " + OutStr);
       }
       catch  (Exception e)
       {
-         e.printStackTrace();
+         LOGGER.severe("Exception: " + e.getMessage());
       }
       finally
       {
@@ -80,7 +82,7 @@ public class RpcOverAmqp
          }
          catch (Exception ignore)
          {
-            LOGGER.info("ignoring exception on rpc.close():" + ignore.getMessage());
+            LOGGER.finer("ignoring exception on rpc.close():" + ignore.getMessage());
          }
       }
 
@@ -122,7 +124,7 @@ public class RpcOverAmqp
 		}
 		catch(Exception e)
 		{
-			e.printStackTrace();
+			LOGGER.severe("Exception: " + e.getMessage());
 		}
 	}
 
@@ -150,7 +152,7 @@ public class RpcOverAmqp
 
 			QueueingConsumer.Delivery delivery = consumer.nextDelivery();
 
-			System.out.println("CorrId sent[" + channelNumber + "]: "  + delivery.getProperties().getCorrelationId()
+			LOGGER.finest("CorrId sent[" + channelNumber + "]: "  + delivery.getProperties().getCorrelationId()
 					+ "\nCorrId recv: " + corrId
 					+ "\nreplyQueueName: " +  replyQueueName);
 
diff --git a/data-access/servlet/src/main/java/ops/cli/ExecCmd.java b/data-access/servlet/src/main/java/ops/cli/ExecCmd.java
index 43f7692078ca7a85898436fd7ca51e1c27d2bc7d..cee6e77b0eb8d140c097654ab4d8d107b5168633 100644
--- a/data-access/servlet/src/main/java/ops/cli/ExecCmd.java
+++ b/data-access/servlet/src/main/java/ops/cli/ExecCmd.java
@@ -6,7 +6,7 @@ import java.io.*;
 
 class StreamGobbler extends Thread
 {
-   public static final Logger LOGGER = Logger.getLogger("StreamGobbler");
+   public static final Logger LOGGER = Logger.getLogger(StreamGobbler.class.getName());
 
    InputStream is;
    String type;
@@ -19,6 +19,7 @@ class StreamGobbler extends Thread
 
    StreamGobbler(InputStream is, String type, OutputStream redirect)
    {
+      LOGGER.fine("trace");
       this.is = is;
       this.type = type;
       this.os = redirect;
@@ -27,6 +28,8 @@ class StreamGobbler extends Thread
 
    public void run()
    {
+      LOGGER.fine("trace");
+
       try
       {
          BufferedOutputStream bos = null;
@@ -45,7 +48,7 @@ class StreamGobbler extends Thread
             }
             else
             {
-               LOGGER.info(type + ">" + new String(buffer, 0, nread, "utf-8"));
+               LOGGER.finest(type + ">" + new String(buffer, 0, nread, "utf-8"));
             }
          }
 
@@ -62,16 +65,16 @@ class StreamGobbler extends Thread
 
 class ExecCmd
 {
-   public static final Logger LOGGER = Logger.getLogger("ExecCmd");
+   public static final Logger LOGGER = Logger.getLogger(ExecCmd.class.getName());
 
    public int exitValue;
 
    public void doRun(OutputStream outputStream, String[] cmd)
       throws IOException, InterruptedException
    {
-      // Assert outputStream != null
+      LOGGER.fine("trace CMD: " + Arrays.toString(cmd));
 
-      LOGGER.info("CMD: " + Arrays.toString(cmd));
+      // Assert outputStream != null
 
       long start_nsec = System.nanoTime();
 
@@ -103,7 +106,7 @@ class ExecCmd
 
       long meas4_nsec = System.nanoTime();
 
-      LOGGER.info("RUNTIME[nsec] ExecCmd::doRun(): "
+      LOGGER.finer("RUNTIME[nsec] ExecCmd::doRun(): "
             +       String.valueOf((long)Math.round( (meas1_nsec - start_nsec)/1.0e6 ))
             + " " + String.valueOf((long)Math.round( (meas2_nsec - start_nsec)/1.0e6 ))
             + " " + String.valueOf((long)Math.round( (meas3_nsec - start_nsec)/1.0e6 ))
diff --git a/data-access/servlet/src/main/java/resolver/ResolverByObsCore.java b/data-access/servlet/src/main/java/resolver/ResolverByObsCore.java
index b2a101d427681a390c082a244eec8d150839f7d7..d2490f2498237ac1d8223aad5235128e70c0c288 100644
--- a/data-access/servlet/src/main/java/resolver/ResolverByObsCore.java
+++ b/data-access/servlet/src/main/java/resolver/ResolverByObsCore.java
@@ -30,25 +30,25 @@ class ResolverByObsCore implements Resolver
 
    public void resolve(String pubdid)
    {
-      LOGGER.info("trace " + pubdid);
+      LOGGER.fine("trace " + pubdid);
       try
       {
          resolveByMapping(pubdid, dbConn);
       }
       catch(ClassNotFoundException e)
       {
-         LOGGER.info("DB driver class was not loaded. No database connection.");
+         LOGGER.severe("DB driver class was not loaded. No database connection.");
       }
-      LOGGER.info("relPathname   : " + relPathname);
-      LOGGER.info("hdunum        : " + String.valueOf(hdunum));
-      LOGGER.info("obsCollection : " + this.subsurveyId);
+      LOGGER.finer("relPathname   : " + relPathname);
+      LOGGER.finer("hdunum        : " + String.valueOf(hdunum));
+      LOGGER.finer("obsCollection : " + this.subsurveyId);
    }
 
 
 
    private void resolveByMapping(String pubdid, Settings.DBConn dbConn) throws ClassNotFoundException
    {
-      LOGGER.info("trace " + pubdid);
+      LOGGER.fine("trace " + pubdid);
 
       if(this.subsurveys == null)
       {
@@ -102,7 +102,7 @@ class ResolverByObsCore implements Resolver
    private void db_queryAccessUrlAndObsCollection(Settings.DBConn dbConn, String pubdid)//, String accessUrl, String obsCollection)
       throws ClassNotFoundException
    {
-      LOGGER.info("trace");
+      LOGGER.fine("trace");
 
       ResolverByObsCoreDb rdb;
       synchronized(ResolverByObsCoreDb.class)
diff --git a/data-access/servlet/src/main/java/resolver/ResolverByObsCoreDb.java b/data-access/servlet/src/main/java/resolver/ResolverByObsCoreDb.java
index 5f80c98dda71e83bd084b7bfefcf4fbbc76cc7a5..57847af6fd18135763bdc58f97f77739fef8c894 100644
--- a/data-access/servlet/src/main/java/resolver/ResolverByObsCoreDb.java
+++ b/data-access/servlet/src/main/java/resolver/ResolverByObsCoreDb.java
@@ -43,7 +43,7 @@ public class ResolverByObsCoreDb
       conn = null;
       st   = null;
       res  = null;
-      //LOGGER.info("Loading DB driver: " + DB_DRIVER);
+      //LOGGER.finer("Loading DB driver: " + DB_DRIVER);
       //Class.forName(DB_DRIVER);
    }
 
@@ -54,11 +54,11 @@ public class ResolverByObsCoreDb
 
       String TheQuery = "SELECT access_url,obs_collection FROM obscore "
          + "WHERE obs_publisher_did = \'"+ obsPubdid +"\'";
-      LOGGER.info(TheQuery);
+      LOGGER.finest(TheQuery);
 
       String[] results = new String[2];
 
-      LOGGER.info("Connecting to: " + dbconn.uri() + " with optional user/pwd: " + dbconn.userName() + " / " + dbconn.password() );
+      LOGGER.finer("Connecting to: " + dbconn.uri() + " with optional user/pwd: " + dbconn.userName() + " / " + dbconn.password() );
 
       try(
             Connection conn = DriverManager.getConnection(dbconn.uri(), dbconn.userName(), dbconn.password());
@@ -69,7 +69,7 @@ public class ResolverByObsCoreDb
 
          if(res == null)
          {
-            LOGGER.info("Pubdid not in the db: " + pubdid);
+            LOGGER.finest("Pubdid not in the db: " + pubdid);
             return null;
          };
 
@@ -91,7 +91,7 @@ public class ResolverByObsCoreDb
       }
 /*      catch (ClassNotFoundException e)
       {
-         LOGGER.info("DB driver "+ DB_DRIVER +" not found: " + e.getMessage());
+         LOGGER.severe("DB driver "+ DB_DRIVER +" not found: " + e.getMessage());
          e.printStackTrace();
       }
             finally
@@ -121,12 +121,12 @@ public class ResolverByObsCoreDb
 
    private void logSqlExInfo(SQLException se)
    {
-      LOGGER.info("SQLState : " + se.getSQLState());
-      LOGGER.info("ErrorCode: " + se.getErrorCode());
-      LOGGER.info("Message  : " + se.getMessage());
+      LOGGER.finer("SQLState : " + se.getSQLState());
+      LOGGER.finer("ErrorCode: " + se.getErrorCode());
+      LOGGER.finer("Message  : " + se.getMessage());
       Throwable t = se.getCause();
       while(t != null) {
-         LOGGER.info("Cause: " + t);
+         LOGGER.finer("Cause: " + t);
          t = t.getCause();
       }
    }
@@ -143,11 +143,11 @@ public class ResolverByObsCoreDb
 //    Class.forName(DB_DRIVER);
    /* OR
     * DriverManager.registerDriver(new org.postgresql.Driver());
-    * LOGGER.info(getClasspathString());
-    * LOGGER.info(getRegisteredDriverList());
+    * LOGGER.finest(getClasspathString());
+    * LOGGER.finest(getRegisteredDriverList());
     * /
 
-    LOGGER.info("Connecting to: " + dbconn.uri() + " with optional user/pwd: " + dbconn.userName() + " / " + dbconn.password() );
+    LOGGER.finer("Connecting to: " + dbconn.uri() + " with optional user/pwd: " + dbconn.userName() + " / " + dbconn.password() );
 
 //    Connection conn = DriverManager.getConnection(dbconn.uri(), dbconn.userName(), dbconn.password());
 
diff --git a/data-access/servlet/src/main/java/resolver/ResolverFromId.java b/data-access/servlet/src/main/java/resolver/ResolverFromId.java
index 95ee9eccbae506a7641767196cea07b91fcb77ee..847aa6a1018aaf2dd85e7fe0b08ce4dd93c10164 100644
--- a/data-access/servlet/src/main/java/resolver/ResolverFromId.java
+++ b/data-access/servlet/src/main/java/resolver/ResolverFromId.java
@@ -25,7 +25,7 @@ class ResolverFromId implements Resolver
 
    public void resolve(String pubdid)
    {
-      LOGGER.info("trace " + pubdid);
+      LOGGER.fine("trace " + pubdid);
 
       boolean isIvoid = pubdid.substring(0,6).equals("ivo://");
 
@@ -35,9 +35,9 @@ class ResolverFromId implements Resolver
 
          // FIXME resolve subsurveyId by matching relPathname to subsurveys::storage-path & file-filter
 
-         LOGGER.info("relPathname : " + relPathname);
-         LOGGER.info("hdunum      : " + String.valueOf(hdunum));
-         LOGGER.info("subsurveyId : " + ((subsurveyId == null) ? "null" : this.subsurveyId) );
+         LOGGER.finer("relPathname : " + relPathname);
+         LOGGER.finer("hdunum      : " + String.valueOf(hdunum));
+         LOGGER.finer("subsurveyId : " + ((subsurveyId == null) ? "null" : this.subsurveyId) );
       }
       else
       {
@@ -49,7 +49,7 @@ class ResolverFromId implements Resolver
 
    private void resolveIvoid(String pubdid)
    {
-      LOGGER.info("trace " + pubdid);
+      LOGGER.fine("trace " + pubdid);
 
       int qmarkIx = pubdid.lastIndexOf("?");
       int dhashIx = pubdid.lastIndexOf("#");// returns -1 if hash not found
diff --git a/data-access/servlet/src/main/java/webapi/AuthZFilter.java b/data-access/servlet/src/main/java/webapi/AuthZFilter.java
index c2b94e1f7430f3fb4c9e18411474a9e870a74785..d24628f832313f5848544073795b31c1be3de525 100644
--- a/data-access/servlet/src/main/java/webapi/AuthZFilter.java
+++ b/data-access/servlet/src/main/java/webapi/AuthZFilter.java
@@ -37,7 +37,7 @@ import java.io.ByteArrayOutputStream;
 
 class AuthZ
 {
-   private static final Logger LOGGER = Logger.getLogger("AuthZ");
+   private static final Logger LOGGER = Logger.getLogger(AuthZ.class.getName());
    private static final AuthZSettings settings = AuthZSettings.getInstance("authpolicy.properties");
 
    List<String> pubdidList = new ArrayList<String>();
@@ -47,7 +47,7 @@ class AuthZ
 
    public AuthZ(HttpServletRequest req) throws IOException, ServletException
    {
-      LOGGER.info("constructor");
+      LOGGER.fine("constructor");
 
       String[] pubdidArr = req.getParameterValues("ID");
       if(pubdidArr == null)
@@ -61,7 +61,7 @@ class AuthZ
          for(String pubdid : pubdidArr)
             if(pubdid.length() > 0) pubdidList.add(pubdid);
 
-         LOGGER.info("pubdids: " + String.join(" ", pubdidList));
+         LOGGER.finest("pubdids: " + String.join(" ", pubdidList));
       }
    }
 
@@ -82,7 +82,7 @@ class AuthZ
 
    public boolean isAuthorized(HttpServletRequest req)
    {
-      LOGGER.info("isAuthorized");
+      LOGGER.fine("isAuthorized");
 
       AuthPolicy auth = null;
       try
@@ -113,7 +113,7 @@ class AuthZ
 @javax.servlet.annotation.MultipartConfig
 public class AuthZFilter implements Filter
 {
-   private static final Logger LOGGER = Logger.getLogger("AuthZFilter");
+   private static final Logger LOGGER = Logger.getLogger(AuthZFilter.class.getName());
 
 
    @Override
@@ -125,7 +125,7 @@ public class AuthZFilter implements Filter
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
    {
-      LOGGER.info("doFilter");
+      LOGGER.fine("doFilter");
 
       HttpServletRequest  req  = (HttpServletRequest)  request;
       HttpServletResponse  resp = (HttpServletResponse)  response;
diff --git a/data-access/servlet/src/main/java/webapi/AuthZSettings.java b/data-access/servlet/src/main/java/webapi/AuthZSettings.java
index 7cd7e6a49ab33ed3f6f97415b30dfeafbac11ff5..ecb811e1096f132b49d7f8b10ae9c3b5ff04c037 100644
--- a/data-access/servlet/src/main/java/webapi/AuthZSettings.java
+++ b/data-access/servlet/src/main/java/webapi/AuthZSettings.java
@@ -9,7 +9,7 @@ import java.io.PrintWriter;
 
 class AuthZSettings
 {
-   private static final Logger LOGGER = Logger.getLogger("AuthZSettings");
+   private static final Logger LOGGER = Logger.getLogger(AuthZSettings.class.getName());
 
    public static class DBConn
    {
@@ -36,6 +36,8 @@ class AuthZSettings
    // no reasonable code-defaults can be invented
    public static AuthZSettings getInstance(String propertiesFilename)
    {
+      LOGGER.config("reading settings from : " + propertiesFilename);
+
       try
       {
          InputStream ins =
@@ -72,6 +74,8 @@ class AuthZSettings
 
    private static DBConn loadDBConn(Properties properties)
    {
+      LOGGER.fine("trace");
+
       DBConn dbconn = new AuthZSettings.DBConn();
       dbconn.uri       = properties.getProperty("db_uri", "jdbc:postgresql://localhost:5432/vialactea").strip();
       dbconn.schema    = properties.getProperty("db_schema", "datasets").strip();
diff --git a/data-access/servlet/src/main/java/webapi/ServletCutout.java b/data-access/servlet/src/main/java/webapi/ServletCutout.java
index c2ad0721f9216e2820dbd38b3ff4c8bd6f2a741a..459109938b7132c3329426a7d0ceadf8327a1c6a 100644
--- a/data-access/servlet/src/main/java/webapi/ServletCutout.java
+++ b/data-access/servlet/src/main/java/webapi/ServletCutout.java
@@ -1,5 +1,6 @@
 
 import java.util.logging.Logger;
+import java.util.logging.Level;
 
 import java.security.Principal;
 
@@ -46,7 +47,7 @@ import vo.parameter.*;
 
 public class ServletCutout extends HttpServlet
 {
-   protected static final Logger      LOGGER     = Logger.getLogger("ServletCutout");
+   protected static final Logger      LOGGER     = Logger.getLogger(ServletCutout.class.getName());
    protected static final Settings    settings   = Settings.getInstance();
    protected static final Subsurvey[] subsurveys = Subsurvey.loadSubsurveys(settings.fitsPaths.surveysMetadataAbsPathname());
 
@@ -61,15 +62,15 @@ public class ServletCutout extends HttpServlet
 
    public void init() throws ServletException
    {
-     LOGGER.info("FITS : " + settings.fitsPaths.toString());
+     LOGGER.config("FITS : " + settings.fitsPaths.toString());
       if(subsurveys != null)
-         LOGGER.info("Subsurveys loaded : " + String.valueOf(subsurveys.length));
-      LOGGER.info("DEFAULT SKY/SPEC/TIME SYSTEM : " + DEFAULT_SKY_SYSTEM + " / " + DEFAULT_SPEC_SYSTEM + " / " + DEFAULT_TIME_SYSTEM);
-      LOGGER.info("DEFAULT_RESPONSEFORMAT : " + DEFAULT_RESPONSEFORMAT);
-      LOGGER.info("Resolver : " + (resolveFromId    ? "IVOID" : "DB"));
-      LOGGER.info("Engine   : " + (useEngineOverCli ? "CLI"   : "AMQP"));
+         LOGGER.config("Subsurveys loaded : " + String.valueOf(subsurveys.length));
+      LOGGER.config("DEFAULT SKY/SPEC/TIME SYSTEM : " + DEFAULT_SKY_SYSTEM + " / " + DEFAULT_SPEC_SYSTEM + " / " + DEFAULT_TIME_SYSTEM);
+      LOGGER.config("DEFAULT_RESPONSEFORMAT : " + DEFAULT_RESPONSEFORMAT);
+      LOGGER.config("Resolver : " + (resolveFromId    ? "IVOID" : "DB"));
+      LOGGER.config("Engine   : " + (useEngineOverCli ? "CLI"   : "AMQP"));
       if(!useEngineOverCli)
-         LOGGER.info("AMQP : " + settings.amqpConn.toString());
+         LOGGER.config("AMQP : " + settings.amqpConn.toString());
    }
 
 
@@ -120,7 +121,7 @@ public class ServletCutout extends HttpServlet
    protected void doCutoutStream(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
          OutputStream respOutputStream) throws IOException, InterruptedException
    {
-      LOGGER.info("trace" + pos);
+      LOGGER.fine("trace " + pos);
 
       final Resolver resolver = (resolveFromId ?
             new ResolverFromId(subsurveys) :
@@ -138,7 +139,7 @@ public class ServletCutout extends HttpServlet
          boolean countNullValues)
          throws IOException, InterruptedException
       {
-         LOGGER.info("trace");
+         LOGGER.fine("trace");
 
          FitsCard[] extraCards = null;
 
@@ -158,7 +159,7 @@ public class ServletCutout extends HttpServlet
          }
          else
          {
-            LOGGER.info("Resolver returns subsurveyId null: no extraCards loaded.");
+            LOGGER.fine("Resolver returns subsurveyId null: no extraCards loaded.");
          }
 
          return vlkb.doFile(resolver.relPathname(), resolver.hdunum(),
@@ -191,19 +192,19 @@ public class ServletCutout extends HttpServlet
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException, UnsupportedEncodingException
       {
-
          final boolean NO_QUERY_STRING = (request.getQueryString() == null);
 
          if(NO_QUERY_STRING)
          {
             writeSodaDescriptor(request, response);
-            LOGGER.info("normal exit with SODA service descriptor");
+            LOGGER.fine("normal exit with SODA service descriptor");
             return;
          }
          else
          {
+            LOGGER.info(URLDecoder.decode(request.getQueryString(), "UTF-8"));
             execRequest(request, response);
-            LOGGER.info("normal exit");
+            LOGGER.fine("normal exit");
          }
       }
 
@@ -215,13 +216,14 @@ public class ServletCutout extends HttpServlet
          if(NO_QUERY_STRING)
          {
             writeSodaDescriptor(request, response);
-            LOGGER.info("normal exit with SODA service descriptor");
+            LOGGER.fine("normal exit with SODA service descriptor");
             return;
          }
          else
          {
+            LOGGER.info(URLDecoder.decode(request.getQueryString(), "UTF-8"));
             execRequest(request, response);
-            LOGGER.info("normal exit");
+            LOGGER.fine("normal exit");
          }
       }
 
@@ -261,7 +263,7 @@ public class ServletCutout extends HttpServlet
 
             String respFormat = sodaReq_getResponseFormat(request, DEFAULT_RESPONSEFORMAT);
 
-            LOGGER.info("responseFormat: " + respFormat);
+            LOGGER.finest("responseFormat: " + respFormat);
 
             if(respFormat.startsWith("application/fits"))
             {
@@ -299,7 +301,7 @@ public class ServletCutout extends HttpServlet
          }
          catch(MultiValuedParamNotSupported ex)
          {
-            LOGGER.info("MultiValuedParamNotSupported: " + ex.getMessage());
+            LOGGER.warning("MultiValuedParamNotSupported: " + ex.getMessage());
 
             response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
             response.setContentType("text/plain");
@@ -311,7 +313,7 @@ public class ServletCutout extends HttpServlet
          }
          catch(IllegalArgumentException ex)
          {
-            LOGGER.info("IllegalArgumentException: " + ex.getMessage());
+            LOGGER.warning("IllegalArgumentException: " + ex.getMessage());
 
             response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
             response.setContentType("text/plain");
@@ -323,7 +325,7 @@ public class ServletCutout extends HttpServlet
          }
          catch(Exception ex)
          {
-            LOGGER.info("Exception: " + ex.getMessage());
+            LOGGER.severe("Exception: " + ex.getMessage());
             ex.printStackTrace();
 
             response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -339,17 +341,17 @@ public class ServletCutout extends HttpServlet
             respOutputStream.close();
          }
 
-         LOGGER.info("RUNTIME[nsec] Servlet::execRequest: "+String.valueOf(System.nanoTime() - startTime_nsec));
+         LOGGER.fine("RUNTIME[sec]: "+String.valueOf( (System.nanoTime() - startTime_nsec) / 1000000000.0 ));
       }
 
    private String convertLocalPathnameToRemoteUrl(String localPathname,
          String FITScutpath, String FITSRemoteUrlCutouts)
    {
-      LOGGER.info("trace " + localPathname);
+      LOGGER.fine("trace " + localPathname);
       String fileName = localPathname.replaceAll(FITScutpath + "/", "");
-      LOGGER.info("local filename: " + fileName);
+      LOGGER.finest("local filename: " + fileName);
       String remotefname = FITSRemoteUrlCutouts + "/" + fileName;
-      LOGGER.info("remote url    : " + remotefname);
+      LOGGER.finest("remote url    : " + remotefname);
       return remotefname;
    }
 
diff --git a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
index 3d598903bc18acd1bd84d3f1b355a96e08fbc9d1..df5e0e167d3892297754802c560f6b974239f0ac 100644
--- a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
+++ b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
@@ -124,11 +124,11 @@ public class UWSMCutoutWork extends JobThread
    private String convertLocalPathnameToRemoteUrl(String localPathname,
          String FITScutpath, String FITSRemoteUrlCutouts)
    {
-      //LOGGER.info("trace " + localPathname);
+      //LOGGER.fine("trace " + localPathname);
       String fileName = localPathname.replaceAll(FITScutpath + "/", "");
-      //LOGGER.info("local filename: " + fileName);
+      //LOGGER.finer("local filename: " + fileName);
       String remotefname = FITSRemoteUrlCutouts + "/" + fileName;
-      //LOGGER.info("remote url    : " + remotefname);
+      //LOGGER.finer("remote url    : " + remotefname);
       return remotefname;
    }
 
diff --git a/data-access/servlet/src/main/java/webapi/UWSMergeWork.java b/data-access/servlet/src/main/java/webapi/UWSMergeWork.java
index 7d62fd8371472ce6ab89de841c993e4f241b75f7..230ddf343ff42e2184e897bb58a42465a453548b 100644
--- a/data-access/servlet/src/main/java/webapi/UWSMergeWork.java
+++ b/data-access/servlet/src/main/java/webapi/UWSMergeWork.java
@@ -147,11 +147,11 @@ public class UWSMergeWork extends JobThread
    private String convertLocalPathnameToRemoteUrl(String localPathname,
          String FITScutpath, String FITSRemoteUrlCutouts)
    {
-      //LOGGER.info("trace " + localPathname);
+      //LOGGER.fine("trace " + localPathname);
       String fileName = localPathname.replaceAll(FITScutpath + "/", "");
-      //LOGGER.info("local filename: " + fileName);
+      //LOGGER.finer("local filename: " + fileName);
       String remotefname = FITSRemoteUrlCutouts + "/" + fileName;
-      //LOGGER.info("remote url    : " + remotefname);
+      //LOGGER.finer("remote url    : " + remotefname);
       return remotefname;
    }
 
diff --git a/data-access/servlet/src/main/java/webapi/output/XmlSerializer.java b/data-access/servlet/src/main/java/webapi/output/XmlSerializer.java
index cc933cd95c81cf593b479e59f8009250d0b496f4..61f96b7cd4c58f83d7433650a6789d1a12dbbc8f 100644
--- a/data-access/servlet/src/main/java/webapi/output/XmlSerializer.java
+++ b/data-access/servlet/src/main/java/webapi/output/XmlSerializer.java
@@ -6,7 +6,7 @@ import vo.parameter.*;
 
 public final class XmlSerializer
 {
-   private static final Logger LOGGER = Logger.getLogger("XmlSerializer");
+   private static final Logger LOGGER = Logger.getLogger(XmlSerializer.class.getName());
 
    private XmlSerializer() {} // disables instatiation
 
@@ -15,7 +15,7 @@ public final class XmlSerializer
         String id, Pos pos, Band band, Time time, Pol pol, String pixels, boolean countNullValues,
          boolean showDuration, long startTime_msec)
   {
-     LOGGER.info("trace serialize for accessUrl: " + ((accessUrl==null)? "null":accessUrl));
+     LOGGER.fine("trace serialize for accessUrl: " + ((accessUrl==null)? "null":accessUrl));
 
      writer.println("<?xml version=\"1.0\" encoding=\"" + charEncoding + "\" standalone=\"yes\"?>");
      writer.println("<results>");
@@ -55,7 +55,7 @@ public final class XmlSerializer
         //String id, Pos pos, Band band, Time time, Pol pol, String pixels, boolean countNullValues,
          boolean showDuration, long startTime_msec)
   {
-     LOGGER.info("trace serialize for accessUrl: " + ((accessUrl==null)? "null":accessUrl));
+     LOGGER.fine("trace serialize for accessUrl: " + ((accessUrl==null)? "null":accessUrl));
 
      writer.println("<?xml version=\"1.0\" encoding=\"" + charEncoding + "\" standalone=\"yes\"?>");
      writer.println("<results>");
diff --git a/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar b/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar
index f1a6a61c90acada94ec801155a5adc9f30d1b1cd..4af8f63066eaec4a80adaabf4e4dd13fb30d47c3 100644
Binary files a/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar and b/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar differ